[linux] Boot s diskety problem.

Matej Kovac matej na pobox.sk
Pondělí Listopad 22 13:47:54 CET 1999


vysvetlim priebeh bootovania kernelu, komu sa to nexce citat,
nemusi - je to trosku dlhsie :-) - a este jedno... dost dlho
som sa nepozeral do zdrojakov kernelu... ak by som nieco
spackal, flame on me.


Cecetka.Robert na zsr.sk wrote:
> 
> Cauko vospolok
> 
> Chcel by som Vas poprosit o radu ohladne boot diskety pre RH6.0.
> Vytvoril som si boot disketu prikazon: dd -if=/boot/vmlinuz of=/dev/fd0
> bs=8192
> 
cize dumpol kernel na fd0. btw, bs davaj velkost stopy v
bytoch, budes to mat rychlejsie.

> request_module [block-major-8]: Root fs not mounted
> VFS: Cannot open root device 08:21
> kernel panic: VFS: Unable to mount root fs on 08:21

kernel image sa sklada priblizne z: boot sector,
nekpmrimovany, hlavicka, ktora pomoze natiahnut cely kernel z
boot media (disketa/hdd - pomocou biosu), potom switchne do
protected modu a dekomprimuje kernel a spusti ho
(Uncompressing linux.........\n). potom je tam uz len
compressed image kernelu, elf binarka.

v boot sectore a v hlavicke za boot sectorom je format co to
vlastne je - teda zimage, bzimage, velkosti, miesto kde
bootloader zapise svoj ID byte (teda kernel si moze zistit ci
pouzivas loadlin/lilo/dump image/etc). a okrem ineho sa tam
nachadza aj root device. teda to, co po nastartovani kernelu
(uz dekomprimovaneho image) bude obsahovat root file system.
kedze kernel musi pristupovat fyzicky priamo na to zariadenie,
musi mat zakompilovany v sebe driver pre to zariadenie - tu sa
uz nepouziva bios. teda ziadne moduly pre driver na root
device! ty tam mas sdc, teda musis mat zakompilovany scsi
driver. dalej sa ide mountnut root file system - a kedze sa da
pristupovat k disku ale este nie ku ziadnemu konkretnemu file
systemu, tahanie modulu obsahujuceho file system z disku je
nezmysel - a to je dovod preco musi byt zakompilovany aj root
file system normalne ako v monolitickych kerneloch, nie ako
modul. teda ziaden modul pre root file system - najcastejsie
e2fs. ak toto vsetko v kernely je, root fs sa mountne a od
teraz je mozne pouzivat moduly na vsetko - od sietoviek,
dalsich file systemov, video kariet zvukov, a co ja viem coho
este. samozrejme ze ked sa taha root file system po sieti,
netreba mat driver pre disk, ale natvrdo zakompilovany driver
pre sietovku a protokol po ktorom sa taha kernel etc.

> 
> teraz som uz len stalcil CTRL+ATL+DEL a resetol stroj.
> Pri normalnom boot-e z disku ide vsetko OK.
> 
co ine zostavalo - kernel mal v bot sectore napisane sdc,
nenasiel driver => panic.

> obsah /etc/lilo.conf mam:
> boot=/dev/hda2
> map=/boot/map
> install=/boot/boot.b
> prompt
> timeout=50
> image=/boot/vmlinuz-2.2.5-22
>         label=linux
>         root=/dev/hda2
>         read-only
> other=/dev/hda1
>         label=dos
>         table=/dev/hda
> 
pri normalnom boote sa moze pouzit presne tento image, lenze
postup bootu je trochu iny. lilo vobec nenatahuje boot sector
- teda prvych 512 byte image. aby som bol presny, natiahne to
do pamate, ale nespusti ten kod. len tam zapise to co ma v
konfiguraku - namiesto sdc di tam da hda2 - teda 3:2, nie
8:21. a potom pusti hlavicku ktora sama switchne do protect
modu, dekomprimuje kernel a zisti si root device, modifikovane
lilom. kaine problem.

> Trosku ma zarazil, ze pri pouziti prikaza /usr/sbin/rdev /boot/vmlinuz mi
> vypisalo:
> Root device /dev/sdc1
> namiesto ???? :
> Root device /dev/hda2

a menil si to device rdev-om, alebo si si ho len pozrel?
surovo ho zmen, dumpni kernel na disketu a pojde to. ak by ti
to nahodou neslo, chod do linux/arch/i386/boot a v bootsect.s
to natvrdo zmen. to bude treba rekompilovat kernel. alebo,
vyedituj makefile, tam je to tiez.

Matej Kovac
matej na pobox.sk



Další informace o konferenci linux