Archiv/System vom RAM booten

Archivierte Anleitung

Dieser Artikel wurde archiviert. Das bedeutet, dass er nicht mehr auf Richtigkeit überprüft oder anderweitig gepflegt wird. Der Inhalt wurde für keine aktuell unterstützte Ubuntu-Version getestet. Wenn du Gründe für eine Wiederherstellung siehst, melde dich bitte in der Diskussion zum Artikel. Bis dahin bleibt die Seite für weitere Änderungen gesperrt.

Artikel für fortgeschrittene Anwender

Dieser Artikel erfordert mehr Erfahrung im Umgang mit Linux und ist daher nur für fortgeschrittene Benutzer gedacht.

Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:

  1. Ein Terminal öffnen

  2. Einen Editor verwenden

Inhaltsverzeichnis
  1. Vorteile
  2. Nachteile
  3. Mindestanforderungen für Betrieb
  4. Anforderungen für Erstellung
  5. modifizierte Live-CD erstellen
    1. ISO/LiveCD entpacken
    2. komprimiertes Image entpacken
    3. Boot-Skripte patchen
    4. initrd.gz neu erstellen
    5. Abschließende Änderungen
    6. ISO erstellen/auf CD brennen
  6. Anregungen/Ideen
    1. Eject-Meldung entfernen
    2. Internetverbindung herstellen, Updates e...
  7. Links

Ein System von RAM zu booten ist etwas, was viele Distributionen von Haus aus können. Ein Beispiel dafür wäre zum Beispiel Knoppix 🇩🇪. Mit dem Bootparameter toram kann die ganze Distribution in den RAM kopiert und von da gebootet werden. Ubuntu kann das leider nicht, was aber trotzdem von vielen als nützliche Funktion erwünscht wäre.

Das Ziel dieses Artikels ist es, ein angepasstes Ubuntu-System zu erzeugen, das die "toram"-Funktion bietet. Es sind keine Vorkenntnisse in der Erstellung von angepassten Ubuntu-Versionen nötig, allerdings sollte man mit dem Umgang der Shell vertraut sein. Die erzeugten Dateien können sowohl von Festplatte, als auch von USB oder CD gebootet werden.

Vorteile

Es gibt viele Vorteile, das solch ein Live-System im RAM bietet, z.B.:

Nachteile

Allerdings bringt es auch Nachteile mit sich:

Mindestanforderungen für Betrieb

Anforderungen für Erstellung

modifizierte Live-CD erstellen

ISO/LiveCD entpacken

Zuerst erstellt man im Root-Verzeichnis einen Ordner casper. Dort kopiert man nun folgende Dateien (von ISO-Image oder LiveCD) hinein:

Nun kann die LiveCD (ISO-Image) wieder entfernt werden.

Zudem erstellt man noch einen Ordner /casper/chroot, wo man danach die Dateien usw. entpackt und bearbeitet, bzw. wovon dann auch gebootet wird.

komprimiertes Image entpacken

Anschließend entpackt man /casper/filesystem.squashfs nach /casper/chroot:

sudo mount -o loop -t squashfs /casper/filesystem.squashfs /mnt
sudo rsync -avx --progress /mnt/. /casper/chroot/.
sudo umount /mnt 

Boot-Skripte patchen

Man öffnet nun die Datei /casper/chroot/usr/share/initramfs-tools/scripts/casper mit einem Editor[2] und passt sie wie folgt an:

Bei Zeile 35 findet man folgenden Absatz:

1
2
                export SHOWMOUNTS='Yes' ;;
            persistent)

Dazwischen fügt man zwei Zeilen ein, damit es so aussieht:

1
2
3
4
                export SHOWMOUNTS='Yes' ;;
            toram)
                export TORAM='Yes' ;;
            persistent)

Um die Zeile 672 herum findet man folgenden Absatz:

1
2
3
    if [ "${TORAM}" ]; then
        live_dest="ram"
    elif [ "${TODISK}" ]; then

