Grub
Grub in den Masterbootrecord installieren
Das Problem
Windows und Linux sollen auf einer Festplatte gebootet werden, z.B. Windows auf Partition 1 (hda1), Linux auf Partition 3 (hda3). Wird erst Windows und dann Linux installiert, erledigt der Bootloader grub normalerweise die Arbeit und erzeugt eine korrekte menu.lst.
Wird Windows nach Linux oder neu installiert, setzt sich der Windows-Bootloader im MBR (Master Boot Record) fest und grub fliegt raus. Da Windows keine ext3- Partitionen erkennt, bootet nur noch Windows ohne jegliche Auswahlmöglichkeit.
Die Lösung
Grub muss wieder in den MBR rein. Um die entsprechenden Kommandos auszuführen,
muss man erstmal eine Linux-Rescue-CD oder Knoppix-Live-CD booten. Bei Knoppix
empfiehlt sich die Eingabe von "knoppix 2" am Bootprompt. Das verhindert das
langsame Booten in den Grafikmodus, den wir für das, was wir nun vorhaben, eh
nicht brauchen.
Ist die CD gebootet, lässt man sich durch Eingabe von
# fdisk -l
auf der Shell anzeigen, auf welcher Partition was drauf ist. Hier ein Ausgabe-Beispiel:
Platte /dev/hda: 20.0 GByte, 20003880960 Byte 255 Köpfe, 63 Sektoren/Spuren, 2432 Zylinder Einheiten = Zylinder von 16065 x 512 = 8225280 Bytes
Gerät boot. Anfang Ende Blöcke Id System /dev/hda1 * 1 1275 10241406 7 HPFS/NTFS /dev/hda2 1786 1810 200812+ 82 Linux Swap / Solaris /dev/hda3 1811 2432 4996215 83 Linux /dev/hda4 1276 1785 4096575 f W95 Erw. (LBA) /dev/hda5 1276 1785 4096543+ 6 FAT16
In unserem Fall befindet sich die Linux-Partition auf /dev/hda3. Also mountet man diese Partition und chrootet sich dahin:
# mount /dev/hda3 /mnt # chroot /mnt
Jetzt muss man nur noch das Kommando ausführen, das grub in den MBR bringt :
# grub-install /dev/hda
(ev. vorher in der Datei devices.map nachschauen, welches Laufwerk auf die /- bzw. /boot-Partition gemappt ist)
Falls die Windows-Partition nicht in der menu.lst eingetragen ist, kann man dies
nachholen. Datei zur Bearbeitung öffnen:
# vi /boot/grub/menu.lst
und dort folgenden Eintrag vornehmen
grub (old)
title Windows (kann man was beliebiges reinschreiben) root (hd0,0) makeactive chainloader +1
grub2 (aka grub-common)
Hier heißt die Configdatei grub.cfg
menuentry "Microsoft Windows XP Home Edition (on /dev/sda1)" { insmod part_msdos insmod ntfs set root='(/dev/sda,msdos1)' search --no-floppy --fs-uuid --set 500cbe6b0cbe4c1a drivemap -s (hd0) ${root} chainloader +1 }
Eigentlich sollte hier nichts von Hand editiert werden müssen. Mit
update-grub(2)
werden Einträge in der menu.lst / grub.cfg automagisch generiert.
Achtung: Wer beim grub2 die grub.cfg manuell editiert, sollte diese wegsichern. Beim nächsten Update des grub-Pakets oder des Kernels werden die Änderungen nämlich überschrieben!
Mit "exit" oder "ctrl+d" die Chroot-Umgebung verlassen und rebooten. Jetzt sollte eine Grub-Auswahlliste zu sehen sein.
Standby-Schaltung
Um einen Linux-PC in den Standby zu kriegen, lässt sich folgendes Kommando ausführen:
# echo mem | sudo tee /sys/power/state
Damit sind Festplatten und Arbeitsspeicher des Rechners quasi eingefroren und der Stromverbrauch minimal. Möglich ist das durch Speichern des aktuellen Status' im Swap-Space. Um wieder weiterarbeiten zu können, muss die Return-Taste des PCs betätigt werden.
Dies funktioniert allerdings nur durch eine leichte Anpassung in der grub.cfg namens "resume", z.B.:
linux /vmlinuz-3.16.0-4-amd64 root=/dev/mapper/vg00-root ro resume=/dev/sda3 quiet
Hier sollte die Partition angegeben werden, auf der sich der swap-Space befindet.
Probleme mit grub
Im folgenden wird nur noch grub2 behandelt.
Fehlermeldung beim Booten
Could not stat the resume device file /dev/disk/by-uuid/...
Weiterbooten nur durch Drücken der Return-Taste möglich
Passiert z.B. nach rsync von einer Platte auf die andere. Möglicherweise ist noch die alte swap-Partition gemappt, deren UUID jetzt natürlich nicht mehr gefunden wird.
Abhilfe:
UUID der neuen swap-Partition raussuchen und in der resume-Datei korrigieren.
Beispiel:
# fdisk -l | grep swap /dev/sda3 7836 8880 8393962+ 82 Linux swap / Solaris # ls -l /dev/disk/by-uuid | grep sda3 lrwxrwxrwx 1 root root 10 Nov 11 12:29 37367319-fe2a-424a-9c6c-aa6553471b41 -> ../../sda3
# vi /etc/initramfs-tools/conf.d/resume
eintragen:
RESUME='UUID=37367319-fe2a-424a-9c6c-aa6553471b41'