Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen gezeigt.

Link zu dieser Vergleichsansicht

tux:fix_grub2 [2011/09/28 09:46]
wikisysop [Startprobleme mit Grub2 beheben]
tux:fix_grub2 [2012/12/29 15:46] (aktuell)
wikisysop [Grub2 neu installieren]
Zeile 1: Zeile 1:
 [[:tux|{{ :​linux.png?​40|}}]] [[:tux|{{ :​linux.png?​40|}}]]
-===== Startprobleme mit Grub2 beheben ​=====+===== 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 >><​fc #​008000>​GRUB loading...</​fc><<​ 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 >><​fc #​008000>​fdisk</​fc><<​-Kommando:​
  
-Kürzlich stand ein Freund spät Abends in meiner Tür und bat mich dringend sein Laptop anzuschauen,​ denn es blieb unmittelbar nach dem Booten mit der Meldung >><fc #008000>GRUB loading...</fc><< einfach stehen. Er erklärte, dass sein System sowohl ein Windows XP, wie auch ein Linux unbekannter Distribution enthält. Installiert hat es ein Bekannter, welcher zZ aber auf Urlaub ist. Das waren nicht viel Informationen und mehr waren vom Besitzer auch nicht zu bekommen. ​+==== Festplatten Analyse ==== 
 +<xterm>knoppix@Microknoppix:​~$ ​<fc #008000>fdisk -l</fc>
  
-Es stellte sich nun die Fragewo Grub installiert istwelche Version und wie das Windows XP gestartet wirdbevor man Hand anlegen konnte. Im Gegensatz zum Windows Boot Loader, welcher sich immer in den >><​fc #​008000>​Master Boot Record</fc><<​ (MBRinstalliert,​ kann Grub auch in den Startsektor der Linux Bootpartition installiert werden. Bei einem konventionellem Setup wird Grub jedoch im >><​fc #​008000>​MBR<​/fc><<​ installiert sein, da der Windows Boot Loader nicht in der Lage ist ein zweites ​(nicht WindowsBetriebssystem zu starten. Es bestünde aber auch die Möglichkeit einen Boot Manager zu installieren,​ welcher die Auswahl des zu startenden Betriebssystems zur Verfügung stellt.+Disk /dev/sda: 42.9 GB42949672960 bytes 
 +255 heads63 sectors/​track5221 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
  
