Installasjon av qemu
Udev regelen til LFS tillater bare root bruker, brukerne som eier en lokal
påloggingsøkt støttet av den valgfrie kjøretidsavhengigheten
Systemd-254, eller brukerne i
kvm gruppen å bruke KVM enheten.
Som root bruker, legg til
eventuelle ikke-root brukere som
kan bruke KVM enheten enten uten Systemd-254 installert eller eksternt (via
en SSH tilkobling) til kvm gruppen:
usermod -a -G kvm <username>
Installer qemu ved å kjøre
følgende kommandoer:
Note
Qemu er i stand til å kjøre mange mål. Byggeprosessen er også i
stand til å bygge flere mål samtidig i en kommadelt liste
tilordnet --target-list. Kjør
./configure --help
for å få en fullstendig liste over tilgjengelige mål.
if [ $(uname -m) = i686 ]; then
QEMU_ARCH=i386-softmmu
else
QEMU_ARCH=x86_64-softmmu
fi
mkdir -vp build &&
cd build &&
../configure --prefix=/usr \
--sysconfdir=/etc \
--localstatedir=/var \
--target-list=$QEMU_ARCH \
--audio-drv-list=alsa \
--disable-pa \
--enable-slirp \
--docdir=/usr/share/doc/qemu-8.1.0 &&
unset QEMU_ARCH &&
make
qemu bruker ninja som en delprosess ved
byggingen. For å kjøre testene, kjør: ninja test. En test,
bios-tables-test, er kjent for å mislykkes.
Nå, som root bruker:
make install
Endre tillatelsene og eierskapet til et hjelpeskript, som er
nødvendig når du bruker “bridge” nettverksenhet (se nedenfor).
En gang til som root bruker, kjør:
Note
Du må legge til brukere som kan bruke “bridge”
nettverksenhet i kvm gruppen selv
om Systemd-254 er installert.
chgrp kvm /usr/libexec/qemu-bridge-helper &&
chmod 4750 /usr/libexec/qemu-bridge-helper
Note
For enkelhets skyld kan det være lurt å lage en symbolsk lenke
for å kjøre det installerte programmet. For eksempel (som
root bruker):
ln -sv qemu-system-`uname -m` /usr/bin/qemu
Bruke Qemu
Siden bruk av qemu betyr å bruke en virtuell datamaskin, trinnene
for å sette opp den virtuelle maskinen er i nær analogi med de for
å sette opp en ekte datamaskin. Du må bestemme deg for CPU, minne,
disk, USB enheter, nettverkskort(er), skjermstørrelse osv. Når
“maskinvaren” er bestemt, må du for
eksempel velge hvordan du kobler til maskinenen til internett
og/eller for å installere et OS. I det følgende viser vi
grunnleggende måter å utføre disse trinnene på. Men qemu er mye mer
enn dette, og det anbefales på det sterkeste å lese qemu
dokumentasjonen i /usr/share/doc/qemu-8.1.0/qemu-doc.html.
Note
Det er standard praksis å navngi datamaskinen som kjører qemu
“host” og den emulerte maskinen som
kjører under qemu “guest”. Vi bruker disse notasjonene
nedenfor.
Note
Følgende instruksjoner forutsetter at den valgfrie symbolske
lenken, qemu, har blitt opprettet.
I tillegg, qemu
skal kjøres i et grafisk miljø. Men det er mulig å bruke qemu
“headless” eller gjennom SSH. Se
dokumentasjonen for de ulike mulighetene.
Disk
En virtuell disk kan settes opp på følgende måte:
VDISK_SIZE=50G
VDISK_FILENAME=vdisk.img
qemu-img create -f qcow2 $VDISK_FILENAME $VDISK_SIZE
Den virtuelle diskstørrelsen og filnavnet bør justeres etter ønske.
Den faktiske størrelse på filen vil være mindre enn spesifisert,
men vil utvides etter behov, så det er trygt å sette en høy verdi.
Operativsystem
For å installere et operativsystem, last ned et iso bilde fra din
foretrukne Linux distribusjon. For formålet med dette eksemplet vil
vi bruke Fedora-16-x86_64-Live-LXDE.iso i gjeldende mappe.
Kjør følgende:
qemu -enable-kvm \
-drive file=$VDISK_FILENAME \
-cdrom Fedora-16-x86_64-Live-LXDE.iso \
-boot d \
-m 1G
Følg de vanlige installasjonsprosedyrene for den valgte
distribusjonen. -boot
alternativet spesifiserer oppstartsrekkefølgen til stasjoner som en
streng med stasjonsbokstaver. Gyldige stasjonsbokstaver er: a, b
(diskett 1 og 2), c (første harddisk), d (første CD-ROM).
-m alternativet er mengden
minne som skal brukes til den virtuelle maskinen. Valget avhenger
av belastningen til verten. Moderne distribusjoner bør være
komfortable med 1 GB. -enable-kvm alternativet tillater
maskinvare akselerasjon. Uten denne bryteren er emuleringen mye
tregere.
Definere den virtuelle maskinvaren
Den virtuelle maskinvaren er definert av kommandolinjen til qemu.
En eksempelkommando er gitt nedenfor:
qemu -enable-kvm \
-smp 4 \
-cpu host \
-m 1G \
-drive file=$VDISK_FILENAME \
-cdrom grub-img.iso \
-boot order=c,once=d,menu=on \
-net nic,netdev=net0 \
-netdev user,id=net0 \
-device ac97 \
-vga std \
-serial mon:stdio \
-name "fedora-16"
Betydningen av kommandolinjealternativene
-enable-kvm: aktiver full
KVM virtualisering støtte. På noen maskinvare kan det være
nødvendig å legge til det udokumenterte -machine smm=off alternativet for å aktivere KVM.
-smp <N>: muliggjør
symmetrisk multiprosessering med <N> CPUer.
-cpu <model>:
simulere CPU <model>. Listen over støttede modeller kan fås
med -cpu help.
-drive
file=<filename>: definerer en virtuell disk hvis
bildet er lagret på <filename>.
-cdrom grub-img.iso:
definerer en iso formatert fil for å bruke som en cdrom. Her bruker
vi en grub redningsskive, som kan være nyttig når noe går galt ved
oppstart.
-boot
order=c,once=d,menu=on: definerer oppstarts rekkefølgen
for den virtuelle BIOS.
-net
nic,netdev=<netid>: definerer et nettverkskort
koblet til nettverksenheten med id <netid>.
-netdev
user,id=<netid>: definerer nettverkets
“bruker” enhet. Dette er et virtuelt
lokalt nettverk med adresser 10.0.2.0/24, hvor verten har adressen
10.0.2.2 og fungerer som en inngangsport til internett, og med en
navneserver på adressen 10.0.2.3, og en smb server på adressen
10.0.2.4. En innebygd DHCP server kan tildele adresser mellom
10.0.2.15 og 10.0.2.31.
-soundhw <model>:
definerer lydkortets modell. Listen kan fås med -soundhw help.
-vga <type>:
definerer typen VGA kort å etterligne. For -vga std, hvis du bygger en
Linuxkjerne som gjest, anbefales det å aktivere CONFIG_DRM_BOCHS (som en del av kjernen eller en
kjerne modul) for å drive alle funksjonene til det emulerte VGA
kortet, og CONFIG_FB for å vise Linux
konsollen på den. Det andre <type> verdier er ikke testet av redaktører
og kan kreve ytterligere avhengigheter.
-serial mon:stdio: sender
serieporten til gjesten (/dev/ttyS0
på linux gjester), multiplekset med qemu monitoren, til
standardinngangen og -utgangen til qemu prosesser.
-name <name>: angir
navnet på gjesten. Dette navnet vises i gjestevinduets bildetekst.
Det kan være nyttig hvis du kjører flere gjester samtidig.
-drive
if=pflash,format=raw,readonly=on,file=/usr/share/qemu/edk2-x86_64-code.fd:
Last en forhåndsbygd EDK2 UEFI fastvare, i stedet for standard PC
BIOS. Bruk dette alternativet hvis du vil starte gjesteOS med UEFI.
-drive file=<filename>,if=virtio:
Gir Virtio grensesnittet til gjestekjernen for tilgang til
diskbildet, i stedet for å simulere en ekte diskmaskinvare. Dette
kan forbedre disk I/O ytelse, men det krever en Virtio driver i
gjestekjernen. Bruk det i stedet for en vanlig -drive hvis gjestekjernen støtter Virtio. For å
bygge en Linuxkjerne med Virtio støtte for gjest, bruk make defconfig && make
kvm_guest.config til opprette en innledende
kjernekonfigurasjon med Virtio drivere aktivert, deretter gjør din
tilpasning. Og hvis gjestekjernen er Linux, vil virtuelle disker
som bruker Virtio grensesnittet bli navngitt vdx i devtmpfs, i stedet for sdx.
-net
nic,netdev=net0,model=virtio-net-pci: Gir Virtio
grensesnittet til gjestekjernen for tilgang til nettverkets
grensesnitt, i stedet for å simulere et ekte nettverkskort. Dette
kan forbedre nettverkets I/O ytelse, men det krever en Virtio
driver i gjestekjernen. Bruk den i stedet for den vanlige
-net hvis gjestekjernen støtter Virtio.
Kontrollere den Emulerte Skjermen
For å angi oppløsningen til den emulerte skjermen for en Xorg
server som kjører i et gjeste Linux system, les the section called
“Finjustere Skjerminnstillinger”.
Nettverk
Ovennevnte løsning for nettverk lar gjesten få tilgang til det
lokale nettverket gjennom verten (og muligens for å få tilgang til
internett via lokale rutere), men det motsatte er ikke sant. Ikke
engang verten kan få tilgang til gjesten, med mindre
portvideresending er aktivert. Og hvis flere gjester kjører, kan de
ikke kommunisere med hverandre. Andre nettverksenheter kan brukes
til dette formålet. For eksempel det er “socket”
enheten, som lar flere gjester dele et felles virtuelt nettverk. I
det følgende beskriver vi i mer detaljer hvordan du setter opp
“bridge” enheten, som tillater gjestene
til å se ut som om de er koblet til det lokale nettverket. Alle
kommandoene nedenfor skal kjøres som root bruker.
Tillat at verten videresender IP pakker:
sysctl -w net.ipv4.ip_forward=1
For å gjøre dette permanent, legg til kommandoen til /etc/sysctl.d/60-net-forward.conf:
cat >> /etc/sysctl.d/60-net-forward.conf << EOF
net.ipv4.ip_forward=1
EOF
Sett opp en nødvendig konfigurasjonsfil:
install -vdm 755 /etc/qemu &&
echo allow br0 > /etc/qemu/bridge.conf
Bytt bryteren i qemu kommandolinjen ovenfor -netdev user,... med -netdev bridge,....