qemu, kvm, xen & libvirtHauptseite | Über | Hilfe | FAQ | Spezialseiten | Anmelden

Druckversion | Impressum | Datenschutz

Harddisks FLoppies CDROM DVDROM Memory-Cards Flash-Memory snapshot netboot.me

(Link zu dieser Seite als [[QEMU-KVM-Buch/ Speichermedien/ Zugriff auf Speichermedien]])

<<<|###| >>> | English


Auch eine CP/M-86-Diskette bootet in QEMU.
Auch eine CP/M-86-Diskette bootet in QEMU.
Die Option -boot order=dcn,once=d,menu=on.
Die Option -boot order=dcn,once=d,menu=on.
Per HTTP geladenes Image von netboot.me.
Per HTTP geladenes Image von netboot.me.

Inhaltsverzeichnis

[bearbeiten] Zugriff auf Speichermedien

Die Namen und Zustände der Speichermedien listet im QEMU-Monitor der Befehl info block auf. Hier ein Beispiel. Die erste Spalte zeigt den Namen des jeweiligen Speichermediums an. Über diesen Namen wird das Speichermedium im QEMU-Monitor angesprochen. Mit ide-hd und ide-cd beziehungsweise scsi-hd und scsi-cd werden IDE- und SCSI-Festplatten- und DVD-/CD-Laufwerke emuliert.

(qemu) info block
ide0-hd0: type=hd removable=0 file=os2w4.img ro=0 drv=qcow2
floppy0: type=floppy removable=1 locked=0 file=d.dsk ro=1 drv=raw
ide1-cd0: type=cdrom removable=1 locked=0 file=os2-warp ro=0 drv=raw
sd0: type=floppy removable=1 locked=0 [not inserted]

[bearbeiten] Festplatten

Zugriffe auf (virtuelle) Festplatten erfolgen über die Optionen -hda file, -hdb file, -hdc file, -hdd file und -drive. Dabei ist file meist eine Image-Datei, wie das nachfolgende Beispiel zeigt:

Host ~$ qemu-system-x86_64 -hda Platte.img -hdb zweite-Platte.img

Bei nur einer virtuellen Festplatte kann die Option -hda weggelassen werden.

Host ~$ qemu-system-x86_64 Platte.img

Es ist möglich, eine Festplatte des Host-Systems dem Gast-System zur Verfügung zu stellen. Dazu ist für file der vollständige Pfad zum Device anzugeben. Unter unix-artigen Systemen (BSD, Mac OS, Solaris, Linux und andere) befinden sich die passenden Device-Dateien im Verzeichnis /dev. Die konkreten Namen der Geräte sind allerdings auf den Systemen unterschiedlich. Ist der Host ein Linux-System, sind dies beispielsweise /dev/hda (erste Platte am IDE-Controller), /dev/sda (erste Platte am SCSI-Controller oder SATA-Controller). Mac OS X spricht die erste Platte mit /dev/disk0 an. Unter Microsoft Windows-Versionen werden reale Festplatten mit der Syntax \\.\PhysicalDriveN eingebunden, wobei N die Nummer des Laufwerkes ist (0 ist die erste Festplatte).

Bei der Installation von Microsoft Windows 2000 als Gast-Betriebssystem ist die Option -win2k-hack notwendig, da dessen Bug die Festplatte bei der Installation als voll kennzeichnet. Nach der Installa­tion ist diese Option zu entfernen.

Bei betagten Festplatten, deren Speicherkapazität bis maximal wenige hundert Megabyte umfasst, ist die Option -hdachs c,h,s,[,t] interessant. Sie definiert die physikalische Geometrie der ersten virtuellen Festplatte. Es lassen sich die Anzahl der Zylinder (1 <= c <= 16383), der Köpfe (1 <= h <= 16) und der Sektoren (1 <= s <= 63) festlegen. Optional ist auch der BIOS-Translation-Modus (t=none, lba oder auto) einstellbar. Die BIOS-Translation wurde zur Überwindung der 524-MByte-Grenze bei älteren Festplatten und älteren BIOS-Versionen verwendet.

[bearbeiten] CD-/DVD-ROMs

Zugriffe auf (virtuelle) CD-/DVDs ermöglichen die Optionen -cdrom file und -drive, wobei file eine Image-Datei oder ein reales Device ist.

Host ~$ qemu-system-x86_64 -hda Platte.img -cdrom cd.iso

Um ein CD/DVD-Device des Host-Systems dem Gast-System zur Verfügung zu stellen, ist für file der vollständige Pfad zum CD/DVD-Device anzugeben. Ist der Host ein Linux-System, sind dies beispielsweise /dev/cdrom oder /dev/dvd. Das folgende Beispiel bootet ein System von einer eingelegten DVD.

Host ~$ qemu-system-x86_64 -cdrom /dev/dvd

Unter Microsoft Windows werden CD-/DVD-Laufwerke des Host-Systems durch Angabe ihrer Laufwerksbuchstaben eingebunden. Dies ist für Windows-Nutzer sicherlich vertrauter als die Linux-Schreibweise, die aber auch gültig ist. Folgende Eingabe bootet eine CD/DVD vom Laufwerk D:.

Host C:\> qemu-system-x86_64 -L . -cdrom d:

Um eine CD/DVD zu entfernen oder auszutauschen, wechselt man mit [Strg]+[Alt]+[2] in den QEMU-Monitor. Zunächst ist der Name des CD/DVD-Laufwerkes zu ermitteln.

(qemu) info block
ide1-cd0: type=cdrom removable=1 locked=0 file=os2-warp ro=0 drv=raw

In diesem Beispiel wird das CD/DVD-Laufwerk mit ide1-cd0 bezeichnet. Eine CD/DVD gibt der Befehl eject frei.

(qemu) eject ide1-cd0

Eine CD/DVD wechselt man mit dem Befehl change. In diesem Beispiel wird eine reale CD unter Linux ausgetauscht.

(qemu) change ide1-cd0 /dev/cdrom

Wurde QEMU/KVM mit der Unterstützung für curl kompiliert, ist der Zugriff über das HTTP-Protokoll möglich. In diesem Beispiel wird die Instanz mit dem CD-Image von www.netboot.me per HTTP gestartet. Damit lassen sich diverse Linux- und BSD-Distributionen installieren.

Host ~$ qemu-system-x86_64 -cdrom http://static.netboot.me/gpxe/netbootme.iso

[bearbeiten] Disketten

Zugriffe auf (virtuelle) Disketten ermöglichen die Optionen -fda file (Laufwerk A), -fdb file (Laufwerk B) und -drive. Das folgende Beispiel arbeitet mit einem Disketten-Image.

Host ~$ qemu-system-x86_64 -fda Diskette.img 

Unter Linux werden reale Diskettenlaufwerke über ihre Devices (/dev/fd0, /dev/fd1) eingebunden. Nachfolgend wird der Boot-Vorgang vom ersten Disketten-Laufwerk eingeleitet.

Host ~$ qemu-system-x86_64 -fda /dev/fd0

Um eine Diskette zu entfernen oder auszutauschen, wechselt man mit [Strg]+[Alt]+[2] in den QEMU-Monitor. Zunächst ist der Name des Laufwerkes zu ermitteln.

(qemu) info block
floppy0: type=floppy removable=1 locked=0 file=d.dsk ro=1 drv=raw

In diesem Beispiel wird das Disketten-Laufwerk mit floppy0 bezeichnet. Eine Diskette gibt der Befehl eject frei.

(qemu) eject floppy0

Gewechselt wird eine Diskette mit dem Befehl change. In diesem Beispiel wird eine reale Diskette unter Linux ausgetauscht.

(qemu) change floppy0 /dev/fd0

Wurde QEMU/KVM mit der Unterstützung für curl kompiliert, ist der Zugriff über das HTTP-Protokoll möglich. In diesem Beispiel wird die Instanz mit dem Disketten-Image von www.netboot.me per HTTP gestartet. Damit lassen sich diverse Linux- und BSD-Distributionen installieren. Da über HTTP kein schreibender Zugriff möglich ist, ist die Option -snapshot notwendig (siehe unten).

