martes, 22 de diciembre de 2009

Boot Windows

Archivo de Arranque de Windows XP



Lista de Archivos de inicio.


Archivo Localización Fase en el boot
NTLDR C:\ (System Partition Root) preboot y boot
BOOT.INI C:\ Inicio
BOOTSECT.DOS C:\ Inicio (opcional)
NTDETECT.COM C:\ Inicio
NTBOOTDD.SYS C:\ Inicio (opcional)
NTOSKRNL.EXE systemroot\system32 Carga del Kernel (núcleo)
HAL.DLL systemroot\system32 Carga del Kernel (núcleo)
SYSTEM systemroot\system32 Inicialización del Kernel
dispositivos.sys systemroor\system32\drivers Inicialización del Kernel


El archivo BOOT.INI

Al instalar Windows XP, se modifica o se crea un archivo boot.ini en la partición activa (arrancable) del sistema.

El archivo boot.ini; contiene dos secciones [boot loader] y [operating systems].El programa NTLDR, usara la deficion y atributos a mostrar en pantalla.

Estructura

[boot loader]
timeout=30
default=multi(0)disk(0)rdisk(0)partition(4)\WINDOWS
[operating systems]
multi(0)disk(0)rdisk(0)partition(4)\WINDOWS="Microsoft Windows XP Professional" /noexecute=optin /fastdetect
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Home" /noexecute=optin /fastdetect


Nota: La sección [operating systems] se crea durante la instalación de un Windows. cuando sea necesario instalar varios sistemas operativos deber ser por edad del mas antiguo al mas reciente.




Caminos ARC (Advanced RISC Computing)

Durante la instalación se modifica o se crea el archive boot.ini usando los nombres o caminos ARC: Advanced RISC Computing (RISC: Reduced Instruction Set Computing)

Un ejemplo de camino ARC es: multi(0)disk(0)rdisk(1)partition(3)

Cada nombre tiene el siguiente significado:

  • multi(x) o scsi(x): El controlador de disco. SCSI solo se usa si es un disco que pertenece a una controladora SCSI y cuya BIOS no se ha cargado al encender el ordenador. Para todos los demás, inclusive los SCSI con BIOS cargada en memoria, se utiliza multi. "x" represente un número empezando por cero que indica el orden de carga del adaptador. Por ejemplo, si tuviésemos dos adaptadores SCSI en nuestra máquina, el primero en cargar e inicializarse llevaría un 0, el segundo llevaría un 1.
  • disk(y) El ID del dispositivo SCSI. Si es "multi", siempre llevará un 0.
  • rdisk(z) Un número que identifica el disco físico (empezando por 0, el cual corresponde al primer disco "físico" en nuestro sistema).
  • partition(t) Un número que identifica la partición dentro del disco "físico" anterior. La numeración de particiones comienza por 1. Se numeran consecutivamente todas las particiones primarias que existen en nuestro disco, y a continuación, se numeran consecutivamente las unidades lógicas dentro de una partición extendida si la tuviésemos.


Modificadores en el archivo BOOT.INI


  • /basevideo Arrancará nuestra maquina usando el adaptador estándar VGA. Es útil en caso de que nuestra maquina se niegue a arrancar después de instalar un nuevo driver de vídeo.

  • /fastdetect=[com x | como x,y,z] Desactiva la detección de ratón en puerto serie. Si no especificamos puerto "com", este modificador desactiva la detección de todos los puertos serie. Se incluye este modificador en todas las entradas del boot.ini por defecto.

  • /maxmen:n Especifica la cantidad de memoria que Windows va a usar. Debe usarse este modificador si sospechamos que un chip de memoria está dañado.

  • /noguiboot Arranca sin sacar la pantalla gráfica de inicio del sistema.

  • /sos Nos muestra por pantalla los nombres de los controladores de dispositivos que se van cargando. Debemos usar este modificador cuando falla el arranque para poder determinar que driver es el causante del error.


Modificaciones al archivo BOOT.INI

Podemos modificar directamente el tiempo de espera y el sistema operativo a editar manualmente el archivo con cualquier editor de texto. Estableciendo en Windows las opciones de ver todos los archivos ocultos y archivos del sistema. El archivo boot.ini siempre reside en el disco C:\ independientemente de la partición en la cual hayamos instalado Windows.

timeout=30
default=multi(0)disk(0)rdisk(0)partition(4)\WINDOWS




Secuencia de Pre-Inicio (Pre-Boot)

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 memoría 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 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, 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. 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 (EN 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_MACHINE\HARDWARE

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 "última 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_MACHINE\SYSTEM desde %systemroot%\System32\Config\System
· 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_MACHINE\SYSTEM\CurrentControlSet\Control\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:
  • 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_MACHINE\HARDWARE la cual contiene información acerca de los componentes del hardware y las interrupciones usadas por los dispositivos específicos.
  • Se crea el entorno del Clone Control Set. Se crea copiando el valor del registro almacenado en HKEY_LOCAL_MACHINE\SYSTEM\Select. 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.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_MACHINE\SYSTEM\CurrentControlSet\Services 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 el 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_MACHINE\SYSTEM\CurrentControlSet\Services\Nombre_del_servicio_o_dispositivo\ErrorControl
  • 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_MACHINE\SYSTEM\CurrentControlSet\Services.

El arranque de Windows no se considera finalizado y correcto hasta que el usuario se haya conectado. Después de este Logon correcto, el sistema el Clone Control Set a las claves de LastKnownGood.

0 comentarios:

Publicar un comentario