boot(7) Miscellaneous Information Manual boot(7) NOMBRE inicio - Proceso de inicio de sistemas basados en la version 4 de System V de Unix DESCRIPCION El proceso de incio (o "secuencia de inicio") varia en ciertos detalles entre sistemas, pero puede dividirse en varias etapas en base al componente que lo controle: (1) hardware (2) cargador de inicio del sistema operativo (3) nucleo (4) proceso base en espacio de usuario (init e inittab) (5) scripts de inicio A continuacion se describe cada uno de ellos con mayor detalle. Hardware Despues de pulsar el boton de encendido o el boton reset, se pasa el control a un programa almacenado en memoria de solo lectura (normalmente PROM). Por razones historicas de los PC, a este programa se suele denominar BIOS. Este programa normalmente hace una autocomprobacion basica del equipo y accede a la memoria no volatil para leer parametros adicionales. En el PC, esta memoria es de tipo CMOS con respaldo de bateria, por lo que la mayoria de la gente se refiere a ella como CMOS, aunque fuera del mundo del PC se le llama usualmente nvram (non-volatile ram, RAM no volatil). La cantidad de parametros almacenados en la NVRAM varia entre sistemas, pero deberia -como minimo- definir que dispositivo puede proporcionar un cargador para el sistema operativo o en cuales se deberia comprobar si existe uno. Este dispositivo se conoce como dispositivo de inicio. Durante la primera etapa de inicio (hardware) se carga el cargador del sistema operativo desde una posicion definida del dispositivo de inicio y luego se le transfiere el control. Nota: El dispositivo desde el que se cargara el sistema operativo puede estar acoplado al equipo a traves de una red, en cuyo caso los detalles para el inicio se daran mediante protocolos como DHCP, TFTP, PXE, Etherboot, etc... Cargador de inicio del sistema operativo La principal tarea del cargador de inicio es localizar el nucleo, cargarlo y ejecutarlo. La mayoria de cargadores de inicio permiten un uso interactivo, para poder especificar un nucleo alternativo (posiblemente una copia de seguridad en caso de que el ultimo nucleo compilado no funcione) y para pasar parametros opcionales al nucleo. Tradicionalmente, en los PC, el cargador del SO esta localizado en el primer sector del dispositivo de inicio - es el llamado MBR (Master Boot Record). En la mayoria de los sistemas, este cargador de inicio esta limitado en base a varias restricciones. Incluso en sistemas que no son PC hay algunas limitaciones al tamano y complejidad del cargador, asi que, la limitacion de tamano del MBR en los PC (512 bytes incluyendo la tabla de particiones) hace casi imposible introducir un cargador de inicio completo dentro de el. La mayoria de sistemas operativos dividen la tarea de iniciarse entre un cargador de inicio primario y otro secundario; este ultimo puede estar localizado dentro dentro de otra particion mayor de almacenamiento permanente como por ejemplo una particion de disco. En linux, el cargador de inicio suele ser grub(8) (una alternativa a lilo(8). Nucleo Una vez que se carga el nucleo, este inicializa diversos componentes del equipo y del sistema operativo. Cada porcion de software responsable de esta tarea se suele considerar un controlador o driver para dicho componente. El nucleo arranca el intercambiador de memoria virtual (es un proceso del nucleo llamado "kswapd" en los nucleos recientes de Linux) y monta el sistema de archivos raiz: /. Algunos de los parametros que se le pueden pasar al nucleo estan relacionados con estas actividades (p.e: puede sobreescribir el sistema de archivos raiz por defecto). Para mas informacion sobre los parametros del nucleo Linux consulte bootparam(7). Despues de esto, el nucleo creara el primer proceso en espacio de usuario al que asigna como numero de PID (ID de proceso) el numero 1. Tradicionalmente, este proceso ejecuta el programa /sbin/init, pasandole cualquier parametro que no haya podido ser manejado por el nucleo. Proceso base en espacio de usuario Nota: La siguiente descripcion es de aplicacion en sistemas operativos basados en la version 4 de System V de UNIX. Muchos sistemas ampliamente utiizados adoptaron un sistema relacionado pero con una base diferente conocido como systemd(1) en el cual el proceso de inicio se describe en su bootup(7) asociado. Cuando se inicia /sbin/init, este lee /etc/inittab en busca de instrucciones. En este archivo se define que debe ejecutarse segun el nivel de ejecucion permitiendo al administrador del sistema definir el entorno para ciertos usos de forma sencilla. Cada nivel de ejecucion esta asociado a un conjunto de servicios. Por ejemplo: el nivel de ejecucion S es el modo monousuario y el nivel de ejecucion 2 implica la ejecucion de la mayoria de servicios de red. El administrador puede modificar el nivel de ejecucion actual mediante init(1) y ver el que esta actualmente en ejecucion con runlevel(8). Sin embargo, puesto que no es conveniente gestionar los servicios individuales editando directamente este archivo, /etc/inittab solamente lanza un conjunto de scripts que son los que realmente arrancan/paran los servicios individuales. Scripts de inicio Nota: La siguiente descripcion se aplica a los sistemas basados en la version de Unix System V. Sin embargo, algunos sistemas ampliamente usados (Slackware Linux, FreeBSD, OpenBSD) tienen una estructura para los scripts de inicio algo diferente. Para cada servicio gestionado (mail, nfs server, cron, etc.) hay un unico script de inicializacion ubicado en un directorio especifico (/etc/init.d en la mayoria de versiones de Linux). Cada uno de estos scripts acepta como unico argumento la palabra 'start' (haciendo que se inicie el servicio) y la palabra 'stop' (hace que se detenga). Tambien podran aceptar otros argumentos a conveniencia como por ejemplo 'restart' que hace que se detenga y se vuelva a iniciar, 'status' que muestra el estado en que se encuentra el servicio, etc... Si se ejecuta sin ningun argumento, se listan todas las posibilidades que ofrece. Directorios de ejecucion en orden Para conseguir que ciertos scripts se inicien o se paren en diferentes niveles de ejecucion y en un orden concreto, se crearon los directorios de ejecucion en orden. Se encuentran habitualmente en /etc/rc[0-6S].d. En cada uno de estos directorios hay enlaces (normalmente simbolicos) a los scripts que se encuentran en el directorio /etc/init.d. Un script principal (normalmente /etc/rc) se invoca desde inittab(5) y es el encargado de invocar los scripts de servicios a traves de los enlaces de los directorios de ejecucion en orden. Todos los enlaces cuyo nombre comienza con 'S' son invocados con el argumento 'start' (por tanto, iniciando el servicio). Todos los enlaces que comienzan con 'K' son invocados con el argumento 'stop' (por tanto, deteniendo el servicio). Para establecer el orden de inico o parada dentro de un mismo nivel de ejecucion, los nombres de los enlaces contienen numeros de orden. Ademas, para hacer los nombres mas claros, estos terminan habitualmente con el nombre del servicio al que se refieren. Ejemplo: el enlace /etc/rc2.d/S80sendmail lanza el servicio sendmail en el nivel de ejecucion 2. Esto ocurriria despues de ejecutar /etc/rc2.d/S12syslog pero antes de ejecutar /etc/rc2.d/S90xfs. Para gestionar el orden de inicio y los niveles de ejecucion, tenemos que manejar estos enlaces. En muchos sistemas, existen herramientas para facilitaresta tarea (p.ej: chkconfig(8)). Configuracion de inicio Una aplicacion que proporciona un servicio suele denominarse demonio. Normalmente, los demonios lanzados pueden recibir opciones y parametros en la linea de ordenes de manera opcional. Para permitir a los administradores de sistemas cambiar estos parametros sin editar los scripts de inicio, se utilizan los archivos de configuracion. Estos estan localizados en un directorio especifico (/etc/sysconfig en sistemas RedHat antiguos) y son utilizados por los scripts de inicio. En versiones antiguas de Unix, estos archivos contenian las opciones de linea de ordenes reales para un demonios, pero en sistemas Linux modernos (y tambien en HP-UX), tan solo contienen variables de la shell. Los scripts de inicio en /etc/init.d leen e incluyen sus archivos de configuracion y usan los valores de las variables. ARCHIVOS /etc/init.d/, /etc/rc[S0-6].d/, /etc/sysconfig/ VEASE TAMBIEN init(1), systemd(1), inittab(5), bootparam(7), bootup(7), runlevel(8), shutdown(8) TRADUCCION La traduccion al espanol de esta pagina del manual fue creada por Miguel Perez Ibars y Marcos Fouces Esta traduccion es documentacion libre; lea la GNU General Public License Version 3 o posterior con respecto a las condiciones de copyright. No existe NINGUNA RESPONSABILIDAD. Si encuentra algun error en la traduccion de esta pagina del manual, envie un correo electronico a . Paginas de manual de Linux 6.06 31 Octubre 2023 boot(7)