Host ~$ qemu-system-x86_64 -fda http://static.netboot.me/gpxe/netbootme.dsk \
        -snapshot

Bei den heute verwendeten Formaten, wie das mit MS-DOS eingeführte FAT-Dateisystem, ist der Master Boot Record (MBR) für BIOS-basierte Computer der x86-Architektur der erste Datenblock (512 Byte). Gekennzeichnet ist der MBR durch die Signatur 0xAA55. Ist diese Signatur vorhanden, geht das BIOS davon aus, dass es sich um einen gültigen MBR handelt. Wird die Signatur nicht gefunden, wird der Boot-Vorgang abgebrochen und eine Fehlermeldung, wie Non-System oder Non-Bootable Disk, erscheint. Bei älteren Disketten-Formaten war diese Signatur noch unbekannt. Diese Disketten werden dadurch als nicht bootfähig erkannt, obwohl sie ein Betriebssystem enthalten können. Um trotzdem ein Booten zu ermöglichen, ist die Option -no-fd-bootchk anzuwenden. Sie deaktiviert den Boot-Signaturtest. Damit lässt sich eine CP/M-86-Diskette booten.

Host ~$ wget http://www.gaby.de/ftp/pub/cpm/sysdisks/cpm86/86raw144.zip
Host ~$ unzip 86raw144.zip
Host ~$ qemu-system-i386 -fda 144cpm86.img -no-fd-bootchk \
        -rtc base=localtime -m 2

[bearbeiten] Memory-Cards und Flash-Memory

Mit der Option -sd file wird eine Secure-Digital-Card emuliert. Die angegebene Datei file dient als Secure-Digital-Card-Image.

Host ~$ qemu-system-x86_64 Platte.img -sd file

Mit der Option -mtdblock file wird ein On-Board-Flash-Memory emuliert. Die angegebene Datei file dient als On-Board-Flash-Memory-Image.

Host ~$ qemu-system-x86_64 Platte.img -mtdblock file

Mit der Option -pflash file wird eine Parallel-Flash emuliert. Die angegebene Datei file dient als Parallel-Flash-Image.

Host ~$ qemu-system-arm Platte.img -pflash file

[bearbeiten] Boot-Reihenfolge

Die Option -boot regelt von welchem Device beziehungsweise Image der Boot-Vorgang eingeleitet wird. Sollen nacheinander mehrere Boot-Medien verwendet werden, so ist der Parameter order=drives anzuwenden. Im folgenden Beispiel wird erst versucht von der Diskette zu booten. Ist dies nicht möglich, wird versucht von CD/DVD-ROM zu booten. Schlägt auch dies fehl, wird der Boot-Vorgang von der Festplatte gestartet.

Host ~$ qemu-system-x86_64 -fda Diskette.img -hda Platte.img -cdrom cd.iso \
        -boot order=adc

Mit dem Parameter once=drives wird nur beim ersten Start versucht, von diesem Medium zu booten. Im folgenden Beispiel wird erst der Boot-Vorgang von dem CD/DVD-Laufwerk eingeleitet. Nach dem Neustart des Gast-Systems wird dann die Festplatte als Boot-Medium verwendet.

Host ~$ qemu-system-x86_64 -hda Platte.img -cdrom cd.iso -boot once=d

Ein Boot-Menü zur Auswahl des Boot-Devices wird mit dem Parameter menu=on aktiviert. Dieses Menü wird in der startenden Instanz mit der Taste [F12] aufgerufen.

Host ~$ qemu-system-x86_64 -hda Platte.img -cdrom cd.iso -boot menu=on

In älteren QEMU-Versionen folgte der Option -boot nur ein Buchstabe (a, c, d, n, o oder p). Wird nach dieser Option ein a angegeben, wird versucht das Betriebssystem von dem ersten Disketten-Laufwerk zu starten. Mit b wird das zweite Disketten-Laufwerk angegeben.

Host ~$ qemu-system-x86_64 -fda Diskette.img -hda Platte.img -boot a

