qemu-9.1.1

Introduksjon til qemu

qemu er en full virtualiseringsløsning for Linux på x86 maskinvare som inneholder virtualiseringsutvidelser (Intel VT eller AMD-V).

[Notat]

Notat

Utviklingsversjoner av BLFS kan ikke bygge eller kjøre noen pakker riktig hvis LFS eller avhengigheter har blitt oppdatert siden den siste stabile versjonene av bøkene.

Pakkeinformasjon

  • Nedlasting (HTTP): https://download.qemu.org/qemu-9.1.1.tar.xz

  • Nedlasting MD5 sum: 29c6954d8d2cb0b8cac59335cd62fbd2

  • Nedlastingsstørrelse: 126 MB

  • Estimert diskplass som kreves: 2.3 GB (451 MB installert)

  • Estimert byggetid: 1.2 SBU (add 1.2 SBU for tester, begge med parallellisme=4)

Qemu Avhengigheter

Påkrevd

GLib-2.82.2 og Pixman-0.44.0

Anbefalt

[Notat]

Notat

hvis dtc-1.7.2 ikke er installert, byggesystemet vil prøve å laste ned en kopi av dtc kildekoden fra Internett.

Valgfri

pipewire-1.2.6 eller PulseAudio-17.0 (kan brukes i stedet for alsa-lib), BlueZ-5.79, cURL-8.11.0, Cyrus SASL-2.1.28, Fuse-3.16.2, GnuTLS-3.8.8, GTK+-3.24.43, keyutils-1.6.3, libaio-0.3.113, libusb-1.0.27, libgcrypt-1.11.0, libjpeg-turbo-3.0.1, libseccomp-2.5.5, libssh2-1.11.1, libpng-1.6.44, libtasn1-4.19.0, Linux-PAM-1.7.0, LZO-2.10, Nettle-3.10, Mesa-24.2.7, VTE-0.78.1, capstone, ceph, daxctl, JACK, glusterfs, libbpf, libcacard, libcap-ng, libdw, libiscsi, libnfs, libpmem, libssh, libu2f-emu, lzfse, netmap, numactl, rdma-core, SELinux, snappy, spice, usbredir, og VDE

Valgfri (Kjøretid)

elogind-255.5

Valgfri (for å bygge dokumentasjonen)

sphinx_rtd_theme-3.0.2

[Notat]

Notat

Denne valgfrie avhengighetslisten er ikke uttømmende. Se utdataen fra ./configure --help for en mer komplett liste.

Redaktørens notater: https://wiki.linuxfromscratch.org/blfs/wiki/qemu

KVM Forutsetninger

Før byggingen av qemu, sjekk for å se om prosessoren din støtter virtualiseringsteknologi (VT):

grep -E '^flags.*(vmx|svm)' /proc/cpuinfo

Hvis du får noe utdata, har du VT teknologi (vmx for Intel prosessorer og svm for AMD prosessorer). Du må da gå inn i din system BIOS og sørge for at den er aktivert. Etter å ha aktivert den, start på nytt din LFS forekomst.

Kjernekonfigurasjon

Aktiver følgende alternativer i kjernekonfigurasjonen og kompiler kjernen på nytt om nødvendig:

[*] Virtualization --->                                         [VIRTUALIZATION]
  <*/M>   Kernel-based Virtual Machine (KVM) support                       [KVM]
  # Enable the option for your CPU:
  < /*/M>   KVM for Intel (and compatible) processors support        [KVM_INTEL]
  < /*/M>   KVM for AMD processors support                             [KVM_AMD]

Begge Intel- eller AMD-innstillingene er ikke nødvendige, men den som samsvarer din systemprosessor er nødvendig.

For å bruke «bridge» nettverksenhet, som forklart nedenfor, Sjekk at bridge-utils-1.7.1 er installert og følgende alternativer i kjernekonfigurasjonen er aktivert:

[*] Networking support --->                                                [NET]
  Networking options --->
    <*/M> 802.1d Ethernet Bridging                                      [BRIDGE]

