[[Vorlage(Archiviert)]] [[Vorlage(Fortgeschritten)]] {{{#!vorlage Wissen [:Terminal: Ein Terminal öffnen] [:Editor:Einen Editor verwenden] }}} [[Inhaltsverzeichnis()]] Ein System von RAM zu booten ist etwas, was viele Distributionen von Haus aus können. Ein Beispiel dafür wäre zum Beispiel [http://www.knoppix.org Knoppix] {de}. 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''': {{{#!vorlage Befehl 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: {{{#!code bash export SHOWMOUNTS='Yes' ;; persistent) }}} Dazwischen fügt man zwei Zeilen ein, damit es so aussieht: {{{#!code bash export SHOWMOUNTS='Yes' ;; toram) export TORAM='Yes' ;; persistent) }}} Um die Zeile 672 herum findet man folgenden Absatz: {{{#!code bash if [ "${TORAM}" ]; then live_dest="ram" elif [ "${TODISK}" ]; then }}} Diesen verändert man so: {{{#!code bash 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 {{{#!code bash live_dest="ram" }}} auskommentiert oder gelöscht wird. ##{{{ ##mount -t tmpfs -o size=1G none /store ##}}} ##gibt an, dass "toram" nur dann funktionert, wenn die Größe des RAM + SWAP mindestens 1GB beträgt. Je nach Imagegröße, dass es später besitzt, sollte man es anpassen (1500MB so: 1500M und 2GB schreibt man so: 2G). 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: {{{#!vorlage Befehl sudo chroot /casper/chroot /bin/bash }}} Jetzt ist man praktisch im Live-System drin. Alle Änderungen beziehen sich jetzt auf das Live-System. {{{#!vorlage 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''' }}} {{{#!vorlage Befehl #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: {{{#!vorlage Befehl sudo mv /casper/chroot/new-initrd.gz /casper/initrd.gz }}} == Abschließende Änderungen == Dann wird nur noch das Filesystem-Image neu erstellt: {{{#!vorlage Hinweis Unter Umständen muss vorher noch das Paket '''squashfs-tools''' installiert werden }}} {{{#!vorlage Befehl 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:]). {{{#!code 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. {{{#!vorlage Befehl # 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: {{{#!code # 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: {{{#!vorlage Befehl # 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#Zusaetzliche-Schritte:] nachzulesen ist. Hier genügt dieser Befehl: {{{#!vorlage 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: {{{#!vorlage Befehl sudo apt-get autoremove sudo apt-get clean }}} = Links = * [:chroot:] * [:RAM-Disk_erstellen:] * [ubuntu:BootToRAM:] # tag: System, Live-CD