Ein c definiert die erste Festplatte als Boot-Medium (Default). Der Buchstabe d aktiviert das CD-/DVD-Laufwerk. Mit den Buchstaben n, o oder p wird das Booten über Netzwerk konfiguriert (siehe Abschnitt Netzwerkdienste). Hier ein Beispiel für das Booten von der Festplatte.

Host ~$ qemu-system-x86_64 -hda Platte.img -cdrom cd.iso -boot c

Im QEMU-Monitor ändert man eine neue Boot-Reihenfolge mit dem Befehl boot_set. Damit überschreibt man die Werte von -boot. Die Werte entsprechen den Parametern von -boot, können sich aber nach Maschinentyp unterscheiden. Im folgenden Beispiel wird c als Boot-Medium vorgegeben.

(qemu) boot_set c

Während des Bootens kann eine Grafik als Splash-Logo angezeigt werden. Dazu ist mit der Option splash der Pfad zu der Grafik-Datei anzugeben und menu=on zu setzen. Außerdem muss die Bios-Firmeware das Anzeigen von Splash-Logos unterstützen. Derzeit ist Seabios für x86-Systeme dazu in der Lage. Die Grafik-Datei muss entweder im Format JPG oder BMP mit einer Farbtiefe von 24 BPP (True Color) vorliegen. Die Auflösung muss durch den SVGA-Modus unterstützt werden. Empfohlen wird 320x240, 640x480 und 800x640. Mit splash-time wird die Anzeigedauer des Splash-Logos in ms definiert. In diesem Beispiel wird das Splash-Logo fünf Sekunden angezeigt.

Host ~$ qemu-system-x86_64 -boot menu=on,splash=/root/boot.bmp,splash-time=5000

Hier die komplette Syntax der Option -boot:

-boot [order=drives][,once=drives][,menu=on|off] \
      [,splash=sp_name][,splash-time=sp_time]

[bearbeiten] Schutz vor Änderungen

Alle verwendeten Speichermedien können vor Änderungen geschützt werden. Das veranlasst die Option -snapshot. Dabei werden die Änderungen, die eigentlich auf die Speichermedien geschrieben werden, in temporäre Dateien gespeichert. Wird die virtuelle Maschine beendet, gehen alle Änderungen verloren.

Host ~$ qemu-system-x86_64 Platte.img -snapshot

Der Befehl info block des QEMU-Monitors zeigt diese temporäre Datei an:

(qemu) info block
ide0-hd0: removable=0 io-status=ok file=/tmp/vl.2A1p5U \
backing_file=Platte.img ro=0 drv=qcow2 encrypted=0

Mit [Strg]+[Alt]+[s] ist jederzeit ein Speichern der Änderungen auf die Datenträger möglich. Ebenso speichert der Befehl commit im QEMU-Monitor die Änderungen. Der Befehl commit all bewirkt, dass alle Devices gesichert werden. Dies entspricht der Tastenkombination [Strg]+[Alt]+[s].

(qemu) commit all

Der folgende Befehl speichert nur auf die erste Festplatte (Device hda).

(qemu) commit hda

Die Operationen mit dem Befehl commit können sehr lange dauern. Das Gast-System ist dabei eingefroren. Günstig ist es oft mit der Option -snapshot auch die Option -no-shutdown anzuwenden.

Host ~$ qemu-system-x86_64 Platte.img -snapshot -no-shutdown

[bearbeiten] Definition von Laufwerken mit der Option -drive

Ab der Version 0.9.1 bietet QEMU mit der Option -drive flexiblere Möglichkeiten zur Definition von virtuellen Laufwerken.

