Professional Documents
Culture Documents
4-Inicijalizacija Sustava
4-Inicijalizacija Sustava
Predavanje
6. Inicijalizacija sustava
"Linux u ugradbenim sustavima", Copyright 2014, Kristijan Lenac.
Creative Commons BY-SA 4.0 (http://creativecommons.org/licenses/by-sa/4.0)
Vidjeli smo do sada
● Primjere ugradbenih sustava
● Svojstva ugradbenih sustava
● Razlike u ugradbenim sustavima i razvoju ugradbenih
aplikacija nekad i danas
● Što je sustav u stvarnom vremenu i kada je potreban
● Kada i zašto koristiti operacijski sustav
● Kada se isplati ulagati u razvoj vlastitog sklopovlja
posebno prilagođenog za aplikaciju
● Linux u ugradbenim sustavima
● Jezgru Linuxa i njeno programiranje
● Osnovne informacije o uClinux sustavu
● Licenciranje
Sadržaj predavanja
Inicijalizacija sustava
● Bootloader
● Inicijalizacija Linux jezgre
● Inicijalizacija korisničkog prostora
Inicijalizacija sustava
Inicijalizacija Inicijalizacija
Bootloader
jezgre korisničkog prostora
Bootloader
Bootstrap procedura
Osnovne funkcije:
● Bazična inicijalizacija sklopovlja
● Izbor OS-a i parametara za njegovo pokretanje
● Učitavanje OS-a
Dodatne funkcije:
● Učitavanje i ažuriranje firmwarea preko
USB/Ethernet/UART veze
● Debug i testiranje
● Splashscreen
● bootset (failsafe)
● Timeri
● Minimalna ljuska
● ...
GRUB bootloader
● Primjer: GRUB bootloader
● Stage1
– kratak kod u MBR učitava veći kod iz
neiskorištenog prostora među particijama
● Stage1.5
– kod koji razumije specifičan datotečni sustav koji
sadrži Linux jezgru
– učitava Stage2
● Stage2
– prikaz liste dostupnih jezgri
– mogućnost izbora jezgre i postavljanje parametara
jezgre
– minimalna ljuska za dodatnu kontrolu i potrebe
Bootloader na ugradbenim procesorima
...
LD vmlinux
SYSMAP System.map
OBJCOPY arch/arm/boot/Image
Kernel: arch/arm/boot/Image is ready
AS arch/arm/boot/compressed/head.o
GZIP arch/arm/boot/compressed/piggy.gz
AS arch/arm/boot/compressed/piggy.o
CC arch/arm/boot/compressed/misc.o
AS arch/arm/boot/compressed/headxscale.o
AS arch/arm/boot/compressed/bigendian.o
LD arch/arm/boot/compressed/vmlinux
OBJCOPY arch/arm/boot/zImage
Kernel: arch/arm/boot/zImage is ready
Building modules, stage 2.
...
Sastavni dijelovi datoteke zImage
Redoslijed izvršavanja
Ulazna točka u jezgru: head.o
● Vidi dokumentaciju:
../Documentation/kernel-parameters.txt
Posljednji koraci podizanja jezgre
if (execute_command) {
run_init_process(execute_command);
printk(KERN_WARNING "Failed to execute %s.
Attempting "
"defaults...\n", execute_command);
}
run_init_process("/sbin/init");
run_init_process("/etc/init");
run_init_process("/bin/init");
run_init_process("/bin/sh");
panic("No init found. Try passing init= option to
kernel.")
Inicijalizacija korisničkog prostora
Root file system
|bin
|dev
|etc
|lib
|sbin
|usr
|var
|tmp
.
|bin
| | busybox
| ' sh > busybox
|dev
| ' console
|etc
| ' init.d
| ' rcS
'lib
|ld2.3.2.so
|ldlinux.so.2 > ld2.3.2.so
|libc2.3.2.so
'libc.so.6 > libc2.3.2.so
Init proces
● SysV init
● tradicionalan način inicijalizacije korisničkog prostora
● starta se /sbin/init koji procesuira /etc/inittab
● pokreće se slijed akcija zavisno od izabrane razine
izvršavanja (run-level)
● Upstart
● http://upstart.ubuntu.com/
● systemd
● novi projekt na koga prelaze ili su već prešle sve veće
distribucije
● busybox init
● koristi se u ugradbenim sustavima, pojednostavljena
verzija SysV init-a