booting linux
TRANSCRIPT
Indice● Secuencia de arranque de un SO● Secuencia de arranque Linux:
● Gestor de Arranque (Grub)● Carga del Kernel e Initramfs● Init
Inmersión Linux: De 0 a 100 en 30 Horas
Indice
● Problema del huevo y la gallina
● ¡¡Solución!!: Boot Loader
● Elementos en juego:● Bios● Master Boot Record● Boot Loader (2 Fases)
Inmersión Linux: De 0 a 100 en 30 Horas
Secuencia de arranque de un SO
La secuencia de arranque es el conjunto de operaciones que lleva a cabo una computadora desde que es encendida hasta que comienza la carga del S.O.
Wikipedia
Arranque del sistema
Fase 1
Fase 2
Carga del SO
BIOS
MBR
Boot loader
S.O.
BIOS● Sistema básico de entrada/salida
● PROM, EPROM o mas recientemente Flash Memory
● Inicializa diversos componentes de la placa base● Reloj● Procesador, memoria, caché ...● Dispositivos de almacenamiento● Etc ...
● Al final, accede al MBR para cargar el Boot Loader
Inmersión Linux: De 0 a 100 en 30 Horas
Secuencia de arranque de un SO
MBR● Son los 512 primeros bytes del dispositivo de arranque
● Localizado físicamente en el CHS 001
● En esos 512 bytes deben caber:● El boot loader primario● Tabla de particiones● Magic Number
● El fin del boot loader primario es cargar el boot loader secundario
Inmersión Linux: De 0 a 100 en 30 Horas
Secuencia de arranque de un SO
MBR
Inmersión Linux: De 0 a 100 en 30 Horas
Secuencia de arranque de un SO
Boot Loader
Tabla de Particiones
Magic Number
Partición 1
Partición 2
Partición 3
Partición 4
PartitionFlag
Start CHSPartition
ByteEnd CHS Start LBA Size
446bytes
64bytes
2 bytes
Magic Number: 2 bytes de control que sirven de test de validación al MBR. Tienen en valor constante 0xAA55
Boot Loader secundario
● Encargado de iniciar la carga del S.O
● Acaba transfiriendo el control a éste.
● Los más conocidos: Lilo, Grub, NTLDR ...
Inmersión Linux: De 0 a 100 en 30 Horas
Secuencia de arranque de un SO
● Boot Loader: comúnmente Grub o Lilo.
● Se descomprime y arranca el núcleo.
● Se monta el Inital Ram Disk si hubiere.
● Al final se arranca el proceso init que es padre de todos los procesos en Linux.
Inmersión Linux: De 0 a 100 en 30 Horas
Secuencia de arranque Linux
Arranque del sistema
Fase 1
Fase 2
Initramfs / Kernel
BIOS
MBR
Grub, Lilo ...
Linux
Init UserSpace
Inmersión Linux: De 0 a 100 en 30 Horas
Secuencia de arranque Linux
Características destacables● Tiene conocimiento sobre sistema de ficheros.
● Edición de parámetros de carga tiempo de arranque:● Disco, Partición, Kernel, Disco Ram (Initrd).● Configuración de la red: manual, dhcp, rarp.● Etc ...
● Implementa pequeña consola de comandos.
● Menú amigable.
● Permite establecer contraseña de acceso.
Inmersión Linux: De 0 a 100 en 30 Horas
Gestor de Arranque (Grub)
Bootstrapping en tres fases● Stage1:
● Reside en el MBR● Realiza las funciones del boot loader primario
● Stage 1.5:● Reside en los siguientes 30kbytes del disco duro● Es capaz de ejecutar el Stage2 desde dicha partición
● Stage 2:● Reside en la partición primaria dentro de /boot/grub● Presenta el menú desde donde realizar la carga del kernel y el
initramfs o transferir el control a otro boot loader
Inmersión Linux: De 0 a 100 en 30 Horas
Gestor de Arranque (Grub)
Inmersión Linux: De 0 a 100 en 30 Horas
Carga del Kernel e Initramfs
¿initramfs/initrd?● Sistema de ficheros temporal cargado en RAM
● Contiene drivers (modulos) y scripts
● Usado por el núcleo para que root pueda ser montada
● La partición root puede residir en disco local o remoto,
montada por NFS.
● Actualmente initrd es initramfs
Inmersión Linux: De 0 a 100 en 30 Horas
Carga del Kernel e Initramfs
Proceso de carga del núcleo● Se descomprime el kernel y se carga en memoria
● Se inician ciertas funciones en espacio de kernel:● Configuración de interrupciones● Se carga initramfs en RAM● Si inicia kernel_thread● El scheduler de procesos toma el control
● Se monta la partición root
● Se ejecuta el proceso /sbin/init (habitualmente)
Inmersión Linux: De 0 a 100 en 30 Horas
Init
Init: el proceso padre● Único proceso que arranca en núcleo, en userspace
● Crea el resto de procesos como hijos.
● Sigue en guión /etc/inittab
initleer
inittab
arrancarterminales
determinarrunlevel
arrancar servicios
Inmersión Linux: De 0 a 100 en 30 Horas
Init
Upstart: sustituto de init● Demonio init guiado por eventos
● Ficheros de configuración en /etc/event.d
● Retrocompatible con init e inittab
● De momento solo usado por Ubuntu y Debian
Experimental (Julio de 2007).
Inmersión Linux: De 0 a 100 en 30 Horas
Para mas documentación
Bibliografíahttp://en.wikipedia.org/wiki/Bootstrapping
http://en.wikipedia.org/wiki/Booting
http://en.wikipedia.org/wiki/BIOS
http://www128.ibm.com/developerworks/linux/library/lbootload.html
http://www.ibm.com/developerworks/linux/library/llinuxboot/
http://www.gnu.org/software/grub/
http://www.pixelbeat.org/docs/disk/
http://en.wikipedia.org/wiki/Initrd
http://upstart.ubuntu.com
Obra distribuida bajo licencia Creative Commons Reconocimiento – No comercialhttp://creativecommons.org/licenses/bync/2.5/es/