Ubuntu-Live-System aus Virtueller Maschine auf USB-Stick erstellen – (Workshop-LOG Chemnitzer Linuxtage 2016)

Workshop zu den Linuxtagen Chemnitz 2016

Eigene Live-USB-Systeme erstellen mit Trick 17 (Referrent: Thomas Laube)

 

Aufzeichnung und Durchführungs-LOG des Workshops von mir.

Meine persönlichen Angaben zu Pfaden, devs, Labels, Einhängepunkte usw. sind entsprechend anzupassen. Ein Nachvollzug der Befehle erfolgt immer auf eigene Gefahr.

In einer virtuellen Maschine wird das System für den USB-Stick erstellt, erweitert, angepasst und konfiguriert. Mögliche Typen:

  • VDI (Standardformat Virtualbox)
  • VMDK (Standardformat VMWare)
  • Qcow (Standardformat QEMU)
  • VHD/VHDX (Standardformat Windows Virtual PC)
  • HDD (Parallels)

Mein Beispiel (mit erfolgreichem Test):

  • Host Ubuntu 14.0.3 AMD64 (Lenovo B5400)
  • Gast Ubuntu 14.0.4 AMD64 in VDI (5.0)
  • Ziel OZSTI037 (Intenso silber)

LiveUSBstick 00 Programminstallationen

HostSystem Ubuntu 14.04

# apt-get install \
        squashfs-tools \
        libguestfs-tools \
        syslinux \
        extlinux

VM Gast Ubuntu 14.04.4

# apt-get install \
        live-boot \
        live-boot-initramfs-tools \
        squashfs-tools

LiveUSBstick 01 Stick

Stick muss eine Partition in ext4 besitzen, welche bootbar ist.

Achtung richtige /dev/sd… auswählen sonst Datenverlust!!!

gparted Programm starten

z. B. USB-Stick /dev/sdc bzw /dev/sdc1 /dev/sdc2 ...
Aushängen
alle Partitionen - Patition - Löschen
Neue Partitionstabelle erstellen - Gerät - Partitionstabelle erstellen - MSDOS 
neue Partition erstellen Neu - ext4, primär
Markierung bearbeiten boot
Formatieren als ext4

Alle Schritte im Programm einzeln ausführen

Ermitteln der /dev

USB-Stick neu einstecken

  • Aushängen
# umount /dev/sdc1
  • Kontrolle dev
# fdisk -l

Bootloader von syslinux schreiben

# dd bs=440 count=1 if=/usr/lib/syslinux/mbr.bin of=/dev/sdc

Konsole Sticklabel setzen

# tune2fs -L OZSTI037 /dev/sdc1

LiveUSBstick 02 Vorbereitung in der VM

Entsprechendes System installieren/duplizieren. Mit Programmen ergänzen, Nutzer, Quellen, Daten anpassen und konfigurieren

  • System in der VM aktualisieren
# apt-get update 
# apt-get upgrade
  • Unnötige Teile löschen und entsorgen
    • Programme
    • Daten
    • Cache, Papierkorb usw.
    • alte Kernel
  • Paketzwischenspeicher löschen
# apt-get clean

notwendige Programme installieren/überprüfen z. B. Gast Ubuntu 14.04.4

# apt-get install \
        live-boot \
        live-boot-initramfs-tools \
        squashfs-tools

Initramfs neu bauen

# update-initramfs -u

LiveUSBstick 03 Vorbeitung im Host-System

  • VM herunterfahren und ausschalten
  • Erstellen Einhängepunkt für VM-Datei
# mkdir /home/olaf/Server/vm
  • Einhängen der VM
# guestmount -a /home/olaf/VM/Ubuntu14044AMD64-003-KlonLTC/Ubuntu14044AMD64-003-KlonLTC.vdi -i /home/olaf/Server/vm
  • Erstellen Verzeichnis für Arbeitskopie der VM
# mkdir /home/olaf/tmp
  • Kopieren aller Dateien von VM-Verzeichnis nach Arbeitskopie
# cp -a /home/olaf/Server/vm/* /home/olaf/tmp/
  • Aushängen der VM
# guestunmount /home/olaf/Server/vm

LiveUSBstick 04 Erstellung Live-System im Host

fstab für das Live-System erstellen

# joe /home/olaf/tmp/etc/fstab
alten Inhalt löschen

neuer Inhalt:

overlayfs / overlayfs rw 0 0
tmpfs /tmp tmpfs nosuid,nodev 0 0

Squashfilesystem erstellen

# mksquashfs /home/olaf/tmp/. filesystem.squashfs -comp xz

ca. 15 min

LiveUSBstick 05 Erstellung Live-System auf Stick

USB-Stick neu einstecken

SYSLINUX installieren (4.0)

# mkdir -p /media/olaf/OZSTI037/boot/syslinux
# extlinux --install /media/olaf/OZSTI037/boot/syslinux
# cp -r /usr/lib/syslinux/*.c32 /media/olaf/OZSTI037/boot/syslinux/

Squashfilesystem auf den Stick kopieren

# mkdir -p /media/olaf/OZSTI037/live
# cp filesystem.squashfs /media/olaf/OZSTI037/live/

Aktuellen Kernel auf den Stick kopieren und umbenennen

# cp /home/olaf/tmp/boot/vmlinuz-4.2.0-34-generic /media/olaf/OZSTI037/vmlinuz
# cp /home/olaf/tmp/boot/initrd.img-4.2.0-34-generic /media/olaf/OZSTI037/initrd

Syslinux Konfigurationsdatei erstellen

# joe /media/olaf/OZSTI037/boot/syslinux/syslinux.cfg

default menu.c32
prompt 0
menu title SYSLINUX
timeout 100

label default
menu label Livesystem Ubuntu 14.04.4 - Chemnitzer Linuxtage 2016 - 20.3.2016
kernel /vmlinuz
append initrd=/initrd boot=live

Syslinux Konfigurationsdatei erweitern

gleicher Bau wie bisher

  • Squashfilesystem nach /media/olaf/OZSTI037/live2 kopieren
  • Aktuellen-Kernel nach /media/olaf/OZSTI037/*2 kopieren
# joe /media/olaf/OZSTI037/boot/syslinux/syslinux.cfg

default menu.c32
prompt 0
menu title SYSLINUX
timeout 100

label default
menu label Livesystem Ubuntu 14.04.4 - Chemnitzer Linuxtage 2016 - 20.3.2016
kernel /vmlinuz
append initrd=/initrd boot=live

menu label Livesystem Ubuntu 14.04.4 - 2. System
kernel /vmlinuz2
append initrd=/initrd2 boot=live2

LiveUSBstick 06 Nacharbeit

Löschen des Inhaltes der Arbeitsverzeichnisse

  • /home/olaf/tmp/
# rm -r /home/olaf/tmp/*

Neue Rechte-Zuweisung

# chown olaf:olaf /home/olaf/tmp

Löschen des Squashfilesystem

  • /root/filesystem.squashfs
# rm  /root/filesystem.squashfs

Anmerkung: Befehle als root im Terminal

# ...

https://chemnitzer.linux-tage.de/2016/de/programm/beitrag/393

http://trick17.tomtomtom.org/