Citat:
random: Ma tekst je prilično loš — samo jedan pasus je potrošio na sve što se dešava otkako se upali računar do trenutka kad se podigne init, pa je onda naširoko prepričavao RH init skriptove, koje možeš i sam da pročitaš. Mnogo je zanimljivije reći, npr. da LILO nije jedini način da se podigne kernel (tu su loadlin loadlin, grub). A čak i ako se koristi LILO, i tu ima mnogo šta da se kaže.
...[snap]...
4) Eto nas u protected modu! Kôd na adresi 0x1000 je onaj iz boot/head.S, služi da inicijalizuje registre i raspakuje kernel (decompress_kernel() funkcija koja koristi kôd iz inflate.c, unzip.c i misc.c). Raspakovani kernel ide na adresu 0x100000.
...hteo bih da
pokusam da osvetlim jednu celu oblast koja je ispustena iza tacke 4, a ispred tacke 5... i da time upotpunim sliku podizanja sistema u linuxu... ne dekompresuje se samo kernel, nego se dekompresuje i inicijalni ram disk, u daljem tekstu naveden primer -> initrd-2.6.8-24-default... ovo je primer inicijalnog ramdiska koji se nalazi u SUSE 9.2 distribuciji, u /boot direktorijumu:
# ls -al
total 8980
drwxr-xr-x 3 root root 4096 2005-01-19 11:10 .
drwxr-xr-x 20 root root 4096 2005-07-15 07:02 ..
-rw-r--r-- 1 root root 512 2005-01-19 11:10 backup_mbr
lrwxrwxrwx 1 root root 1 2005-01-19 10:30 boot -> .
-rw-r--r-- 1 root root 57527 2004-10-06 14:30 config-2.6.8-24-default
-rw-r--r-- 1 root root 18071 2004-10-06 13:31 config-2.6.8-24-um
drwxr-xr-x 2 root root 4096 2005-01-19 11:10 grub
lrwxrwxrwx 1 root root 23 2005-01-19 11:10 initrd -> initrd-2.6.8-24-default
-rw-r--r-- 1 root root 1208589 2005-01-19 11:10 initrd-2.6.8-24-default
-rwxr-xr-x 1 root root 2954844 2004-10-06 13:31 linux-2.6.8-24-um
-rw-r--r-- 1 root root 67648 2004-10-02 03:20 memtest.bin
-rw-r--r-- 1 root root 94720 2005-01-19 11:10 message
-rw-r--r-- 1 root root 79149 2004-10-06 14:31 symvers-2.6.8-24-i386-default.gz
-rw-r--r-- 1 root root 20 2004-10-06 13:31 symvers-2.6.8-24-um-um.gz
-rw-r--r-- 1 root root 739535 2004-10-06 14:17 System.map-2.6.8-24-default
-rw-r--r-- 1 root root 472390 2004-10-06 13:29 System.map-2.6.8-24-um
-rw-r--r-- 1 root root 1855692 2004-10-06 14:30 vmlinux-2.6.8-24-default.gz
lrwxrwxrwx 1 root root 24 2005-01-19 10:42 vmlinuz -> vmlinuz-2.6.8-24-default
-rw-r--r-- 1 root root 1556001 2004-10-06 14:17 vmlinuz-2.6.8-24-default
...dakle, ja sam u Linuxovom Command Line Interface-u raspakovao file initrd-2.6.8-24-default umesto, predpostavljam, decompress_initrd() funkcije, koja se izvrsava NEPOSREDNO nakon decompress_kernel() funkcije... obicno se to radi na adresi 0x200000, ukoliko je velicina kernela manja od jednog megabajta...
...osnovna funkcija inicijalnog ramdiska je da kernelu omoguci inicijalni File System... jer kernel NE moze da u sebi sadrzi sve moguce drivere za pristup device-ovima... recimo SCSI ili IDE diskovima na kojima se nalazi ReadWrite FileSystem... zato kernel i koristi inicijalni ram disk koji se nalazi u memoriji, i koji "glumi" FS, mountuje / na isti, kao ReadOnly...
...raspakovani initrd-2.6.8-24-default izgleda ovako:
# ls -al
total 23
drwxr-xr-x 9 root root 1024 2005-01-19 11:10 .
drwxrwxrwx 5 root root 4096 2005-07-15 13:14 ..
drwxr-xr-x 2 root root 1024 2005-01-19 11:10 bin
drwxr-xr-x 3 root root 1024 2005-01-19 11:10 dev
drwxr-xr-x 3 root root 1024 2005-01-19 11:10 etc
drwxr-xr-x 4 root root 1024 2005-01-19 11:01 lib
-rwxr-xr-x 1 root root 5171 2005-01-19 11:10 linuxrc
drwxr-xr-x 2 root root 1024 2005-01-19 11:10 proc
-rwxr-xr-x 1 root root 4400 2004-10-02 02:52 run_init
drwxr-xr-x 2 root root 1024 2005-01-19 11:10 sbin
drwxr-xr-x 2 root root 1024 2005-01-19 11:10 sys
# ls -al bin
total 222
drwxr-xr-x 2 root root 1024 2005-01-19 11:10 .
drwxr-xr-x 9 root root 1024 2005-01-19 11:10 ..
lrwxrwxrwx 1 root root 27 2005-01-19 11:10 ata_identify -> /lib/klibc/bin/ata_identify
lrwxrwxrwx 1 root root 18 2005-01-19 11:10 cat -> /lib/klibc/bin/cat
-rwxr-xr-x 1 root root 38564 2004-10-02 15:16 chmod
lrwxrwxrwx 1 root root 24 2005-01-19 11:10 devnumber -> /lib/klibc/bin/devnumber
lrwxrwxrwx 1 root root 17 2005-01-19 11:10 ln -> /lib/klibc/bin/ln
-rwxr-xr-x 1 root root 27836 2004-10-02 15:16 mkdir
-rwxr-xr-x 1 root root 25528 2004-10-02 15:16 mknod
-rwsr-xr-x 1 root root 87704 2004-10-02 03:50 mount
-rwxr-xr-x 1 root root 38573 2004-10-02 15:16 rm
lrwxrwxrwx 1 root root 22 2005-01-19 11:10 scsi_id -> /lib/klibc/bin/scsi_id
lrwxrwxrwx 1 root root 18 2005-01-19 11:10 sed -> /lib/klibc/bin/sed
lrwxrwxrwx 1 root root 17 2005-01-19 11:10 sh -> /lib/klibc/bin/sh
lrwxrwxrwx 1 root root 20 2005-01-19 11:10 sleep -> /lib/klibc/bin/sleep
lrwxrwxrwx 1 root root 21 2005-01-19 11:10 umount -> /lib/klibc/bin/umount
# ls -al dev
total 3
drwxr-xr-x 3 root root 1024 2005-01-19 11:10 .
drwxr-xr-x 9 root root 1024 2005-01-19 11:10 ..
crw------- 1 root root 5, 1 2005-01-19 11:10 console
crw-rw---- 1 root root 29, 0 2005-01-19 11:10 fb0
brw-rw---- 1 root root 9, 0 2005-01-19 11:10 md0
crw-rw-rw- 1 root root 1, 3 2005-01-19 11:10 null
lrwxrwxrwx 1 root root 4 2005-01-19 11:10 ram -> ram0
brw-rw---- 1 root root 1, 0 2005-01-19 11:10 ram0
brw-rw---- 1 root root 1, 1 2005-01-19 11:10 ram1
brw-rw---- 1 root root 1, 2 2005-01-19 11:10 ram2
lrwxrwxrwx 1 root root 4 2005-01-19 11:10 ramdisk -> ram0
drwxr-xr-x 2 root root 1024 2005-01-19 11:10 shm
crw--w---- 1 root root 4, 1 2005-01-19 11:10 tty1
crw--w---- 1 root root 4, 2 2005-01-19 11:10 tty2
crw-r--r-- 1 root root 1, 5 2005-01-19 11:10 zero
...dalje da listam sadrzaj ne bih... koga interesuje detaljan mehanizam moze da mi postavi pitanja, a ja se nadam da cu umeti da odgovorim na pitanja... :b
...uocite da je zadatak inicijalnog ram diska da podigne HDD driver:
# pwd
/home/default_user/root_mntpoint/rootfs/lib/modules/2.6.8-24-default/kernel/drivers/scsi
# ls -al
total 223
drwxr-xr-x 2 root root 1024 2005-01-19 11:10 .
drwxr-xr-x 3 root root 1024 2005-01-19 10:42 ..
-rw-r--r-- 1 root root 50083 2004-10-06 14:30 libata.ko
-rw-r--r-- 1 root root 10996 2004-10-06 14:30 sata_nv.ko
-rw-r--r-- 1 root root 140188 2004-10-06 14:30 scsi_mod.ko
-rw-r--r-- 1 root root 20785 2004-10-06 14:30 sd_mod.ko
...ovo sto vidite su driveri za Serial ATA HDD, i za SCSI mod rada... ekstenzija @.ko se cita kao kernel object...
...kada se odradi ovaj korak, onda kernel unmountuje / sa ovoga privremenog File Sistema, i mountuje / na HDD File System, kao ReadWrite...
...toliko zasada od mene, a ja se nadam da sam uspeo [u pokusaju] da vam svima osvetlim jednu od oblasti koja je i nakon svega ostala u dubokom mraku... :)
...vas odani pera detlich, 3905! :))
Ko shvata znace, ko zna razumece, ko razume shvatice