Autor Thema: Booloader mit GRUB  (Gelesen 3119 mal)

Hauke

  • Beiträge: 113
    • Profil anzeigen
Gespeichert
« am: 06. September 2012, 12:22 »
Hallo

Ich wollte endlich mal GRUB, anstelle meins minimalistischen Bootloaders verwenden.

Ich weiß nicht, ob GRUB legacy richtig installiert ist.
Grub wird schon einmal gestartet und die befehle danach auch, nur /boot/grub/section1  oder /boot/grub/section2 gibt es nicht, was das Hauptproblem ist.
Hier (http://wiki.ubuntuusers.de/GRUB) steht auch , dass ab Ubuntu 9.10 die hier beschriebene GRUB legacy nicht mehr benutz wird.  (Ubuntu 12 habe ich installiert)
Ich kenne mich mit GRUB nur oberflächig aus.

Hier einmal installierte Pakete, die mit dem Suchbegriff „grub“ in verbinden stehen.
PaketInstallierte Versionneuste VersionBeschreibung
grub0.97-29ubuntu66   0.97-29ubuntu66    GRand Unified Bootloader (alte Variante)
grub-common1.99-21 ubuntu3.1   1.99-21 ubuntu3.1   GRand Unified Bootloader (common files)
grub-legacy-doc0.97-29ubuntu66   0.97-29ubuntu66   Dokumentation für GRUB (alte Version)
grub-pc-bin1.99-21 ubuntu3.1   1.99-21 ubuntu3.1   GRand Unified Bootloader, version 2 (PC/BIOS binaries)

Zur Sicherheit schicke hier noch mal die Konsolenausgabe und kurzes Shell skript nach http://www.lowlevel.eu/wiki/GRUB#Linux

0+0 Datensätze ein
0+0 Datensätze aus
0 Bytes (0 B) kopiert, 2,1922e-05 s, 0,0 kB/s
mkdosfs 3.0.12 (29 Oct 2011)
cp: Aufruf von stat für »/boot/grub/stage*“ nicht möglich: Datei oder Verzeichnis nicht gefunden
cp: Aufruf von stat für »kernel“ nicht möglich: Datei oder Verzeichnis nicht gefunden

#!/bin/sh
clear
nasm -f elf -o kernel_asm.o kernel.asm
gcc -m32 -ffreestanding -o kernel_c.o -c kernel.c -Wall -Werror -nostdinc
ld -T link.ld -o kernel.bin kernel_asm.o kernel_c.o

dd of=floppy.img bs=1024 seek=1440 count=0
mkdosfs floppy.img

sudo mount -oloop floppy.img /mnt
sudo mkdir /mnt/grub
sudo cp /boot/grub/stage* /mnt/grub
sudo cp kernel /mnt
sudo umount /mnt

Und die Ausgabe von GRUB
grub> device (fd0) floppy.img

grub> root (fd0)

grub> setup (fd0)
 Checking if "/boot/grub/stage1" exists... no
 Checking if "/grub/stage1" exists... no

Error 15: File not found

Im Netz und im Forum habe ich dazu nichts nützliches finden können.

kevin

  • Administrator
  • Beiträge: 2 767
    • Profil anzeigen
Gespeichert
« Antwort #1 am: 06. September 2012, 13:56 »
Such einfach mal, wo stage[12] liegen, wenn du GRUB 1 installiert hast, sind sie irgendwo. packages.ubuntu.com sagt, dass sie in /usr/lib/grub/x86_64-pc/ sind.
Thou shalt not follow the NULL pointer, for chaos and madness await thee at its end.

Hauke

  • Beiträge: 113
    • Profil anzeigen
Gespeichert
« Antwort #2 am: 06. September 2012, 15:46 »
So gefunden wurde es hier:
  • /usr/lib/grub/i386-pc/stage1
  • /usr/lib/grub/i386-pc/stage2
  • /boot/boot/grub/stage1
  • /boot/boot/grub/stage2
Und in der Skriptdatei habe ich es auf 3. und 4. geändert.
Und anstelle von kernel muss doch kernel.bin kopiert werden.

Hier weiß ich nicht, ob das alles OK ist:
grub> device (fd0) floppy.img

grub> root (fd0)

grub> setup (fd0)
 Checking if "/boot/grub/stage1" exists... no
 Checking if "/grub/stage1" exists... yes
 Checking if "/grub/stage2" exists... yes
 Checking if "/grub/fat_stage1_5" exists... no
 Running "install /grub/stage1 (fd0) /grub/stage2 p /grub/menu.lst "... succeed
ed
Done.

Der Inhalt des Image sieht so aus:
grub
   stage1
   stage2
kernel.bin

z.B. fehlt menu.lst
Bootbar ist das Medium nur es wird grub anstelle des Kernels gestartet.

Hauke

  • Beiträge: 113
    • Profil anzeigen
Gespeichert
« Antwort #3 am: 06. September 2012, 17:57 »
Wenn ich
kernel /kernel.bin
boot
im grub-Menü aufrufe
wird der Kernel gestartet.

Ist zwar noch nicht ganz wie es soll, aber wenigstens geht das dann doch.

kevin

  • Administrator
  • Beiträge: 2 767
    • Profil anzeigen
Gespeichert
« Antwort #4 am: 07. September 2012, 10:20 »
Leg einfach eine grub/menu.lst mit diesem Inhalt auf deinem Image an, bevor du 'setup (fd0)' machst, dann kriegst du das Menü. Du kannst auch noch vorher eine Zeile 'timeout 0' in die menu.lst packen, wenn du das Menü nicht haben willst.
Thou shalt not follow the NULL pointer, for chaos and madness await thee at its end.

Hauke

  • Beiträge: 113
    • Profil anzeigen
Gespeichert
« Antwort #5 am: 07. September 2012, 18:48 »
Ja OK, das war noch was fehlte, danke.

/grub/menu.lst:
timeout 0
title OS-Name
kernel /kernel.bin
boot

 

Einloggen