staging.inyokaproject.org

Persistenten USB-Live-Stick im BIOS-Modus erstellen

Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:

Dieser Artikel ist mit keiner aktuell unterstützten Ubuntu-Version getestet! Bitte teste diesen Artikel für eine Ubuntu-Version, welche aktuell unterstützt wird. Dazu sind die Hinweise zum Testen von Artikeln zu beachten.

Wiki/Icons/usb.png Dieser Artikel beschreibt, wie man manuell einen persistenten Live-USB-Stick erstellen kann. „Persistent“ bedeutet in diesem Zusammenhang, dass auf einer zweiten, speziell gekennzeichneten Partition sämtliche veränderten Einstellungen des Live-Systems und vom Nutzer veränderte bzw. hinzugefügte Dateien gespeichert werden.

Voraussetzungen

Folgendes wird benötigt:

  • die ISO-Datei, auf deren Grundlage das persistente System erstellt werden soll (zu finden unter Downloads)

  • ein USB-Stick

  • ein Rechner mit der Möglichkeit von USB zu booten

Als Bootloader wird hier SYSLINUX eingesetzt.

  • isolinux

  • syslinux

  • syslinux-common

  • extlinux (universe)

Befehl zum Installieren der Pakete:

sudo apt-get install isolinux syslinux syslinux-common extlinux 

Oder mit apturl installieren, Link: apt://isolinux,syslinux,syslinux-common,extlinux

Stick partitionieren

Auf dem USB-Stick werden mindestens zwei Partitionen anlegt. Hierzu können sowohl grafische Programme wie GParted oder Partitionmanager als auch CLI-Programme wie fdisk, GNU Parted und cfdisk verwendet werden.

Die Partition für das Livesystem muss mindestens die Größe des verwendeten Images haben, die Persistenzpartition kann je nach Bedarf und Größe des Sticks erstellt werden. Die Systempartition wird hier in Ext2, Ext3 oder Ext4 erstellt und kann beliebig gelabelt werden.

Die Persistenzpartition muss zwingend das Label casper-rw erhalten.

Livesystem auf den Stick bringen

Die heruntergeladene ISO-Datei wird als Loop_device gemountet

sudo mount -o loop DATEINAME.iso /mnt 

Für die Partition, die das Livesystem enthalten soll, wird ein Mountpoint eingerichtet

sudo mkdir /media/system 

und die Partition dorthin eingebunden.

sudo mount /dev/sdXx /media/system 

wobei /dev/sdXx an die tatsächlich bestehenden Gegebenheiten angepasst wird, also zum Beispiel

sudo mount /dev/sdb1 /media/system 

Anschließend werden die Daten auf den Stick kopiert.

sudo cp -a /mnt/. /media/system 

Um sicherzustellen, dass auch alle Daten auf den Stick geschrieben wurden und nicht noch im Schreibcache, sind diese noch zu synchronisieren.

sync 

Anschließend kann das Loopdevice ausgehängt werden.

sudo umount /mnt 

Bootloader installieren und konfigurieren

Nun wird SYSLINUX auf der Partition installiert, auf der das Livesystem liegt.

sudo extlinux --install /media/system 

Danach wird mit einem Editor[3] mit Rootrechten noch die Konfigurationsdatei syslinux.cfg im Unterverzeichnis /media/system angelegt, die auf das im ISO-Image verwendete ISOLINUX 🇬🇧 weiterleitet durch folgenden Inhalt:

DEFAULT loadconfig

LABEL loadconfig
  CONFIG /isolinux/isolinux.cfg
  APPEND /isolinux/

Die Datei /media/system/isolinux/txt.cfg

wird durch einen Eintrag zum persistenten Betrieb erweitert, dazu wird in einem Editor[4] nach der Zeile

append  file=/cdrom/preseed/ubuntu.seed boot=casper initrd=/casper/initrd.lz quiet splash ---

der Abschnitt

label persistent
  menu label ^Ubuntu persistent
  kernel /casper/vmlinuz.efi
  append file=/cdrom/preseed/ubuntu.seed boot=casper initrd=/casper/initrd.lz persistent quiet splash ---

eingefügt.

Soll der Stick hauptsächlich im persistenten Modus genutzt werden bietet es sich an, den Wert

default live

durch

default persistent

zu ersetzen, wodurch der persistente Modus als vorausgewählter Standard erscheint.

Hinweis:

Dieser Text ist für ein Standard-Ubuntu-Image gedacht! Bei den Derivaten sind statt Ubuntu die Namen der Derivate im Booteintrag vorhanden.

Die Partition wird ausgehängt

sudo umount /media/system 

und der Master_Boot_Record des Sticks neu geschrieben, um Syslinux zu verwenden.

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

Hinweis:

Hier ist darauf zu achten, dass der Datenträger angegeben wird und NICHT eine darauf befindliche Partition!

Die Partition muss jetzt noch als bootbar markiert werden.

sudo parted /dev/sdX set x boot on 

Für die erste Partition auf /dev/sdb wäre das als Beispiel

sudo parted /dev/sdb set 1 boot on 

Anschließend kann der angelegte Mountpoint entfernt werden.

sudo rmdir /media/system 

Jetzt lässt sich vom Stick booten, wenn man im BIOS bzw. in einem im Legacy-Modus laufenden UEFI den Stick als Bootmedium auswählt.

Nacharbeit

Hinweis:

Bei einem persistenten USB-Stick ist es nicht möglich Kernel-Updates einzuspielen! Es ist technisch dadurch bedingt, dass der Kernel, der das initramfs bootet, in dem das Livesystem sich befindet, außerhalb dessen liegt und somit über die Aktualisierungsverwaltung nicht erreichbar ist.

Um das übrige System (!außer kernel!) trotzdem ohne Komplikation updaten zu können, müssen Kernel und Kernel-Headers von einem solchen ausgeschlossen werden. Das erreicht man, indem man nach dem ersten Start im persistenten Modus die für die Aktualisierung des Kernels (und den headers) verantwortlichen Metapakete entfernt.

Welche dies sind hängt von der verwendeten ISO-Datei ab. Bei Point-Releases von LTS-Versionen unterscheiden sich diese von denen in STS-Versionen.

Achtung!

Durch diese Vorgehensweise bleiben mögliche, seitdem entdeckte Sicherheitslücken im Kernel ungeschlossen!

Nach dem Entfernen der folgend gelisteten Pakete kann die Aktualisierungsverwaltung wie in einem installierten System genutzt werden.

Ubuntu 18.04

sudo apt-get purge linux-generic linux-image-generic linux-headers-generic linux-signed-generic linux-signed-image-generic 

Intern

  • Booten - Booten und Bootoptionen

Extern

Diese Revision wurde am 5. Mai 2021 19:21 von noisefloor erstellt.
Die folgenden Schlagworte wurden dem Artikel zugewiesen: USB