processo de startup do linux

Download Processo de Startup do Linux

If you can't read please download the document

Upload: mauro-tapajos

Post on 21-Jun-2015

517 views

Category:

Technology


1 download

DESCRIPTION

Palestra: Processo de Startup do Linux - Prof. Mauro Tapajós Santos

TRANSCRIPT

  • 1. Startup do Kernel do Linux Prof. Mauro Tapajs

2. Objetivos

  • Apresentar aos participantes do projeto Itautec vrios aspectos do processo destartupdos sistemas Linux que podero vir a ser usados na distribuio para as mquinas Itautec

3. Levantar as questes relevantes sobre o assunto para a pesquisa em andamento do projeto 4. Investigar as dvidas que ocorrerem aos participantes e esclarec-las para que a pesquisa siga adiante 5. Startup de Arquiteturas Intel

  • Ao ser ligado, o sistema roda sua BIOS normalmente armazenada em EPROM

6. O programa debootstrapda BIOS

  • Executa auto-testes

7. Sonda o barramento para descobrir o dispositivobootvel 8. L o programa de boot do dispositivobootvel A BIOS permite configuraes bsicas como a ordem de procura dos dispositivos de armazenamento para disparo 9. O primeiro setor da mdia de boot carregado em memria e executado 10. Este pequeno programa responsvel em carregar o SO. Aqui podem existirboot managerscomo o LILO (/etc/lilo.conf) ou o GRUB 11. Bootstrap Loader (Bootloader)

  • Carrega o primeiro programa (kernel)

12. Normalmente carregado em dois estgios 13. Requer suportefirmware( hardware bootstrap ) cpu firmware (PROM) kernel primary secondary memory primary secondary kernel net floppy cd-rom boot device? bootloader 14. Boot Arquitetura Intel x86 Carrega o setor de boot (512 bytes) no endereo0x7C00 e passa o controle em modo real (limite de 640K)

  • Power On Self Test (POST)

15. Gerao de INT 19h (bootstrap) 16. Seleo doboot device 17. Carga do setor de boot

    • floppy: first sector
  • 18. hard disk: MBR (mboot) or partition boot block (pboot)
  • Executa o programa no setor de boot ( primary bootloader )

cpu memory boot sector BIOS_start 19. Boot Managers

  • Permitem:
  • Escolher dentre vrios kernels (til para ns!)

20. Definir parmetros de boot 21. Boot de outros kernels (windows) Se localizam no setor de boot ou no setor de boot da partio 22. No tem conhecimento prvio da estrutura defilesystem 23. Para encontrar os kernels tem que fazer uma mapa (block map) arquivo /boot/map 24. /boot/boot.b parte do loader (no sei se a secundria do LILO ou a primria) 25. Exemplo: LILO /sbin/lilo (map installer) /etc/lilo.conf /boot/boot.b /boot/chain.b /boot/map /boot/vmlinuz 26. Startup do Kernel Linux

  • O kernel indicado ( image ) carregado

27. Como ele normalmente est comprimido, um pequeno cdigo de descompresso embutido no incio da imagem do kernel para descomprimi-lo 28. O kernel ento analisa o hardware e tenta configur-lo carregando os drivers adequados 29. Depois ele tenta montar o filesystem root (/) normalmente em modoread-only 30. 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 31. O sistema ento vem para orunlevel single-usere/oumulti-user 32. Startup do Kernel Linux 33. 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

34. Ao ser carregado, ele indica quanta memria ainda est disponvel 35. O primeiro cdigo do kernel a ser rodado o startup_32: (label Assembler) que chama a funo start_kernel() Power on Power off Boot Kernel Init OS Init RUN! Shut down 36. Sequnciastart_kernel()

  • lock_kernel tranca o kernel para carregamento

37. trap_init - ? 38. init_IRQ Inicializao das rotinas de manipulao de IRQs 39. sched_init Inicializao do scheduler de processos 40. softirq_init - Inicializao das rotinas de manipulao de interrupes de software 41. time_init - ? 42. console_init - ? 43. init_modules - Inicializao dos mdulos (se houverem) 44. kmem_cache_init caches de memria 45. Sti - ? 46. calibrate_delay - ? 47. mem_init - ? 48. kmem_cache_sizes_init - ? 49. pgtable_cache_init - ? 50. fork_init Suporte a forks 51. proc_caches_init - ? 52. vfs_caches_init cache de VFS 53. buffer_init - ? 54. page_cache_init - ? 55. signals_init Manipulao de sinais 56. proc_root_init fs /proc 57. ipc_init comunicao interprocesso 58. check_bugs - ? 59. smp_init Suporte multiprocessamento? 60. rest_init Dispara a thread init, destrava kernel e roda loop de execuo infinitocpu_idle 61. Sequnciainit()

  • Lock_kernel

62. Do_basic_setup

    • mtrr_init
  • 63. sysctl_init

64. pci_init 65. sock_init 66. start_context_thread 67. do_init_calls ((*call())-> kswapd_init )

  • prepare_namespace

68. free_initmem 69. unlock_kernel 70. execve 71. Programainit

  • O programa init l seu arquivo de configurao (/etc/inittab) e cria osrunlevels

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