Vistas de página en total

jueves, 28 de junio de 2012

EL PROCESO DE CARGA DE WINDOWS XP


Desde que arrancamos un PC hasta que es mostrado el sistema operativo nuestra máquina hace una serie de procesos. En este artículo veremos desglosados esos procesos, desde que presionamos el botón de encendido hasta que nuestro sistema operativo es inicializado.
Antes de nada decir que la descripción que vamos a hacer tiene que ser necesariamente breve y que, aunque se podría explicar de forma unificada para otros sistema operativos, nos centraremos en Windows XP.
La BIOS ROM
Nada más pulsar el botón de encendido del PC se cargan las instrucciones contenidas en el POST (power-on self test o ‘autotest de encendido’) de la BIOS. El POST hace unas comprobaciones básicas y toma la configuración del CMOS (complementary metal-oxide semiconductor o semiconductor complementario de óxido metálico). Son las instrucciones del CMOS las que determinan, entre otras cosas, el orden de los dispositivos de arranque. Para más información sobre el CMOS, puede leerse esto:
Durante este proceso se verifica cual es el primer dispositivo de arranque, y si este es un disco duro Básico, le pasará el control al  MBR(master boot record o registro maestro de arranque). El MBR está contenido en el primer sector físico del disco duro y es como una especie de índice que contiene toda nuestra tabla de particiones. Este índice es creado cuando particionamos el disco duro y contiene un pequeño código ejecutable que damos en llamar Master Boot Code es decir Código Maestro de Arranque. El MBR es el encargado de llevar a cabo las siguientes operaciones.
  1. Busca en la tabla de particiones cual es la primera partición activa para transferirle el control
  2. Revisa cual es el sector de inicio de la partición que este configurada como activa
  3. Carga un copia del sector de inicio desde la partición activa en memoria y finalmente transfiere el control al código ejecutable del sector de inicio
Si durante este proceso no se pueden completar alguna de estas operaciones, nuestra máquina desplegará alguno de estos mensajes:
Invalid partition table.
Error loading operating system.
Missing operating system.
El sector Maestro de Arranque y el sector de inicio
Una vez terminado el trabajo del MBR este, como hemos visto, transfiere al control al Sector de Arranque o Boot Sector, de nuestra partición activa  en sistemas Windows, la primera partición activa es básica puesto que suele contener los archivos básicos de arranque de Windows y suele coincidir con la letra “C”. En terminología informática esta partición también es llamada volumen de sistema, que puede coincidir con el volumen de inicio, si la primera partición activa, es decir nuestro volumen de sistema, también alberga al sistema operativo, aunque es cada vez más habitual que el volumen de sistema y de inicio no coincidan.
En cualquier caso,  nuestro sector de arranque asume las siguientes operaciones:
  1. Las instrucciones de inicialización para CPU basada en x86
  2. La identificación original del fabricante de nuestro PC, en el caso de que nuestro sistema sea OEM.
  3. La BIOS Parameter Block, BPB
  4. la BIOS Parameter Block, Extendida.
  5. El código ejecutable que inicia nuestro sistema operativo.

