System Initialization

Document Sample
System Initialization Powered By Docstoc
					       Unit 2
 System Initialization
          J. Álvarez M.
Instituto Profesional DUOC UC
       Semestre 1 - 2010
                  Objetivos
•   Discutir la secuencia de boot
•   Comprender el papel de GRUB
•   Comprender el papel de init
•   Comprender servicios transientes
•   Controlar servicios System V
 Resumen de la secuencia de boot
• Inicialización de la BIOS
• Carga y ejecución del gestor de arranque
  bootloader
• Inicialización del kernel
• Se inicia init y se entra al nivel de ejecución
  (run level) deseado ejecutando:
    /etc/rc.d/rc.sysinit
    /etc/rc.d/rc y /etc/rc.d/rc[0-6].d/
Resumen de la secuencia de boot
  /etc/rc.d/rc.local
  Consolas virtuales
  Si es apropiado mostrar el Administrador X
         Inicialización del BIOS
• El BIOS (Basic Input/Output System) es la
  interfaz entre el hardware y el software a nivel
  muy básico.
• El BIOS provee el conjunto básico de
  instrucciones de bajo nivel usadas por el
  sistema operativo para la comunicación con
  los dispositivos periféricos y controles.
         Inicialización del BIOS
• El BIOS controla no sólo el primer paso del
  proceso de arranque, sino que también
  proporciona la interfaz de nivel más bajo a los
  dispositivos periféricos.
        Inicialización del BIOS
• El BIOS realiza la prueba POST (power on self
  test), entonces determina dispositivos
  periféricos y selecciona un dispositivo de
  booteo desde la lista de dispositivos de
  booteo detectada.
• Luego, el BIOS lee y ejecuta el primer sector
  físico del medio de booteo elegido sobre el
  sistema.
        Inicialización del BIOS
• Usualmente esto corresponde a los primeros
  512 bytes del disco duro. A este sector
  usualmente se le denomina Master Boot
  Record (MBR).
    Carga y ejecución del gestor de
               arranque
• El MBR contiene las instrucciones de código
  máquina para el arranque de la máquina, de
  aquí que usualmente se les denomine gestor
  de arranque, junto con la tabla de particiones.
• Una vez que la BIOS detecta y carga el
  programa gestor de arranque en la memoria,
  se obtiene el control del proceso de arranque
  a la misma.
   Iniciando el proceso de arranque:
                 GRUB
• Selección de la Imagen
    Select with space followed by up/down
     arrows on the boot splash screen.
• Paso de argumentos
    Change an existing stanza in menu editing
     mode
    Issue boot commands interactively on the
     GRUB command line
   Componentes de bootloader
• Un cargador de arranque para la plataforma
  x86 se divide en al menos dos etapas.
• La primera etapa es un código binario de
  máquina que reside en el MBR
• La segunda etapa es cargada desde la
  partición boot del disco.
    Componentes de bootloader
• El bootloader es responsable por cargar e
  iniciar el sistema operativo Linux (o
  posiblemente otros sistemas operativos)
  cuando el computador está iniciando.
• El bootloader es generalmente invocado en
  una de dos maneras:
    El BIOS pasa el control a un programa
     cargador inicial (IPL) instalado dentro de un
     MBR manejado.
    Componentes de bootloader
    El BIOS pasa el control a otro bootloader, el
     que pasa el control a un IPL instalado dentro
     de una partición en el sector de booteo.
• En ambos casos, el IPL debe existir dentro de un
  muy pequeño espacio, no mayor que 446 bytes.
  Por lo tanto, el IPL para GRUB es meramente una
  primera etapa, cuya única tarea es localizar y
  cargar un bootloader de segunda etapa, que
  hace la mayor parte del trabajo para arrancar el
  sistema.
    Componentes de bootloader
• Existen dos posibles maneras de configurar
  bootloaders:
    Bootloader primario: Instala la primera
     etapa del bootloader Linux en el MBR. El
     bootloader debe ser configurado para pasar
     el control a algún otro sistema operativo, si
     es que así se requiere.
 Componentes de bootloader
 Bootloader secundario: Instala la primera
  etapa del bootloader Linux en el sector de
  booteo de alguna partición. Otro
  bootloader debe ser instalado en el MBR, y
  configurado para pasar el control al
  bootloader Linux.
            GRUB y grub.conf
• GRUB “GRand Unified Bootloader”
    Interfaz de línea de comando disponible en
     el prompt de arranque.
    Arranque desde sistemas de archivos
     ext2/ext3, ReiserFS, JFS, FAT, minix, o FFS.
    Soporta protección de contraseñas MD5.
• El archivo /boot/grub/grub.conf tiene un
  formato de opciones globales seguidas por
  párrafos de arranque.
           GRUB y grub.conf
• Los cambios en grub.conf toman efecto
  inmediatamente.
• GRUB lee el archivo de configuración en
  tiempo de booteo, así el archivo grub.conf
  debe ser almacenado sobre un sistema de
  archivos que GRUB soporte.
• El hash de contraseñas MD5 puede ser creado
  con grub-md5-crypt.
           GRUB y grub.conf
