Kde je fyzicky kernel ?
test
xmyslik na smrt.cz
Úterý Prosinec 10 02:29:12 CET 1996
In article <199612091124.MAA08027 na k332.feld.cvut.cz>, you wrote:
>Hello, world!
>
>> aby zde take padla nejaka otazka o Linuxu (coz je podle mne to, co mame
>> umisteno v adresari /boot pripadne / pod nazvem /vmlinuz ci podobne), chtel
>> bych se zeptat na nasledujici veci:
>>
>> 1. Ze se po nabootovani Linuxu na adrese 0x90000 nachazi bootsektor
>> a na 0x90200 je setup a od 0x10000 do 0x8f000 se nachazi komprimovany kernel
>> jeste chapu, ale je mi zahadou, co se nachazi od 0x8f000 do 0x8ffff a proc
>> zrovna je velikost komprimovaneho kernelu omezena timto (0x7f0 = 508KB) a
>> kam se potom premisti dekomprimovany kernel ? Na 1MB (0x100000) ???
>
> Tradicni postup bootovani kernelu z diskety u 2.0.X je nasledujici:
>(pouzije-li se LILO, je to obdobne)
>
> (1) BIOS nahraje boot-sector (boot.S) na 0x7c00 a spusti jej
> (2) Boot-sektor premisti sam sebe od 0x90000, zasobnik umisti
> pod sebe sama.
> (3) Modul "setup" (setup.S) je nahran od 0x90200
> (4) Zbytek jadra je nahran od 0x10000 -- maximalni velikost
> jadra je tedy 0x80000 minus 4KB na zasobnik.
> (5) Nasledne se spusti setup, ten vytahne z BIOSu ruzne
> parametry typu informace o discich apod., ty ulozi na misto
> puvodniho boot-sectoru.
> (6) Setup prepne CPU do protected-modu a spusti kernel od zacatku,
> dostane se do arch/i386/boot/compressed/head.S, zavola se
> dekompresni rutina, ktera kernel rozpakuje na 0x100000
> a nasledne tam skoci.
> (7) Tim se dostavame do arch/i386/kernel/head.S, data z 0x90000
> se presouvaji do empty_zero_page a programuje se MMU, cimz
> se cely adresni prostor kernelu objevuje od 0xc0000000.
> (8) Poustime init/main.c, funkci start_kernel -- happy end.
>
> Pokud se bootuje big kernel image (bzimage), je nahran na 0x100000,
>rozpakuje se za spakovanou verzi a nasledne je presunut na 0x100000
>a spusten tamtez, jako by to bzimage nebyl.
>
>> 2. Pry se vyse uvedena filosofie zmenila v 2.1.x. Co je na tom
>> pravdy? Bohuzel nemam zrovna moc casu nazbyt na studovani 2.1.x \ldots
>
> O zmene tohoto ve 2.1.X nic nevim -- pokud je mi znamo, jedine, co se
>zmenilo, bylo rozdeleni adresniho prostoru na uzivatelksou a systemovou
>oblast -- puvodne se pouzivaly dva ruzne segmenty, ve 2.1.X jiz pouze
>jeden (zrychleni...).
Kvuliva velikosti kernelu je snad nova volba make bzimage, ktera ma obejit ten limit.
>
>> 3. Jake pouzivate disassemblery ? Mate nekdo nejaky lepsi nez ndisasm
>> ? ... nejak divne mi radkuje editor :-)))
>
> Ja pouzivam objdump --disassemble.
>
> Martin
--
------------------------------------------------------------------
Vladimir Myslik
(if you experience delivery problems replying my mail, try the addresses below)
mailto:xmyslik na cslab.felk.cvut.cz , mailto:xmyslik na cs.felk.cvut.cz
http://cs.felk.cvut.cz/~xmyslik
Další informace o konferenci Linux