Inhaltsverzeichnis

Aus einer Live CD (Knoppix) heraus Grub 2 neu installieren

Kürzlich bin ich mit einem System konfrontiert worden, welches unmittelbar nach dem Booten mit der Meldung »GRUB loading…« stehen geblieben ist. Hier kann nur noch mit einem System aus einer Live CD heraus gestartet vernünftig weiter gearbeitet werden. Das System kann zB mit Knoppix gebootet werden, um weitere Analysen zu betreiben. Ein erster Blick sollte auf die installierte Festplatte geworfen werden, dazu eignet sich das »fdisk«-Kommando:

Festplatten Analyse

knoppix@Microknoppix:~$ fdisk -l

Disk /dev/sda: 42.9 GB, 42949672960 bytes
255 heads, 63 sectors/track, 5221 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x904e904e

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1               1        2611    20972826    7  HPFS/NTFS
/dev/sda2            2612        5222    20968449    5  Extended
/dev/sda5   *        2612        2654      340992   83  Linux
/dev/sda6            2654        3624     7790592   83  Linux
/dev/sda7            3624        3989     2928640   83  Linux
/dev/sda8            3989        4142     1232896   82  Linux swap / Solaris
/dev/sda9            4143        4191      389120   83  Linux
/dev/sda10           4191        5222     8281088   83  Linux

Was man sieht, sind eine Menge Partitionen mit relativ wenig Informationen dazu. »/dev/sda1« scheint dabei eine Partition für ein installiertes Windows zu sein. Um uns zu vergewissern, mounten wir diese Partition…:

knoppix@Microknoppix:~$ sudo mount -t ntfs /dev/sda1 /media

…und werfen mal einen Blick hinein:

knoppix@Microknoppix:~$ ls -l /media
insgesamt 1573213
-rwxrwxrwx 1 root root          0 28. Sep 08:39 AUTOEXEC.BAT
-rwxrwxrwx 1 root root       4952  4. Aug 2004  bootfont.bin
-rwxrwxrwx 1 root root        211 28. Sep 08:32 boot.ini
-rwxrwxrwx 1 root root          0 28. Sep 08:39 CONFIG.SYS
drwxrwxrwx 1 root root       4096 28. Sep 08:46 Dokumente und Einstellungen
-rwxrwxrwx 1 root root          0 28. Sep 08:39 IO.SYS
-rwxrwxrwx 1 root root          0 28. Sep 08:39 MSDOS.SYS
-rwxrwxrwx 1 root root      47564  4. Aug 2004  NTDETECT.COM
-rwxrwxrwx 1 root root     251712 28. Sep 09:14 ntldr
drwxrwxrwx 1 root root       4096 28. Sep 09:10 orgfiles
-rwxrwxrwx 1 root root 1610612736 28. Sep 09:45 pagefile.sys
drwxrwxrwx 1 root root       4096 28. Sep 09:46 Programme
drwxrwxrwx 1 root root       4096 28. Sep 08:44 System Volume Information
drwxrwxrwx 1 root root      28672 28. Sep 09:46 WINDOWS

Die Vermutung, dass hier noch ein zweites Betriebssystem installiert ist, scheint sich zu bestätigen. Weiterhin kann vermutet werden, dass es sich dabei um Windows XP handelt. Das erkennt man a) am Aufbau der Dateistruktur und b) am Vorhandensein der Datei »boot.ini«, welche nach XP abgeschafft wurde und ab Vista durch das »BCD« (Boot Configuration Data) ersetzt wurde. Aber im Prinzip wissen wir, was wir wissen wollten und können diese Partition wieder abhängen:

noppix@Microknoppix:~$ sudo umount /media

An dieser Stelle stellt sich noch die Frage, welcher Bootloader im »MBR« installiert ist, weil sowohl der Windows Bootloader in Frage käme, was aber unwahrscheinlich ist), wie auch der Linux Bootloader könnte im »MBR« installiert sein, muss es aber nicht zwingend. Dieser Frage gehen wir aber später nach.