• Si por alguna razón el MBR se corrompe y
  necesitamos reinstalar GRUB, podemos
  hacerlo con el comando /sbin/grub-install/,
  por ejemplo:
  # /sbin/grub-install /dev/hda
            GRUB y grub.conf
• Si grub-install falla por alguna razón, se puede
  intentar lo siguiente:
  # grub
  … output ommited …
  grub> root (hd0,0)
  grub> setup (hd0)
  grub> quit
        Inicialización del kernel
• Kernel boot time functions:
    Detección de dispositivos
    Inicialización de los drivers de dispositivos
    Montaje del sistema de archivo root read-
     only
    Carga el proceso inicial (init)
       Inicialización del kernel
• Los archivos de inicialización del kernel
  generan buena información desalida, pero
  que es desplegada en pantalla muy
  rápidamente.
• Una buena manera de examinar esta salida es
  ver /var/log/dmesg, que contiene una
  fotografía de estos mensajes del kernel
  tomados justo después que el control es
  pasado a init.
        Inicialización del kernel
• Los drivers de dispositivos compilados al
  kernel son llamados, y estos intentan localizar
  sus correspondientes dispositivos. Si hay éxito
  en localizar el dispositivo, el driver lo inicializa
  y usualmente registra salida al buffer de
  mensajes del kernel.
• Después que todos los drivers esenciales son
  cargados, el kernel montará el sistema de
  archivos root read-only.
        Inicialización del kernel
• El primer proceso es entonces cargado (init) y
  el control es pasado desde el kernel hacia ese
  proceso.
          Inicialización de init
• init es el padre de todos los procesos. Esto
  puede ser fácilmente mostrado ejecutando el
  comando pstree:
  # pstree
  init-+-atd
       |-3*[automount]
       |-bdflush
       |-cron
         [...]
         Inicialización de init
• Debido a que init es el primer proceso,
  siempre tendrá el PID 1.
• init lee su configuración desde el archivo
  /etc/inittab.
    Run level inicial
    Scripts de inicialización del sistema
    Atrapar ciertas secuencias de teclado
    Define UPS power fail/restore scripts
          Inicialización de init
    Spawn getty on virtual consoles
    Inicializar X en el run level 5
• Si el archivo /etc/inittab es borrado o
  seriamente corrompido, NO deberíamos
  habilitar arrancar desde alguno de los run
  levels estándar (0-6) y necesitaríamos usar, en
  vez de eso, el modo de emergencia o el modo
  single.
               Run Levels
• Un run level (o nivel de ejecución) es un
  estado de funcionamiento del sistema.
• En cada run level hay scripts que controlan
  qué servicios se deben iniciar y detener.
• Los run levels son configurables, se pueden
  definir nuevos servicios y cambiar el
  significado de los que están configurados.
                 Run Levels
• Por cada run level existe un directorio que
  contiene enlaces simbólicos que controlan el
  arranque (S*) y detención (K*) de los servicios
  para ese nivel.
                Run Levels
• init define los run levels 0-6, S y emergency.
• El run level es seleccionado:
    Por defecto en /etc/inittab en el arranque
      id:5:initdefault:
    Pasando un argumento desde el bootloader
    Usando el comando init new-run-level.
• Mostrar el run level actual y previo usando el
  comando /sbin/runlevel.
                Run Levels
• Los siguientes son los run levels que Linux
  define por defecto.
• Para “bajar” el sistema:
    0 <-- halt – shutdown a estado apagado –
           similar a shutdown –h now.
    6 <-- reboot – shutdown y soft reboot –
           similar a shutdown –r now.
                Run Levels
• Para “recuperar” el sistema:
    1 <-- Modo usuario simple – ejecutar
     rc.sysinit.
    s, S <-- Modo usuario simple alternativo
    single, emergency <-- saltarse rc.sysinit,
     sulogin – prompts para contraseña de root
                Run Levels
• Para la “operación normal del sistema”
  (elecciones para initdefault):
    2 <-- Modo multiusuario sin NFS
    3 <-- Modo texto multiusuario full, típico
     para servidores
    4 <-- Oficialmente indefinido
    5 <-- login gráfico, típico para desktops y
     laptops
                Run Levels
• La primera línea en /etc/inittab define el run
  level por defecto (default runlevel), aunque
  puede ser ignorado pasando un argumento a
  init directamente o vía el kernel cuando
  pasamos como un           argumento en el
  bootloader.
                     /etc/rc.d/rc.sysinit
 • Las tareas que incluye son:
     Activar udev y selinux
     Fijar parámetros del kernel                                en el archivo
      /etc/sysctl.conf.
     Fijar el reloj del sistema
     Cargar keymaps
     Habilitar particiones swap
     Fijar hostname
Udev ->      gestor de dispositivos que usa el kernel Linux en su versión 2.6
Selinux ->   seguridad mejorada de linux
Sysctl ->    automatizar configuraciones del kernel
       /etc/rc.d/rc.sysinit
 Chequear el sistema de archivos root y
  remontarlo.
 Activar dispositivos RAID y LVM
 Habilitar las quotas de disco
 Chequear y montar otros sistemas de
  archivos
           /etc/rc.d/rc.sysinit