Así pues, el siguiente paso, una vez leídas las instrucciones de inicialización para CPU  basadas en x86, sería cargar la BPB. La BPB contiene la estructura básica del volumen y las controladoras de disco utilizan este sector para leer y configurar los parámetros básicos de los volúmenes contenidos en nuestro disco. También es un proceso básico puesto que es el encargado de transferirle el control al código ejecutable, que es en sí, el que va a iniciar nuestro sistema operativo. Unos parámetros incorrectos en la BPB impedirán por tanto la carga del Sistema Operativo y explican porque no podemos iniciar cualquier Windows si lo cambiamos de máquina, ya que la BPB se basa en parámetros físicos más que en parámetros lógicos.
El archivo NTLDR
Ahora empiezan a intervenir los archivos propios del sistema operativo. En todos los sistemas con núcleo NT (por ejemplo WinXP o Windows 2000) el cargador se llama ntldr (de “nt loader”), y se encuentra en la partición activa o volumen de sistema (habitualmente C). El archivo ntldr es el encargado de leer el sistema de archivos tanto de una partición NTFS como de una FAT. Lo primero que hace el ntldr es cargar un serie de controladores básicos de dispositivos que van embebidos en este archivo, justo a continuación lee la información contenida en el archivo boot.ini que se encuentra oculto en el directorio raíz de nuestro volumen de sistema es decir en C, y que referencia que tipo de Sistema Operativo tiene que cargar.  Supongamos que tenemos un arranque dual de XP y Windows 98. Si en el menú de arranque elegimos en este momento Windows 98, el ntldr pasará el control al bootsect.dos.
Si elegimos XP o un Sistema Operativo basado en núcleo NT se le pasa el control al ntdetect.com que es el encargado de la detección del hardware instalado.
Nuestro archivo ntdetect.com¸  se encarga de cargar la información contenida en nuestro perfil de hardware y las tablas de la ACPI, y las envia para su inclusión a nuestro archivo de arranque ntldr, para ser agregadas en la clave del registro.
HKEY_LOCAL_MACHINE\HARDWARE
El Kernel utiliza datos internos que provee el propio ntldr para crear la clave mencionada, cuya información será renovada en cada arranque de nuestra máquina, en base al hardware que se detecte durante cada inicio de nuestra máquina
De vuelta al ntldr, este pasará el control al archivo ntoskrnl.exe, es decir, el núcleo del sistema operativo (el nombre del archivo proviene de “nt operating system kernel”), y al archivo HAL (hardware abstraction layer o capa de abstracción del hardware), y leerá la información contenida el fichero “system” que tenemos ubicado en la carpeta  \windows\system32\config,
Son el HAL y el kernel los encargados de poner en funcionamiento el software, mediante una serie de componentes llamada Windows executive. Estos componentes están almacenados en los “conjuntos de control” del registro (control sets). Concretamente  los podemos encontrar referenciados en la clave del registro.
HKEY_LOCAL_MACHINE\SYSTEM
Esta clave es utilizada para múltiples propósitos entre ellos determinar qué drivers deben ser cargados durante cada arranque de nuestro sistema, en base al hardware cargado. Tenéis información mucho más completa sobre la finalidad de esta clave en el artículo “Entendiendo el Registro de Windows”:

Carga de Drivers y servicios
Ahora prestemos atención a los drivers y a los servicios. Están contenidos, respectivamente, en las siguientes carpetas a las que puede accederse directamente desde Inicio > Ejecutar y escribir los siguientes:

Drivers -> %systemroot%\System32\Drivers
Servicios -> %systemroot%\System
 
Puesto que los drivers también son servicios, en este momento el núcleo lee la información de la clave

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services

Se arrancará primero los servicios que tengan el valor Start puesto a ‘0’ (los drivers de arranque) y luego los que tengan dicho valor puesto a ‘1’.
Ahora llega el proceso en el que interviene el Administrador de sesión (Session Manager, smss.exe). Éste crea variables de entorno, cambia a modo gráfico, y además de otras cosas, se encarga de arrancar el Administrador del logon (Logon Manager, winlogon.exe). El administrador de sesión lee tres claves:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SessionManager
en la que, por ejemplo, podría haber una referencia al “autochk.exe” (una versión del chkdsk), por si se necesita cargarse,
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SessionManager\Subsystem
con los distintos subsistemas,
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services
y acudiría a los servicios cuyo valor Start esté en “Auto-load”.
Si antes del logon quisiéramos que se nos cargarse alguna aplicación (no configurada como servicio, sino digamos que de forma “normal”) tendremos que colocarlas en alguna de estas dos claves del registro:
[1] HKEY_LOCAL_MACHINE\Sofware\Microsoft\Windows\CurrentVersion\RunServicesOnce
[2] HKEY_LOCAL_MACHINE\Sofware\Microsoft\Windows\CurrentVersion\RunServices
Estas dos claves se cargan de forma asíncrona. Por tanto, su contenido puede cargarse al mismo tiempo y no necesariamente en el orden especificado en las claves. Es más, aunque se cargan en el orden propuesto (primer [1]y luego [2]), se cargan también de forma asíncrona con el propio proceso de logon en sí, por lo que podría ser que continuasen cargándose después de introducir el nombre de usuario y contraseña.
Precisamente, como ya se ha indicado, la utilidad de estas dos claves es coloar aplicaciones en ellas para que se carguen antes del logon.

INICIANDO WINDOWS
 En este momento, es winlogon.exe quien toma el control. Inicia el Administrador de control de servicios (Service control manager) elLocal security authority (lsass.exe) y la Autentificación e Identificación Gráfica (Graphical Identification and Authentification, GINA) y pide al usuario (si así está configurado) un nombre y una contraseña. De la autentificación de ese usuario y contraseña se encarga el protocolo Kerberos V5 o bien NTLM. (Como comentario totalmente aparte, comentar que Kerberos es el nombre inglés del perro de dos cabezas Cancerbero que era encargado de custodiar las puertas del infierno en la mitología). Para más información sobre el protocolo Kerberos, puede leerse esto (en inglés)