Diesen verändert man so:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
    if [ "${TORAM}" ]; then
        #live_dest="ram"
        mkdir /store
        mount -t tmpfs -o size=1G none /store
        mkdir /store/casper
        cp /cdrom/casper/*.squashfs /store/casper/
        umount /cdrom
        mount -o bind /store /cdrom

    elif [ "${TODISK}" ]; then

Sollte das Erwartete Image größer als 1GB werden, so muss man die Angabe size=1G durch einen entsprechenden Wert ersetzen (zum Beispiel 1500M oder 2G).

Ausserdem ist zu beachten, dass die Zeile

1
live_dest="ram"

auskommentiert oder gelöscht wird.

Danach speichert man die Datei ab und schließt den Editor.

initrd.gz neu erstellen

Um die Änderungen zu speichern, muss man initrd.gz neu erstellen. Dazu öffnet man chroot in der Bash:

sudo chroot /casper/chroot /bin/bash 

Jetzt ist man praktisch im Live-System drin. Alle Änderungen beziehen sich jetzt auf das Live-System.

Hinweis:

Sollte die Kernelversion des Live-Systems nicht mit der Kernelversion des Host-Systems übereinstimmen, so muss anstatt $(uname -r) die entsprechende Kernelversion eingetragen werden!
Beispiel: 3.2.0-25-generic

#Dieser Befehl kann auch ein paar Minuten Zeit in Anspruch nehmen (evtl. auftretende Fehler können normalerweise ignoriert werden)
mkinitramfs -o /new-initrd.gz $(uname -r)
#Exit schließt chroot wieder und kehrt zum laufenden System zurück
exit 

Nun muss man nur noch das alte initrd.gz mit dem neuen überschreiben:

sudo mv /casper/chroot/new-initrd.gz /casper/initrd.gz 

Abschließende Änderungen

Dann wird nur noch das Filesystem-Image neu erstellt:

Hinweis:

Unter Umständen muss vorher noch das Paket squashfs-tools installiert werden

sudo mksquashfs /casper/chroot /casper/filesystem.squashfs -noappend -always-use-fragments 

Anschließend kann man den Ordner /casper/chroot entfernen, oder man lässt ihn noch, um später noch Änderung vornehmen zu können, ohne jeden Schritt nochmal machen zu müssen. Schließlich muss man der /boot/grub/menu.lst noch diesen Booteintrag hinzufügen (Mehr Informationen zu GRUB).

1
2
3
title    ToRAM Session
kernel   /casper/vmlinuz boot=casper toram splash
initrd   /casper/initrd.gz

Nun kann man beim nächsten Neustart das System von RAM booten.

ISO erstellen/auf CD brennen

Will man aus der modifizierten Version eine CD erstellen, die wiederum in den RAM bootbar ist, so sind noch ein paar Schritte notwendig.

Zuerst erstellt man dazu den Ordner /iso. Da verschiebt man nun den Ordner /casper hinein.

# Anschließend erstellt man die Unterorder
sudo mkdir -p /iso/boot/grub
# Dann kopiert man stage2 hinein (64bit)
sudo cp /usr/lib/grub/x86_64-pc/stage2_eltorito /iso/boot/grub
# Sollte man 32bit verwenden, so wird statt dem letzten Befehl dieser hier verwendet:
sudo cp /usr/lib/grub/i386-pc/stage2_eltorito /iso/boot/grub

#Dann erzeugt man die menu.lst
sudo touch /iso/boot/grub/menu.lst
# Die man dann entsprechend verändert:
sudo nano /iso/boot/grub/menu.lst 

In die menu.lst schreibt man folgenden Text hinein:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
# Per default den ersten Eintrag booten
default 0
# Dieser soll nach 10 Sekunden gebootet werden
timeout 10
# Lässt sich der Erste Eintrag nicht booten, so soll er den 3. Eintrag booten (von Festplatte)
fallback 2

# Bootet einfach das System mit toram
title          Ubuntu with toRAM
kernel         /casper/vmlinuz boot=casper toram splash quiet
initrd         /casper/initrd.gz

#Bootet das System mit toram und deutscher Sprache sowie deutschem Tastaturlayout
title          Ubuntu with toRAM
kernel         /casper/vmlinuz boot=casper toram splash quiet locale=de_DE bootkdb=de console-setup/layoutcode=de
initrd         /casper/initrd.gz

# Bootet von der ersten Festplatte
title          Von erster Festplatte booten
root           (hd0,0)
makeactive
chainloader +1

Anschließend speichert man die Datei ab und kehrt wieder zur Konsole zurück:

# Nun wechselt man ins Root-Verzeichnis
cd /
# und erstellt vom Ordner iso das ISO-Image, dieser Vorgang kann ein paar Minuten dauern
sudo genisoimage -R -b boot/grub/stage2_eltorito -no-emul-boot -boot-load-size 4 -boot-info-table -o LiveCD_mit_toram.iso iso 

Das erzeugte Image liegt nun direkt im Root-Verzeichnis.

Jetzt kann man dieses auf eine CD brennen und verwenden.

Anregungen/Ideen

Das Live-System kann man auch an eigene Wünsche anpassen. Folgendes wäre zum Beispiel noch interessant:

Eject-Meldung entfernen

Um die Eject-Meldung beim Herunterfahren bzw. Neustarten zu entfernen, ist es lediglich nötig, in der chroot-Umgebung in den Ordnern /etc/rc0.d/ und /etc/rc6.d die jeweilige Datei zu entfernen, die das Wort casper enthält. Ansonsten kann genauso vorgegangen werden, wie im Artikel besprochen

Internetverbindung herstellen, Updates einspielen

Erst einmal muss die Internetverbindung hergestellt werden, wie auch in chroot/Live-CD (Abschnitt „Zusaetzliche-Schritte“) nachzulesen ist. Hier genügt dieser Befehl:

sudo cp /etc/resolv.conf /casper/chroot/etc/resolv.conf 

Anschließend kann man via chroot ins System wechseln und Aktualisierungen einspielen (apt-get update && apt-get upgrade), Programme entfernen die man nicht braucht, etc.

Danach sollte man unbedingt noch den Cache folgendermaßen löschen, damit das Live-System nicht unnötig groß wird:

sudo apt-get autoremove
sudo apt-get clean