-Im vorliegendem Beispielfall habe ich das System mit einer Live CD von >><​fc #008000>Knoppix</​fc><< ​gebootet ​um von dort aus weitere Nachforschungen über das Setup des Patienten ​zu erhaltenUm sich einen ersten Überblick über das System zu verschaffenkann man sich die vorhandenen Partitionen durch den Aufruf ​von >><​fc #008000>fdisk -l</​fc><< ​anzeigen lassen:+   ​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</​xterm>​ 
 + 
 +Was man sieht, sind eine Menge Partitionen ​mit relativ wenig Informationen dazu. >><​fc #008000>/dev/sda1</​fc><< ​scheint dabei eine Partition für ein installiertes Windows zu sein. Um uns zu vergewissern,​ mounten wir diese Partition...:​ 
 + 
 +<​xterm>​knoppix@Microknoppix:​~$ <fc #​008000>​sudo mount -t ntfs /dev/sda1 /​media</​fc></​xterm>​ 
 + 
 +...und werfen mal einen Blick hinein: 
 + 
 +<​xterm>​knoppix@Microknoppix:​~$ <fc #​008000>​ls -l /​media</​fc>​ 
 +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</​xterm>​ 
 + 
 +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 >><​fc #​008000>​boot.ini</​fc><<,​ welche nach XP abgeschafft wurde und ab Vista durch das >><​fc #​008000>​BCD</​fc><<​ (Boot Configuration Data) ersetzt wurde. Aber im Prinzip wissen wir, was wir wissen wollten und können diese Partition wieder abhängen:​ 
 + 
 +<​xterm>​noppix@Microknoppix:​~$ <fc #​008000>​sudo umount /​media</​fc></​xterm>​ 
 + 
 +An dieser Stelle stellt sich noch die Frage, welcher Bootloader im >><​fc #​008000>​MBR</​fc><<​ installiert ist, weil sowohl der Windows Bootloader in Frage käme, was aber unwahrscheinlich ist), wie auch der Linux Bootloader könnte im >><​fc #​008000>​MBR</​fc><<​ installiert sein, muss es aber nicht zwingend. Dieser Frage gehen wir aber später nach. 
 + 
 +Fortsetzung der Erläuterung ​zu den Partitionen:​ >><​fc #​008000>/​dev/​sda2</​fc><<​ ist die erweiterte bzwlogische Partition, welche für unser Problem nur am Rande, bis gar nicht interessant ist; >><​fc #​008000>/​dev/​sda8</​fc><<​ 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 >><​fc #​008000>/​dev/​sda5</​fc><<,​ falls diese Linux Installation über keine separate Boot-Partition verfügt (>><​fc #​008000>/​boot</​fc><<​ wäre dann ein eigener Mountpoint),​ stehen die Chancen gut, dass dies das Root-Verzeichnis der Linux Installation sein könnte. Um uns zu versichernkönnen wir diese Partition mal in das Knoppix System einbinden:​ 
 + 
 +<​xterm>​knoppix@Microknoppix:​~$ <fc #​008000>​sudo mount /dev/sda5 /​media</​fc></​xterm>​ 
 + 
 +Wir werfen mal einen Blick hinein: 
 + 
 +<​xterm>​knoppix@Microknoppix:​~$ <fc #​008000>​ls -l /​media/</​fc>​ 
 +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</​xterm>​ 
 + 
 +Schaut ganz gut aus, jetzt können wir uns die weiteren Partitionen ein weniger genauer anschauen, dazu schauen wir uns die Datei >><​fc #​008000>/​etc/​fstab</​fc><<​((http://​wiki.ubuntuusers.de/​FSTAB)) an: 
 + 
 +<​xterm>​$ <fc #​008000>​cat /​media/​etc/​fstab</​fc>​  
 +# /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 
 +# <fc #​800000>/​ was on /dev/sda5 during installation</​fc>​ 
 +UUID=fe76848d-2dce-4675-af6a-03b44d1cd92e /               ​ext3 ​   errors=remount-ro 0       1 
 +# <fc #​800000>/​home was on /dev/sda10 during installation</​fc>​ 
 +UUID=44425535-f3e8-47f1-be76-a2e2d5e80441 /home           ​ext3 ​   defaults ​       0       2 
 +# <fc #​800000>/​tmp was on /dev/sda9 during installation</​fc>​ 
 +UUID=086a9cb5-8d95-4203-a8a7-baeebe6aa6d1 /tmp            ext3    defaults ​       0       2 
 +# <fc #​800000>/​usr was on /dev/sda6 during installation</​fc>​ 
 +UUID=542e405d-e796-4bee-90d8-f7c5f20c4167 /usr            ext3    defaults ​       0       2 
 +# <fc #​800000>/​var was on /dev/sda7 during installation</​fc>​ 
 +UUID=0df8c8c6-ae1f-4ccd-a46a-c8cccac52046 /var            ext3    defaults ​       0       2 
 +# <fc #​800000>​swap was on /dev/sda8 during installation</​fc>​ 
 +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</​xterm>​ 
 + 
 +Hier sehen wir die Datenträger bzw. Partitionen,​ welche beim Starten des Systems automatisch eingehängt werden sollen, sowohl mit ihren Gerätenamen (>><​fc #​008000>/​dev/​sd//​x//</​fc><<​) wie auch den dazugehörigen Mountpoint. Anhand dieser Liste können wir nun die restlichen Partitionen in das Knoppix System einhängen:​ 
 + 
 +<​xterm>​knoppix@Microknoppix:​~$ <fc #​008000>​sudo mount /dev/sda10 /​media/​home</​fc>​ 
 +knoppix@Microknoppix:​~$ <fc #​008000>​sudo mount /dev/sda9 /​media/​tmp</​fc>​  
 +knoppix@Microknoppix:​~$ <fc #​008000>​sudo mount /dev/sda6 /​media/​usr</​fc>​ 
 +knoppix@Microknoppix:​~$ <fc #​008000>​sudo mount /dev/sda7 /​media/​var</​fc></​xterm>​ 
 + 
 +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 >><​fc #​008000>​proc</​fc><<​ ist eigentlich kein richtiges Verzeichnis sondern ein spezielles Filesystem vom Typ >><​fc #​008000>​procfs</​fc><<​.((http://​www.oreilly.de/​german/​freebooks/​rlinux3ger/​ch057.html)) 
 +  * **/sys** -> __**sys**__tem;​ Das Verzeichnis >><​fc #​008000>​sys</​fc><<​ ist ebenso wie das Verzeichnis >><​fc #​008000>​proc</​fc><<​ kein richtiges Verzeichnis,​ sondern ein spezielles Filesystem vom Typ >><​fc #​008000>​sysfs</​fc><<​ 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 >><​fc #​008000>​udev</​fc><<​ 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:​ 
 + 
 +<​xterm>​knoppix@Microknoppix:​~$ <fc #​008000>​sudo mount -o bind /sys /​media/​sys</​fc>​ 
 +knoppix@Microknoppix:​~$ <fc #​008000>​sudo mount -o bind /proc /​media/​proc</​fc>​ 
 +knoppix@Microknoppix:​~$ <fc #​008000>​sudo mount -o bind /dev /​media/​dev</​fc></​xterm>​ 
 + 
 +Um dem Basis-System noch die aktuell eingehängten Geräte mitzuteilen,​ kopieren wir den Inhalt des Verzeichnisses >><​fc #​008000>/​proc/​mounts</​fc><<​ des laufenden Systems in die Datei >><​fc #​008000>/​etc/​mtab</​fc><<​ des Basis-Systems:​ 
 + 
 +<​xterm>​knoppix@Microknoppix:​~$ <fc #​008000>​sudo cp /​proc/​mounts /​media/​etc/​mtab</​fc></​xterm>​  
 + 
 + 
 + 
 +==== 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 >><​fc #008000>chroot</​fc><<​-Umgebung((http://​de.wikipedia.org/​wiki/​Chroot)). 
 + 
 +<​xterm>​knoppix@Microknoppix:​~$ <fc #​008000>​sudo chroot /media /bin/bash</​fc><​/​xterm>​ 
 + 
 +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 >><fc #​008000>​chroot</​fc><<​ 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 >><​fc #​008000>​grub-mkconfig</​fc><<​ Kommandos: 
 + 
 +<​xterm>​root@Microknoppix:/#​ <fc #​008000>​grub-mkconfig -o /​boot/​grub/​grub.cfg</​fc>​ 
 +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</​xterm>​ 
 + 
 +Danach rufen wir das Skript >><​fc #​008000>​grub-install</​fc><<​ auf. Dadurch werden eine Reihe von Aufgaben erledigt, darunter das Anlegen des Verzeichnisses >><​fc #​008000>/​boot/​grub</​fc><<​ (falls dieses noch nicht existiert) und installiert die Kernkomponenten von Grub2 in den >><​fc #​008000>​MBR</​fc><<​ des angegebenen Datenträgers:​ 
 + 
 +<​xterm>​root@Microknoppix:/#​ <fc #​008000>​grub-install /​dev/​sda</​fc>​ 
 +Installation finished. No error reported.</​xterm>​ 
 + 
 +Danach wäre der Bootloader neu installiert und das System sollte wieder starten: 
 + 
 +<​xterm>​root@Microknoppix:/#​ <fc #​008000>​reboot</​fc></​xterm>​ 
 + 
 +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: 
 + 
 +<​xterm>​root@Microknoppix:/#​ <fc #​008000>​aptitude update</​fc>​ 
 +root@Microknoppix:/#​ <fc #​008000>​aptitude reinstall grub-common grub-pc os-prober # grub-gfxpayload-lists</​fc></​xterm>​ 
 + 
 +**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}}
tux/fix_grub2.1317196019.txt.gz (35918 views) · Zuletzt geändert: 2011/09/28 09:46 von wikisysop
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0