Device Drivers --->
  [*] Network device support --->                                   [NETDEVICES]
    [*]   Network core driver support                                 [NET_CORE]
    <*/M>   Universal TUN/TAP device driver support                        [TUN]

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 elogind-255.5 , eller brukerne i kvm gruppen å bruke KVM enheten. Som root bruker, legg til eventuelle ikke-root brukere som kan bruke KVM enheten enten uten elogind-255.5 installert eller eksternt (via en SSH tilkobling) til kvm gruppen:

usermod -a -G kvm <username>

Installer qemu ved å kjøre følgende kommandoer:

[Notat]

Notat

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-9.1.1 &&

unset QEMU_ARCH &&

make

qemu bruker ninja som en delprosess ved byggingen. For å kjøre testene, kjør: ninja test.

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:

[Notat]

Notat

Du må legge til brukere som kan bruke «bridge» nettverksenhet i kvm gruppen selv om elogind-255.5 er installert.

chgrp kvm  /usr/libexec/qemu-bridge-helper &&
chmod 4750 /usr/libexec/qemu-bridge-helper
[Notat]

Notat

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

Parameterforklaringer

--audio-drv-list=alsa: Denne bryteren setter lyddriveren til ALSA. Se nedenfor for å aktivere andre lyddrivere.

--disable-pa: selv om pa ikke er i --audio-drv-list listen, pulseaudio driveren blir bygget, med mindre den er deaktivert av denne parameteren.

--enable-slirp: Denne bryteren tvinger byggesystemet å se etter Libslirp-4.8.0. Fjern den hvis du ikke trenger -netdev user støtte.

--audio-drv-list=pa --disable-alsa: Denne bryteren setter lyddriveren til pulsaudio. For andre drivere se --audio-drv-list valg i utdaten fra ./configure --help. Standard lyddriver er OSS. For å aktivere støtte for både alsa og pulsaudio, bruk --audio-drv-list=alsa,pa.

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-9.1.1/qemu-doc.html.

[Notat]

Notat

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.

[Notat]

Notat

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 «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.

Sette opp brobygging med bridge-utils-1.7.1. Bare det fysiske grensesnitt(er) bør settes opp ved oppstart. Det eller de virtuelle grensesnittene vil bli lagt til etter behov når qemu startes.

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,....

Innhold

Installerte Programmer: elf2dmp, qemu (symlink), qemu-edid, qemu-ga, qemu-img, qemu-io, qemu-keymap, qemu-nbd, qemu-pr-helper, qemu-storage-daemon, og qemu-system-<arch>
Installert Bibliotek: Ingen
Installerte Mapper: /usr/share/qemu og /usr/share/doc/qemu-9.1.1 (valgfri)

Korte beskrivelser

elf2dmp

Konverterer filer fra elf til dmp format

qemu-edid

er et testverktøy for qemu EDID generatoren

qemu-ga

implementerer støtte for QMP (QEMU Monitor Protocol) kommandoer og hendelser som avsluttes og oppstår henholdsvis hos gjesten bruker en agent bygget som en del av QEMU

qemu-img

gir kommandoer for å administrere QEMU diskbilder

qemu-io

er et diagnose- og manipuleringsprogram for (virtuelt) minne media. Det er fortsatt på et tidlig stadium av utviklingen

qemu-keymap

genererer qemu reverse tastaturoppsett fra xkb tastaturoppsetter, som kan brukes med kommandolinjebryteren qemu "-k".

qemu-nbd

eksporterer Qemu diskbilder ved hjelp av QEMU Disk Network Block Enhetsprotokoll (NBD).

qemu-pr-helper

Implementerer den vedvarende reservasjonshjelperen for QEMU

qemu-storage-daemon

lar deg endre diskbilder ved hjelp av QEMU Monitor Protocol (QMP) uten å kjøre en VM

qemu-system-x86_64

er QEMU PC System emulatoren