ubuntuusers.de

Sonderformen der Installation

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.

Achtung!

Fehler bei der Konfiguration des Bootmanagers können zu einem unbenutzbaren System führen.

Hinweis:

Der ab 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.

Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:

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:

mke2fs /dev/fd0 

Legt auf der Diskette (fd0) ein ext2-Dateisystem an. Alle Daten auf der Diskette gehen verloren.

sudo mkdir /media/floppy 

Legt das Verzeichnis floppy als Unterverzeichnis des Verzeichnisses /media an.

sudo mount -t ext2 /dev/fd0 /media/floppy 

Bindet das Dateisystem der Diskette (fd0) an das Verzeichnis /media/floppy

sudo mkdir /media/floppy/boot 

Legt ein Unterverzeichnis boot im Verzeichnis floppy an

cd /media/floppy/boot
sudo cp /usr/lib/grub/i386-pc/* .
sudo cp /usr/sbin/grub .
sudo cp /boot/grub/menu.lst . 

Bei AMD64:

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.

cd /
sudo umount /dev/fd0 

Nun sind alle benötigten Dateien kopiert und das Programm GRUB kann mit dem Befehl

sudo grub 

aufgerufen werden. Mit den folgenden GRUB-Shell-Kommandos wird der Bootloader nun auf der Diskette installiert:

root (fd0) 
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 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

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]

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.

⚓︎

GRUB in den Boot Record einer Partition installieren

Z.B. um ein weiteres Linux mit eigener menu.lst zu booten, siehe Archiv/menu.lst.

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

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:

sudo mkdir /media/boot 

und

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

sudo cp -r /boot/* /media/boot 

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.
#
# <file system> <mount point>       <type>           <options>                <dump>  <pass>

   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:

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:

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:

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

fdisk /dev/sda 

neu erstellen und/oder mit

mkfs -t ext2 /dev/sda11 

formatieren. Anschließend die Boot-Partition mit

mount -t ext2 /dev/sda11 /boot 

einbinden. Dann von der Live-CD oder mittels

apt-get --reinstall install 

über das Internet das Paket

  • linux-image-<Kernel-Version>-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:

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

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

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.

Achtung!

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.

Diese Revision wurde am 4. Dezember 2020 07:41 von Heinrich_Schwietering erstellt.
Die folgenden Schlagworte wurden dem Artikel zugewiesen: System