Linux Installation in VM und native

Es kann interessant sein, wenn man auf einem System das Linux sowohl in einer VM (z.B. unter Windows mit VMware Workstation) als auch direkt booten kann. Zum direkten Starten der Linux VM verwende ich einen einfachen USB Stick, den ich in den Rechner stecken kann.

Aufbau
Ein System mit zwei Festplatten, so nutze ich einen Lenovo Laptop mit einer zweiten Festplatte.

Auf der ersten Festplatte wird Windows in der Regel bereits installiert sein, so dass wir als nächsten Schritt VMware Workstation installieren und dann eine VM einrichten:

  • Bei der VM ist wichtig, dass wir die zweite Festplatte als physikalische Festplatte übergeben.

Die Installation der Linux Distribution (ich habe Debian genutzt) erfolgt dann ohne Besonderheiten. Bei der Installation kann die zweite Festplatte wie gewünscht partitioniert und genutzt werden.

Nach der Installation sollten wir noch die open-vm-tools installieren und schon haben wir unsere Linux VM fertig zur Benutzung.

Nun benötigen wir einen USB Stick, welchen wir anschließen und in VMware Workstation der laufenden Linux VM zuweisen. Diese sollte den USB Stick erkennen, so dass wir das Gerät nutzen können. (Falls wir den Device Namen nicht kennen, dann einfach per „sudo dmesg“ oder „lsblk“ nachschauen.)

Formatieren des USB Sticks
Der USB Stick wird im MBR Format formatiert und eine erste Partition für ein FAT Filesystem erzeugt. Dieser Partition setzen wir noch das boot Flag. Im Anschluss formatieren wir die Partition mittels mkfs.msdos.

Syslinux
Wir installieren das Paket syslinux und bereiten den Stick für das booten vor:

  • Wir schreiben den bei syslinux mitgelieferten mbr auf den Stick
    dd conv=notrunc bs=440 count=1 if=mbr.bin of=/dev/sdX
    (Die datei mbr.bin findet sich bei Debian unter /usr/lib/syslinux/…)
  • Wir prüfen noch einmal das boot Flag der ersten Partition.
  • Wir schreiben notwendige Dateien auf die Partition:
    syslinux –install /dev/sdX1

Nun kopieren wir aus /boot die Dateien
– inird.img.*
– vmlinuz-*
auf die Partition des Sticks und legen dort die Datei syslinux.cfg mit folgendem Inhalt an:

DEFAULT linux
TIMEOUT 1
LABEL linux
KERNEL vmlinuz-<rest of filename>
APPEND ro root=UUID=<UUID of root device>
initrd=initrd.img-<rest of filename>

Dabei ist natürlich zu ersetzen:
– <rest of filename> mit dem exakten Namen der initrd/vmlinuz files.
– <UUID of root device> mit der UUID der root Partition. Diese sollte auch in der /etc/fstab stehen oder kann mit blkid ermittelt werden.

Hinweis: Wenn in der /etc/fstab Partitionen noch mit /dev/sdXY angegeben wurden, so empfehle ich, diese auch durch die UUID zu ersetzen!

Links