• Cuando rc.sysinit primero inicia, presionando
  la letra i podemos entrar en modo interactivo.
• En modo interactivo, se esperará nuestra
  confirmación antes de realizar muchas de sus
  funciones.
                /etc/rc.d/rc
• /etc/rc.d/rc define cuales servicios iniciar
  l5:5:wait:/etc/rc.d/rc 5
• El script rc inicializa el run level tal como lo
  define la línea initdefault en el archivo
  /etc/inittab y es responsable por iniciar/parar
  servicios cuando el run level cambia.
• Cada run level tiene su correspondiente
  directorio, por ejemplo: /etc/rc.d/rc5.d/
                /etc/rc.d/rc
• Los scripts init System V residen en el
  directorio /etc/rc.d/init.d/.
• Los enlaces simbólicos en los directorios de un
  run level llaman los scripts init.d con un
  argumento iniciar o parar.
• Los scripts que lanzan los servicios del sistema
  son localizados en /etc/rc.d/init.d/.
  # ls –l /etc/rc.d/init.d/
            /etc/rc.d/rc.local
• El script rc.local se ejecuta después de los
  scripts específicos del run level.
• Debido a que el script rc.local se ejecuta cada
  vez que el sistema arranca, es un lugar
  conveniente para ejecutar comandos que es
  necesario ejecutar como parte del proceso de
  arranque.
            /etc/rc.d/rc.local
• En muchos casos es recomendable crear un
  script init System V en /etc/rc.d/init.d/ a
  menos que el servicio que se está iniciando
  sea trivial y no sea necesario garantizarlo.
• Los scripts existentes pueden ser usados como
  un buen punto de inicio.
            El servicio xinetd
• Los servicios son iniciados por xinetd en
  respuesta a requerimientos o peticiones de
  servicio entrantes.
• xinetd administra servicios transientes sobre
  demanda:
    Servicios que son necesitados menos
     frecuentemente
    Autenticación basada en host
    Servicios estadísticos y de logging
            El servicio xinetd
    Servicios de redireccionamiento IP
• Los servicios que son necesitados menos
  frecuentemente, o que requieren una
  administración adicional de recursos, son
  típicamente controlados por el demonio
  xinetd.
• xinetd utiliza el archivo /etc/services en su
  configuración de administración de puertos a
  servicios.
             El servicio xinetd
• La configuración instalada por defecto de xinetd
  es provista por el archivo de configuración de alto
  nivel /etc/xinetd.conf y archivos de configuración
  para servicios específicos se ubican bajo el árbol
  de directorio /etc/xinetd.d/.
• El archivo de configuración /etc/xinetd.conf fija
  las opciones de configuración global compartidas
  por todos los servicios administrados por xinetd,
  y también provee el path a configuraciones
  específicas a servicios.
            El servicio xinetd
• La directiva includedir /etc/xinetd.d incluye
  cada archivo en /etc/xinetd.d/.
• Más información puede ser encontrada en el
  directorio xinetd-* bajo /usr/share/doc, y por
  medio de man 5 xinetd.conf.
• También es posible obtener información de
  xinetd desde http://www.xinetd.org.
         Controlando servicios
• El trabajo de los scripts de inicialización
  System V es iniciar servicios en tiempo de
  booteo. Muchos de estos servicios corren
  como daemons, tales como cups, cron y
  sendmail.
• RHEL incluye varias utilidades que facilitan la
  administración de inicializaciones System V:
      Controlando servicios
 system-config-services – Utilidad gráfica
  que requiere una interfaz X.
 ntsysv – utilidad basada en ncurses
  utilizable en consolas virtuales.
 chkconfig – Una utilidad de línea de
  comando rápida y versátil que trabaja bien
  y es utilizable con scripts e instalaciones
  kickstart.
         Controlando servicios
• Utilidades para controlar manualmente los
  servicios:
    service – inicia o para inmediatamente un
     servicio standalone.
    chkconfig – inicia o para inmediatamente
     servicios administrados por xinetd.
                 Ejemplo
• El servicio portmap es un demonio de
  asignación de puertos dinámico para servicios
  RPC, tales como NIS y NFS (servicio inseguro
  con autenticación débil).
• Los comandos siguientes “bajan” el servicio
  portmap y previenen que el servicio inicie
  después de un reboot:
  # /etc/rc.d/init.d/portmap stop
  # chkconfig --del portmap
                Ejemplo
• Una manera alternativa es usando el
  programa ntsysv:
  # /etc/rc.d/init.d/portmap stop
  # ntsysv
• Otra forma consiste en renombrar el script
  apropiado bajo rcX.d (X usualmente 3):
  # cd /etc/rc.d/rc3.d
  # mv S11portmap K11portmap
               Referencias
• Guía de instalación de RHEL 5 para todas las
  arquitecturas:
  http://www.linuxtopia.org/online_books/rhel
  5/installation_guide/rhel5_s1-boot-init-
  shutdown-process.html

				
DOCUMENT INFO
Shared By:
Categories:
Tags:
Stats:
views:3
posted:12/29/2011
language:Latin
pages:50