Fortsetzung der Erläuterung zu den Partitionen: »/dev/sda2« ist die erweiterte bzw. logische Partition, welche für unser Problem nur am Rande, bis gar nicht interessant ist; »/dev/sda8« ist die Linux Swap Partition (ausgelagerter virtueller Arbeitsspeicher) und der Rest hat vermutlich mit unserem Linux zu tun, von dem wir wissen, dass es auch noch installiert ist. Hier stellt sich allerdings das Problem, dass das Linux System offensichtlich in mehrere Partitionen aufgeteilt ist und wir hier an dieser Stelle nicht erkennen können, was genau auf welcher Partition liegt. Ein starkes Indiz ist das gesetzte Bootflag auf der Partition »/dev/sda5«, falls diese Linux Installation über keine separate Boot-Partition verfügt (»/boot« wäre dann ein eigener Mountpoint), stehen die Chancen gut, dass dies das Root-Verzeichnis der Linux Installation sein könnte. Um uns zu versichern, können wir diese Partition mal in das Knoppix System einbinden:

knoppix@Microknoppix:~$ sudo mount /dev/sda5 /media

Wir werfen mal einen Blick hinein:

knoppix@Microknoppix:~$ ls -l /media/
insgesamt 49
drwxr-xr-x  2 root root  5120 28. Sep 11:43 bin
drwxr-xr-x  3 root root  1024 28. Sep 11:43 boot
drwxr-xr-x  5 root root  1024 28. Sep 11:37 dev
drwxr-xr-x 69 root root  5120 28. Sep 09:52 etc
drwxr-xr-x  2 root root  1024 28. Sep 11:36 home
lrwxrwxrwx  1 root root    28 28. Sep 11:37 initrd.img -> boot/initrd.img-2.6.32-5-686
drwxr-xr-x 12 root root  8192 28. Sep 11:43 lib
drwx------  2 root root 12288 28. Sep 11:36 lost+found
drwxr-xr-x  4 root root  1024 28. Sep 11:36 media
drwxr-xr-x  2 root root  1024 19. Jun 14:45 mnt
drwxr-xr-x  2 root root  1024 28. Sep 11:36 opt
drwxr-xr-x  2 root root  1024 19. Jun 14:45 proc
drwx------  3 root root  1024 28. Sep 09:44 root
drwxr-xr-x  2 root root  5120 28. Sep 11:43 sbin
drwxr-xr-x  2 root root  1024 21. Jul 2010  selinux
drwxr-xr-x  2 root root  1024 28. Sep 11:36 srv
drwxr-xr-x  2 root root  1024  1. Jan 2011  sys
drwxr-xr-x  2 root root  1024 28. Sep 11:36 tmp
drwxr-xr-x  2 root root  1024 28. Sep 11:36 usr
drwxr-xr-x  4 root root  1024 28. Sep 11:36 var
lrwxrwxrwx  1 root root    25 28. Sep 11:37 vmlinuz -> boot/vmlinuz-2.6.32-5-686

Schaut ganz gut aus, jetzt können wir uns die weiteren Partitionen ein weniger genauer anschauen, dazu schauen wir uns die Datei »/etc/fstab«1) an:

$ cat /media/etc/fstab 
# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
proc            /proc           proc    defaults        0       0
# / was on /dev/sda5 during installation
UUID=fe76848d-2dce-4675-af6a-03b44d1cd92e /               ext3    errors=remount-ro 0       1
# /home was on /dev/sda10 during installation
UUID=44425535-f3e8-47f1-be76-a2e2d5e80441 /home           ext3    defaults        0       2
# /tmp was on /dev/sda9 during installation
UUID=086a9cb5-8d95-4203-a8a7-baeebe6aa6d1 /tmp            ext3    defaults        0       2
# /usr was on /dev/sda6 during installation
UUID=542e405d-e796-4bee-90d8-f7c5f20c4167 /usr            ext3    defaults        0       2
# /var was on /dev/sda7 during installation
UUID=0df8c8c6-ae1f-4ccd-a46a-c8cccac52046 /var            ext3    defaults        0       2
# swap was on /dev/sda8 during installation
UUID=1e455feb-8982-4b3d-b807-679b3f09eb15 none            swap    sw              0       0
/dev/scd0       /media/cdrom0   udf,iso9660 user,noauto     0       0
/dev/fd0        /media/floppy0  auto    rw,user,noauto  0       0

Hier sehen wir die Datenträger bzw. Partitionen, welche beim Starten des Systems automatisch eingehängt werden sollen, sowohl mit ihren Gerätenamen (»/dev/sdx«) wie auch den dazugehörigen Mountpoint. Anhand dieser Liste können wir nun die restlichen Partitionen in das Knoppix System einhängen:

knoppix@Microknoppix:~$ sudo mount /dev/sda10 /media/home
knoppix@Microknoppix:~$ sudo mount /dev/sda9 /media/tmp 
knoppix@Microknoppix:~$ sudo mount /dev/sda6 /media/usr
knoppix@Microknoppix:~$ sudo mount /dev/sda7 /media/var

Im Prinzip ist jetzt das komplette Dateisystem des installierten Linux Systems in das laufende Knoppix System eingebunden und man könnte auf alle Daten zugreifen. Allerdings beinhaltet ein Linux System eine Fülle von Verzeichnissen, welche Geräte- und Kernel-Schnittstellen bereit stellen. Dazu gehören uA:

Diese synthetischen Verzeichnisse werden beim Mounten des Basis-System nur leblos mitgezogen, da sich der Inhalt zT erst beim Booten erstellt, wenn das System die Hardware initialisiert. Damit die aktuellen bzw. lebenden Verzeichnisse im Basis-System verfügbar sind, werden sie über eine spezielle Mountoption aus dem laufenden System der Live CD (Knoppix) heraus in das Basis-System gemountet:

knoppix@Microknoppix:~$ sudo mount -o bind /sys /media/sys
knoppix@Microknoppix:~$ sudo mount -o bind /proc /media/proc
knoppix@Microknoppix:~$ sudo mount -o bind /dev /media/dev

Um dem Basis-System noch die aktuell eingehängten Geräte mitzuteilen, kopieren wir den Inhalt des Verzeichnisses »/proc/mounts« des laufenden Systems in die Datei »/etc/mtab« des Basis-Systems:

knoppix@Microknoppix:~$ sudo cp /proc/mounts /media/etc/mtab

In »chroot« Umgebung wechseln

Damit wir uns jetzt sicher im eigentlich installierten (Basis-) System bewegen können und um zu verhindern, dass Befehle, welche wir zum Debuggen des Fehlers bzw. zum Neuinstallieren von Grub nicht versehentlich im Knoppix System vorgenommen werden, wechseln wir in das Basis-System über eine »chroot«-Umgebung3).

knoppix@Microknoppix:~$ sudo chroot /media /bin/bash

Somit befinden wir uns jetzt auf dem eigentlich installierten System und nutzen im Prinzip nur noch den Kernel des Knoppix Systems. Anders ausgedrückt sind wir nun für das Knoppix System nur noch ein Prozess, welcher aber im gesamten ein quasi virtuelles System auf Basis des eigentlich installierten System darstellt.

Grub2 neu installieren

Da wir uns jetzt in einer »chroot« Umgebung und somit quasi in unserem eigentlich installierten System aufhalten, können wir die übliche Vorgehensweise zur Reparatur des Bootloaders vornehmen.

Zuerst erstellen wir eine neue Grub.cfg Datei mit Hilfe des »grub-mkconfig« Kommandos:

root@Microknoppix:/# grub-mkconfig -o /boot/grub/grub.cfg
Generating grub.cfg ...
Found linux image: /boot/vmlinuz-2.6.32-5-686
Found initrd image: /boot/initrd.img-2.6.32-5-686
done

Danach rufen wir das Skript »grub-install« auf. Dadurch werden eine Reihe von Aufgaben erledigt, darunter das Anlegen des Verzeichnisses »/boot/grub« (falls dieses noch nicht existiert) und installiert die Kernkomponenten von Grub2 in den »MBR« des angegebenen Datenträgers:

root@Microknoppix:/# grub-install /dev/sda
Installation finished. No error reported.

Danach wäre der Bootloader neu installiert und das System sollte wieder starten:

root@Microknoppix:/# reboot

Wenn die Probleme dadurch nicht behoben sind, können Sie die Grub2 Pakete vollständig neu installieren, indem Sie sich diese erneut herunterladen. Beachten Sie hierbei bitte, dass Sie eine Internetverbindung benötigen, wenn Sie die Quellen nicht lokal (zB auf DVD) zur Verfügung haben:

root@Microknoppix:/# aptitude update
root@Microknoppix:/# aptitude reinstall grub-common grub-pc os-prober # grub-gfxpayload-lists

Verwandte Artikel:
-> Auflösung der Konsole in Grub2 ändern

pronto 2012/12/29 15:21