Systemstart


  1. Einschalten
  2. Bios prüft Hardware
  3. Bios prüft Datenträger auf Bootfähigkeit
  4. Bios übergibt an Bootmanager (grub, LILO)
  5. Bootmanager fragt nach Optionen
  6. Bootmanager lädt den Kernel
  7. Kernel entpackt sich selbst
  8. Kernel wertet Bootoptionen aus
  9. Kernel initialisiert Hardware
  10. Kernel startet Prozess init
  11. init wertet inittab aus
  12. init startet erstes boot script
  13. boot script initialisiert Basis System und Virtuelle Dateisysteme
  14. boot script wertet Boot Parameter aus
  15. boot script startet weitere scripte entsprechend runlevel
  16. Anmelde Bildschirm
  17. User kann System nutzen





Das BIOS (Basic Input/Output System) befindet sich als spezieller Speicherbaustein (CMOS) auf der Hauptplatine des PCs und legt u.a fest, ob oder in welcher Reihenfolge nach zu bootenden Medien gesucht werden soll. Auf allen bootfähigen Medien wird nach einem gültigen Master Boot Record (MBR) gesucht, der sich bei Festplatten auf dem ersten Sector, den ersten 512 Bytes befindet.




dmidecode


Mit dem Paket „dmidecode“ lassen sich alle im BIOS verfügbaren Informationen auslesen, wie Systemhersteller, BIOS-Version, Hersteller und Versionsnummer des Mainboards usw. Das Programm ist als „root“ zu starten. DMI steht dabei für Desktop Management Interface.


dmidecode enthält noch die Werkzeuge:

  • biosdecode ⇒ zeigt in /dev/mem gelisteten BIOS Informationen an. (biosencode nutzt keine Optionen und Argumente.)
  • ownership ⇒ zeigt den Eigentümer an (Compaq-Computer).
  • vpddecode ⇒ Produktdaten von IBM-Computern anzeigen.




Syntax:

  • dmidecode -option [argumente]


Ohne Optionen werden alle verfügbaren Informationen ausgegeben.



Optionen:

  • -s system-manufacturer ⇒ zeigt den Systemhersteller.
  • -s system-product-name ⇒ gibt den Produktnamen aus.
  • -s system-version ⇒ zeigt die Modell-Nr.
  • -s bios-version ⇒ zeigt BIOS Version.
  • -s baseboard-manufacturer ⇒ gibt Mainboardhersteller aus.
  • -s baseboard-product-name ⇒ Mainboardmodell ausgeben.
  • -s baseboard-version ⇒ Versionsnummer des Mainboards.
  • -s (weitere string Argumente) ⇒ bios-vendor, bios-release-date, system-serial-number, system-uuid, baseboard-serial-number, baseboard-asset-tag, chassis-manufacturer, chassis-type, chassis-version, chassis-serial-number, chassis-asset-tag, processor-family, processor-manufacturer, processor-version, processor-frequency.
  • -h ⇒ Hilfe anzeigen.
  • -d [file(default: /dev/mem)] ⇒ zeigt in /dev/mem gelisteten BIOS Informationen an.
  • -q ⇒ Unbekannte, inaktive und OEM einträge im BIOS werden nicht angezeigt.
  • -t processor ⇒ zeigt Informationen zum Prozessor.
  • -t bios ⇒ alle BIOS Inforationen anzeigen.
  • -t (weitere type Argumente) ⇒ system, baseboard, chassis, memory, cache, connector, slot.
  • -t[0-39] ⇒ zeigt verschiedene BIOS Informationen. (Ausführlichere Beschreibung in der manpage.)
    • Tabelle zu den type argumenten unten.
  • -u ⇒ Einträge werden nicht decodiert, jedoch als hexadecimal und ASCII ausgegeben.
  • -V ⇒ zeigt installierte Version von dmidecode and Exit.