NTLM proviene de NT Lan Manager, y se usa sobre todo en grupos de trabajo, Windows 95 y Windows 98. Para más información sobre NTLM puede leerse esto (en inglés)

Es en está fase cuando ciertas claves del registro son adaptadas si el arranque ha tenido éxito, entre ellas las claves Control sets que anteriormente mencionabamos, haciendo una nueva copia de la misma. Las políticas de grupo locales que tengamos aplicadas también toman efecto en este punto y comienzan a cargarse ciertas claves que inicializan determinados programas y servicios no cargados con anterioridad
Después de la autentificación
 Tras introducir el usuario y la contraseña, se cargan las claves:
[3] HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunOnce\Setup

[4] HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunOnce

Esta clave [4] se carga de forma síncrona aunque su contenido no tiene por qué cargarse en el orden especificado. Esto también significa que esta que esta clave no se carga completamente no se cargan las siguientes. Igualmente, esta clave [4] no se carga hasta que no se han cargado las anteriores claves [1], [2] y [3].
A continuación se carga la clave
[5] HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunOnceEx.

 A partir de aquí, y hasta el item [12] el orden de carga vuelve a ser asíncrono y, digámoslo así, todo se carga el mismo tiempo (más o menos) pudiéndose solapar unas cosas con otras. A continuación se carga lo siguiente:

[6] Sección Load del Win.ini

y luego
[7] Sección Run del Win.ini
 A continuación la clave
[8] HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run
que contiene los programas instalados en la máquina y la clave

[9] HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run

que contiene los programas instalados específicamente en el usuario logueado. También se carga la clave
[10] HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunOnce
Hasta ahora digamos que lo que se ha cargado ha sido el núcleo de Windows y el contenido del registro. Ahora se acude a las carpetas del menú inicio. Primero, las de todos los usuarios

[11]  Documents and Settings\All Users\Menú Inicio\Programas\Inicio

y luego los del usuario logueado

[12] Documents and Settings\[usuario]\Menú Inicio\Programas\Inicio

donde [usuario] es el nombre de la cuenta en la que se ha iniciado sesión. A continuación se carga la clave

[13] HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunOnce
 y finalmente las tareas programas que se tengan.
Vuelvemos a repetir que hasta [12] el proceso de carga se hace de forma asíncrona, por lo que podrían solaparse unas claves con otras y unos archivos con otros. Los elementos de los menú de inicio se cargan de forma alfanumérica. Por ejemplo, “a01.exe”, “a10.exe” y “b2p.exe” se cargan en ese orden. Si nos interesa alterar el orden de carga, tendríamos que renombrar los archivos.

Otras claves utilizadas durante la inicialización de Windows
Todas las que hemos relatado en el apartado anterior suelen ser las utilizadas comúnmente para inicializar programas, antes o después de la fase de autentificación, pero quizás sea conveniente anotar alguna ubicación más en el registro que tiene el mismo propósito: iniciar nuestros programas.
Una de las ubicaciones más esotéricas y menos conocidas para iniciar programas es la clave Load, ubicada en la rama
HKEY_CURRENT_USER\Software\Microsoft\WindowsNT\CurrentVersion\Windows\load.
En esta clave y en esta rama, podríamos especificar programas que se iniciarían sólo en la sesión de usuario que esté actualmente loguado. La clave análoga que afectaría a todos los usuarios de la máquina es denominada userinit, que podremos encontrar en la rama
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsNT\CurrentVersion\Winlogon\Userinit
Esta última clave, a diferencia de la clave Load, que anteriormente comentábamos, se encuentra presente en todos los sistemas y suele contener un único valor que apunta al ejecutable o proceso userinit.exe, que está encargado de inicializar los parámetros de inicialización de la Shell de Windows. Esta clave acepta valores separados por coma (CSV) por lo que es posible agregar más valores al ya comentado en esta clave.
Finalmente también podemos ejecutar diferentes procesos en la clave Explorer\Run
que podremos encontrar en las ramas,
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\Run HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Explorer\Run.
Detección de dispositivos Plug and Play,
La detección de este tipo de dispositivos que son detectados e instalados casi sin que el usuario interactue para nada con el sistema, son cargados asincrónicamente durante la fase de autentificación. Esta fase de detección se basa fundamentalmente, en el firmware de cada dispositivo hardware conectado y en las características internas que el S.O. posee para la detección de nuevos tipos de dispositivos. Windows XP está optimizado para la detección de dispositivos que cumplan con la normativa ACPI.


ARTICULO TOMADO DE:
http://www.fermu.com/es/articulos/windows/articulos-y-tutoriales/283-el-proceso-de-carga-de-windows-xp

No hay comentarios:

Publicar un comentario