GRUB

Aus Xinux Wiki
Version vom 5. September 2016, 09:10 Uhr von Thomas (Diskussion | Beiträge) (Die Seite wurde neu angelegt: „ =GRUB= ===Beschreibung=== Der Grand Unified Bootloader ist der Standardbootloader unter Linux. Er hat den früher sehrbeliebten Linux Loader (lilo) abgelöst…“)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Zur Navigation springen Zur Suche springen


GRUB

Beschreibung

Der Grand Unified Bootloader ist der Standardbootloader unter Linux. Er hat den früher sehrbeliebten Linux Loader (lilo) abgelöst. Normalerweise wird der Bootloader von GRUB, die sogenannte „Stage 1“, in den Master Boot Record (MBR) geschrieben, welcher sich in den ersten 446 Bytes des primären Laufwerkes befindet. Aufgrund des durch die Partitionstabelle zusätzlich beschränkten Platzes kann die Stage 1 nur den ersten Sektor der sogenannten „Stage 2“ laden. In diesem Sektor befinden sich der Programmcode und eine Blockliste zum Lesen der restlichen Sektoren von Stage 2.

Die Stage 2 kann sich auf einer beliebigen Partition befinden. Unter Unixsystemen befindet sie sich meistens unter /boot/grub/stage2. Stage 2 enthält die Dateisystemtreiber, den Programmcode für das Auswahlmenü und die GRUB-Kommandozeile sowie die Laderoutine für die Betriebssystemkerne (Kernel).

Nach dem Laden von Stage 2 wird, sofern vorhanden, die Konfigurationsdatei /boot/grub/menu.lst eingelesen und verarbeitet. In dieser Datei sind die Einträge des Auswahlmenüs definiert, welche nun in der Konsole angezeigt werden. Aus dem Menü kann nun das zu bootende Betriebssystem ausgewählt oder Befehle über die Kommandozeile direkt an GRUB gesendet werden. Stage 2 stellt somit den eigentlichen Bootloader dar, welcher einen Kernel oder den Bootsektor einer Partition lädt.

Plattenbezeichnung

Egal ob SATA/SCSI oder IDE die erste Festplatte unter Grub heisst immer (hd0) und die erst Partition (hd0,0)

Optionen

GERÄT SATA/SCSI IDE GRUB
Erste Platte /dev/sda /dev/hda (hd0)
Erste Partition auf erster Platte /dev/sda1 /dev/hda1 (hd0,0)
Zweite Partition auf erster Platte /dev/sda2 /dev/hda2 (hd0,1)
Dritte Partition auf erster Platte /dev/sda3 /dev/hda3 (hd0,2)
Zweite Platte /dev/sdb /dev/hdb (hd1)
Erste Partition auf zweiter Platte /dev/sdb1 /dev/hdb1 (hd1,1)

Konfigurationsdatei

root@mcm-smk-test:~# cat menu.lst 
default		0
timeout		3
hiddenmenu

 title		Ubuntu 8.04.1, kernel 2.6.24-19-server
root		(hd0,1)
kernel		/boot/vmlinuz-2.6.24-19-server root=UUID=019d01c7-526a-4c8e-87c0-be4c71ee5a9a ro quiet splash
initrd		/boot/initrd.img-2.6.24-19-server
quiet

title		Ubuntu 8.04.1, kernel 2.6.24-19-server (recovery mode)
root		(hd0,1)
kernel		/boot/vmlinuz-2.6.24-19-server root=UUID=019d01c7-526a-4c8e-87c0-be4c71ee5a9a ro single
initrd		/boot/initrd.img-2.6.24-19-server

title		Ubuntu 8.04.1, memtest86+
root		(hd0,1)
kernel		/boot/memtest86+.bin
quiet

title          2003 server
rootnoverify   (hd0,0)
chainloader     +1

Konfiguration im Detail

Wenn nichts anders ausgewählt wird Block 0 geladen

default		0

Es werden 3 Sekunden gewartet bis der Defaultblock gestartet wird

timeout		3

Das Bootmenu wird versteckt

hiddenmenu

Der Titel von Block 0

title		Ubuntu 8.04.1, kernel 2.6.24-19-server

Das Rootdev von Block 0,1 bedeutet erste Platte zweite Partition

root		(hd0,1)

Nach dem Laden des Kernels soll die Partition mit der UUID ro als / gemoutet werden quiet bedeutet wenige ausgaben und mit splash wird ein Bild beim booten angezeigt

kernel		/boot/vmlinuz-2.6.24-19-server root=UUID=019d01c7-526a-4c8e-87c0-be4c71ee5a9a ro quiet splash

Alternative Schreibweise

kernel		/boot/vmlinuz-2.6.24-19-server root=/dev/sda2 ro quiet splash

Eine Ramdisk wird geladen

initrd		/boot/initrd.img-2.6.24-19-server

Keine Bildschirmausgabe

quiet

Der Titel von Block 1

title		Ubuntu 8.04.1, kernel 2.6.24-19-server (recovery mode)

Das Rootdev von Block 0,1 bedeutet erste Platte zweite Partition