-drive [file=file][,if=type][,bus=n][,unit=m][,media=d][,index=i]    \
     [,cyls=c,heads=h,secs=s[,trans=t]][,snapshot=on|off]            \
     [,cache=writethrough|writeback|none|directsync|unsafe]          \
     [,format=f][,serial=s][,addr=A][,id=name][,aio=threads|native]  \
     [,werror=action[,rerror=action][,readonly=on|off]

Definiert den Host-Teil eines Block-Device. Mögliche Optionen sind:

     file=file
Diese Option adressiert das Image für dieses Laufwerk. Enthält der Dateiname ein Komma, so ist dieses zu verdoppeln. Spezial-Dateien, wie iSCSI-Devices, werden mit URLs entsprechend des Protokolls definiert.
     if=type
Diese Option definiert mit welcher Art des Interfaces das Laufwerk verbunden ist. Möglich sind: ide, scsi, sd (Secure-Digital-Card), mtd (On-Board-Flash-Memory), floppy, pflash (Parallel-Flash), virtio (Paravirtualisierte Block-Device).
     bus=n,unit=m
Diese Optionen definieren durch die Angabe der Bus-Nummer und der Unit-ID wie das Laufwerk verbunden ist. Diese Angaben sind optional.
     index=i
Als Alternative zu bus und unit kann das einfachere index verwendet werden. Diese Option definiert an welchen Connector eines Interfaces das Laufwerk angeschlossen ist. Mit index wird die Nummer des Connectors angegeben. Bei mehreren Laufwerken wird jeweils durch eine fortlaufende Zahl die Reihenfolge festgelegt. index, bus und unit sind optional. QEMU versucht standardmäßig den ersten freien Anschluss zu finden.
     media=d
Diese Option definiert den Media-Typ (disk oder cdrom).
     cyls=c,heads=h,secs=s[,trans=t]
Diese Optionen haben die gleichen Bedeutungen wie bei -hdachs.
     snapshot=on|off
Die Option kann off oder on gesetzt werden und erlaubt die (De-)Aktivierung der Snapshot-Funktion für das angegebene Laufwerk (siehe Option -snapshot).
     cache=writethrough|writeback|none|directsync|unsafe
Die Option cache kann auf writethrough (Default), writeback, none, directsync oder unsafe gesetzt werden. Sie steuert die Nutzung des Cache für das angegebene Laufwerk. Mit dem Setzten des Parameters writethrough wird der Host-Cache für Lese- und Schreibzugriffe verwendet. Die Bestätigung des Schreibvorganges wird dem Gast-System erst gesendet, wenn das Storage-Subsystem den Schreibvorgang bestätigt hat. Bei der Option writeback wird bereits die Schreibbestätigung gesendet, wenn die Daten im Cache des Hosts gespeichert sind. Stürzt der Host ab, kann es zu Datenverlusten kommen. directsync entspricht writethrough mit dem Unterschied, dass der Host-Page-Cache vermieden wird. Schreibbestätigungen werden direkt zum Gast-System gesendet. Mit unsafe wird der Cache-Inhalt nie auf die Festplatte geschrieben. Bei Problemen mit dem Host droht dabei Datenverlust. Bei der Startoption -snapshot wird unsafe als Default eingestellt. Bei der Option none wird der Host-Cache nicht verwendet. QEMU kann intern die Daten cachen. Die Performance kann bei bestimmten Treibern in Kombination mit der Option writethrough und dem Image-Format qcow2 geringer sein. Wird mehr Wert auf Geschwindigkeit als auf Sicherheit gelegt, ist hier die Option writeback anzuwenden.
     format=f
Gibt das Image-Format vor (Beispiel format=raw).
     serial=s
Definiert die Nummer für die Zuweisung des Device.
     addr=A
Definiert die PCI-Device-Address des Controllers (virtio).
     boot=on|off
Wird die Option boot=on gesetzt, wird das Booten von dem Laufwerk ermöglicht.
     aio=threads|native
Ermöglicht die Wahl zwischen Pthread Based Disk I/O und Native Linux AIO.
     werror=action,rerror=action
Definiert die Aktion bei Schreib- oder Lesefehlern. Bei ignore wird der Fehler ignoriert und es wird versucht weiterzumachen. Die Aktion stop beendet QEMU bei einem Fehler. Bei report wird der Fehler dem Gast-System mitgeteilt. Die Aktion enospc beendet QEMU nur wenn das Host-System keinen Speicherplatz mehr zur Verfügung stellen kann. Ansonsten wird der Fehler dem Gast-System mitgeteilt. Die Default-Einstellungen sind: werror=enospc und rerror=report.
     readonly=on|off
Mit readonly=on wird das Laufwerk mit einem Schreibschutz versehen.

Anstelle der Option -cdrom ist es möglich folgende Optionen anzuwenden:

Host ~$ qemu-system-x86_64 -drive file=cd.iso,index=2,media=cdrom

Die Optionen -hda, -hdb, -hdc und -hdd sind wie folgt ersetzbar:

Host ~$ qemu-system-x86_64 -drive file=Platte.img,index=0,media=disk
Host ~$ qemu-system-x86_64 -drive file=Platte.img,index=1,media=disk
Host ~$ qemu-system-x86_64 -drive file=Platte.img,index=2,media=disk
Host ~$ qemu-system-x86_64 -drive file=Platte.img,index=3,media=disk

Folgende Optionen schließen ein CDROM-Laufwerk als Slave von ide0 an:

Host ~$ qemu-system-x86_64 -drive file=cd.iso,if=ide,index=1,media=cdrom

Wird die Option file nicht definiert, wird ein Laufwerk ohne eingelegtes Medium angelegt.

Host ~$ qemu-system-x86_64 -drive if=ide,index=1,media=cdrom

Folgende Optionen definieren eine SCSI-Festplatte mit der Unit-ID 6 am Bus 0:

Host ~$ qemu-system-x86_64 -drive file=Platte.img,if=scsi,bus=0,unit=6

Anstelle der Optionen -fda oder -fdb können folgende Optionen angewendet werden:

Host ~$ qemu-system-x86_64 -drive file=a.img,index=0,if=floppy
Host ~$ qemu-system-x86_64 -drive file=b.img,index=1,if=floppy

Der Wert index wird jeweils automatisch erhöht.

Host ~$ qemu-system-x86_64 -drive file=c.img -drive file=d.img

Dies entspricht der nachfolgenden Befehlszeile.

Host ~$ qemu-system-x86_64 -hda c.img -hdb d.img

Im QEMU-Monitor fügt man mit dem Befehl drive_add der laufenden virtuellen Maschine ein virtuelles PCI-Laufwerk hinzu. Das Gast-System muss PCI-Hotplug unterstützen. In diesem Beispiel wird das Image daten.img angeschlossen.

(qemu) drive_add dummy if=none,id=mydisk,file=daten.img

Die Optionen von drive_add entsprechen denen von -drive. Hier die Syntax:

(qemu) drive_add [[<domain>:]<bus>:]<slot>  \
      [file=file][,if=type][,bus=n]         \
      [,unit=m][,media=d][index=i]          \
      [,cyls=c,heads=h,secs=s[,trans=t]]    \
      [snapshot=on|off][,cache=on|off] 

Zum Trennen eines Block-Devices dient im QEMU-Monitor der Befehl drive_del.

(qemu) info block
ide0-hd0: type=hd removable=0 file=ubuntu-server.img ro=0 drv=qcow2 encrypted=0
(qemu) drive_del ide0-hd0


<<<|###| >>>

Von „http://qemu-buch.de/de/index.php?title=QEMU-KVM-Buch/_Speichermedien/_Zugriff_auf_Speichermedien

Diese Seite wurde bisher 77.302 mal abgerufen. Diese Seite wurde zuletzt am 29. März 2012 um 16:58 Uhr geändert. Inhalt ist verfügbar unter der GNU Free Documentation License 1.2.


Finden

Blättern

News

Deutsch
Weitersagen
Tipps für Autoren
Autoren
Impressum


English
Recommendation
The Authors
Contact



Letzte Änderungen


Ändern
Seite bearbeiten
Bearbeitungshilfe
Seitenoptionen
Diskussion
Kommentar hinzufügen
Druckversion
Seitendaten
Versionen
Links auf diese Seite
Änderungen an verlinkten Seiten
Meine Seiten
Anmelden
Spezialseiten
Neue Seiten
Dateiliste
Statistik
Kontakt
Mehr …