Durante
el arranque de cualquier máquina, su BIOS localiza el sector de arranque del
disco duro (MBR). Los siguientes 4 pasos describen el pre-inicio:
1)
Cuando encendemos un ordenador, se ejecutan las rutinas POST (Power and Self
Test) para determinar la cantidad de memoria física y los componentes de
hardware presentes en la máquina.
2) La
BIOS, localiza el dispositivo de arranque (BOOT) y carga y ejecuta el MBR
(Master Boot Record).
3) El
MBR busca en su tabla de particiones, la partición que esté marcada como
activa, carga en memoria el sector de boot de dicha partición y lo ejecuta.
4)
Dicho sector, carga y ejecuta el archivo NTLDR (BootMgr en Windows Vista y 7)el
cual es el cargador del sistema operativo.
Secuencia
de Inicio (Boot):
Después
de cargar en memoria NTLDR, la secuencia de inicio busca información acerca del
hardware y los controladores para preparar las fases de carga del sistema
operativo. La secuencia de boot, utiliza los siguientes ficheros: NTLDR,
BOOT.INI (Bootbcd en Windows Vista y 7), BOOTSECT.DOS (opcional), NTDETECT.COM
y NTOSKRNL.EXE.
Esta
secuencia de Boot tiene 4 fases, fase de Initial Boot Loader (cargador
inicial), fase de selección del sistema operativo, detección de hardware y
selección de la configuración.
–
Initial Boot Loader.
Durante
este fase, NTLDR cambia el modo de funcionamiento del procesador, de modo real
a modo protegido (32 bit flat memory mode). Posteriormente NTLDR arranca los
minidrivers del sistema incorporados dentro del propio NTLDR. Estos minidrivers
permiten a NTLDR localizar y cargar Windows desde particiones FAT, FAT32 y
NTFS.
–
Selección del Sistema Operativo.
Durante la secuencia de inicio, NTLDR lee el archivo BOOT.INI. Si dicho archivo tiene más de una linea de selección del sistema operativo, se muestra una pantalla durante el tiempo predeterminado en el archivo BOOT.INI para poder seleccionar el sistema operativo a arrancar.
Si no
seleccionamos en este caso ninguna entrada, NTLDR cargará el sistema operativo
por defecto que esté especificado en el archivo BOOT.INI.
Por
defecto, siempre es la última instalación del último Windows que hayamos
instalado. Recordemos que esta selección sólo se muestra si hay más de una
línea de sistema operativo instalado en el archivo BOOT.INI.
Si el
archivo BOOT.INI no existe, NTLDR siempre intenta cargar el sistema operativo
de la primera particion activa del primer disco duro (típicamente, el C:)
–
Detección de Hardware.
NTDETECT.COM
y NTOSKRNL.EXE realizan la detección del hardware. NTDETEC.COM se ejecuta
inmediatamente después de haber seleccionado el sistema operativo a arrancar.
Si
seleccionamos un sistema operativo de núcleo W9X en vez de núcleo NT / W2000
/XP, NTLDR cargará y ejecutará BOOTSECT.DOS, el cual es una copia del sector de
arranque que existía en la particion del sistema cuando instalamos por primera
vez un sistema operativo de núcleo NT / W2000 / XP. Este sector corresponde a
una partición formateada previamente con MSDOS o bien con algún sistema W9X /
ME.
NTDETECT.COM
empieza a construir una lista del hardware actualmente instalado y devuelve
esta lista al programa NTLDR para una inclusión posterior en el registro bajo
la clave HKEY_LOCAL_MACHINEHARDWARE
NTDETECT.COM
detecta los siguientes componentes:
· Tipo
de adaptador del BUS
·
Puertos de comunicaciones
·
Coprocesador matemático
·
Disqueteras
·
Teclado
· Ratón
o dispositivo apuntador
·
Puerto paralelo
·
Adaptadores SCSI
·
Adaptadores de Vídeo.
–
Selección de la configuración.
Después
de que NTLDR comienza la carga de Windows y ha recuperado ya la información de
hardware, el cargador del sistema presenta la pantalla de Perfiles de Hardware
si en nuestra máquina está definido más de un perfil.
El primer
Perfil de hardware se muestra con caracteres de alta intensidad. En esta
pantalla, podemos seleccionar el perfil, o bien pulsar L para seleccionar la
Ultima configuración buena conocida.
Si sólo
existe un Perfil de Hardware, la pantalla anterior no se mostrará y Windows
continuará la carga usando la configuracion del perfil de hardware por defecto.
Carga
del Núcleo (Kernel):
Después
de la Selección de la Configuración el núcleo (kernel) de Windows
(NTOSKRNL.EXE) se carga e inicializa. Es en el momento en que la pantalla de
selección anterior se borra y aparecen una serie de rectángulos blancos en una
linea inferior de la pantalla que indican el proceso de carga de NTOSKRNL.
(este proceso es muy rápido, y en Windows XP puede que no llegue a verse debido
a que inmediatamente entra la pantalla gráfica del logo de carga de XP.
Durante
esta fase de carga, NTLDR realiza lo siguiente:
· Carga
NTOSKRNL.EXE pero no lo inicializa.
· Carga
la capa de abstracción del hardware (HAL.DLL – Hardware Abstraction Layer).
· Carga
la clave del registro: HKEY_LOCAL_MACHINESYSTEM desde
%systemroot%System32ConfigSystem
·
Selecciona un juego de control (control set) que va a utilizar para inicializar
la máquina. Dentro de este control set están los datos que se utilizan para arrancar,
como por ejemplo la lista de controladores de dispositivos y los servicios a
arrancar y cargar.
· Carga
los drivers de dispositivos que contienen un valor de 0x0 en la entrada Start
de definición del dispositivo en el registro. Normalmente son controladores de
hardware de bajo nivel. El valor de esta lista está específicado en:
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControl
ServiceGroupOrder
En ella
está el orden con el cual NTLDR va a cargar dichos controladores de
dispositivos.
Inicialización
del Núcleo (Kernel):
Cuando
la fase de carga del núcleo (Kernel) se ha completado, se inicializa el Kernel
y NTLDR pasa control al núcleo (NTOSKRNL.EXE). Es en este momento cuando el
sistema muestra la pantalla gráfica con la barra de proceso de carga. Cuatro
tareas van a ocurrir durante esta fase:
1)
Creación de la clave del registro de Hardware. El Kernel usa los datos
recogidos durante la detección de hardware para crear la clave del registro
HKEY_LOCAL_MACHINEHARDWARE la cual contiene información acerca de los
componentes del hardware y las interrupciones usadas por los dispositivos
específicos.
2) Se
crea el entorno del Clone Control Set. Se crea copiando el valor del registro
almacenado en HKEY_LOCAL_MACHINESYSTEMSelect. Estos datos nunca serán modificados
y deben entenderse como una copia idéntica de los datos de configuración de la
máquina y por tanto, no reflejará ningún cambio realizado durante la fase de
arranque.
3)
Carga e inicialización de los controladores de dispositivos. Después de crear
el Clone control set el kernel inicializa los drivers de bajo nivel que se han
cargado durante la fase de carga del núcleo. El núcleo busca la clave
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServices para localizar los
controladores de dispositivos con el valor 0x1 en la entrada Start. Al igual
que en la fase de carga del núcleo el valor de la entrada Group especifica el
orden en que serán cargados. Estos controladores se inicializan en el momento
en que son cargados.
Si
ocurre un error durante la carga e inicialización de uno de estos
controladores, realizará la acción que está especificada en la entrada
ErrorControl del controlador de dispositivo.
Los
valores posibles son:
0x0
(Ignorar)
La
secuencia de inicio ignora el error y continúa sin sacar ningún mensaje.
0x1
(Normal)
La
secuencia de inicio saca un mensaje, pero ignora el error y continúa la carga.
0x2
(Severo)
La
secuencia de inicio falla y continúa, pero usando el juego de control de la
Ultima configuración buena conocida. Se ignora el error y continúa.
0x3
(Crítico)
Igual
que la anterior, pero si en este caso el error vuelve a suceder, la Ultima
configuración buena conocida se detiene la secuencia de inicio con un mensaje
de error.
Los
valores de ErrorControl aparecen en el registro bajos las subclaves HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesNombre_del_servicio_o_dispositivoErrorControl
4)
Arranque de los Servicios. Después de que el Kernel cargue e inicialice los
controladores de dispositivos, el programa Session Manager (SMSS.EXE) arranca
estos subsistemas y servicios de Windows. SMSS ejecuta las instrucciones de las
claves: BootExecute, Memory Management, DOS Devices y las subclaves del
Subsytem.
–
BootExecute.
Ejecuta
los comandos de esta clave antes de arrancar ningún servicio.
–
Memory Management Key.
Crea la
información del fichero de paginación necesario para el Virtual Memory Manager.
DOS
Device Key.
Crea
los enlaces simbólicos (links) que direccionan ciertas clases de comandos al
componente correcto del sistema.
–
SybSystems key.
Arranca
el subsistema Win32, el cual controla toda la entras / salida (I/O) y los
accesos a la pantalla de video y posteriormente arranca el proceso de WinLogon.
LOGON:
El
proceso de Logon comienza al finalizar la fase de inicialización del Kernel. El
sistema automáticamente arranca el programa WINLOGON.EXE, el cual arranca el
Local Security Authority (LSASS.EXE) y nos muestra la pantalla de Logon. Se
puede arrancar en este momento aunque Windows no haya terminado de inicalizar
los controladores de dispositivos (drivers) de la red.
Posteriormente,
el controlador de servicios (Service Controller) ejecuta y realiza una búsqueda
final en la clave Services del registro, buscando los servicio con un valor 0x2
en la entrada. Estos servicios, incluyendo el servicio de Workstation y el
servicio Server, son marcados para cargarse automáticamente.
Los
servicios que son cargados durante esta fase están basados en los valores de la
clave DependenOnGroup o DependOnService de las entradas en
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServices.
http://blogs.unellez.edu.ve/acamacho1/2-el-computador/sistemas-operativos/arranque-del-sistema-operativo-windows/
Muy completo, faltan imágenes . . !!
ResponderBorrar