Você está na página 1de 13

Startup do Kernel do Linux

Prof. Mauro Tapajs

Objetivos
Apresentar

aos participantes do projeto Itautec vrios aspectos do processo de startup dos sistemas Linux que podero vir a ser usados na distribuio para as mquinas Itautec as questes relevantes sobre o assunto para a pesquisa em andamento do projeto as dvidas que ocorrerem aos participantes e esclarec-las para que a pesquisa siga adiante

Levantar

Investigar

Startup de Arquiteturas Intel

Ao ser ligado, o sistema roda sua BIOS normalmente armazenada em EPROM O programa de bootstrap da BIOS

Executa auto-testes Sonda o barramento para descobrir o dispositivo bootvel L o programa de boot do dispositivo bootvel

A BIOS permite configuraes bsicas como a ordem de procura dos dispositivos de armazenamento para disparo O primeiro setor da mdia de boot carregado em memria e executado Este pequeno programa responsvel em carregar o SO. Aqui podem existir boot managers como o LILO (/etc/lilo.conf) ou o GRUB

Bootstrap Loader (Bootloader)


Carrega o primeiro programa (kernel) Normalmente carregado em dois estgios Requer suporte firmware (hardware bootstrap) memory firmware
(PROM)
primary

bootloader
secondary

cpu

boot device?

kernel primary net floppy cd-rom secondary kernel

Boot Arquitetura Intel x86


Carrega o setor de boot (512 bytes) no endereo 0x7C00 e passa o controle em modo real (limite de 640K)
0

memory
boot sector
0xc700

1. 2. 3. 4.

Power On Self Test (POST) Gerao de INT 19h (bootstrap) Seleo do boot device Carga do setor de boot 1. 2. floppy: first sector hard disk: MBR (mboot) or partition boot block (pboot)

cpu

5. BIOS (64K)

Executa o programa no setor de boot (primary bootloader)

0xfffffff0

BIOS_start

2GB

Boot Managers

Permitem: Escolher dentre vrios kernels (til para ns!) Definir parmetros de boot Boot de outros kernels (windows) Se localizam no setor de boot ou no setor de boot da partio No tem conhecimento prvio da estrutura de filesystem Para encontrar os kernels tem que fazer uma mapa (block map) arquivo /boot/map /boot/boot.b parte do loader (no sei se a secundria do LILO ou a primria)

Exemplo: LILO
/sbin/lilo (map installer) /etc/lilo.conf /boot/boot.b

/boot/chain.b

/boot/map /boot/vmlinuz

Startup do Kernel Linux


O kernel indicado (image) carregado Como ele normalmente est comprimido, um pequeno cdigo de descompresso embutido no incio da imagem do kernel para descomprimi-lo O kernel ento analisa o hardware e tenta configur-lo carregando os drivers adequados Depois ele tenta montar o filesystem root (/) normalmente em modo read-only Com o filesystem montado, ele roda o programa init (/sbin/init) que ser o processo de nmero 1 e ir carregar os servios configurados no sistema O sistema ento vem para o runlevel single-user e/ou multi-user

Startup do Kernel Linux

Startup do Kernel Linux

Uma vez carregado, o kernel ocupa uma rea fixa de memria e fica durante todo o tempo de operao do sistema Ao ser carregado, ele indica quanta memria ainda est disponvel O primeiro cdigo do kernel a ser rodado o startup_32: (label Assembler) que chama a funo start_kernel()

Power on

Boot

Kernel Init

OS Init

RUN!

Shut down

Power off

Sequncia start_kernel()
1. 2. 3. 4. 5.

lock_kernel tranca o kernel para carregamento trap_init - ? init_IRQ Inicializao das rotinas de manipulao de IRQs sched_init Inicializao do scheduler de processos softirq_init - Inicializao das rotinas de manipulao de interrupes de software time_init - ? console_init - ? init_modules - Inicializao dos mdulos (se houverem) kmem_cache_init caches de memria Sti - ? calibrate_delay - ? mem_init - ? kmem_cache_sizes_init - ? pgtable_cache_init - ? fork_init Suporte a forks proc_caches_init - ? vfs_caches_init cache de VFS

6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17.

Sequncia init()
1. 2.

Lock_kernel Do_basic_setup

mtrr_init sysctl_init pci_init sock_init start_context_thread do_init_calls ((*call())-> kswapd_init)

3. 4. 5. 6.

prepare_namespace free_initmem unlock_kernel execve

Programa init

O programa init l seu arquivo de configurao (/etc/inittab) e cria os runlevels

0-halt 1-Single user mode 2-Multiuser, without NFS 3-Full multiuser mode 4-unused 5-X11 6-Reboot

Você também pode gostar