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:
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.:
Die Festplatte wird nicht so stark beansprucht
Laptops könnten dadurch eine höhere Laufzeit mit dem Akku erzielen
System kann als Spielwiese verwendet werden, ohne dass etwas passieren kann
Herunterfahren könnte theoretisch entfallen, da sämtliche Daten sowieso nur im RAM lagern
SWAP kann bei knappen RAM trotzdem genutzt werden, weil dieser automatisch erkannt und verwendet wird
Man kann mit sensiblen Daten hantieren, da diese nach dem Herunterfahren sowieso gelöscht werden
Die Festplatte wird abgeschaltet → weniger Lärm
Bei einem Systemabsturz, Stromunterbrechung, o.ä. kann auf der Festplatte kein Schaden entstehen
Nachteile¶
Allerdings bringt es auch Nachteile mit sich:
Bei Programmaktualisierungen muss man es neu erstellen
Einstellungen bleiben nicht erhalten
Wenn der SWAP genutzt werden muss, ist der Geschwindigkeitsvorteil nicht mehr ganz so groß, allerdings immer noch schneller als nur von CD
Mindestanforderungen für Betrieb¶
Als RAM + SWAP für den Live-Betrieb werden 1,5 GByte bei 700 MByte Image empfohlen
Es wird ein Pentium 3 oder höher empfohlen (oder vergleichbares)
Anforderungen für Erstellung¶
Ein ISO-Image von Ubuntu/Kubuntu oder eine LiveCD
2-4 GB freier Speicher
Mindestens 1 GB RAM zum Erstellen des Images
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:
das komprimierte Image, zu finden unter /casper/filesystem.squashfs
den Kernel unter /casper/vmlinuz
und initramfs, zu finden unter /casper/initrd.gz
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 Archiv/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:
Grafikkartentreiber hinzufügen
Shutdown-Skript so ändern, dass der PC nicht mehr herunterfahren muss
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
Links¶