Re: Bootsector nach Partitionierung herstellen

Thomas Michalka <[email protected]> Thu, 07 Apr 2011 15:20:24 +0200
Newsgroups gmane.linux.suse.programming
Message-ID <[email protected]>
Hallo,


David Haller schrieb:
> Am Tue, 05 Apr 2011, Thomas Moritz schrieb:
>> Ich muss das Szenario noch 2x auf verschieden-grossen CFs durchfuehren=
=20
>> und werde dabei den HexDump beobachten! Bin gespannt, wann genau da=20
>> was schief laeuft.
>=20
> Lies auch mal 'info grub' ;) Da steht genau drin, was wie gebooted
> wird. Und -- wenn du nicht per "aktiver Partition" zur FAT umschalten
> willst: schreib GRUB einfach in den MBR.

Bedeutet das, dass man einen Boot-Sektor-GRUB (BS-GRUB) direkt vom BIOS
starten lassen kann, indem man das Aktiv-Flag der Partition, in der der
BS-GRUB installiert ist, setzt? Also ohne Boot-Code im MBR?

Noch eine Frage, ankn=C3=BCpfend an die Diskussion, die wir k=C3=BCrzlich=
 hatten,
mit einer kurzen Vorbemerkung:
Es scheint wirklich so zu sein, dass mein BIOS meine eSATA-Platte immer
an die zweite Stelle hinter der Boot-Platte setzt, obwohl sie eindeutig
als dritte Platte im BIOS-Setup eingereiht ist. Durch lsscsi im selben
System wird die Platte auch immer an der selben Stelle angezeigt, egal
ob sie schon beim Booten drin war oder erst sp=C3=A4ter eingeschoben wurd=
e:

# lsscsi
[3:0:0:0]    disk    ATA      WDC WD5000BEVT-0 01.0  /dev/sdg
[4:0:0:0]    disk    ATA      OCZ-VERTEX2 3.5  1.22  /dev/sda
[5:0:0:0]    disk    ATA      ST3500630AS      3.AA  /dev/sdb

Also immer [3:0:0:0], mal als /dev/sda (beim Booten schon drin; unter
den ATA-Ger=C3=A4ten sogar das erste, hat aber nichts mir der Einreihung
durch das BIOS zu tun), mal als /dev/sdg (ins laufende System eingesteckt=
).

Nun die Frage: kann es sein, dass ein Aktiv-Flag in einer Partition auf
der eSATA-Platte dazu f=C3=BChrt, dass sie vom BIOS an die zweite Stelle
eingereiht wird?

# fdisk -l /dev/sdg

Disk /dev/sdg: 500.1 GB, 500107862016 bytes
255 heads, 63 sectors/track, 60801 cylinders
Units =3D cylinders of 16065 * 512 =3D 8225280 bytes
Disk identifier: 0x0005df91

   Device Boot      Start         End      Blocks   Id  System
/dev/sdg1   *           1         523     4200966   82  Linux swap / ...
/dev/sdg2             524         536      104422+  83  Linux
/dev/sdg3             537        3147    20972857+  83  Linux
/dev/sdg4            3148       60801   463105755   83  Linux

Verstehe eh nicht, wieso die Swap-Partition als aktiv markiert ist, ist
doch =C3=BCberfl=C3=BCssig.


> Da du ja nicht das aktuelle System (dessen menu.lst) verwenden willst
> mu=C3=9Ft du entweder ein chroot in die gemountede CF (sdd1) machen, od=
er
> GRUB ohne 'grub-install' manuell dort installieren (IIRC):
>=20
> # mount /dev/sdd1 /mnt/sdd1
> # mount -o bind /proc /mnt/sdd1/proc
> # mount -o bind /dev /mnt/sdd1/sys
> # mount -o bind /sys /mnt/sdd1/dev
> # chroot /mnt/sdd1
> # grub
> grub> setup --stage2=3D/boot/grub/stage2 (hd0) (hd0,0)
> grub> quit
>=20
> grub> help setup =20
> setup: setup [--prefix=3DDIR] [--stage2=3DSTAGE2_FILE] [--force-lba[=3D=
off]] INSTALL_
> DEVICE [IMAGE_DEVICE]
>     Set up the installation of GRUB automatically. This command uses
>     the more flexible command "install" in the backend and installs
>     GRUB into the device INSTALL_DEVICE. If IMAGE_DEVICE is
>     specified, then find the GRUB images in the device IMAGE_DEVICE,
>     otherwise use the current "root device", which can be set by the
>     command "root".
>=20
> -> Das "IMAGE_DEVICE" ist, wo GRUB dann stage2 und die menu.lst sucht.
>=20
> Du kannst nat=C3=BCrlich auch weiter in die /-Partition installieren:
>=20
> grub> setup --stage2=3D/boot/grub/stage2 (hd0,0) (hd0,0)
>=20
> Wobei da die /boot/grub/device.map den passenden Eintrag haben mu=C3=9F=
,
> da=C3=9F (hd0) =3D=3D CF-Karte.

Wieso, Du verwendest doch auch f=C3=BCr die Root-Partition nur
GRUB-Ger=C3=A4tebezeichner.

Ich war bisher der Meinung, dass die device.map nur von
grub-install[.unsupported] gebraucht wird, weil als Argumente f=C3=BCr di=
eses
Skript Linux-Ger=C3=A4tebezeichner (/dev/sdXy) =C3=BCbergeben werden k=C3=
=B6nnen.
Den Versuch, die Zuordnung zwischen Linux- und GRUB-Ger=C3=A4tebezeichner=
n
f=C3=BCr die device.map mit der Option --recheck 'erraten' zu lassen, hal=
te
ich inzwischen sogar nur dann f=C3=BCr sinnvoll, wenn man das genau in de=
m
laufenden System macht, f=C3=BCr das man GRUB gerade installieren m=C3=B6=
chte.
Installiert man GRUB aus einem z.B. von DVD gestarteten externen System
f=C3=BCr ein auf Platte installiertes System, dann sollte man das IMHO am
besten in einer GRUB-shell, wie Du es oben gezeigt hast, machen. Man
muss sich dann nur klar =C3=BCber die Reihenfolge der Laufwerke sein, die=
 das
BIOS an den GRUB das gerade laufenden Systems gemeldet hat.

> Wenn's dann klemmt mu=C3=9Ft du gucken, als was das device im Grub von
> CF-gebootet auftaucht (da hilft dann z.B. 'find /boot/grub/menu.lst'
> am grub-Prompt.

Wenn man mehrere Platten bzw. Partitionen mit GRUB drauf hat, kann man
so leider das Ger=C3=A4t nicht identifizieren, weil find mehrere hd(x,y)
findet :-(


Gru=C3=9F, Tom
--=20
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]=
g