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:
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
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.
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