[[:tux|{{ :linux.png?40|}}]] ===== 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<<((http://wiki.ubuntuusers.de/FSTAB)) 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). # # 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/sd//x//<<) 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: * **/proc** -> __**pro**__cesses (laufende Programme); Das Verzeichnis >>proc<< ist eigentlich kein richtiges Verzeichnis sondern ein spezielles Filesystem vom Typ >>procfs<<.((http://www.oreilly.de/german/freebooks/rlinux3ger/ch057.html)) * **/sys** -> __**sys**__tem; Das Verzeichnis >>sys<< ist ebenso wie das Verzeichnis >>proc<< kein richtiges Verzeichnis, sondern ein spezielles Filesystem vom Typ >>sysfs<< und enthält ebenfalls hauptsächlich Kernelschnittstellen. * **/dev** -> __**dev**__ices (Geräte); muss bei Systemstart vorhanden sein; enthält alle Gerätedateien, über die die Hardware angesprochen wird; Gerätedateien für Hot-Plug-Systeme (z.B. USB, IEEE1394) werden von >>udev<< erstellt. 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<<-Umgebung((http://de.wikipedia.org/wiki/Chroot)). 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:** [[:tux:conres|-> Auflösung der Konsole in Grub2 ändern]] --- //pronto 2012/12/29 15:21// {{keywords>grub2 reinstall grub-install update-grub grub-mkconfig grub.cfg}}