Tabelle type Schlüsselwörter
0 BIOS 13 BIOS Language 26 Voltage Probe 39 Power Supply
1 System 14 Group Associations 27 Cooling Device
2 Base Board 15 System Event Log 28 Temperature Probe
3 Chassis 16 Physical Memory Array 29 Electrical Current Probe
4 Processor 17 Memory Device 30 Out-of-band Remote Access
5 Memory Controller 18 32-bit Memory Error 31 Boot Integrity Services
6 Memory Module 19 Memory Array Mapped Address 32 System Boot
7 Cache 20 Memory Device Mapped Address 33 64-bit Memory Error
8 Port Connector 21 Built-in Pointing Device 34 Management Device
9 System Slots 22 Portable Battery 35 Management Device Component
10 On Board Devices 23 System Reset 36 Management Device Threshold Data
11 OEM Strings 24 Hardware Security 37 Memory Channel
12 System Configuration Options 25 System Power Controls 38 IPMI Device




Die argumente von dmidecode sind Case Insensitiv. Die folgenden Kommandozeilen haben die gleiche auswirkung.

     · dmidecode --type 0 --type 13
     · dmidecode --type 0,13
     · dmidecode --type bios
     · dmidecode --type BIOS
     · dmidecode -t0,13
     · dmidecode -t0 -t13
     · dmidecode -t bios




Beispiele:

root@home:# dmidecode -s system-manufacturer
TOSHIBA

Systemhersteller anzeigen.


root@home:# dmidecode -t2
# dmidecode 2.9
SMBIOS 2.3 present.
Handle 0x0002, DMI type 2, 8 bytes
Base Board Information
	Manufacturer: ASUSTeK Computer INC.
	Product Name: A8N-E
	Version: 2.XX    
	Serial Number: 1234567890

Mainboard BIOS Informationen ausgeben.




Der „MBR“ befindet sich auf dem ersten Datenblock (512 Byte) eines Speichermediums z.B einer Festplatte und enthält die Partitionstabelle, die eine Aufteilung des Datenträgers in Partitionen beschreibt. Optional kann ein Bootloader zum starten eines Betriebssystems auf einer Partition im MBR gespeichert werden.


Adresse
hex dez Funktion Größe (Bytes)
0x0000 0 Boot Loader Programm 440
0x01B8 440 Disk Signatur 4
0x01BC 444 Null 2
0x01BE 446 Partitionstabelle 64
0x01FE 510 55hex Magic Number 2
0x01FF 511 AAhex
512




Boot-Loader


Der Bootloader ist ein Programm das die Partitiostabelle nach sichtbaren bzw. aktiven Partitionen durchsucht, dadurch kann ein Betriebssystem auf einer aktiven Partition geladen werden. (Siehe Bootloader weiter unten.)



Disk Signatur


Die Disk Signatur wird z.B. von Windows XP und 2000 verwendet um den Basisdatenträger und Zuordnung der Laufwerksbuchstaben eindeutig zu identifizieren bzw. bei der Initialisierung einer neuen Festplatte.


Existieren im System zwei Festplatten mit identischer Disk Signatur wird ihnen kein Laufwersbuchstabe zugeordnet, einer kopierten Systempartition wird u.U ein neuer Laufwerksbuchstabe zugewiesen dadurch wird ein Bootvorgang unmöglich.




Der Befehl „fdisk /mbr“ schreibt den Boot Code und Disk Signatur neu, während „fixmbr“ die Signatur unter Windows XP unverändert läßt. Das Linux Kommando „dd if=/dev/zero of=/dev/<device> bs=1 count=4 seek=440 conv=notrunc“ überschreibt die Disk Signatur mit Nullen, dadurch muß Windows eine neue Signatur erzeugen.



Partitionstabelle


Die Partitionstabelle zeigt welche Partitionen vorhanden sind. Die Partitionstabelle besteht aus vier Einträgen zu 16 Byte und beträgt insgesamt 64 Byte. Die Tabelle liegt bei Byte 446. In einer Partitionstabelle können bis zu vier Partitionen eingetragen werden. Dies können entweder vier primäre Partitionen oder bis zu drei Partitionen und eine erweiterte Partition sein. Innerhalb einer erweiterten Partition lassen sich weitere logische Partitionen erstellen, es handelt sich dann jedoch nicht um eine reale Partition in der Partitionstabelle, sondern um einen virtuellen Bereich der erweiterten Partition und entspricht daher keinen realen Laufwerk, Betriebssysteme können logische Laufwerke jedoch so behandeln.
Unter Linux gibt es den Logical Volume Manager, hier wird eine Festplatte in logische Blöcke eingeteilt und es sind dann bis 128 Partitionen möglich.



