Month: November 2007
Grub bootable auf USB-Stick
Ich habe mir vor ein paar Tagen meinen Grub-Bootmanager zerschossen. Das geschah durch ein Update von “Rescue & Recovery”, einem Lenovo-Hilfstool. Offenbar bringt R&R einen eigenen Bootloader mit oder was auch immer. Auf jeden Fall zerschießt ein Update mal eben das System und nach dem Boot kommt nicht mehr der GRUB-Auswahlschirm, sondern eine Konsolenzeile in schwarz mit dem kurzen prägnanten Wort ‘GRUB’. Mehr kann passiert nicht. Keine Möglichkeit, irgendetwas einzugeben, noch irgendetwas anderes. Aber was soll man machen? Man will ja an sein System. Die übliche Googelei brachte mich zu der Erkenntnis, dass ich nicht der einzige mit durch R&R-Update zerschossenem System bin. Aber die anderen hatten einfach Linux neu installiert. Möglicherweise geht das auch, aber da auf meinem Rechner einige sehr wertvolle Daten lagen und ich zusätzlich kein CD-Rom-Laufwerk zur Hand hatte, mußte eine andere Lösung her: Das bestehende Linux auf der Platte mit einem Bootmanager auf dem USB-Stick booten und den Grub neu installieren.
Übersicht:
- USB-Stick mit Grub bespielen
- von USB booten
- die richtigen Partitionen auf der HD finden
- Grub neu installieren
Alle Beispiele beziehen sich auf meine Konfiguration: Lenovo ThinkPad T61p, Ubuntu 7.10 auf dritter Partition.
1. USB-Stick mit Grub versehen
Die Erstellung erfolgt unter Linux (z.B. von CD gestartet) folgendermaßen:
-
USB-Stick löschen: cat /dev/zero > /dev/sda
(Achtung! Natürlich kann man sich hier einiges kaputt machen. Es muss absolut sicher sein, dass man dass richtige Device /dev/xxx eingetragen hat. Der Vorgang kann einige Minuten in Anspruch nehmen.)
-
Dann mit fdisk eine neue Partitionstabelle erstellen:
fdisk /dev/sda -> o (create a new empty DOS partition table) -> n (add a new partition) -> FS-Type 83 (ext2) -> w (write to table and exit).
Genauer:
Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-1009, default 1):
Command (m for help): a
Partition number (1-4): 1
Command (m for help): w
-
Rechner neu starten, damit das Linux den Stick mit der neuen Partition erkennt
-
Dateisystem in die neue Partition schreiben: mkfs.ext2 /dev/sda1
-
mounten:
mkdir /media/stick
mount /dev/sda /media/stick - grub kopieren:
linux:/media # mkdir -p /media/stick/boot/grub linux:/media # cp /boot/grub/*stage* /media/stick/boot/grub linux:/media # echo '(hd0) /dev/sda' > /media/stick/boot/grub/device.map linux:/media # grub-install --root-directory=/media/stick /dev/sda linux:/media # umount /media/stick/
-
mapping schreiben:
linux:/media # echo '(hd0) /dev/sda' > /media/stick/boot/grub/device.map
Das braucht der Grub um zu denken, der USB-Stick sei hd0,0. Warum auch immer.
So weit, so gut. All das ist nachzulesen unter [1].
2. Von USB booten
- das BIOS auf usbboot stellen – hoffentlich vorhanden?!
- den Rechner von USB booten. Es sollte die Grub-Console erscheinen
3. Richtige Partition finden
in der grub console folgendes eingeben:
-
root (hd1,2)
(hd0,0) ist der verdammte usbstick, bei mir war also auf Platte 2 in der dritten Partition das installierte Linux. Es sollte erkannt werden, dass es sich um eine ext2-Partition handelt
-
kernel /vmlinuz root=/dev/sda3
Die Information, was man als root= einträgt, kann man der Datei fstab entnehmen: cat /etc/fstab, bei SATA ist das /dev/sdaX
-
initrd /initrd.img
-
boot
-
und die Kiste sollte starten!!! Jippie!
4. Grub neu installieren
Die Installation ist unter [2] beschrieben.
Informative Links, die geholfen haben:
Berechnungen mit Fließkommazahlen
Dringend anzuraten ist die Lektüre dieses Artikels:
http://epramono.blogspot.com/2005/01/double-vs-bigdecimal.html
Zusammengefasst: Wann immer man Berechnungen mit Kommazahlen macht, ist BigDecimal zu nutzen!!
Windows-Kontextmenü für alle Dateien erweitern
Habe soeben verzweifelt versucht über die Dateitypen-Verwaltung (Ordneroptionen -> Dateitypen) von Windows (XP) eine Aktion für alle Dateien hinzuzufügen. Mittels einer neuen Erweiterung “*
” o.ä. hat es irgendwie nicht funktioniert. In der Registry ist jedoch ein Eintrag HKEY_LOCAL_MACHINE\SOFTWARE\Classes\*\
vorhanden. Dieser steht offensichtlich für alle Dateien. Dort habe ich die Aktion eingebaut:
Beispiel für GnuPG-Encrypt-Eintrag:
- Falls nicht vorhanden unter
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\*\
den Schlüssel “shell” anlegen und darin den Schlüssel “gpg“. Der Name des zweiten Schlüssels kann beliebig gewählt werden. - Text des Eintrags im Kontextmenü setzen: Dazu den Wert der ersten Zeichenfolge (“(Standard)”) in
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\*\shell\gpg\
auf “Encrypt with GnuPG” ändern. - Unter
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\*\shell\gpg\
den Schlüssel “command” erstellen - Den Wert der Zeichenfolge “(Standard)” unter
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\*\shell\gpg\command\
auf “c:\programme\gnupg\gpg.exe -e “%1”” ändern.
Das Ergebnis sollte ungefähr so aussehen (Registry-Export):
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\*\shell] [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\*\shell\gpg] @="Encrypt with GnuPG" [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\*\shell\gpg\command] @="c:\\programme\\gnupg\\gpg.exe -e \"%1\""