root		(hd0,1)

Nach dem Laden des Kernels soll die Partition mit der UUID ro als / gemoutet werden Es soll in den Single User Runlevel gebootet werden

kernel		/boot/vmlinuz-2.6.24-19-server root=UUID=019d01c7-526a-4c8e-87c0-be4c71ee5a9a ro single

Eine Ramdisk wird geladen

initrd		/boot/initrd.img-2.6.24-19-server

Der Titel von Block 2

title          2003 server

Setze Rootdec auf die erste Partition der ersten Festplatte checke das Dateisystem nicht

rootnoverify   (hd0,0)

Lade ersten Block(512Byte) aus dieser Partition

chainloader     +1

Die erste Stufe von Grub im MBR installieren

Über grub

root@zero:~# grub
grub> root (hd0,1)
grub> install /boot/grub/stage1 (hd0) /boot/grub/stage2 p /boot/grub/menu.lst

Über grub-install

root@zero:~# grub-install /dev/sda
Searching for GRUB installation directory ... found: /boot/grub

Grub Hotkeys und Befehle

Um vor dem booten eines Betriebssystems ins Grub-Menü zu gelangen mussman auf diese Ausgabe achten:

Grub.jpg

Und ESC drücken.

Im Grub-Menü sieht man jetzt alle Betriebsysteme die installiert sind, und oder verschiedene Startvarianten davon.

Grub2.jpg

Unter der Betriebsystemauswahl sieht man die benutzbaren Hotkeys um sich im Menü bewegen zu können.

Wie man sieht kann man mit der Enter Taste eines der Betriebsysteme starten. Mit der c Taste kommt man in die die Command Line und mit e gelangt man in die boot-Einstellungen des jeweiligen Betriebsystems.

Probieren wir mal das e, dann sieht das Resultat so aus:

Grub3.jpg

Hier können wir die verschienden Zeilen die beim booten eines Betriebsystems ausgeführt werden sehen. Wie unten wieder beschrieben sind unsere Möglichkeiten, einfach nur zu booten mit b eine Zeile zu editieren mit e, mit c wieder in die Command Line zu gelangen, mit o eine Zeile VOR und O ( Shift+o ) NACH der momentan ausgewählten Zeile einzufügen und d um Zeilen zu löschen.

Was man hier z.B. mit e anstellen kann ist Ungeschütztes Linux Hacken

Man beachte: Englische Tastatur Einstellung

Um aus jedweden Menü oder der Command Line rauszukommen drückt man einfach ESC

Die Command Line sieht so aus,

Grubcmdline.jpg

und in ihr gibt es unter anderen folgende Befehle:

root Bestimmt GRUB's root Festplatte und Partition
clear Säubert die Command Line
configfile Lädt Dateien als Konfigurationsdateien
cat Gibt den Inhalt von Dateien aus
quit
reboot Startet den Rechner neu

Ganz wichtig ist wie man in der Command Line oben sehen kann Tab da es nicht nur alle Befehle anzeigt sondern auch Befehle sowie Verzeichniss- und Gerätenamen automatisch vervollständigt.

Beispiele zur Benutzung:

grub> root (hd0,0)
grub> cat (hd0,0)/etc/passwd
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
bin:x:2:2:bin:/bin:/bin/sh
sys:x:3:3:sys:/dev:/bin/sh
sync:x:4:65534:sync:/bin:/bin/sync
...

Grub mit Passwort absichern

Passwort mit grub-md5-crypt erstellen

root@lydia:~# grub-md5-crypt 
Password: password
Retype password: password
$1$QPAL7/$dsvniui.dj1tTYxJgHYcA1

Eintrag in die menu.lst

Man kann nun entweder eine Sektion oder den das komplete Menu schützen.

password --md5 $1$QPAL7/$dsvniui.dj1tTYxJgHYcA1


GRUB rootdelay

livecd booten -> root

mkdir /mnt
mount /dev/sda1 (bootpartition) /mnt
mount -o bind /sys /mnt/sys
mount -o bind /proc /mnt/proc
mount -o bind /dev /mnt/dev
chroot /mnt
vi /etc/default/grub
       GRUB_HIDDEN_TIMEOUT=0 				--- auskommentieren
       GRUB_HIDDEN_TIMEOUT_QUIET=true			--- soll auf false
       GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"       --- "rootdelay=60" eintragen
       #GRUB_DISABLE_LINUX_UUID=true			--- aktiv machen
       wq'
update-grub
cat /boot/grub/grub.cfg
umount /mnt/sys
umount /mnt/proc
umount /mnt/dev
umount /mnt

reboot

grub-fix für ext3

  • Grub kommt nicht mit dem ext3 Dateisystem zurecht, bei denen die Inode Size größer als 128 ist.
  • Standardmäßig wird eine ext3 Dateisystem mit einer Inode Size von 256 angelegt.
$ sudo tune2fs -l /dev/sdaN | grep "Inode size"
Inode size:               256
  • Die Inode Size kann nachträglich nicht geändert werden!
$ mke2fs -T ext3 -I 128 /dev/sdaN