Magic Number


Die MBR Signatur besteht aus zwei Byte 55hex und AAhex. Dies wird auf Little-Endian Systemen als 16 Bit Zahl AA55hex interpretiert. Bei vorhandener Signatur geht das BIOS davon aus, dass ein gültiger MBR vorliegt und es sich um ein bootbares Medium handelt, wird keine Signatur gefunden oder ändert man diesen Wert, vermutet das BIOS dass es sich um einen neuen oder gelöschten Datenträger handelt und das Medium wird als nicht bootfähig eingestuft.



Der Bootloader besteht aus Code zum Laden des Betriebssystems oder weiteren Bootloader-Codes. Das ein System starten kann benötigt es den Boot-Strap-Loader. Nachdem das BIOS das System initialisiert hat sucht es nach startfähigen Laufwerken. Handelt es sich dabei um eine Festplatte wird der Sector 0 der Festplatte eingelesen. Dieser enthält dann den Boot-Strap-Loader selbst, oder innerhalb der Partitionstabelle einen Verweis auf die aktive Partition die den Bootloader enthält.

Unter Linux sind zwei Bootloader verfügbar:

  1. LILO (Linux Loader)
  2. GRUB (Grand Unified Bootloader)

Beide haben die Aufgabe den Kernel zu finden und starten. Danach sind sie bis zum nächsten Systemstart untätig.



LILO


LILO (Linux Loader) ist ein zweistufiger Bootloader. Der kleinere Teil von LILO befindet sich am Anfang des MBRs. Dem LILO bleiben 512-64-2=446 Byte. Die zweite Stufe von LILO enthält die Benutzerschnittstelle, die den Kernel auswählt und Parameter an den Kernel übergeben kann.

Kernel Parameter & Parameter für init



Beispiel für Kernel Parameter:

ide=nodma
apm=off
acpi=off



Es können auch Parameter an init übergeben werden, es kann z.B festgelegt werden in welchen Runlevel das System gestartet werden soll.

init=/sbin/init 2

Das System startet dann im Runlevel 2.

Fehlercodes beim Start


Wenn LILO geladen wird, schreibt er LILO auf den Bildschirm. Beim Laden erzeugt jeder Buchstabe die erfolgreiche Ausführung einer Aufgabe, die für den Start der zweiten Stufe von LILO erforderlich ist. Erscheint LILO nicht vollständig, liegt ein Problem vor.

<nichts>   =>   Die erste Stufe von LILO wurde nicht ausgeführt
L          =>   die Datei /boot/boot.b konnte nicht geladen werden. Ein Festplattenfehler könnte das Problem sein.
LI         =>   die Datei /boot/boot.b konnte gelesen, aber nicht ausgeführt werden. Vieleicht ist die Datei beschädigt.
LIL        =>   die zweite Stufe wurde gestartet, doch die Map-Datei konnte nicht gelesen werden, möglich ist ein fehlerhaftes Bootlaufwerk.
LIL?       =>   die zweite Stufe wurde in einen falschen Speicherbereich geladen.
LIL-       =>   die Map-Datei ist ungültig. Vieleicht wurde nach einer änderung der LILO Map-Installer nicht ausgeführt.
LILO       =>   die zweite Stage wurde erfolgreich geladen.




LILO Konfigurationsdatei


Die LILO Konfigurationsdatei „/etc/lilo.conf“ verfügt über eine globale Sektion, die für alle eingetragenen Systeme gilt. Es folgt mindstens eine weitere Section, die sich auf einen zu ladenden Kernel beziehen kann. Da LILO zu einem Teil im MBR dateisystemunabhängig gespeichert ist, kann er Betriebssysteme mit beliebigen Dateisystemen starten.

Beispiel für eine globale Section:

message = /boot/message
timeout = 6
prompt
title           Debian GNU/Linux, kernel 2.6.26-2-686
root            (hd0,0)
kernel          /boot/vmlinuz-2.6.26-2-686 root=/dev/hda1 ro quiet
initrd          /boot/initrd.img-2.6.26-2-686


Die einträge in der lilo.conf bedeuten:

  • message ⇒ enhält den Pfad zur Datei, die beim Systemstart gezeigt wird (startmenü).
  • timeout ⇒ gibt die Zeit in (s) an nach der das Standardsystem geladen wird (wenn keine Auswahl getroffen wurde.
  • prompt ⇒ legt fest ob ein Prompt zur verfügung gestellt wird. (Bei physikalisch nicht gesicherten System ist dies eine Sicherheitslücke).
  • default ⇒ kennzeichnet das System das gestartet wird, wenn der User keine Auswahl trifft.
  • boot ⇒ zeigt auf die Festplatte, die den Bootsector bereitstellt. (/dev/hda).
  • image ⇒ das zu startende boot Image.
  • label ⇒ alias für den zu startenden Kernel.
  • map ⇒ Map-Datei (/boot/boot.b).
  • initrd ⇒ enthält Pfad zur initialen Ram-Disk, wenn vorhanden.
  • root ⇒ zeigt auf das root-Dateisystem wie ausgewählt.




Map-Installer


Wenn Änderungen an der Konfiguration durchgeführt wurden, muss durch den Aufruf von „lilo“ der Map Installer ausgeführt werden. Der Systemstart würde sonst mit der alten Konfiguration starten oder fehlschlagen.

Beispiel:

merkur:/boot # lilo
Added 2.6.35-custom
Added 2.6.34-custom *
Added Failsave GNU/DEBIAN



lilo können folgende Optionen übergeben werden:

  • -C ⇒ wenn nicht /etc/lilo.conf verwendet werden soll kann man mit dieser Option eine alternative Konfigurationsdatei angeben.
  • -R ⇒ stellt die Kommandozeile für den nächsten Systemstart ein.
  • -M ⇒ schreibt einen MBR auf die Festplatte.
  • -q ⇒ zeigt die aktuelle Bootkonfiguration.
  • -v ⇒ verbose Mode.





GRUB


Grub (Grand Unified Bootloader) ist ebenfalls ein zweistufiger Bootloader. Derzeit sind es sogar drei Stufen, da aus Komatibilität zu anderen Dateisystemen ein Stage 3 hinzugefügt wurde. GRUB greift über das Dateisystem auf den Kernel zu, deshalb muss auch kein Map Installer ausgeführt werden, wenn z.B. ein neuer Kernel ins System Integriert wurde.


GRUB Stage


Das Programm für den ersten Stage befindet sich im MBR der Festplatte von der das System starten soll. Es gibt auch noch eine Kopie als Binärdatei in „/boot/grub/stage1“. Für Stage 1.5 wird ein Programm ausgeführt, das mit dem verwendeten Dateisystem übereinstimmt.
ext2_stage1.5. Diese Datei befindet sich im Verzeichnis „/boot/grub/“.
Die Stufe Stage 2 des Bootloaders befindet sich in der Datei „/boot/grub/stage2“. Dieses Programm stellt für den User das Bootmenü bereit und startet den Kernel.


GRUB Prompt


Über den GRUB Prompt kann man mit dem Bootloader durch Drücken der Taste [E] interagieren, wenn z.B. durch eine Fehlkonfiguration das System nicht startet, kann man mit GRUB das System manuell booten. Dazu benötigt GRUB die Position des Hauptverzeichnisses, des Kernels und die initiale Ram-Disk. Durch nochmaliges drücken der [E] Taste werden die Boot Optionen hinzugefügt. Ab „Grub2“ wird der gewünschte Kernel mit den Pfeiltasten angewählt, dann die [E] Taste drücken und Optionen eingeben.

Betätigt man im Grub Startbildschirm die Taste [C], kommt man in das Command Line Interface von Grub. Mit dem Kommando „help“ bekommt man eine Ausgabe von Grub befehlen. Mit „help [befehl]“ bekommt man Hilfe über den jeweiligen Befehl. Die Grub-Shell kennt auch Autovervollständigen mit der Tabulatortaste.

grub>



Beispiel für mauellen Systemstart:

grub> root (hd0.0)
grub> kernel /boot/vmlinuz-2.6.35.45 root/dev/hda1
grub> initrd /boot/initrd-2.6.35.45.img
grub> boot


Den Startvorgang kann man bei „Grub1.X“ durch betätigung der Eingabetaste und [B], bei „Grub2“ mit „Strg+X“ fortsetzen.

Wird im Grub Prompt der Parameter „init=/bin/bash“ ausgeführt, erhält man eine „root“ Shell ohne Passworteingabe im „Read-Only Modus“, dies kann benutzt werden wenn man das root Passwort vergessen hat. Durch den Befehl „mount -o remount,rw /“ wird das Stamm-Verzeichnis im Lese-Schreib Modus neu gemountet und es kann mit „passwd root“ ein neues Passwort vergeben werden.


GRUB Konfigurationsdateien


GRUB unterscheidet nicht zwischen IDE und SCSI Geräten. Die erste Partition auf der Festplatte bezeichnet GRUB als (hd0.0). Damit für den Start eine Zuordnung möglich ist, beötigt er die Datei „/boot/grub/device.map“. In dieser Datei gibt es eine Zuordnung zu Linux Geräten.

 (hd0)   /dev/hda


Seit Grub2 heißt die Konfigurationsdatei „/boot/grub/grub.cfg“, sie wird automatisch generiert und sollte nur über die Datei „/etc/default/grub“ bearbeitet werden. Danach wird mit dem Befehl „update-grub“ eine neue „grub.cfg“ generiert.


In der Grub Legacy Version beginnt die Nummererung für Datenträger bei (0) und der Partitionen bei (0). Bei Grub2 beginnen die Datenträger bei (0) und die Partitionen bei (1).



Die Datei „/boot/grub/menu.lst“ (softlink auf grub.conf) bei GRUB 0.X - 1.X, entspricht der Funktionsweise her der „lilo.conf“ beim LILO Bootloader.



Die Datei „menu.lst“ ist die Konfigurationsdatei älterer Grub Versionen. Wenn es notwendig ist manuell einen Kernel in die „menu.lst“ einzutragen, kann diese Datei mit folgenden Elementen modifiziert werden.

  • title Debian GNU/Linux, kernel 2.6.26-2-686 ⇒ Titel für Grub Startmenü.
  • root (hd0,0) ⇒ Root Dateisystem.
  • kernel /boot/vmlinuz-2.6.26-2-686 root=/dev/hda1 ro quiet ⇒ Pfad zum Kernel, inclusive Bootoptionen.
  • initrd /boot/initrd.img-2.6.26-2-686 ⇒ Pfad zur initialen Ramdisk.



Beispiel Datei menu.lst:

Anzeigen

Ausblenden

  1 # menu.lst - See: grub(8), info grub, update-grub(8)
  2 #            grub-install(8), grub-floppy(8),
  3 #            grub-md5-crypt, /usr/share/doc/grub
  4 #            and /usr/share/doc/grub-legacy-doc/.
  5 
  6 ## default num
  7 # Set the default entry to the entry number NUM. Numbering starts from 0, an    d
  8 # the entry number 0 is the default if the command is not used.
  9 #
 10 # You can specify 'saved' instead of a number. In this case, the default ent    ry
 11 # is the entry saved with the command 'savedefault'.
 12 # WARNING: If you are using dmraid do not change this entry to 'saved' or yo    ur
 13 # array will desync and will not let you boot your system.
 14 default         0
 15 
 16 ## timeout sec
 17 # Set a timeout, in SEC seconds, before automatically booting the default en    try
 18 # (normally the first entry defined).
 19 timeout         5
 20 
 21 # Pretty colours
 22 color cyan/blue white/blue
 23 
 24 ## password ['--md5'] passwd
 25 # If used in the first section of a menu file, disable all interactive editi    ng
 26 # control (menu entry editor and command-line)  and entries protected by the
 27 # command 'lock'
 28 # e.g. password topsecret
 29 #      password --md5 $1$gLhU0/$aW78kHK1QfV3P2b2znUoe/
 30 # password topsecret
 31 
 32 #
 33 # examples
 34 #
 35 # title         Windows 95/98/NT/2000
 36 # root          (hd0,0)
 37 # makeactive
 38 # chainloader   +1
 39 #
 40 # title         Linux
 41 # root          (hd0,1)
 42 # kernel        /vmlinuz root=/dev/hda2 ro
 43 #
 44 
 45 #
 46 # Put static boot stanzas before and/or after AUTOMAGIC KERNEL LIST
 47 
 48 ### BEGIN AUTOMAGIC KERNELS LIST
 49 ## lines between the AUTOMAGIC KERNELS LIST markers will be modified
 50 ## by the debian update-grub script except for the default options below
 51 
 52 ## DO NOT UNCOMMENT THEM, Just edit them to your needs
 53 
 54 ## ## Start Default Options ##
 55 ## default kernel options
 56 ## default kernel options for automagic boot options
 57 ## If you want special options for specific kernels use kopt_x_y_z
 58 ## where x.y.z is kernel version. Minor versions can be omitted.
 59 ## e.g. kopt=root=/dev/hda1 ro
 60 ##      kopt_2_6_8=root=/dev/hdc1 ro
 61 ##      kopt_2_6_8_2_686=root=/dev/hdc2 ro
 62 # kopt=root=/dev/hda1 ro
 63 
 64 ## default grub root device
 65 ## e.g. groot=(hd0,0)
 66 # groot=(hd0,0)
 67 
 68 ## should update-grub create alternative automagic boot options
 69 ## e.g. alternative=true
 70 ##      alternative=false
 71 # alternative=true
 72 
 73 ## should update-grub lock alternative automagic boot options
 74 ## e.g. lockalternative=true
 75 ##      lockalternative=false
 76 # lockalternative=false
 77 
 78 ## additional options to use with the default boot option, but not with the
 79 ## alternatives
 80 ## e.g. defoptions=vga=791 resume=/dev/hda5
 81 # defoptions=quiet
 82 
 83 ## should update-grub lock old automagic boot options
 84 ## e.g. lockold=false
 85 ##      lockold=true
 86 # lockold=false
 87 
 88 ## Xen hypervisor options to use with the default Xen boot option
 89 # xenhopt=
 90 
 91 ## Xen Linux kernel options to use with the default Xen boot option
 92 # xenkopt=console=tty0
 93 
 94 ## altoption boot targets option
 95 ## multiple altoptions lines are allowed
 96 ## e.g. altoptions=(extra menu suffix) extra boot options
 97 ##      altoptions=(single-user) single
 98 # altoptions=(single-user mode) single
 99 
100 ## controls how many kernels should be put into the menu.lst
101 ## only counts the first occurence of a kernel, not the
102 ## alternative kernel options
103 ## e.g. howmany=all
104 ##      howmany=7
105 # howmany=all
106 
107 ## should update-grub create memtest86 boot option
108 ## e.g. memtest86=true
109 ##      memtest86=false
110 # memtest86=true
111 
112 ## should update-grub adjust the value of the default booted system
113 ## can be true or false
114 # updatedefaultentry=false
115 
116 ## should update-grub add savedefault to the default options
117 ## can be true or false
118 # savedefault=false
119 
120 ## ## End Default Options ##
121 
122 title           Debian GNU/Linux, kernel 2.6.26-2-686
123 root            (hd0,0)
124 kernel          /boot/vmlinuz-2.6.26-2-686 root=/dev/hda1 ro quiet
125 initrd          /boot/initrd.img-2.6.26-2-686
126 
127 title           Debian GNU/Linux, kernel 2.6.26-2-686 (single-user mode)
128 root            (hd0,0)
129 kernel          /boot/vmlinuz-2.6.26-2-686 root=/dev/hda1 ro single
130 initrd          /boot/initrd.img-2.6.26-2-686
131 
132 ### END DEBIAN AUTOMAGIC KERNELS LIST




grub.cfg


Die Datei „/boot/grub/grub.cfg“ sollte nicht bearbeitet werden, da sie automatisch generiert wird. Sie wird ab Grub 1.9x eingesetzt. Bei manueller Bearbeitung würde bei einem Update des Bootloaders die Änderungen verworfen werden. Es sollte hierfür die Datei „/etc/default/grub“ verwendet werden. Hat man die Datei manuell bearbeitet, muß danach „update-grub“ ausgeführt werden um die neue „grub.cfg“ Datei zu generieren.

Beispiel einer /etc/default/grub:

Anzeigen

Ausblenden

# If you change this file, run 'update-grub' afterwards to update
# /boot/grub/grub.cfg.

GRUB_DEFAULT=0
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
GRUB_CMDLINE_LINUX_DEFAULT="quiet"
GRUB_CMDLINE_LINUX=""

# Uncomment to enable BadRAM filtering, modify to suit your needs
# This works with Linux (no patch required) and with any kernel that obtains
# the memory map information from GRUB (GNU Mach, kernel of FreeBSD ...)
#GRUB_BADRAM="0x01234567,0xfefefefe,0x89abcdef,0xefefefef"

# Uncomment to disable graphical terminal (grub-pc only)
#GRUB_TERMINAL=console

# The resolution used on graphical terminal
# note that you can use only modes which your graphic card supports via VBE
# you can see them in real GRUB with the command `vbeinfo'
#GRUB_GFXMODE=640x480

# Beim Booten Schriftgroesse einstellen
GRUB_GFXPAYLOAD_LINUX=1280x1024

# Uncomment if you don't want GRUB to pass "root=UUID=xxx" parameter to Linux
#GRUB_DISABLE_LINUX_UUID=true

# Uncomment to disable generation of recovery mode menu entries
#GRUB_DISABLE_LINUX_RECOVERY="true"

# Uncomment to get a beep at grub start
#GRUB_INIT_TUNE="480 440 1"





Grub wiederherstellen


Sollte aus irgendwelchen Gründen Grub nicht starten, weil z.B. der MBR überschrieben wurde, kann mit Hilfe einer Live CD z.B. grml Grub wiederhergestellt werden.


Nach dem Start der Live CD, das Stammverzeichnis (/) und das (/boot) des Systems ermitteln. Hierzu die Datei „/etc/fstab“ des Systems mit einem Editor öffnen.

...
# / was on /dev/sda4 during installation
UUID=fc9ff9e5-f842-46d0-9e1c-29c746921478 /               ext3    errors=remount-ro 0       1
# /boot was on /dev/sda3 during installation
UUID=dr298a7d-56c6-43d2-a5d1-1d5o9j48be5c /boot           ext3    defaults        0       2
...

Die Boot Partition befindet sich hier im Beispiel auf „/dev/sda3“ und Root auf „/dev/sda4“. Das kann sich natürlich unterscheiden, je nach dem, wie man sein System angelegt hat.

Jetzt müssen die Verzeichnisse im lesen, schreiben Modus nach „/mnt“ des Live Systems gemountet werden.

mount -w /boot /mnt
mount -w / /mnt


Danach in das Verzeichnis „/mnt/boot/grub“ wechseln …


update-grub

… und update-grub ausführen. Der Bootloader wird aktualisiert und kann wieder gestartet werden.



Root Passwort vergessen


Sollte man das „root“ Passwort vergessen haben, kann man über die Grub Shell root Rechte über das System erlangen. Hierbei übergibt man im Grub Prompt, in der Zeile des Linux Kernels „init=/bin/bash“, die Option „rw“ müßte auch möglich sein, dann kann man sich das „remount,rw“ sparen.

grub> root (hd0.0)
grub> kernel /boot/vmlinuz-2.6.35.45 root/dev/hda1 rw init=/bin/bash
grub> initrd /boot/initrd-2.6.35.45.img
grub> boot


Jetzt wird nicht der „init Prozess“, sondern die Bash im lesen, schreiben Modus gestartet. Um auf dem „root“ Dateisystem Schreibrechte zu erlangen ist noch folgender Befehl notwendig …

mount -o remount,rw /


Nun kann mit folgenden Befehl das Passwort neu gesetzt werden.

passwd root





Cloud