[[Vorlage(archiviert)]] {{{#!vorlage warnung Fehler bei der Konfiguration des Bootmanagers können zu einem unbenutzbaren System führen. }}} {{{#!vorlage Hinweis Der ab [:Karmic Koala:Ubuntu 9.10] als Standard verwendete neue Bootloader [:GRUB 2:] wird in einem eigenen Artikel behandelt. Der hier beschriebene Vorgänger wird inzwischen auch als ''"GRUB Legacy"'' bezeichnet. Der Artikel [:Archiv/Grub_2_durch_Grub_ersetzen:] erläutert, wie man die ältere GRUB-Version dennoch nutzen kann. }}} {{{#!vorlage Wissen [:Terminal: Ein Terminal öffnen] [:Editor: Einen Texteditor öffnen] }}} [[Inhaltsverzeichnis(2)]] = Installation auf Diskette = Um bei Problemen mit dem Bootloader auf einer Festplatte noch eine Notlösung zu haben, kann man GRUB zusätzlich auch auf einer Diskette installieren. Dazu hat man zwei Möglichkeiten. Methode 1 installiert dabei fast das komplette '''/boot'''-Verzeichnis auf Diskette, so dass man unabhängig vom zu startenden System ist. Methode 2 schreibt nur einen Verweis auf die '''menu.lst''' der aktuellen Distribution, geht dafür aber auch schneller und einfacher. == Methode 1 == Eine Diskette ins Laufwerk einlegen und dann die folgenden Befehle im Terminal [1] ausführen: {{{#!vorlage Befehl mke2fs /dev/fd0 }}} Legt auf der Diskette (fd0) ein ext2-Dateisystem an. Alle Daten auf der Diskette gehen verloren. {{{#!vorlage Befehl sudo mkdir /media/floppy }}} Legt das Verzeichnis '''floppy''' als Unterverzeichnis des Verzeichnisses '''/media''' an. {{{#!vorlage Befehl sudo mount -t ext2 /dev/fd0 /media/floppy }}} Bindet das Dateisystem der Diskette (fd0) an das Verzeichnis '''/media/floppy''' {{{#!vorlage Befehl sudo mkdir /media/floppy/boot }}} Legt ein Unterverzeichnis '''boot''' im Verzeichnis '''floppy''' an {{{#!vorlage Befehl cd /media/floppy/boot sudo cp /usr/lib/grub/i386-pc/* . sudo cp /usr/sbin/grub . sudo cp /boot/grub/menu.lst . }}} Bei AMD64: {{{#!vorlage Befehl cd /media/floppy/boot sudo cp /usr/lib64/grub/x86_64-pc/* . sudo cp /usr/sbin/grub . sudo cp /boot/grub/menu.lst . }}} Mit dem ersten Befehl wechselt man in das Verzeichnis '''/media/floppy/boot'''. Die drei weiteren Befehle kopieren die angegebenen Dateien in eben diesen Ordner. Dass der aktuelle Ordner als Zielverzeichnis verwendet werden soll, wird durch den Punkt angezeigt. Die Diskette muss jetzt wieder ausgehängt werden, da die Installation sonst mit einem Fehler abbricht. Vorher muss man das Verzeichnis verlassen. {{{#!vorlage Befehl cd / sudo umount /dev/fd0 }}} Nun sind alle benötigten Dateien kopiert und das Programm GRUB kann mit dem Befehl {{{#!vorlage Befehl sudo grub }}} aufgerufen werden. Mit den folgenden GRUB-Shell-Kommandos wird der Bootloader nun auf der Diskette installiert: {{{#!vorlage Befehl root (fd0) }}} {{{#!vorlage Befehl install (fd0)/boot/stage1 (fd0) (fd0)/boot/stage2 p (fd0)/boot/menu.lst }}} Dieser Befehl muss in einer Zeile eingegeben werden! ''"stage1"'' und ''"stage2"'' sind zwei unterschiedliche Programmteile von GRUB, die beim Systemstart nacheinander geladen werden. In der Datei [:Archiv/menu.lst:menu.lst], die man mit einem Texteditor [2] bearbeiten kann, sind die Betriebssysteme mit ihren jeweiligen Bootparametern aufgeführt. Bei der Installation hört man, wie die Diskette beschrieben wird. Hat alles gut funktioniert, kann man GRUB mit {{{#!vorlage Befehl quit }}} wieder verlassen und einem Test steht nichts mehr im Wege. Natürlich muss bei Einstellung der Boot-Reihenfolge im BIOS das Floppy-Laufwerk an erster Stelle stehen. == Methode 2 == Oft reicht es aus, wenn auf der Diskette nur ein Verweis auf die '''menu.lst''' der aktuellen Distribution liegt. Dies hat den Vorteil, dass das Dateisystem auf der Diskette unberührt bleibt und man so auch eine "normale" FAT-formatierte Diskette benutzen kann. Man legt hierfür einfach eine Diskette in das Laufwerk ein, welche aber nicht eingebunden werden darf! Durch den Befehl [1] {{{#!vorlage Befehl sudo grub-install /dev/fd0 }}} installiert man GRUB nun in den Boot Record der Diskette. Der Eintrag verweist dann aber nur auf das aktuelle Ubuntu. [[Anker(Grub_im_Boot_Record_einer_Partition)]] = GRUB in den Boot Record einer Partition installieren = Z.B. um ein weiteres Linux mit eigener menu.lst zu booten, siehe [:Archiv/menu.lst:]. {{{#!vorlage Befehl sudo grub-install --root-directory=/mnt/sda7 /dev/sda7 }}} sda7 ist hier die Partition, auf der sich das Zweitsystem befindet. '''/mnt/sda7''' ist die Stelle, an der die Partition eingebunden ist. Arbeitet man gerade auf dem Zweitsystem kann man die ``--root-directory=/`` Option auch weglassen. Dabei ist sicherzustellen, dass auch die device.map des Zweitsystems korrekt konfiguriert ist. = Nachträgliche Einrichtung einer separaten Bootpartition = Linux-Traditionalisten und "Sicherheitsfanatiker" separieren gerne die Boot-Daten von dem eigentlichen Linux-System in eine eigene Partition. Unproblematisch ist dies, wenn man sich bereits bei der Installation von Ubuntu selbst für diese Variante entschieden hat. Hier wird der Fall beschrieben, dass dies nachträglich erfolgen soll. Es sind einige Änderungen erforderlich, damit Ubuntu konsequent von der neuen Partition bootet. Die nachfolgende Anleitung führt Schritt für Schritt durch die notwendigen Änderungen durch. Sie bietet sich auch dann an, wenn man aus Versehen seine Boot-Partition zerschossen hat und unglücklicherweise keinen Backup bzw. Boot-Diskette mehr auftreiben kann. Und es empfiehlt sich, nach einer Neuinstallation von Ubuntu, bei der man mit Hilfe des Installations-Assistenten eine getrennte Boot-Partition erstellt hat, die Dateien '''/boot/grub/menu.lst''', '''/boot/grub/devices.map''' und '''/etc/fstab''' auf die Änderungen zu prüfen und ggf. nachträglich anzupassen. Zunächst muss man eine neue Boot-Partition erstellen. Dafür benötigt man [:GParted:] oder einen beliebigen anderen Partition-Editor. 250-500 MB Speicher auf der Festplatte reichen locker aus, um auch mehrere Kernel-Versionen parallel zu unterstützen. Am Beispiel einer neu angelegten Partition in '''/dev/sda11''' wird nun die weitere Vorgehensweise erläutert: Zunächst wird mit {{{#!vorlage Befehl sudo mkfs -t ext2 /dev/sda11 }}} die Partition formatiert. Natürlich funktionieren auch andere Dateisysteme wie ext3 oder ReiserFS. Anschließend wird die neu formatierte Boot-Partition ins Verzeichnis '''/media''' eingebunden: {{{#!vorlage Befehl sudo mkdir /media/boot }}} und {{{#!vorlage Befehl sudo mount -t ext2 /dev/sda11 /media/boot }}} Für andere Dateisysteme wie ext3 oder ReiserFS die Option ``-t`` anpassen zu ``ext3`` bzw. ``reiserfs``. Jetzt kann man die im bisherigen Boot-Verzeichnis enthaltenen Dateien in die neue Boot-Partition kopieren mit {{{#!vorlage Befehl sudo cp -r /boot/* /media/boot }}} {{{#!vorlage Hinweis Man beachte, dass in der neuen Boot-Partition kein Verzeichnis '''boot''' erstellt wird. Da die Boot-Partition später ja als Verzeichnis '''/boot''' in das Root-Verzeichnis eingebunden werden soll, würden sich die Dateien sonst unter '''/boot/boot''' befinden. }}} Jetzt muss noch die Datei '''/etc/fstab''' angepasst werden. Dazu wird ein Verweis auf die neue Partition eingefügt: {{{# /etc/fstab: static file system information. # # proc /proc proc defaults 0 0 # /dev/sda11 UUID=9e9e5184-127f-45d2-bf4a-e6f0a112f180 /boot ext2 defaults,errors=remount-ro 0 1 }}} Die UUID der neuen Partition ermittelt man mittels folgendem Kommando: {{{#!vorlage Befehl ls -l /dev/disk/by-uuid }}} Es muss die in der Ausgabe des Befehls angegebene UUID der neuen Boot-Partition in '''/etc/fstab''' eingefügt werden, da sonst GRUB die Partition nicht findet. Abschließend die neue Boot-Partition in das Wurzelverzeichnis einbinden: {{{#!vorlage Befehl sudo umount /media/boot sudo mount -t ext2 /dev/sda11 /boot }}} Das weiter oben angelegte Verzeichnis '''/media/boot''' wird nun nicht mehr benötigt und kann gelöscht werden: {{{#!vorlage Befehl rmdir /media/boot }}} == Exkurs: Zerstörte Boot-Partition wiederherstellen == Sollte eine Bootpartition bereits existieren, deren Inhalt aber zerstört worden sein, so kann der Inhalt wie folgt wiederhergestellt werden: Von der Ubuntu-Live-CD oder einem ähnlichem Boot-Medium das System im Rescue-Modus booten. Ein Terminal [1] im bisherigen Root-System (im Beispiel '''/dev/sda1''') ausführen die Boot-Partition mit {{{#!vorlage Befehl fdisk /dev/sda }}} neu erstellen und/oder mit {{{#!vorlage Befehl mkfs -t ext2 /dev/sda11 }}} formatieren. Anschließend die Boot-Partition mit {{{#!vorlage Befehl mount -t ext2 /dev/sda11 /boot }}} einbinden. Dann von der [:Live-CD:] oder mittels {{{#!vorlage Befehl apt-get --reinstall install }}} über das Internet das Paket * '''linux-image--generic''' installieren. Auf diese Art erhält man die für die Installation von GRUB benötigten Kernel-Dateien in das Verzeichnis '''/boot''' installiert. Anschließend muss noch die UUID der Boot-Partition in der Datei '''/etc/fstab''' wie oben beschrieben angepasst werden. == GRUB installieren == Der Befehl '''grub-install''' installiert GRUB neu und schreibt den Bootloader in den MBR der angegebenen Festplatte: {{{#!vorlage Befehl sudo grub-install /dev/sda }}} Als Rückmeldung gibt GRUB die interne Festplattennumerierung zurück: {{{(hd0) /dev/sda (hd1) /dev/hda (hd2) /dev/sdb }}} Sollte diese nicht korrekt sein, muss die vom GRUB-Installer neu erstellte Datei '''/boot/grub/devices.map''' angepasst und '''grub-install''' nochmals ausgeführt werden. Anschließend wird mit dem Kommando {{{#!vorlage Befehl sudo update-grub }}} die Installation abgeschlossen. Die Frage, ob die Datei '''/boot/grub/menu.lst''' erstellt werden soll, bitte mit ''"Ja"'' beantworten. Wie eingangs schon erwähnt, tut sich GRUB schwer mit getrennten Boot-Partitionen. Deshalb muss die durch '''update-grub''' erstellte Datei '''/boot/grub/menu.lst''' noch angepasst werden. Dafür öffnet man sie in einem Editor mit Root-Rechten [2] und sucht nach den Ubuntu-Boot-Einträgen. Diese sollten etwa wie folgt aussehen: {{{title Ubuntu, kernel 2.6.20-15-generic root (hd0,0) kernel /boot/vmlinuz-2.6.20-15-generic root=UUID=fe7bf845-7ce9-4733-b6de-f70f2b62076d ro quiet splash initrd /boot/initrd.img-2.6.20-15-generic quiet savedefault }}} Damit GRUB Ubuntu booten kann, müssen diese automatisch (leider fehlerhaft) eingestellten Einträge (oben) wie (unten) folgt abgeändert werden: {{{title Ubuntu, kernel 2.6.20-15-generic root (hd0,10) kernel /vmlinuz-2.6.20-15-generic root=UUID=fe7bf845-7ce9-4733-b6de-f70f2b62076d ro quiet splash initrd /initrd.img-2.6.20-15-generic quiet savedefault }}} Dabei verweist root nun auf die neue Boot-Partition in interner GRUB-Darstellung (die Partitionen werden von 0 an aufwärts gezählt) und '''/boot''' muss aus der Pfadangabe für "vmlinuz" und "initrd.img" entfernt werden, da die Boot-Partition wie weiter oben schon angemerkt kein Boot-Verzeichnis enthält. Die UUID im Eintrag ``kernel`` muss nicht angepasst werden, da sie ja korrekterweise auf die Root-Partition verweist. Um bei zukünftigen Kernel-Updates durch Ubuntu nicht böse Überraschungen zu erleben, muss man den Verweis auf die Boot-Partition (``root (hd0,10)``) noch vor Änderungen durch '''update-grub''' schützen. Dazu editiert man die ``groot``-Zeile im "debian automagic kernels list"-Teil der '''/boot/grub/menu.lst'''-Datei: {{{## default grub root device ## e.g. groot=(hd0,0) # groot=(hd0,0) }}} Die Zeile findet man durch Blättern nach oben und ändert sie im Texteditor wie folgt ab: {{{## default grub root device ## e.g. groot=(hd0,0) # groot=(hd0,10) }}} ``(hd0,0)`` ist der alte GRUB-Verweis auf die Wurzel-Partition, in der sich bislang der Kernel befand und ``(hd0,10)`` ist die GRUB-Referenz auf die neue Boot-Partition, in die von nun an die neuen Kernel installiert werden sollen. Bitte nicht das Kommentarzeichen entfernen. Außerdem ist darauf zu achten, dass die GRUB-Referenzen auf die richtigen Partitionen des Computers verweisen. Dazu die in diesem Wiki verwendeteten Beispiele sorgfältig anpassen. Dabei nicht vergessen, die Änderungen in der Datei '''menu.lst''' zum Abschluss zu speichern. Es empfiehlt sich außerdem eine Sicherheitskopie der Datei sowohl im Boot-Verzeichnis als auch wie später noch beschrieben auf einer Diskette anzulegen. Zum Abschluss muss das Kommando {{{#!vorlage Befehl sudo update-grub }}} ausgeführt werden. Dadurch werden Änderungen an den Optionen in die automatisch verwalteten Kerneleinträge übernommen. Ohne dieses Kommando wirken Änderungen an bestimmten Optionen nicht.\\ Nun das System neu booten, dabei nicht vergessen, die evtl. noch eingelegte Ubuntu-Live-CD zuvor zu entfernen. {{{#!vorlage Warnung Auf keinen Fall nach dem Reboot des Systems versuchen, das alte '''/boot'''-Verzeichnis zu löschen. Der neue Eintrag in der '''/etc/fstab'''-Datei hat schon dafür gesorgt, dass die neue Boot-Partition als Verzeichnis '''/boot''' in das System eingebunden worden ist. Alle Änderungen - d.h. auch das Löschen von Daten - unterhalb von /boot erfolgt nun in der neuen Boot-Partition. }}} #tag: System