Benutzer-Werkzeuge

Webseiten-Werkzeuge


zugriff_auf_speichermedien

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]

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 -hda Platte.img -hdb zweite-Platte.img

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

Host ~$ qemu 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.

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 -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 -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 -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 -cdrom http://static.netboot.me/gpxe/netbootme.iso

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 -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 -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 ein Schreibschutz notwendig (siehe unten).

Host ~$ qemu -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 -fda 144cpm86.img -no-fd-bootchk \
-rtc base=localtime -m 2

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

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

Schreibschutz

Speichermedien können vor Änderungen geschützt werden. Das veranlasst die Option -snapshot. Der Name der Option -snapshot ist irreführend. Mit dieser Option wird keine Momentaufnahme des Systems erzeugt, sondern es werden alle Medien mit einem Schreibschutz versehen. Momentaufnahmen des Systems werden dagegen mit VM-Snapshots angelegt. Bei der Anwendung von -snapshot werden die Änderungen, die eigentlich auf die Speichermedien geschrieben werden, in temporäre Dateien gespeichert. Beispiel:

Host ~$ qemu Platte.img -snapshot

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

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|unsafe|none][,format=f] \
[,serial=s][,addr=A][,id=name][,aio=threads|native] \
[,werror=action[,rerror=action][,readonly=on|off]

Mögliche Optionen sind:

  • file=file

Diese Option definiert, welches Image für dieses Laufwerk verwendet wird. Enthält der Dateiname ein Komma, so ist dieses zu verdoppeln.

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

  • media=d

Diese Option definiert den Media-Typ (disk oder cdrom).

  • index=i

Diese Option definiert an welchen Connector eines Interfaces das Laufwerk angeschlossen ist. Mit index wird die Nummer des Connectors angegeben.

  • 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=none|writethrough|writeback|unsafe

Die Option cache kann auf none, writeback, writethrough (Default) 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. 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 und KVM können 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 -drive file=cd.iso,index=2,media=cdrom

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

Host ~$ qemu -drive file=Platte.img,index=0,media=disk

Host ~$ qemu -drive file=Platte.img,index=1,media=disk

Host ~$ qemu -drive file=Platte.img,index=2,media=disk

Host ~$ qemu -drive file=Platte.img,index=3,media=disk

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

Host ~$ qemu -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 -drive if=ide,index=1,media=cdrom

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

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

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

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

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

Der Wert index wird jeweils automatisch erhöht.

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

Dies entspricht der nachfolgenden Befehlszeile.

Host ~$ qemu -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. 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

zugriff_auf_speichermedien.txt · Zuletzt geändert: von 127.0.0.1

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki