You are on page 1of 51

Inicio y cierre

n este capítulo, vamos a describir los pasos necesarios para iniciar Windows y las opciones que pueden afectar el inicio del sistema. La

yo
comprensión de los detalles del proceso de arranque le ayudará a diagnosticar problemas que pueden surgir durante un inicio. A continuación

vamos a explicar el tipo de cosas que pueden salir mal durante el proceso de arranque y la forma de resolverlos. Por último, vamos a explicar lo que

ocurre en un apagado ordenado del sistema.

Proceso de arranque

Al describir el proceso de arranque de Windows, vamos a empezar con la instalación de Windows y procedemos a través de la ejecución de los

archivos de soporte de arranque. Los controladores de dispositivos son una parte crucial del proceso de arranque, por lo que vamos a explicar la

forma en que ellos controlan el punto en el proceso de arranque a la que cargar e inicializar. A continuación vamos a describir cómo inicializar los

subsistemas ejecutivos y cómo el núcleo pone en marcha la parte de modo de usuario de Windows al iniciar el proceso del Administrador de sesión

(Smss.exe), que comienza las dos primeras sesiones (sesión 0 y 1 sesión). En el camino, vamos a destacar los puntos en los que varios mensajes en

pantalla aparecen para ayudar a correlacionar el proceso interno, con lo que se ve cuando mira de arranque de Windows.

Las primeras fases del proceso de arranque difieren significativamente en sistemas con un BIOS (Basic Input Output System) frente a

sistemas con una EFI (Extensible Firmware Interface). EFI es un nuevo estándar que elimina gran parte del código de 16 bits legado que los

sistemas BIOS usar y permite la carga de programas de prearranque y conductores para apoyar la fase de carga del sistema operativo. Las

siguientes secciones describen las partes del proceso de arranque específico para los sistemas basados ​en BIOS y son seguidos con una

sección que describe las porciones de EFI-específicas del proceso de arranque.

Para apoyar estas diferentes implementaciones de firmware (así como EFI 2.0, que se conoce como EFI unificada o UEFI), Windows

proporciona una arquitectura de arranque que abstrae muchas de las diferencias de distancia de los usuarios y desarrolladores con el fin de

proporcionar un entorno coherente y la experiencia sin tener en cuenta del tipo de firmware utilizado en el sistema instalado.

prearranque BIOS
El proceso de arranque de Windows no se inicia cuando se enciende el ordenador o pulse el botón de reinicio. Se inicia al instalar

Windows en su ordenador. En algún momento durante la ejecución del programa de instalación de Windows, el disco duro principal del

sistema está preparado con el código que participa en el proceso de arranque. Antes de entrar en lo que hace este código, vamos a ver

cómo y dónde lugares de Windows

499
el código en un disco. Desde los primeros días de MS-DOS, un estándar ha existido en sistemas x86 para la forma en discos duros físicos

se dividen en volúmenes.

sistemas operativos de Microsoft dividieron discos duros en áreas discretas conocidas como particiones y el uso de sistemas de archivos (como

FAT y NTFS) para formatear cada partición en un volumen. Un disco duro puede contener hasta cuatro particiones primarias. Debido a que este

esquema de reparto limitaría a un disco de cuatro volúmenes, un tipo de partición especial llamado partición extendida, destina más hasta cuatro

particiones adicionales dentro de cada partición extendida. Las particiones extendidas pueden contener particiones extendidas, que pueden contener

particiones extendidas, y así sucesivamente, por lo que el número de volúmenes de un sistema operativo puede colocar en un disco con eficacia

infinita. La figura 13-1 muestra un ejemplo de un diseño del disco duro, y la Tabla 13-1 resume los archivos implicados en el proceso de arranque del

BIOS. (Se puede obtener más información acerca de Windows partición en el capítulo 9, “Administración de almacenamiento.”)

TABLA 13-1 Componentes de proceso de inicio del BIOS

Componente La ejecución del procesador Responsabilidades Ubicación

Master Boot Record modo real de 16 bits Lee y carga el registro de arranque de volumen (VBR) Por dispositivo de almacenamiento

(MBR)

sector de arranque (también modo real de 16 bits Comprende el sistema de archivos en la partición y localiza Per partición
llamado volumen de registro de Bootmgr por su nombre, cargarla en la memoria activa (de
arranque) arranque)

bootmgr modo real de 16 bits y de 32 bits Se lee en la base de datos de configuración de arranque (BCD), por sistema
sin paginación presenta el menú de arranque, y permite la ejecución de
programas de prearranque, tales como la aplicación de pruebas
de memoria (Memtest.exe). Si se inicia una instalación de 64 bits,
cambia a modo de 64bit mucho antes de cargar Winload.

winload.exe modo protegido de 32 bits con Cargas Ntoskrnl.exe y sus dependencias (bootvid.dll en instalación para
paginación, 64-bit de modo protegido sistemas de 32 bits, Hal.dll, kdcom.dll, CI.DLL, Clfs.sys, Windows
si arrancar una instalación de Win64 Pshed.dll) y controladores de dispositivo bootstart.

Winresume.exe modo protegido de 32 bits, 64 bits Si después de reanudar un estado de hibernación, se reanuda desde el instalación para
modo protegido si la reanudación archivo de hibernación (Hiberfil.sys) en lugar de la típica carga de Windows
de una instalación Win64 Windows.

Memtest.exe modo protegido de 32 bits Si seleccionada del gestor de arranque, se pone en marcha y por sistema
proporciona una interfaz gráfica para la exploración de la
memoria y la detección de la RAM dañada.

ntoskrnl.exe El modo protegido con Inicializa subsistemas ejecutivos y los controladores de dispositivo instalación para
paginación de arranque y el sistema de arranque, se prepara el sistema para Windows
ejecutar aplicaciones nativas, y se ejecuta Smss.exe.

hal.dll El modo protegido con DLL en modo de núcleo que se conecta Ntoskrnl y los instalación para
paginación controladores de hardware. También actúa como motor de la Windows
propia placa madre, el apoyo a los componentes que no están
soldadas tratar de otra manera por otro conductor.

CAPÍTULO 13 Inicio y cierre 500


Componente La ejecución del procesador Responsabilidades Ubicación

smss.exe Aplicación nativa instancia inicial comienza una copia de sí mismo para inicializar instalación para
cada sesión. La instancia de sesión 0 carga el controlador del Windows
subsistema de Windows (Win32k.sys) y se inicia el proceso de
Windows subsistema (CSRSS.exe) y el proceso de inicialización
de Windows (Wininit.exe). Todos los demás casos por sesión
iniciar un proceso de Csrss y Winlogon.

wininit.exe aplicación de windows Inicia el administrador de control de servicios (SCM), el instalación para
proceso de autoridad de seguridad local (LSASS), y el Windows
gerente de sesión local (LSM). Inicializa el resto del registro y
realiza tareas de inicialización modo de usuario.

winlogon.exe aplicación de windows Las coordenadas de inicio de sesión y la seguridad del usuario, lanza instalación para
LogonUI. Windows

logonui.exe aplicación de windows Presenta cuadro de diálogo de inicio de sesión interactivo. instalación para
Windows

services.exe aplicación de windows Cargas e inicializa los controladores de dispositivos de inicio automático y instalación para
servicios de Windows. Windows

partición 1 partición 2 Partición 3 partición 4


(Extended)

MBR Sector de arranque registro de arranque de partición extendida

FIGURA 13-1 diseño del disco duro de la muestra

Los discos físicos se tratan en unidades conocidas como sectores. Un sector del disco duro en un PC BIOS es típicamente 512 bytes (pero se

mueve a 4.096 bytes, véase el capítulo 9 para más información). Utilidades que preparan los discos duros para la definición de volúmenes, como el

programa de instalación de Windows, escribir un sector de datos llamado un registro de inicio maestro (MBR) para el primer sector en un disco

duro. (MBR partición se describe en el capítulo 9.) El MBR incluye una cantidad fija de espacio que contiene instrucciones ejecutables (llamado código

de arranque) y una mesa (llamado tabla de particiones) con cuatro entradas que definen las ubicaciones de la primaria

CAPÍTULO 13 Inicio y cierre 501


particiones en el disco. Cuando un basados ​en BIOS inicia el ordenador, el primer código que se ejecuta se llama el BIOS, que está codificada

en la memoria flash de la computadora. El BIOS selecciona el dispositivo de arranque, lee MBR de ese dispositivo en la memoria, y transfiere

el control al código en el MBR.

El SAM escritos por herramientas de partición de Microsoft, como la integrada en el programa de instalación de Windows y el complemento

Administración de discos complemento, pasar por un proceso similar de la lectura y la transferencia del control. En primer lugar, el código de un MBR

explora la tabla de particiones primaria hasta que se localiza una partición que contiene una bandera (Active) que las señales de la partición es de

arranque. Cuando el MBR encuentra al menos uno de esos bandera, lee el primer sector de la partición marcado en la memoria y transfiere el control al

código dentro de la partición. Este tipo de partición se llama una partición del sistema, y el primer sector de una partición de este tipo se llama una sector de

arranque o registro de arranque de volumen ( VBR). El volumen definido para esta partición se denomina volumen del sistema.

Los sistemas operativos generalmente escriben los sectores de arranque en el disco sin la participación de un usuario. Por ejemplo, cuando la

instalación de Windows escribe el MBR en un disco duro, que también escribe el código de arranque del sistema de archivos (parte del sector de arranque)

a una partición de arranque de 100 MB del disco, marcado como ocultos para evitar la modificación accidental después de la operación sistema ha

cargado. Este es el volumen del sistema descrito anteriormente.

Antes de grabar en el sector de arranque de una partición, instalación de Windows asegura que la partición de arranque (el partición de arranque es la

partición en la que está instalado Windows, que por lo general no es la misma que la partición del sistema, donde se encuentran los archivos de

arranque) está formateada con NTFS, el sistema de archivos sólo se admite que Windows puede arrancar desde cuando se instala en un disco fijo, o

formatea la partición de arranque (y cualquier otra partición) con NTFS. Tenga en cuenta que el formato de la partición del sistema puede ser cualquier

formato que Windows es compatible (como FAT32). Si particiones ya están formateadas apropiadamente, puede indicar a la instalación para omitir este

paso. Después, se formatea la partición del sistema, instalación copia el programa gestor de arranque (Bootmgr) que Windows utiliza para la partición

del sistema (el volumen del sistema).

Otra de las funciones de configuración es para preparar la base de datos de configuración de arranque (BCD), que en los sistemas BIOS se almacena en

la carpeta \ Boot archivo \ BCD en el directorio raíz del volumen del sistema. Este archivo contiene opciones para iniciar la versión de Windows que instala el

programa de instalación y cualquier preexistente instalaciones de Windows. Si el BCD ya existe, el programa de instalación se limita a añadir nuevas

entradas correspondientes a la nueva instalación. Para obtener más información sobre el BCD, véase el capítulo 3, “Mecanismos del sistema”, en la parte 1.

El sector de arranque del BIOS y Bootmgr


Configuración debe conocer el formato de la partición antes de escribir un sector de arranque, porque el contenido del sector de arranque varían

dependiendo del formato. Para una partición que está en formato NTFS, Windows escribe código NTFScapable. El papel del código del sector de inicio es

dar información de Windows acerca de la estructura y formato de un volumen y para leer en el archivo Bootmgr desde el directorio raíz del volumen. Por

lo tanto, el código del sector de arranque contiene suficiente de sólo lectura de código de sistema de archivos para realizar esta tarea. Después de que el

sector de arranque carga de código BootMgr en la memoria, se transfiere el control al punto de entrada de Bootmgr. Si el código del sector de inicio no

puede encontrar Bootmgr en el directorio raíz del volumen, se muestra el mensaje de error “autoarranque es que falta”.

Bootmgr es en realidad una concatenación de un archivo .com (Startup.com) y un archivo .exe (Bootmgr.exe), por lo que comienza su existencia

mientras que un sistema se ejecuta en un modo de funcionamiento denominado X 86 de modo real, asociado

CAPÍTULO 13 Inicio y cierre 502


con archivos .com. En modo real, no hay traducción de virtual a física de direcciones de memoria se produce, lo que significa que los programas

que utilizan las direcciones de memoria a interpretar como direcciones físicas y que sólo los primeros 1 MB de memoria física del equipo es

accesible. Los programas simples de MS-DOS se ejecutan en un entorno de modo real. Sin embargo, la primera acción Bootmgr toma es para

cambiar el sistema de modo protegido. Aún no hay traducción de virtual a físico se produce en este punto en el proceso de arranque, pero un total de

32 bits de memoria se hace accesible. Después de que el sistema se encuentra en modo protegido, Bootmgr puede acceder a toda la memoria física.

Después de la creación de tablas de páginas suficientes para hacer memoria por debajo de 16 MB accesible con paginación activada, permite

Bootmgr paginación. El modo protegido con paginación habilitado es el modo en que Windows se ejecuta en el funcionamiento normal.

Después Bootmgr habilita el modo protegido, que está en pleno funcionamiento. Sin embargo, todavía se basa en las funciones suministradas por el

BIOS a un sistema basado en IDE acceso y discos de arranque, así como la pantalla. BIOSinterfacing funciones de BootMgr cambiar brevemente el

procesador de nuevo al modo real, de modo que los servicios prestados por el BIOS se pueden ejecutar. Bootmgr siguiente lee el archivo BCD desde el

directorio \ Boot utilizando una función de código de sistema de archivos. Al igual que el código del sector de arranque, Bootmgr contiene una biblioteca

ligera sistema de archivos NTFS (Bootmgr también es compatible con otros sistemas de archivos, como la grasa, el Torito CDFS, UDF y, así como WIM y

archivos VHD); a diferencia de código del sector de arranque, código de sistema de archivos del Bootmgr también puede leer los subdirectorios.

Bootmgr next clears the screen. If Windows enabled the BCD setting to inform Bootmgr of a hibernation resume, this
shortcuts the boot process by launching Winresume.exe, which will read the contents of the hibernation file into memory and
transfer control to code in the kernel that resumes a hibernated system. That code is responsible for restarting drivers that
were active when the system was shut down. Hiberfil.sys is only valid if the last computer shutdown was hibernation, since
the hibernation file is invalidated after a resume, to avoid multiple resumes from the same point. (See the section “The Power
Manager” in Chapter 8, “I/O System,” for information on hibernation.)

If there is more than one boot-selection entry in the BCD, Bootmgr presents the user with the boot-selection menu (if
there is only one entry, Bootmgr bypasses the menu and proceeds to launch Winload.exe). Selection entries in the BCD
direct Bootmgr to the partition on which the Windows system directory (typically \Windows) of the selected installation
resides. If Windows was upgraded from an older version, this partition might be the same as the system partition, or, on a
clean install, it will always be the 100-MB hidden partition described earlier.

Entries in the BCD can include optional arguments that Bootmgr, Winload, and other components involved in the boot
process interpret. Table 13-2 contains a list of these options and their effects for Bootmgr, Table 13-3 shows a list of BCD
options for boot applications, and Table 13-4 shows BCD options for the Windows boot loader.

The Bcdedit.exe tool provides a convenient interface for setting a number of the switches. Some options that are included
in the BCD are stored as command-line switches (“/DEBUG”, for example) to

CAPÍTULO 13 Inicio y cierre 503


the registry value HKLM\SYSTEM\CurrentControlSet\Control\SystemStartOptions; otherwise, they are stored only in the
BCD binary format in the BCD hive.

TABLE 13-2 BCD Options for the Windows Boot Manager (Bootmgr)

BCD Element Values Meaning

bcdfilepath Path Points to the Boot Configuration Database (usually \Boot\BCD) file on the disk.

displaybootmenu Boolean Determines whether the Boot Manager shows the boot menu or picks the default entry automatically.

keyringaddress Physical Specifies the physical address where the BitLocker key ring is located.
address

noerrordisplay Boolean Silences the output of errors encountered by the Boot Manager.

Resume Boolean Specifies whether or not resuming from hibernation should be attempted. This option is automatically
set when Windows hibernates.

Timeout Seconds Number of seconds that the Boot Manager should wait before choosing the default entry.

resumeobject GUID Identifier for which boot application should be used to resume the system after hibernation.

displayorder List Definition of the Boot Manager’s display order list.

toolsdisplayorder List Definition of the Boot Manager’s tool display order list.

bootsequence List Definition of the one-time boot sequence.

Default GUID The default boot entry to launch.

customactions List Definition of custom actions to take when a specific keyboard sequence has been entered.

bcddevice GUID Device ID of where the BCD store is located.

TABLE 13-3 BCD Options for Boot Applications

BCD Element Values Meaning

avoidlowmemory Integer Forces physical addresses below the specified value to be avoided by the
boot loader as much as possible. Sometimes required on legacy devices
(such as ISA) where only memory below 16 MB is usable or visible.

badmemoryaccess Boolean Forces usage of memory pages in the Bad Page List (see Chapter 10, “Memory
Management,” for more information on the page lists).

badmemorylist Array of page frame Specifies a list of physical pages on the system that are known to be bad
numbers (PFNs) because of faulty RAM.

baudrate Baud rate in bps Specifies an override for the default baud rate (19200) at which a remote kernel
debugger host will connect through a serial port.

bootdebug Boolean Enables remote boot debugging for the boot loader. With this option enabled,
you can use Kd.exe or Windbg.exe to connect to the boot loader.

CHAPTER 13 Startup and Shutdown 504


BCD Element Values Meaning

bootems Boolean Used to cause Windows to enable Emergency Management Services (EMS)
for boot applications, which reports boot information and accepts system
management commands through a serial port.

busparams String If a physical PCI debugging device is used to provide FireWire or serial
debugging, specifies the PCI bus, function, and device number for the device.

channel Channel between 0 and 62 Used in conjunction with {debugtype, 1394} to specify the IEEE 1394
channel through which kernel debugging communications will flow.

configaccesspolicy Default, Configures whether the system uses memory mapped I/O to access the PCI
DisallowMmConfig manufacturer’s configuration space or falls back to using the HAL’s I/O port
access routines. Can sometimes be helpful in solving platform device
problems.

debugaddress Hardware address Specifies the hardware address of the serial (COM) port used for debugging.

debugport COM port number Specifies an override for the default serial port (usually COM2 on systems
with at least two serial ports) to which a remote kernel debugger host is
connected.

debugstart Active, AutoEnable, Specifies settings for the debugger when kernel debugging is enabled.
Disable AutoEnable enables the debugger when a breakpoint or kernel exception,
including kernel crashes, occurs.

debugtype Serial, 1394, USB Specifies whether kernel debugging will be communicated through a
serial, FireWire (IEEE 1394), or USB 2.0 port. (The default is serial.)

emsbaudrate Baud rate in bps Specifies the baud rate to use for EMS.

emsport COM port number Specifies the serial (COM) port to use for EMS.

extendedinput Boolean Enables boot applications to leverage BIOS support for extended
console input.

firstmegabytepolicy UseNone, UseAll, Specifies how the low 1 MB of physical memory is consumed by the HAL to
UsePrivate mitigate corruptions by the BIOS during power transitions.

fontpath String Specifies the path of the OEM font that should be used by the boot application.

graphicsmodedisabled Boolean Disables graphics mode for boot applications.

graphicsresolution Resolution Sets the graphics resolution for boot applications.

initialconsoleinput Boolean Specifies an initial character that the system inserts into the PC/ AT keyboard
input buffer.

integrityservices Default, Disable, Enables or disables code integrity services, which are used by Kernel Mode
Enable Code Signing. Default is Enabled.

locale Localization string Sets the locale for the boot application (such as EN-US).

noumex Boolean Disables user-mode exceptions when kernel debugging is enabled. If you
experience system hangs (freezes) when booting in debugging mode, try
enabling this option.

novesa Boolean Disables the usage of VESA display modes.

CHAPTER 13 Startup and Shutdown 505


BCD Element Values Meaning

recoveryenabled Boolean Enables the recovery sequence, if any. Used by fresh installations of
Windows to present the Windows PE-based Startup And Recovery
interface.

recoverysequence List Defines the recovery sequence (described above).

relocatephysical Physical address Relocates an automatically selected NUMA node’s physical memory to the
specified physical address.

targetname String Defines the target name for the USB debugger when used with USB2
debugging {debugtype, usb}.

testsigning Boolean Enables test-signing mode, which allows driver developers to load locally
signed 64-bit drivers. This option results in a watermarked desktop.

traditionalksegmappings Boolean Determines whether the kernel will honor the traditional KSEG0 mapping that
was originally required for MIPS support. With KSEG0 mappings, the bottom 24
bits of the kernel’s initial virtual address space will map to the same physical
address (that is, 0x80800000 virtual is 0x800000 in RAM). Disabling this
requirement allows more low memory to be available, which can help with some
hardware.

truncatememory Address in bytes Disregards physical memory above the specified physical address.

TABLE 13-4 BCD Options for the Windows Boot Loader (Winload)

BCD Element Values Meaning

advancedoptions Boolean If false, executes the default behavior of launching the auto-recovery
command boot entry when the boot fails; otherwise, displays the boot error
and offers the user the advanced boot option menu associated with the boot
entry. This is equivalent to pressing F8.

bootlog Boole Hace que Windows para escribir un registro de la bota en el archivo%
SystemRoot% \ Ntbtlog.txt.

bootstatuspolicy DisplayAllFailures, Anula el comportamiento predeterminado del sistema de ofrecer al usuario un menú de
IgnoreAllFailures, arranque de solución de problemas si el sistema no se ha completado el arranque o la parada
IgnoreShutdownFailures, anterior.
IgnoreBootFailures

bootux Discapacitados, Basic, Standard Define la experiencia del usuario de gráficos de arranque que el usuario
ver. Personas con discapacidad significa que se verán sin gráficos durante el arranque (sólo
una pantalla en negro), mientras básico sólo mostrará una barra de progreso durante la
carga. Estándar muestra la habitual animación logotipo de Windows durante el arranque.

clustermodeaddressing Número de procesadores Define el número máximo de procesadores para incluir en una
Avanzada controlador de interrupción programable (APIC) de clúster individual.

ConfigFlags banderas Especifica banderas de configuración específicos del procesador.

dbgtransport Transporte nombre de la imagen Anulaciones utilizando uno de los depuración del núcleo por defecto
transportes (kdcom.dll, Kd1394, Kdusb.dll) y en su lugar utiliza el archivo
dado, permitiendo la depuración especializada transporta a utilizar que no se
suelen compatible con Windows.

depurar Boole Habilita la depuración de modo de núcleo.

CHAPTER 13 Startup and Shutdown 506


Elemento BCD Valores Sentido

detecthal Boole Permite la detección dinámica de la HAL.

driverloadfailurepolicy Fatal, UseErrorControl Describe el comportamiento del cargador para usar cuando el controlador de arranque no
pudo cargar. Fatal impedirá el arranque, mientras que UseErrorControl hace que el
sistema de honrar el comportamiento de error por defecto de conducir, especificado en su
clave de servicio.

ems Boole Da instrucciones al kernel para utilizar EMS también. (Si solo bootems se utiliza, sólo el
cargador de arranque utilizará EMS.)

evstore Cuerda Almacena la ubicación de una bota precargados colmena.

exportascd Boole Si se establece esta opción, el kernel tratará el archivo de disco de memoria especificada como
una imagen ISO y no un archivo del medio de instalación de Windows (WIM) o la

implementación del sistema de imágenes (SDI).

groupaware Boole Obliga al sistema a utilizar grupos distintos de cero cuando la asociación de la
semilla grupo para nuevos procesos. Sólo se utiliza en Windows de 64 bits.

tamaño del grupo Entero Fuerza el número máximo de procesadores lógicos que pueden ser parte de un
grupo (máximo de 64). Se puede utilizar para obligar a los grupos que se creen en
un sistema que normalmente no les obligaría a existir. Debe ser una potencia de 2,
y se utiliza sólo en Windows de 64 bits.

hal HAL nombre de la imagen Sobre escribe el nombre de archivo por defecto la imagen HAL (hal.dll) para. Esta
opción puede ser útil cuando se arranca una combinación de un HAL comprobado y
verificado kernel (requiere especificar la
núcleo elemento también).

halbreakpoint Boole Hace que el HAL que parar en un punto de interrupción temprana en HAL inicialización.
Lo primero que el núcleo de Windows hace cuando se inicializa es inicializar el HAL, por
lo que este punto de ruptura es el más temprano posible (a menos que se utiliza la
depuración de arranque). Si se utiliza el interruptor sin el modificador / debug, el sistema
provocará una pantalla azul con un código de detención 0x00000078 (EXCEPCIÓN
PHASE0_).

hypervisorbaudrate Velocidad de transmisión en bps Si se utiliza la depuración hipervisor serie, especifica la velocidad de transmisión a utilizar.

hypervisorchannel número de canal de 0 a 62 Si se utiliza FireWire (IEEE 1394) de depuración hipervisor, especifica el número de
canales a utilizar.

hypervisordebug Boole Permite depurar el hipervisor.

hypervisordebugport número de puerto COM Si se utiliza la depuración hipervisor serie, especifica el puerto COM a utilizar.

hypervisordebugtype Serial, 1394 Specifies which hardware port to use for hypervisor debugging.

hypervisordisableslat Boolean Forces the hypervisor to ignore the presence of the Second Layer Address
Translation (SLAT) feature if supported by the processor.

hypervisorlaunchtype Off, Auto Enables loading of the hypervisor on a Hyper-V system, or forces it to be
disabled.

hypervisorpath Hypervisor binary image name Specifies the path of the hypervisor binary.

hypervisoruselargevtlb Boolean Enables the hypervisor to use a larger amount of virtual TLB entries.

CAPÍTULO 13 Inicio y cierre 507


BCD Element Values Meaning

increaseuserva Size in MB Aumenta el tamaño del espacio de direcciones de proceso de usuario de 2 GB para el
tamaño especificado, hasta 3 GB (y por lo tanto reduce el tamaño del espacio del sistema).
Dando aplicaciones virtuales de memoria intensivas tales como servidores de bases de un
mayor espacio de direcciones puede mejorar su rendimiento. (Consulte la sección
“Address Space Layout” en el capítulo 9 para obtener más información.)

núcleo Nombre de la imagen del kernel Sobre escribe el nombre de archivo por defecto la imagen del núcleo (Ntoskrnl.exe)
para. Esta opción puede ser útil cuando se arranca una combinación de un HAL
comprobado y verificado kernel (requiere especificar la hal elemento a ser utilizado
también).

LastKnownGood Boole Botas de la última configuración buena conocida, en lugar del conjunto de controles
actual.

loadoptions Parámetros extra de línea de Esta opción se utiliza para agregar otros parámetros de línea de comandos que no
comandos están definidos por elementos BCD. Estos parámetros podrían ser usados ​para
configurar o definir el funcionamiento de otros componentes en el sistema que podría
no ser capaz de utilizar el BCD (como componentes heredados).

MAXGROUP Boole Maximiza el número de grupos de procesadores que se crean durante la configuración de
la topología de procesador. Véase el Capítulo 3 en la parte 1 para obtener más
información acerca de la selección de grupo y su relación con la NUMA.

maxproc Boole Fuerza el número máximo de procesadores compatibles de Windows que


informará a los controladores y aplicaciones para dar cabida a la llegada de CPU
adicionales a través del soporte del procesador dinámico.

msi De manera predeterminada, ForceDisable Permite deshabilitar el apoyo de interrupciones señalizadas por mensajes.

nocrashautoreboot Boole Desactiva el reinicio automático después de un fallo del sistema (pantalla azul).

nointegritychecks Boole Deshabilita las comprobaciones de integridad realizados por Windows al cargar los
conductores. eliminado automáticamente en el siguiente reinicio.

nolowmem Boole Requiere que PAE estar activado y que el sistema de tener más de 4 GB de memoria física.
Si se cumplen estas condiciones, la versión compatible con PAE del núcleo de Windows,
Ntkrnlpa.exe, no utilizará los primeros 4 GB de memoria física. En su lugar, se carga todas
las aplicaciones y controladores de dispositivo y asignar todos los grupos de memoria
desde arriba de ese límite. Este interruptor es útil sólo para probar la compatibilidad de
controladores de dispositivo con los sistemas de memoria de gran tamaño.

numproc Número de procesadores Especifica el número de CPU que se puede utilizar en una
sistema multiprocesador. Ejemplo: / NUMPROC = 2 en un sistema de cuatro vías
será impedir que Windows usando dos de los cuatro procesadores.

nx OptIn, OptOut, AlwaysOff, This option is available only on 32-bit versions of Windows when running
AlwaysOn on processors that support no-execute memory and only when PAE
(explained further in the pae
entry) is also enabled. It enables no-execute protection. Noexecute
protection is always enabled on 64-bit versions of Windows on x64
processors. See Chapter 9 for a description of this behavior.

onecpu Boolean Causes Windows to use only one CPU on a multiprocessor system.

CHAPTER 13 Startup and Shutdown 508


BCD Element Values Meaning

optionsedit Boolean Enables the options editor in the Boot Manager. With this option, Boot
Manager allows the user to interactively set ondemand command-line
options and switches for the current boot. This is equivalent to pressing F10.

osdevice GUID Specifies the device on which the operating system is installed.

pae Default, ForceEnable, Default allows the boot loader to determine whether the system supports
ForceDisable PAE and loads the PAE kernel. ForceEnable forces this behavior, while
ForceDisable forces the loader to load the non–PAE version of the Windows
kernel, even if the system is detected as supporting x86 PAEs and has more
than 4 GB of physical memory.

pciexpress Default, ForceDisable Can be used to disable support for PCI Express buses and devices.

perfmem Size in MB Size of the buffer to allocate for performance data logging. This option acts
similarly to the removememory element, since it prevents Windows from
seeing the size specified as available memory.

quietboot Boolean Indica a Windows no para inicializar el controlador de vídeo VGA responsable de
presentar los gráficos de mapas de bits durante el proceso de arranque. El conductor se
utiliza para mostrar información de progreso de arranque, por lo que su desactivación
deshabilitará la capacidad de Windows para mostrar esta información.

ramdiskimagelength Longitud en bytes Tamaño del disco de memoria especificada.

ramdiskimageoffset Desplazamiento en bytes Si el disco de memoria contiene otros datos (como una cabecera) antes de que el sistema de

archivos virtual, da instrucciones al cargador de arranque por dónde empezar a leer el archivo de

disco de memoria de.

ramdisksdipath Nombre del archivo de imagen Especifica el nombre del disco RAM para cargar SDI.

ramdisktftpblocksize Tamaño de bloque Si la carga de un disco RAM WIM desde un servidor de red Trivial FTP (TFTP), especifica
el tamaño de bloque de usar.

ramdisktftpclientport Número de puerto Si se carga un disco RAM WIM desde un servidor TFTP de red, especifica el
puerto.

ramdisktftpwindowsize Tamaño de ventana Si se carga un disco RAM WIM desde un servidor TFTP de red, especifica el tamaño
de la ventana de su uso.

removememory Tamaño en bytes Especifica una cantidad de memoria de Windows no va a usar.

restrictapiccluster número de conglomerado Define el mayor número de clúster APIC para ser utilizado por el sistema.

resumeobject objeto GUID Describe que la aplicación a utilizar para la reanudación de la


hibernación, típicamente Winresume.exe.

arranque seguro Minimal, Red, Especifica opciones para un arranque en modo seguro. corresponde
DSRepair mínimos en modo seguro sin una red, red de modo seguro con funciones de
red, y DSRepair a modo seguro con dicho modo. (El modo seguro se
describe más adelante en este capítulo).

safebootalternateshell Boole Indica a Windows para usar el programa especificado por el HKLM \ SYSTEM \
CurrentControlSet \ Valor de control \ SafeBoot \ AlternateShell como la consola
gráfica en lugar de la predeterminada, que es el Explorador de Windows. Esta opción
se denomina modo seguro con símbolo del sistema en el menú de arranque
alternativo.

CHAPTER 13 Startup and Shutdown 509


Elemento BCD Valores Sentido

llamada de socorro Boole Causas de Windows a la lista los controladores de dispositivos marcados para cargar en el
arranque y después para mostrar el número de versión del sistema (incluyendo el número de
compilación), la cantidad de memoria física, y el número de procesadores.

stampdisks Boole Especifica que Winload escribirá una firma de disco MBR en un disco RAW
durante el arranque de Windows PE (Entorno de preinstalación). Esto puede ser
necesario en los entornos de despliegue con el fin de crear una asignación de
operar discos duros enumerados por el sistema para discos duros de
BIOS-enumerado saber qué disco debe ser el disco del sistema.

systemroot Cuerda Especifica la ruta, con respecto a osdevice, en el que está instalado
el sistema operativo.

TargetName Nombre Depuración de USB 2.0, asigna un nombre a la máquina que se está
depurando.

tpmbootentropy De manera predeterminada, Obliga a una política específica TPM arranque entropía de ser seleccionados por el
ForceDisable, ForceEnable cargador de arranque y se transmite al núcleo. TPM Boot Entropy, cuando se utiliza,
semillas de generador de números aleatorios del núcleo (RNG) con datos obtenidos
de la TPM (si está presente).

usefirmwarepcisettings Boole Detiene Windows desde la asignación dinámica de recursos IO / IRQ a los dispositivos
PCI y deja los dispositivos configurados por el BIOS. Véase el artículo 148501 de
Microsoft Knowledge Base para obtener más información.

uselegacyapicmode Boole el uso de las fuerzas de la funcionalidad básica APIC a pesar de que los informes de
chipset extendieron funcionalidad APIC como presentes. Se utiliza en casos de erratas
de hardware y / o incompatibilidad.

usephysicaldestination Boole Fuerza el uso de la APIC en el modo de destino física.

useplatformclock Boole el uso de fuerzas de fuente de reloj de las plataformas como contador de rendimiento del
sistema.

vga Boole Fuerzas de Windows para utilizar el controlador de pantalla VGA en lugar del controlador de
alto rendimiento de terceros.

winpe Boole Utilizado por Windows PE, esta opción hace que el gestor de configuración para cargar la
sección sistema de registro como una colmena volátil tal que los cambios realizados en la
memoria no se guardan de nuevo a la imagen de la colmena.

x2apicpolicy Desactivada, activada por Especifica si la funcionalidad extendida APIC debe utilizarse si el chipset soporta.
defecto Personas con discapacidad equivale a establecer uselegacyapicmode, mientras que las
fuerzas Habilitado funcionalidad ACPI en incluso si se detectan erratas. Por defecto
utiliza las capacidades reportadas por el chipset (a menos erratas están presentes).

xsavepolicy Entero Fuerza la política xSave dada para ser cargados desde el controlador de recursos
Política xSave (Hwpolicy.sys).

xsaveaddfeature0-7 Entero Utilizado durante las pruebas de apoyo a xSave en procesadores Intel modernos;
permite fingiendo que ciertas características del procesador están presentes cuando,
de hecho, no lo son. Esto ayuda a aumentar el tamaño de la estructura de contexto y
confirma que las aplicaciones funcionan correctamente con características extendidas
que puedan aparecer en el futuro. Sin funcionalidad adicional real estará presente, sin
embargo.

xsaveremovefeature Entero Fuerza la función xSave introducido no ser reportados al núcleo, a pesar
de que el procesador lo soporta.

CAPÍTULO 13 Inicio y cierre 511


Elemento BCD Valores Sentido

xsaveprocessorsmask Entero Máscara de bits de los procesadores que la política debe aplicarse a xSave.

xsavedisable Boole Desactiva el soporte para la funcionalidad xSave a pesar de que el


procesador lo soporta.

Si el usuario no selecciona una entrada en el menú de selección dentro del período de tiempo de espera de la BCD especifica,

Bootmgr elige la selección predeterminada especificada en el BCD (si sólo hay una entrada, se elige de inmediato éste). Una vez

realizada la selección de arranque, Bootmgr carga el cargador de arranque asociado a esa entrada, que será Winload.exe para las

instalaciones de Windows.

Winload.exe también contiene código que consulta BIOS ACPI del sistema para recuperar aparato básico y la información de
configuración. Esta información incluye lo siguiente:

■ La información de la hora y la fecha almacenada en el CMOS del sistema (memoria no volátil)

■ El número, tamaño y tipo de unidades de disco en el sistema

■ información de dispositivo heredado, como autobuses (por ejemplo, ISA, PCI, EISA, Micro Channel Architecture [MCA]), los ratones, los

puertos paralelos, y adaptadores de vídeo no se consulta y en su lugar falsificada a cabo

Esta información se recopila en las estructuras internas de datos que serán almacenados bajo el HARDWARE \ HKLM \ DESCRIPCIÓN registro más

tarde en el arranque. Esto es sobre todo una clave legado como la configuración de CMOS y ajustes de configuración del BIOS unidad de disco

detectada, así como los autobuses de legado, ya no son compatibles con Windows, y esta información se almacena principalmente por razones de

compatibilidad. Hoy en día, es la base de datos de gestor de Plug and Play que almacena la verdadera información sobre el hardware.

A continuación, Winload comienza a cargar los archivos de la volumen de inicio necesario para iniciar el arranque del núcleo. El volumen

de inicio es el volumen que corresponde a la partición en la que se inicia el directorio del sistema (normalmente \ Windows) de la instalación

se encuentra. Los pasos que sigue aquí Winload incluyen:

1. Carga el kernel apropiado e imágenes HAL (Ntoskrnl.exe y Hal.dll por defecto), así como

cualquiera de sus dependencias. Si Winload no se puede cargar cualquiera de estos archivos, se imprime el mensaje “Windows no

puede iniciarse porque el siguiente archivo se encuentra o está dañado”, seguido del nombre del archivo.

2. Se lee en el archivo de fuentes VGA (por defecto, vgaoem.fon). Si este archivo falla, el mismo mensaje de error como

descrito en la etapa 1 se mostrará.

3. Lee en los archivos NLS (Sistema Nacional de Idiomas) utilizados para la internacionalización. Por defecto,

estos son l_intl.nls, c_1252.nls y c_437.nls.

4. Lee en la colmena registro del sistema, \ Windows \ System32 \ Config \ System, de modo que pueda deter-

mina que necesitan controladores de dispositivo que se cargue para realizar el arranque. (Una colmena es un archivo que contiene un

subárbol del Registro. Encontrará más detalles sobre el registro en el Capítulo 4, “Mecanismos de gestión”, en la Parte 1.)

5. Escanea la sección del Registro SISTEMA en memoria y localiza todas las controladores de dispositivos de arranque. Dispositivo de arranque

los conductores son controladores necesarios para arrancar el sistema. Estos controladores están indicados en el registro

CAPÍTULO 13 Inicio y cierre 511


por un valor de inicio de SERVICE_BOOT_START (0). Cada controlador de dispositivo tiene una subclave del registro en HKLM \ SYSTEM \

CurrentControlSet \ Services. Por ejemplo, Servicios tiene una subclave denominada fvevol para el conductor BitLocker, que se puede ver

en la figura 13-2. (Para una descripción detallada de las entradas de los servicios de registro, consulte la sección “Servicios” en el Capítulo

4 de la parte 1.)

FIGURA 13-2 configuración del servicio de controlador de BitLocker

6. Agrega el controlador del sistema de archivos que es responsable de la implementación del código para el tipo de

(NTFS) en el que reside el directorio de instalación a la lista de controladores de arranque para cargar. Winload debe cargar

este controlador en este momento; si no lo hiciera, el núcleo requeriría los conductores para cargar ellos mismos, un requisito

que introduciría una dependencia circular.

7. Carga los controladores de arranque, que sólo debe ser conductores que, como el controlador de sistema de archivos para el

volumen de inicio, introduciría una dependencia circular si se requiere el kernel para cargarlos. Para indicar el progreso de la carga,

Winload actualiza una barra de progreso que se verá a continuación el texto “Iniciando Windows”. Si el llamada de socorro opción se

especifica en el BCD, Winload no muestra la barra de progreso, sino que muestra los nombres de archivo de cada controlador de

arranque. Tenga en cuenta que los conductores se cargan pero no inicializados en este momento, se inicializan más adelante en la

secuencia de arranque.

8. Prepara registros de la CPU para la ejecución de Ntoskrnl.exe.

Para ver los pasos 1 y 8, Winload también implementa parte del Código de modo de núcleo de firma (KMCS) infraestructura, que fue descrito en el

capítulo 3 de la parte 1, mediante la aplicación de que todos los controladores de arranque se firman en Windows de 64 bits. Además, el sistema se

bloqueará si la firma de los archivos de inicio temprano es incorrecta.

Esta acción es el fin del papel de Winload en el proceso de arranque. En este punto, Winload llama a la función principal de

Ntoskrnl.exe ( KiSystemStartup) para llevar a cabo el resto de la inicialización del sistema.

El proceso de arranque UEFI


Un sistema UEFI compatible tiene firmware que se ejecuta el código del gestor de arranque que ha sido programado en la RAM no volátil del sistema

(NVRAM) mediante la instalación de Windows. El código de arranque lee el contenido de la BCD, que también se almacenan en la memoria NVRAM. La

herramienta Bcdedit.exe se mencionó anteriormente también tiene la capacidad de variables NVRAM abstractas del firmware en el BCD, lo que permite una

total transparencia de este mecanismo.

CAPÍTULO 13 Inicio y cierre 512


El estándar UEFI define la capacidad de pedir al usuario con un gestor de arranque EFI que se puede utilizar para seleccionar un sistema operativo o

aplicaciones adicionales para cargar. Sin embargo, para proporcionar una interfaz de usuario consistente entre los sistemas de BIOS y sistemas UEFI,

Windows establece un 2-segundos de tiempo de espera para seleccionar el Administrador de inicio de EFI, después de lo cual la EFI-versión de cargas

Bootmgr (Bootmgfw.efi) en lugar.

La detección de hardware se produce siguiente, donde el cargador de arranque utiliza interfaces UEFI para determinar el número y tipo de

los siguientes dispositivos:

■ Adaptadores de red

■ adaptadores de vídeo

■ Teclados

■ controladores de disco

■ Dispositivos de almacenamiento

En los sistemas UEFI, todas las operaciones y los programas se ejecutan en el modo de la CPU nativa con paginación habilitada y ninguna parte

del proceso de inicio de Windows se ejecuta en modo de 16 bits. Tenga en cuenta que a pesar de EFI se admite en los sistemas de 32 bits y 64 bits,

Windows proporciona soporte para EFI sólo en plataformas de 64 bits.

Del mismo modo que lo hace Bootmgr en sistemas x86 y x64, el gestor de arranque EFI presenta un menú de selecciones de inicio con un tiempo

de espera opcional. Una vez que se ha realizado una selección de arranque, el cargador se desplaza al subdirectorio en la partición del sistema EFI

correspondiente a la selección y carga la versión EFI del cargador de arranque de Windows (Winload.efi).

La especificación UEFI requiere que el sistema tiene una partición designada como la partición del sistema EFI que está formateado

con el sistema de archivos FAT y se encuentra entre 100 MB y 1 GB de tamaño o hasta 1 por ciento del tamaño del disco, y cada

instalación de Windows tiene un subdirectorio en la partición del sistema EFI bajo EFI \ Microsoft.

Tenga en cuenta que gracias al proceso de arranque unificado y el modelo presente en Windows, los componentes de la Tabla 13-1 se aplican de

manera casi idéntica a los sistemas de UEFI, excepto que los que terminan en. exe terminar en. EFI, y utilizan las API y servicios de EFI en lugar de

interrupciones de la BIOS. Otra diferencia es que, para evitar limitaciones del formato de partición MBR (incluyendo un máximo de cuatro particiones

por disco), los sistemas de UEFI utilizan el formato GPT (GUID Partition Table), que utiliza los GUID para identificar diferentes particiones y sus roles

en el sistema.

CAPÍTULO 13 Inicio y cierre 513


El arranque desde iSCSI
Internet SCSI dispositivos (iSCSI) son un tipo de almacenamiento conectado en red, en que los discos físicos remotos están conectados a un iSCSI

Adaptador de Bus Host (HBA) o a través de Ethernet. Estos dispositivos, sin embargo, son diferentes de almacenamiento conectado en red tradicional

(NAS), ya que proporcionan un acceso por bloques a los discos, a diferencia del acceso basado en lógica sobre un sistema de archivos de red que emplea

NAS. Por lo tanto, un disco de conexión iSCSI aparece como cualquier otra unidad de disco, tanto para el gestor de arranque, así como para el sistema

operativo, siempre y cuando se utiliza el iniciador iSCSI de Microsoft para proporcionar acceso a través de una conexión Ethernet. Mediante el uso de

discos habilitados para iSCSI lugar de almacenamiento local, las empresas pueden ahorrar en espacio, consumo de energía y refrigeración.

Aunque Windows ha apoyado tradicionalmente el arranque sólo de discos conectados localmente, o el arranque a través de red PXE,

versiones modernas de Windows también son capaces de arrancar de forma nativa desde dispositivos iSCSI a través de un mecanismo

llamado iSCSI. El gestor de arranque (Winload.exe) contiene una pila de red minimalista acuerdo con la interfaz de dispositivo de red universal

(UNDI) estándar, lo que permite a los ROMs NIC compatibles para responder a las 13h de interrupción (el disco BIOS heredado / interrupción

de E O) y convierten a las solicitudes red I / O. En los sistemas EFI, el controlador de interfaz de red proporcionado por el fabricante se utiliza

en lugar, y APIs de dispositivos EFI se utilizan en lugar de las interrupciones.

Por último, para conocer la localización, la ruta y la información de autenticación para el disco remoto, el cargador de arranque también lee un arranque

Tabla de firmware de iSCSI (iBFT) que debe estar presente en la memoria física (por lo general expuesta a través de ACPI). Además, la instalación de

Windows también tiene la capacidad de leer esta tabla para determinar los dispositivos iSCSI arranque y puede permitir la instalación directa en un

dispositivo de este tipo, de modo que no se requiere ninguna imagen. En combinación con el iniciador iSCSI de Microsoft, esto es todo lo que se requiere

para Windows para iniciar desde el iSCSI, como se muestra en la Figura 13-3.

Previa al inicio de Windows

El iniciador iSCSI

Int13
TCPIP
Tabla
UNDI
FIB NDIS

NIC
minipuerto NDIS

NIC

Vendedor microsoft iSCSI Microsoft Windows

FIGURA 13-3 arquitectura de arranque de iSCSI

Inicializar el núcleo y ejecutivos subsistemas


Cuando Winload llama Ntoskrnl, que pasa a una estructura de datos llamada del bloque de parámetros cargador que contiene las rutas del

sistema y de la partición de arranque, un puntero a las tablas de memoria Winload genera para describir la memoria física en el sistema, un

árbol de hardware físico que luego se utiliza para construir el

CAPÍTULO 13 Inicio y cierre 514


volátil sección del Registro HARDWARE, una copia en memoria de la colmena registro del sistema, y ​un puntero a la lista de controladores de

arranque Winload cargado, así como otro tipo de información relacionada con el proceso de arranque realizado hasta este punto.

Experimento: Cargador bloque de parámetros

Durante el arranque, el kernel mantiene un puntero al bloque de parámetros en el cargador KeLoaderBlock

variable. El núcleo descarta el bloque de parámetros después de la primera fase de arranque, por lo que la única manera de ver el contenido de

la estructura es adjuntar un depurador del núcleo antes de arrancar y romperse en el punto de interrupción inicial de núcleo depurador. Si usted

es capaz de hacerlo, puede utilizar la dt comando para volcar el bloque, como se muestra:

0: kd> poi dt (! Nt nt) KeLoaderBlock _LOADER_PARAMETER_BLOCK

+ 0x000 OsMajorVersion :6
+ 0x004 OsMinorVersion :1
+ Tamaño 0x008 : 0x88
+ 0x00c reservados :0
+ 0x010 LoadOrderListHead : _LIST_ENTRY [0x8085b4c8 - 0x80869c70]
+ 0x018 MemoryDescriptorListHead: _LIST_ENTRY [0x80a00000 - 0x80a00de8]

+ 0x020 BootDriverListHead: _LIST_ENTRY [0x80860d10 - 0x8085eba0]

+ 0x028 KernelStack : 0x88e7c000


+ 0x02c Prcb :0
+ Proceso de 0x030 :0
+ Tema 0x034 : 0x88e64800
+ 0x038 RegistryLength : 0x2940000
+ 0x03c RegistryBase : Void 0x80adf000
+ 0x040 ConfigurationRoot : 0x8082d450 _CONFIGURATION_COMPONENT_DATA

+ 0x044 ArcBootDeviceName : 0x8082d9a0 "multi (0) disk (0) rdisk (0) partición (4)"
+ 0x048 ArcHalDeviceName : 0x8082d788 "multi (0) disk (0) rdisk (0) partición (4)"
+ 0x04c NtBootPathName : 0x8082d828 "\ Windows \"
+ 0x050 NtHalPathName : 0x80826358 "\"
+ 0x054 LoadOptions : 0x8080e1b0 "noexecute = ALWAYSON DEBUGPORT = COM1

BAUDRATE = 115200"

+ 0x058 NlsData : _NLS_DATA_BLOCK 0x808691e0

+ 0x05c ArcDiskInformation: 0x80821408 _ARC_DISK_INFORMATION

+ 0x060 OemFontFile : Void 0x84a551d0


+ 0x064 Extensión : _LOADER_PARAMETER_EXTENSION 0x8082d9d8

+ 0x068 U : <Sin nombre-tag>

+ 0x074 FirmwareInformation: _FIRMWARE_INFORMATION_LOADER_BLOCK

Además, el! loadermemorylist comando se puede utilizar en el MemoryDescriptorListHead


campo para volcar la memoria física varía:

0: kd> loadermemorylist 0x80a00000 Base Longitud


Tipo
1 00000001 HALCachedMemory

2 00000004 HALCachedMemory

...
4a32 00000023 NlsData
4a55 00000002 BootDriver
4a57 00000026 BootDriver
4a7d 00000014 BootDriver

CAPÍTULO 13 Inicio y cierre 515


4a91 0000016f Gratis

CAPÍTULO 13 Inicio y cierre 516


4c00 0001b3f0 Gratis

1fff0 00000001 FirmwarePermanent


1fff1 00000002 FirmwarePermanent
1fff3 00000001 FirmwarePermanent
1fff4 0000000b FirmwarePermanent
1ffff 00000001 FirmwarePermanent
fd000 00000800 FirmwarePermanent
fec00 00000001 FirmwarePermanent
fee00 00000001 FirmwarePermanent

ffc00 00000400 FirmwarePermanent

Resumen de tipos de

memoria páginas

Gratis 0001bc50 (113,744)


LoadedProgram 0000013d ( 317)
FirmwareTemporary 000006dd ( 1757)
FirmwarePermanent 00000c37 ( 3127)
OsloaderHeap 0000022a ( 554)
SystemCode 000005dc ( 1500)
BootDriver 00000968 ( 2408)
registryData 00002940 ( 10560)
MemoryData 00000035 ( 53)
NlsData 00000023 ( 35)
HALCachedMemory 0000001e ( 30)
======== ======== (
Total 00020bc5 134085) = ~ 523MB

Comienza entonces ntoskrnl fase 0, el primero de su proceso de inicialización de dos fases ( fase 1 es el segundo). La mayoría de los

subsistemas ejecutivas tienen una función de inicialización que toma un parámetro que identifica qué fase se está ejecutando.

Durante la fase 0, las interrupciones están deshabilitadas. El propósito de esta fase es la construcción de las estructuras rudimentarias necesarios

para que los servicios que se necesitan en la fase 1 que se invoque. principales llamadas a funciones de Ntoskrnl KiSystemStartup, que a su vez las

llamadas HalInitializeProcessor y KiInitializeKernel para cada CPU. KiInitializeKernel, si se ejecuta en la CPU de arranque, lleva a cabo la inicialización del

núcleo de todo el sistema, tales como la inicialización de listas internas y otras estructuras de datos que comparten las CPU. También comprueba si la

virtualización se especificó como una opción de BCD ( hypervisorlaunchtype), y si la CPU compatible con la tecnología de virtualización de hardware. La

primera instancia de KiInitializeKernel a continuación, llama a la función responsable de orquestar la fase 0, InitBootProcessor, mientras que los

procesadores posteriores sólo se llaman HalInitSystem.

InitBootProcessor starts by initializing the pool look-aside pointers for the initial CPU and by checking for and honoring the BCD burnmemory

boot option, where it discards the amount of physical memory the value specifies. It then performs enough initialization of the NLS files that

were loaded by Winload (described earlier) to allow Unicode to ANSI and OEM translation to work. Next, it continues by calling the HAL

function HalInitSystem, which gives the HAL a chance to gain system control before Windows performs significant further initialization. One

responsibility of HalInitSystem es preparar el controlador de interrupciones del sistema de cada CPU para interrupciones y para configurar la

interrupción de temporizador de reloj de intervalo, que se utiliza para la contabilidad de tiempo de CPU. (Vea la sección de “Quantum

Contabilidad” en el Capítulo 5, “Los procesos, subprocesos y puestos de trabajo” en la parte 1 para más información sobre la CPU de

contabilización del tiempo.)

CAPÍTULO 13 Inicio y cierre 517


Cuando HalInitSystem devuelve el control, InitBootProcessor procede por computar el valor recíproco de la expiración del temporizador.

Recíprocos se utilizan para la optimización de las divisiones en la mayoría de los procesadores modernos. Pueden realizar multiplicaciones más

rápido, y porque Windows debe dividir el coste actual de 64 bits con el fin de averiguar qué temporizadores deben expirar, este cálculo estático

reduce la latencia de interrupción cuando se dispara el intervalo de reloj. InitBootProcessor luego continúa estableciendo la ruta raíz del sistema y

la imagen del núcleo búsqueda de la localización de las cadenas de mensajes de choque se muestra en las pantallas azules, almacenamiento en

caché de su ubicación para evitar levantar las cuerdas durante un accidente, lo que podría ser peligroso y poco fiable. Siguiente, InitBootProcessor

inicializar la parte funcionalidad cuota del gestor de procesos y lee el vector control. Esta estructura de datos contiene más de 150 opciones del

núcleo de ajuste que forman parte de la clave HKLM \ SYSTEM \ CurrentControlSet \ Control clave de registro, incluyendo información tal como la

información de datos de licencias y la versión de la instalación.

InitBootProcessor ya está listo para llamar a la fase 0 rutinas de inicialización para el ejecutivo, verificación de controladores, y el
administrador de memoria. Estos componentes realizan las siguientes pasos de inicialización:

1. El ejecutivo inicializa varios bloqueos internos, recursos, listas, y las variables y valida que

el tipo de conjunto de productos en el registro es válida, desalentando la modificación ocasional del registro con el fin de

“mejorar” a un SKU de Windows que no era en realidad compró. Este es sólo uno de los muchos dichos controles en el núcleo.

2. Verificación de controladores, si está habilitado, inicializa diversas configuraciones y comportamientos basados ​en el estado actual

del sistema (por ejemplo, si el modo seguro está activado) y las opciones de verificación. También recoge que los conductores a objetivo para

las pruebas que se dirigen a los conductores elegido al azar.

3. El administrador de memoria construye tablas de páginas y las estructuras de datos internas que son necesarias

para proporcionar servicios básicos de memoria. También construye y se reserva una zona para la caché de archivos del sistema y crea

áreas de memoria para las piscinas paginados y no paginados (descritos en el capítulo 10). Los otros subsistemas ejecutivos, el núcleo y

controladores de dispositivo utilizan estos dos grupos de memoria de reparto de su estructura de datos.

Siguiente, InitBootProcessor llamadas HalInitializeBios para configurar la parte de código de emulación del BIOS de la HAL. Este código se utiliza tanto

en sistemas reales de BIOS, así como en sistemas EFI para permitir el acceso (o para emular el acceso) a las interrupciones en modo real de 16 bits y

memoria, que se utilizan principalmente por Bootvid para mostrar la pantalla de arranque VGA temprana y la pantalla de comprobación de errores .

Después de la función regresa, el kernel inicializa la biblioteca Bootvid y muestra los mensajes de estado de arranque primeros llamando InbvEnableBootDriver

InbvDriverInitailize.

En este punto, InitBootProcessor enumera los controladores de arranque de arranque que fueron cargados por Winload y llamadas DbgLoadImageSymbols

para informar al depurador del núcleo (si está conectado) para cargar símbolos para cada uno de estos controladores. Si el depurador anfitrión ha

configurado el romper la carga de símbolos opción, este será el primer punto de un depurador de núcleo para hacerse con el control del sistema. InitBootProcessor

llama ahora

HvlInitSystem, que intenta conectar con el hipervisor en el caso de Windows se esté ejecutando en el interior de particiones hijo de un

sistema host de Hyper-V. Cuando la función devuelve, llama HeadlessInit para inicializar la consola de serie si la máquina se ha configurado

para Servicios de administración de emergencia (EMS).

Siguiente, InitBootProcessor construye la información de versiones que se utilizará más adelante en el proceso de arranque, como por ejemplo el

número de compilación, versión del paquete de servicio, y el estado de la versión beta. A continuación, copia el NLS

CAPÍTULO 13 Inicio y cierre 518


tablas que Winload previamente cargado en bloque paginado, les vuelve a inicializar, y crea la base de datos seguimiento de la pila del núcleo si los

indicadores globales especifican crear uno. (Para más información sobre los indicadores globales, consulte el Capítulo 3 en la Parte 1.)

Finalmente, InitBootProcessor llama al administrador de objetos, monitor de referencia de seguridad, gestor de procesos, marco de la

depuración de modo de usuario y el administrador Plug and Play. Estos componentes realizan las siguientes pasos de inicialización:

1. Durante la inicialización administrador de objetos, los objetos que son necesarios para construir el objeto

gestor de espacio de nombres se definen de manera que otros subsistemas pueden insertar objetos en ella. Una tabla de identificador se crea de

manera que el seguimiento de recursos puede comenzar.

2. El monitor de referencia de seguridad inicializa el objeto de tipo de token y luego utiliza el objeto a

crear y preparar el primer contador cuenta del sistema local para la asignación al proceso inicial. (Véase el Capítulo 6,

“Seguridad” en la parte 1 para una descripción de la cuenta del sistema local).

3. El gestor de procesos realiza la mayor parte de su inicialización en la fase 0, definiendo el proceso y

enhebrar tipos de objetos y la creación de listas de realizar el seguimiento de procesos activos y los hilos. El gestor de proceso también crea

un objeto de proceso para el proceso inicial y la nombra Ocioso. Como su último paso, el administrador de procesos crea el proceso del

sistema y un subproceso del sistema para ejecutar la rutina

Phase1Initialization. Este hilo no empezar a correr de inmediato debido a las interrupciones todavía están deshabilitadas.

4. El marco en modo de usuario depuración crea la definición del tipo de objeto de depuración que es

utilizado para la fijación de un depurador a un proceso y recibir eventos depurador. Para obtener más información sobre la depuración de modo

de usuario, consulte el Capítulo 3 en la parte 1.

5. El Plug and Play del gestor de la fase 0 de inicialización se realiza a continuación, lo que implica simplemente

inicializar un recurso ejecutiva se utiliza para sincronizar el acceso a los recursos del bus.

Cuando el control vuelve a KiInitializeKernel, el último paso es asignar la pila DPC para el procesador actual y la I / O mapa privilegio

ahorrar área (sólo en sistemas x86), después de lo cual el control avanza a la Ocioso bucle, que entonces hace que el hilo sistema creado en

el paso 3 de la descripción del proceso anterior para comenzar la ejecución de la fase 1. (procesadores secundarios esperar para comenzar

su inicialización hasta el paso 8 de la fase 1, se describe en la siguiente lista.)

Fase 1 consta de los siguientes pasos:

1. Phase1InitializationDiscard, el cual, como su nombre lo indica, descarta el código que forma parte de la

INIT sección de la imagen del núcleo con el fin de preservar la memoria.

2. El hilo de inicialización establece su prioridad a 31, la más alta posible, con el fin de evitar

derecho preferente de compra.

3. La NUMA / grupo de relaciones topológicas se crean, en el que el sistema intenta llegar

con el mapeo más optimizada entre procesadores lógicos y grupos de procesador, teniendo en cuenta las localidades NUMA y

distancias, a menos que se reemplaza por la configuración de BCD pertinentes.

CAPÍTULO 13 Inicio y cierre 519


4. HalInitSystem prepara el sistema para aceptar interrupciones de dispositivos y para habilitar las interrupciones.

5. El controlador de vídeo de arranque se llama, que a su vez muestra la pantalla de inicio de Windows, que por

por defecto consiste en una pantalla en negro y una barra de progreso. Si el quietboot se utilizó la opción de arranque, no se producirá este

paso.

6. El núcleo construye varias cadenas y la versión de la información, que se muestran en el maletero

pantalla a través de Bootvid si el llamada de socorro opción de arranque estaba habilitado. Esto incluye la información completa versión, el

número de procesadores compatibles, y la cantidad de memoria compatible.

7. inicialización del administrador de energía se llama.

8. La hora del sistema se inicializa (llamando HalQueryRealTimeClock) y se almacena como el tiempo

el sistema arranca.

9. En un sistema multiprocesador, los procesadores restantes se inicializan KeStartAllProcessors

y HalAllProcessorsStarted. El número de procesadores que se ha inicializado y apoyado depende de una combinación del

recuento físico real, la información de licencia del SKU instalada de Windows, las opciones de arranque como numproc y ONECPU,

y si la partición dinámica está activada (sistemas de servidor solamente). Después de que todos los procesadores

disponibles han inicializado, la afinidad del proceso del sistema se actualiza para incluir todos los procesadores.

10. El administrador de objetos crea el directorio raíz del espacio de nombres (\), \ Tipos de objeto de directorio, y el

directorio de nombre de dispositivo de mapeo DOS (\ global ??). A continuación, crea el enlace simbólico \ DosDevices que apunta en el directorio

de nombres de asignación de dispositivos del subsistema de Windows.

11. El ejecutivo se llama para crear los tipos de objetos ejecutivos, incluyendo semáforos, mutex,

acontecimiento, y el temporizador.

12. El gestor de I / O es llamada para crear los tipos de objeto de gestión de I / O, incluyendo dispositivo, conductor,

objetos controlador, adaptadores, y de archivo.

13. La biblioteca depurador de núcleo finaliza la inicialización de los ajustes y parámetros de depuración si el

depurador no se ha activado antes de este punto.

14. El administrador de transacciones también crea sus tipos de objetos, tales como el reclutamiento, hombre-recursos

Ager, y el gestor de transacciones tipos.

15. El núcleo inicializa planificador (despachador) estructuras de datos y el envío de servicio del sistema

mesa.

dieciséis. Las estructuras de datos de la biblioteca de modo de usuario de depuración (Dbgk) se inicializan.

17. Si el comprobador de controladores está habilitada y, dependiendo de las opciones de verificación, la verificación de la piscina es en-

abled, rastreo identificador de objeto se inicia por el proceso del sistema.

18. El monitor de referencia de seguridad crea el directorio \ Seguridad en el administrador de objetos

espacio de nombres e inicializa las estructuras de datos de auditoría si está habilitada la auditoría.

CAPÍTULO 13 Inicio y cierre 520


19. Se crea el enlace simbólico \ SystemRoot.

20. El administrador de memoria se llama para crear el \ Device \ PhysicalMemory sección de objeto y la

subprocesos de trabajo del sistema de administrador de memoria (que se explican en el capítulo 10).

21. mesas de NLS se asignan al espacio del sistema de modo que puedan ser fácilmente mapeados por el modo de usuario

procesos.

22. Ntdll.dll es mapeado en el espacio de direcciones del sistema.

23. El administrador de caché inicializa las estructuras de datos de caché de sistema de archivos y crea su trabajador

trapos.

24. El administrador de configuración crea el objeto clave \ registro en el espacio de nombres del Administrador de objetos

y abre el subárbol del sistema en la memoria como un archivo de sección adecuada. A continuación, copia los datos del árbol de hardware

iniciales aprobadas por Winload en la colmena HARDWARE volátil.

25. La biblioteca de gráficos de alta resolución de arranque se inicia, a menos que haya sido desactivado a través de la

BCD o el sistema se inicia sin cabeza.

26. El gestor de erratas se inicia y explora el registro de información de erratas, así como el INF

(Archivo del controlador de la instalación, que se describe en el capítulo 8) de base de datos que contiene erratas de varios conductores.

27. Superfetch y la captura previa se inicializan.

28. El encargado de almacén se inicializa.

29. La información de zona horaria actual se inicializa.

30. estructuras de datos controlador del sistema de archivos globales se inicializan.

31. Fase 1 de la información depurador-específica del transporte se realiza mediante una llamada al KdDebugger-

Initialize1 de rutina en el transporte registrado, como kdcom.dll.

32. El administrador de Plug and Play llama al BIOS Plug and Play.

33. La avanzada llamada de procedimiento local (ALPC) subsistema inicializa el tipo de puerto ALPC y ALPC

temporizador de espera objetos tipo de puerto. Los objetos más viejos LPC se establecen como alias.

34. Si el sistema se inicia con el registro de inicio (con el BCD bootlog opcional), el archivo de registro de arranque se inicializa. Si el sistema se

inicia en modo seguro, una cadena se muestra en la pantalla de arranque con el tipo de corriente de arranque en modo seguro.

35. El ejecutivo se llama para ejecutar la segunda fase de inicialización, donde se configura parte de

la funcionalidad de licencia de Windows en el núcleo, tales como la validación de la configuración del registro que contienen datos de licencia.

Además, si está presente (como los resultados de diagnóstico de memoria u hoja de vida a partir de información de hibernación) de datos

persistente de aplicaciones de arranque, los archivos de registro e información pertinentes se escriben en el disco o en el registro.

CAPÍTULO 13 Inicio y cierre 521


36. Las claves de registro MiniNT / WinPE se crean si se trata de una bota de este tipo, y la lista de objetos NLS

se crea en el espacio de nombres, el cual será utilizado más adelante para albergar los objetos de sección para los distintos archivos NLS

asignados en memoria.

37. El administrador de energía se llama para inicializar de nuevo. Esta vez ella se establece el apoyo a las peticiones de potencia,

el canal ALPC para las notificaciones de brillo, y soporte el perfil de devolución de llamada.

38. La E / S gestor de inicialización tiene lugar ahora. Esta etapa es una fase compleja de sistema

inicio que representa la mayor parte del tiempo de arranque.

El gestor de I / O inicializa primero diversas estructuras internas y crea los tipos de objetos de controlador y el
dispositivo. Luego llama al gestor de Plug and Play, encargado de la energía, y HAL para comenzar las diversas
etapas de la enumeración de dispositivos dinámicos e inicialización. (Debido a que este proceso es complejo y
específico para el sistema de E / S, cubrimos los detalles en el Capítulo 8.) A continuación, el subsistema de
Windows (WMI) es inicializado, que proporciona soporte WMI para los controladores de dispositivos. (Consulte
la sección “Windows Management Instrumentation” en el Capítulo 4 de la parte 1 para obtener más
información.) Esto también inicializa el seguimiento de eventos para Windows (ETW). A continuación, todos los
controladores de arranque de arranque están llamados a desempeñar su inicialización específica del
controlador, y luego los controladores de dispositivo del sistema de arranque se cargan e inicializan.

39. El administrador de transacciones establece el preprocesador traza software de Windows (WPP) y ETW

e inicializa con WMI. (ETW y WMI se describen en el Capítulo 4 en la parte 1.)

40. Ahora que se cargan los controladores de arranque de arranque y el sistema de arranque, el gestor de erratas carga el INF

base de datos con la errata conductor y comienza a analizarlo, lo que incluye la aplicación de soluciones de configuración PCI

registro.

41. Si el ordenador está arrancando en modo seguro, este hecho se registra en el registro.

42. A no ser desactivado de forma explícita en el registro, la paginación de código en modo kernel (en Ntoskrnl y conductores)

está habilitado.

43. El gestor de configuración se asegura de que todos los procesadores en un sistema SMP son idénticos en

términos de las características que soportan; de lo contrario, se bloquea el sistema.

44. En los sistemas de 32 bits, VDM apoyo (Virtual Dos Machine) se inicializa, que incluye determinismo

ing si el procesador es compatible con las extensiones de la máquina virtual (VME).

45. El administrador de procesos se llama para establecer la limitación de velocidad de empleos, inicializar el entorno estático

para procesos protegido, y buscar los diversos puntos de entrada definidos por el sistema en la biblioteca del sistema

usermode (Ntdll.dll).

46. El administrador de energía se llama a finalizar su inicialización.

CAPÍTULO 13 Inicio y cierre 521


47. El resto de la información de licencia del sistema se inicializa, incluyendo almacenamiento en caché de la corriente

configuración de la directiva almacenan en el registro.

48. El monitor de referencia de seguridad se llama para crear el hilo de comandos del servidor que comu-

nicates con LSASS. (Consulte la sección “Componentes del sistema de seguridad” en el capítulo 6 de la parte 1 para más información sobre

cómo la seguridad se aplica en Windows.)

49. El proceso del Administrador de sesión (SMS) (introducido en el capítulo 2, “Arquitectura del sistema”, en la parte 1)

Está empezado. Smss es responsable de crear el entorno de modo de usuario que proporciona la interfaz visible para
Windows sus pasos de inicialización se trata en la siguiente sección.

50. Los valores de entropía de arranque TPM se consultan. Estos valores se pueden consultar sólo una vez por cada inicio,

y, normalmente, el controlador del sistema TPM debería haberles consultado por ahora, pero si este controlador no había estado

funcionando por alguna razón (tal vez el usuario ha deshabilitado), los valores unqueried todavía estaría disponible. Por lo tanto, el

núcleo ellos consulta también manualmente para evitar esta situación, y en escenarios normales, propia consulta del kernel debería

fallar.

51. Toda la memoria usada por el bloque de parámetros cargador y todas sus referencias está ahora liberado.

Como paso final antes de considerar el ejecutivo y el núcleo de inicialización completa, la fase 1 hilo de inicialización espera a que el mango para

el proceso del Administrador de sesión con un valor de tiempo de espera de 5 segundos. Si el proceso del Administrador de sesión antes de que las

salidas transcurren 5 segundos, el sistema se bloquea con un código de detención SESSION5_INITIALIZATION_FAILED.

Si los tiempos de 5 segundos de espera fuera (es decir, si transcurren 5 segundos), se supone que el gestor de sesiones se han iniciado con éxito, y

la función de inicialización de fase 1 Las llamadas a funciones hilo página cero del administrador de memoria (que se explica en el capítulo 10). Por lo

tanto, este subproceso del sistema se convierte en el hilo de la página cero para el resto de la vida del sistema.

Smss, Csrss y Wininit


SMSs es como cualquier otro proceso en modo de usuario a excepción de dos diferencias. En primer lugar, Windows considera que SMSs una parte

confiable del sistema operativo. En segundo lugar, es un SMSs nativo solicitud. Debido a que es un componente del sistema operativo de confianza, SMSs

puede realizar acciones algunos otros procesos pueden llevar a cabo, tales como la creación de tokens de seguridad. Debido a que es una aplicación

nativa, los SMS no utiliza las API de Windows-que utiliza las API de ejecutivos en los núcleos conocidos colectivamente como la API nativa de Windows.

Smss no utiliza las API de Win32 porque el subsistema de Windows no se está ejecutando cuando se pone en marcha smss. De hecho, una de las

primeras tareas de los SMS es para iniciar el subsistema de Windows.

Smss continuación, llama al subsistema ejecutivo encargado de la configuración para terminar la inicialización del registro, el registro de dar contenido a

cabo para incluir todas sus claves. El gestor de configuración está programado para saber dónde se almacenan las secciones del registro central en el disco

(con exclusión de las colmenas que corresponde a los perfiles de usuario), y registra las rutas de acceso a las colmenas que carga en el HKLM \ SYSTEM \

CurrentControlSet \ Control \ hivelist.

El hilo conductor de SMSs realiza los siguientes pasos de inicialización:

1. Marca a sí misma como un proceso crítico y su hilo principal como un hilo crítico. Como se discutió en pítulo

lo 5 de la parte 1, esto hará que el núcleo se bloquee el sistema si SMSs se cierra inesperadamente. smss

CAPÍTULO 13 Inicio y cierre 522


también permite el modo de actualización automática de afinidad para apoyar Además procesador dinámico. (Véase el Capítulo 5 de la Parte 1 para

obtener más información.)

2. crea prefijos protegidas para los pilotos de buzón interproceso y del sistema de archivos tubería con nombre, creando giado

privile- caminos para los administradores y cuentas de servicio para comunicarse a través de esos caminos. Véase el Capítulo 7, “Redes”,

en la parte 1 para obtener más información.

3. llamadas SmpInit, el cual ajusta el nivel máximo de concurrencia de los SMS, es decir, el máximo

número de sesiones paralelas que serán creados por el desove copias de SMSs en otras sesiones. Esto es al menos

cuatro y como máximo el número de CPU activas.

4. SmpInit a continuación, crea un objeto puerto ALPC (\ SmApiPort) para recibir solicitudes de los clientes (por ejemplo, a

cargar un nuevo subsistema o cree una sesión).

5. SmpInit llamadas SmpLoadDataFromRegistry, que comienza con la creación del entorno por defecto

variables para el sistema, y ​la variable SAFEBOOT si el sistema se ha arrancado en modo seguro.

6. SmpLoadDataFromRegistry llamadas SmpInitializeDosDevices para definir los enlaces simbólicos para MS-

Los nombres de dispositivo de DOS (como COM1 y LPT1).

7. SmpLoadDataFromRegistry crea el directorio \ Sesiones en el espacio de nombres del Administrador de objetos

(Para múltiples sesiones).

8. SmpLoadDataFromRegistry corre ningún programas definidos en HKLM \ SYSTEM \ CurrentControlSet \

Control \ Session Manager \ BootExecute con SmpExecuteCommand. Por lo general, este valor contiene una orden para

funcionar Autochk (la versión de tiempo de arranque de Chkdsk).

9. SmpLoadDataFromRegistry llamadas SmpProcessFileRenames para realizar cambio de nombre de archivo y retardada

eliminar las operaciones siguiendo las indicaciones de HKLM \ SYSTEM \ CurrentControlSet \ Control \ Session Manager \

PendingFileRenameOperations y HKLM \ SYSTEM \ CurrentControlSet \ Control \ Session Manager \

PendingFileRenameOperations2.

10. SmpLoadDataFromRegistry llamadas SmpCreatePagingFiles para crear los archivos de paginación adicionales.

la configuración del archivo de paginación se almacena en HKLM \ SYSTEM \ CurrentControlSet \ Control \ Session Manager \

Memory Management \ PagingFiles.

11. SmpLoadDataFromRegistry inicializa el registro llamando a la función nativa NtInitialize-

Registro. El administrador de configuración construye el resto del registro mediante la carga de las secciones del Registro para las

claves HKLM \ SOFTWARE HKLM \ SAM, HKLM \ SECURITY, y. Aunque HKLM \ SYSTEM \ CurrentControlSet \ Control \ hivelist

localiza los archivos de la colmena en el disco, el gestor de configuración está codificado para buscarlos en \ Windows \ System32 \

Config.

12. SmpLoadDataFromRegistry llamadas SmpCreateDynamicEnvironmentVariables añadir es- sistema

las variables de entorno de que se definen en HKLM \ SYSTEM \ CurrentControlSet \ Administrador de sesión \ Medio

Ambiente, así como las variables de entorno específicos del procesador como NUMBER_ procesadores,

PROCESSOR_ARCHITECTURE y PROCESSOR_LEVEL.

CAPÍTULO 13 Inicio y cierre 523


13. SmpLoadDataFromRegistry corre ningún programas definidos en HKLM \ SYSTEM \ CurrentControlSet \

Control \ Session Manager \ SetupExecute con SmpExecuteCommand. Normalmente, este valor se establece en caso de que Windows

se inicia como parte de la segunda etapa de la instalación y Setupcl.exe es el valor predeterminado.

14. SmpLoadDataFromRegistry llamadas SmpConfigureSharedSessionData para inicializar la lista de sub-

sistemas que se pondrán en marcha en cada sesión (tanto de forma inmediata y diferida), así como el comando de inicialización de

la sesión 0 (que, por defecto, es poner en marcha el proceso Wininit.exe). El comando de inicialización se puede anular mediante la

creación de un valor de cadena llamado S0InitialCommand en HKLM \ SYSTEM \ CurrentControlSet \ Control \ Session Manager y se

establece como el camino a otro programa.

15. SmpLoadDataFromRegistry llamadas SmpInitializeKnownDlls para abrir DLL conocidos, y crea

sección de objetos para ellos en el directorio \ KnownDLLs del espacio de nombres del Administrador de objetos. La lista de archivos DLL

considerados conocido se encuentra en HKLM \ SYSTEM \ CurrentControlSet \ Control \ Session Manager \ KnownDLLs, y la ruta de

acceso al directorio en el que las DLL están ubicados se almacena en el valor DllDirectory de la llave. En los sistemas 64 bits, DLL de 32

bits utilizados como parte de WoW64 se almacenan en el valor DllDirectory32.

dieciséis. Finalmente, SmpLoadDataFromRegistry llamadas SmpTranslateSystemPartitionInformation para convertir el

SYSTEMPARTITION valor almacenado en HKLM \ SYSTEM \ Setup, que se almacena en formato de ruta administrador de objetos nativo NT, a

una letra de unidad del volumen almacenado en el valor BootDir. Entre otros componentes, Windows Update utiliza esta clave del registro

para averiguar cuál es el volumen del sistema es.

17. En este punto, SmpLoadDataFromRegistry vuelve a SmpInit, que devuelve al hilo principal

punto de entrada. Smss crea entonces el número de sesiones iniciales que fueron definidos (por lo general, sólo una, la sesión 0,

pero se puede cambiar este número por el valor del registro NumberOfInitialSessions en la clave de registro smss se mencionó

anteriormente) llamando SmpCreateInitialSession, que crea un proceso de SMS para cada sesión de usuario. El trabajo principal de esta

función es llamar SmpStartCsr para empezar Csrss en cada sesión.

18. Como parte de la inicialización de Csrss, se carga la parte de modo de núcleo del subsistema de Windows

(Win32k.sys). El código de inicialización en Win32k.sys utiliza el controlador de vídeo para cambiar la pantalla a la resolución definida por

el perfil por defecto, por lo que este es el punto en el que eligen la pantalla cambia desde el modo VGA del controlador de vídeo de

arranque utiliza para la resolución predeterminada de la sistema.

19. Mientras tanto, cada uno dio lugar a SMSs en una sesión de usuario diferente comienza la otra pro subsistema

cesos, como Psxss Si se ha instalado la función Subsistema para aplicaciones basadas en UNIX. (Véase el Capítulo 3 en la parte 1

para más información sobre procesos del subsistema).

20. La primera sesión de SMS desde 0 ejecuta el comando de inicialización de la sesión 0 (que se describe en el paso

14), por defecto de iniciar el proceso de inicialización de Windows (Wininit). Otros casos SMSs iniciar el proceso del gestor de inicio

de sesión interactivo (Winlogon), que, a diferencia de Wininit, es codificada. Los pasos de puesta en marcha de Wininit y Winlogon

se describen en breve.

CAPÍTULO 13 Inicio y cierre 524


Las operaciones de cambio de nombre a la espera de archivos

Después de realizar estos pasos de inicialización, el hilo principal en SMSs espera siempre en el identificador de proceso de

Winlogon, mientras que los otros hilos ALPC esperan mensajes para crear nuevas sesiones o subsistemas. Si bien Wininit o Csrss

terminan inesperadamente, el kernel se bloquea el sistema, ya que estos procesos están marcados como crítico. Si Winlogon termina

inesperadamente, la sesión asociada con él se cierra la sesión.

Wininit entonces realiza sus pasos de puesta en marcha, tales como la creación de la estación de ventana y escritorio objetos iniciales. También

configura la sesión 0 ventana de gancho, que es utilizado por el servicio interactivo de detección de Servicios (UI0Detect.exe) para proporcionar

compatibilidad con versiones anteriores con los servicios interactivos. (Véase el Capítulo 4 de la parte 1 para obtener más información sobre los servicios.)

Wininit crea entonces el administrador de control de servicios de proceso (SMC) (% SystemRoot% \ System32 \ Services.exe), que carga todos los servicios

y controladores de dispositivos de marcado para el inicio automático, y el subsistema de autoridad de seguridad local (LSASS) proceso (% SystemRoot% \

System32 \ LSASS.exe). Por último, se carga el gestor de sesión local (% SystemRoot% \ System32 \ lsm.exe). En la sesión 1 y más allá, en lugar de

Winlogon se ejecuta y carga los proveedores de credenciales registrados para el sistema (por defecto, el proveedor de credenciales Microsoft admite

basada en contraseña y los inicios de sesión basados ​en tarjetas inteligentes) en un proceso hijo llamado LogonUI (% SystemRoot% \ System32 \

Logonui.exe), que se encarga de mostrar la interfaz de inicio de sesión. (Para más detalles sobre la secuencia de arranque para Wininit, Winlogon y LSASS,

consulte la sección “Winlogon inicialización” en el Capítulo 6 de la parte 1.)

Después de que el SMC inicializa los servicios de inicio automático y los conductores y un usuario ha iniciado sesión correctamente en la consola,

el SMC considera que el arranque con éxito. último conjunto de control conocida del registro (como se indica en HKLM \ SYSTEM \ Select \

LastKnownGood) se actualiza para coincidir \ CurrentControlSet.

CAPÍTULO 13 Inicio y cierre 525


Después de lanzar el SMC, Winlogon espera una notificación de inicio de sesión interactivo desde el proveedor de credenciales. Cuando se

recibe un inicio de sesión y valida el inicio de sesión (un proceso por el cual se puede encontrar más información en la sección “Conexión Usuario

Pasos” en el Capítulo 6 de la parte 1), Winlogon carga la sección del Registro del perfil del usuario inicie sesión y mapas a HKCU. A continuación,

establece las variables de entorno del usuario que se almacenan en HKCU \ Ambiente y notifica a los paquetes de notificación de Winlogon

registrados en HKLM \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion \ Winlogon \ Notify que se ha producido un inicio de sesión.

Winlogon siguiente inicia el shell al lanzar el ejecutable o ejecutables especificado en HKLM \ SOFTWARE \ Microsoft \

Windows NT \ CurrentVersion \ Winlogon \ Userinit (con múltiples ejecutables separados por comas) que por los puntos

predeterminados en \ Windows \ System32 \ Userinit.exe. Userinit.exe realiza los siguientes pasos:

1. Procesa los scripts de usuario especificados en HKCU \ Software \ Policies \ Microsoft \ Windows \ System \

Secuencias de comandos y los scripts de inicio de sesión en la máquina HKLM \ Software \ Policies \ Microsoft \ Windows \ System \ Scripts.

(Debido a que las secuencias de comandos de máquina en funcionamiento después de scripts de usuario, que pueden anular los ajustes del usuario.)

2. Si la directiva de grupo especifica una cuota de perfil de usuario, se inicia% SystemRoot% \ System32 \ ProQuota.exe para hacer cumplir la

cuota para el usuario actual.

3. Lanza la cáscara separada por comas o conchas se especifica en HKCU \ Software \ Microsoft \ Windows

NT \ CurrentVersion \ Winlogon \ Shell. Si no existe ese valor, Userinit.exe lanza el depósito o los depósitos se especifica en

HKLM \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion \ Winlogon \ Shell, que es por defecto Explorer.exe.

Winlogon notifica a los proveedores de red registrados que un usuario ha iniciado la sesión. El proveedor de red de Microsoft, encaminador de

proveedores múltiples (% SystemRoot% \ System32 \ Mpr.dll), restaura persistentes asignaciones de letras de unidad y la impresora del usuario

almacenados en HKCU \ Red y HKCU \ Printers, respectivamente. La Figura 13-4 muestra el árbol de proceso como se ve en el monitor de procesos después

de un inicio de sesión (utilizando su capacidad de registro de arranque). Tenga en cuenta los procesos de SMS que están atenuados (es decir que tienen

desde abandonan). Estos se refieren a las copias engendradas que inicializan cada sesión.

CAPÍTULO 13 Inicio y cierre 526


FIGURA 13-4 árbol de procesos durante el inicio de sesión

ReadyBoot
Windows utiliza la captura previa de tiempo de arranque lógico estándar (descrito en el capítulo 10) si el sistema tiene menos de 700 MB de memoria, pero si

el sistema tiene 700 MB o más de memoria RAM, utiliza una caché en memoria RAM para optimizar el proceso de arranque . El tamaño de la memoria caché

depende de la RAM total disponible, pero es lo suficientemente grande como para crear una memoria caché razonable y sin embargo permitir que el sistema

de la memoria que necesita para arrancar sin problemas.

After every boot, the ReadyBoost service (see Chapter 10 for information on ReadyBoost) uses idle CPU time to calculate a
boot-time caching plan for the next boot. It analyzes file trace information from the five previous boots and identifies which
files were accessed and where they are located on disk. It stores the processed traces in %SystemRoot%\Prefetch\Readyboot
as .fx files and saves the caching plan under HKLM\SYSTEM\CurrentControlSet\Services\Rdyboost\Parameters in
REG_BINARY values named for internal disk volumes they refer to.

CAPÍTULO 13 Inicio y cierre 527


La memoria caché se implementa mediante el mismo controlador de dispositivo que implementa el almacenamiento en caché ReadyBoost

(Ecache.sys), pero la población de la caché es guiado por el plan de inicio almacenado previamente en el registro. Aunque la memoria caché de

arranque se comprime como el caché ReadyBoost, otra diferencia entre ReadyBoost y ReadyBoot gestión de la caché es que mientras que en el

modo ReadyBoot, la caché no está encriptada. El servicio ReadyBoost borra la memoria caché de 50 segundos después de que el servicio se

inicia, o si otras demandas de memoria justifiquen, y registra las estadísticas de la caché en HKLM \ SYSTEM \ CurrentControlSet \ Services \

Ecache \ Parameters \ ReadyBootStats, como se muestra en la Figura 13-5.

FIGURA 13-5 estadísticas ReadyBoot

Imágenes que se inician automáticamente


Además de los valores del registro UserInit y Shell en clave de Winlogon, hay muchas otras ubicaciones del registro y directorios que

comprueban los componentes del sistema por defecto y el proceso de puesta en marcha proceso automático durante los procesos de arranque y

de inicio de sesión. La utilidad Msconfig (% SystemRoot% \ System32 \ Msconfig.exe) muestra las imágenes configuradas por varios de los

lugares. La herramienta Autoruns, que se puede descargar de Sysinternals y que se muestra en la Figura 13-6, examina más lugares que Msconfig

y muestra más información acerca de las imágenes configuradas para ejecutarse automáticamente. Por defecto, Autoruns sólo muestra las

ubicaciones que están configurados para ejecutar automáticamente al menos una imagen, pero la selección de la entrada por ubicación vacía en

el menú de opciones incluyen causas Autoruns para mostrar todos los lugares que controle. El menú Opciones también tiene selecciones para

dirigir Autoruns para ocultar las entradas de Microsoft, pero siempre se debe combinar esta opción con Verificar firmas imagen; de lo contrario,

se arriesga a ocultar programas maliciosos que incluyen información falsa sobre su nombre de la empresa información.

CHAPTER 13 Startup and Shutdown 528


FIGURA 13-6 La herramienta de Sysinternals Autoruns disponibles

Experimento: Autoruns

Solución de problemas de arranque y problemas de inicio

En esta sección se presenta enfoques para resolver problemas que pueden ocurrir durante el proceso de inicio de Windows, como resultado de la

corrupción de disco duro, corrupción de archivos, archivos que faltan, y los errores de controladores de terceros. En primer lugar se describen tres modos

de recuperación de arranque de problemas de Windows: última buena conocida, de modo seguro, y Windows entorno de recuperación (WinRE). A

continuación, se presentan problemas comunes de arranque, sus causas, y enfoques para resolverlos. Las soluciones se refieren a durar un buen modo

conocido, seguro, WinRE, y otras herramientas que se incluyen con Windows.

CAPÍTULO 13 Inicio y cierre 529


Válida conocida
Última buena conocida (LKG) es un mecanismo útil para conseguir un sistema que se bloquea durante el proceso de arranque de nuevo a un

estado de inicio. Debido a que los valores de configuración del sistema se almacenan en HKLM \ SYSTEM \ CurrentControlSet \ Control y la

configuración del controlador y el servicio se almacena en HKLM \ SYSTEM \ CurrentControlSet \ Services, los cambios en estas partes del registro

pueden hacer que un sistema que no arranca. Por ejemplo, si se instala un controlador de dispositivo que tiene un error que bloquea el sistema

durante el arranque, puede pulsar la tecla F8 durante el arranque y seleccione la última buena conocida en el menú resultante. El sistema marca el

conjunto de control que utilizaba para arrancar el sistema como fallido estableciendo el valor Error de HKLM \ SYSTEM \ Select y luego cambia

HKLM \ SYSTEM \ Select \ actual al valor almacenado en HKLM \ SYSTEM \ Select \ LastKnownGood. También actualiza el enlace simbólico HKLM \

SYSTEM \ CurrentControlSet a punto en el conjunto de control buena conocida. Debido a que las llaves de su nuevo controlador no está presente

en la subclave Servicios del conjunto de control buena conocida, el sistema se iniciará con éxito.

Modo seguro
Tal vez la razón más común los sistemas Windows que no arranca es que se convierten en un controlador de dispositivo se bloquea la máquina durante la

secuencia de arranque. Debido a que las configuraciones de software o hardware pueden cambiar con el tiempo, los errores latentes pueden surgir en los

conductores en cualquier momento. Windows ofrece una manera para que un administrador para atacar el problema: en el arranque modo seguro. El modo

seguro es una configuración de arranque que consiste en el conjunto mínimo de controladores de dispositivos y servicios. Al confiar en sólo los

controladores y servicios que son necesarios para el arranque, Windows evita la carga de terceros y otros conductores no esenciales que podrían

bloquearse.

Cuando Windows se inicia, se pulsa la tecla F8 para entrar en un menú especial de arranque que contiene las opciones de arranque modo

seguro. Por lo general, elegir entre tres variaciones-safe mode: modo seguro, modo seguro con funciones de red, y el modo seguro con símbolo del

sistema. modo seguro estándar incluye el número mínimo de controladores y servicios necesarios para arrancar con éxito del dispositivo. Redes

habilitado el modo seguro agrega controladores de red y servicios a los conductores y los servicios que incluye el modo seguro estándar. Por

último, el modo seguro con símbolo del sistema es idéntico al modo seguro de Windows estándar, excepto que se ejecuta la aplicación símbolo del

sistema (cmd.exe) en vez de Explorador de Windows como el shell cuando el sistema activa el modo de interfaz gráfica de usuario.

Windows incluye un cuarto modo-Servicios de directorio Modo seguro que es diferente de los modos de seguridad de redes habilitadas

estándar y restaurar. Utiliza los servicios de directorio modo de restauración para arrancar el sistema en un modo en el servicio Active Directory de

un controlador de dominio está desconectado y sin abrir. Esto le permite realizar operaciones de reparación en la base de datos o restaurar desde

los medios de copia de seguridad. Todos los controladores y servicios, con la excepción del servicio de Active Directory, la carga durante una

restauración de servicios de directorio de arranque modo. En los casos en que no se puede iniciar sesión en un sistema debido a la corrupción de

base de datos de Active Directory, este modo le permite reparar los daños.

Cargando controlador en modo seguro

How does Windows know which device drivers and services are part of standard and networkingenabled safe mode? The
answer lies in the HKLM\SYSTEM\CurrentControlSet\Control\SafeBoot registry key. This key contains the Minimal and
Network subkeys. Each subkey contains more subkeys

CAPÍTULO 13 Inicio y cierre 531


que especifican los nombres de los controladores de dispositivos o servicios o de grupos de conductores. Por ejemplo, la subclave vga.sys identifica el

controlador de dispositivo de visualización VGA que la configuración de inicio incluye. El controlador de pantalla VGA ofrece servicios gráficos básicos para

cualquier adaptador de pantalla compatible con PC. El sistema utiliza este controlador como el controlador de pantalla en modo seguro en lugar de un

controlador que podrían aprovechar las características avanzadas de hardware de un adaptador, sino que también puede evitar que el sistema se inicie. Cada

subclave bajo la clave SafeBoot tiene un valor por defecto que describe lo que identifica a la subclave; El valor predeterminado de la subclave vga.sys es

“controlador”.

La subclave del sistema de archivos de arranque tiene como valor predeterminado “grupo de controladores”. Cuando los desarrolladores a diseñar

script de instalación de un controlador de dispositivo (.inf), pueden especificar que el controlador de dispositivo pertenece a un grupo de controladores.

Los grupos de conductores que un sistema define están enumerados en la lista de valores de la clave HKLM \ SYSTEM \ CurrentControlSet \ Control \

ServiceGroupOrder. Un desarrollador especifica un conductor como miembro de un grupo para indicar a Windows en qué momento durante el proceso

de arranque del conductor debe comenzar. El propósito principal del clave ServiceGroupOrder es definir el orden en el que se cargan grupos de

controladores; algunos tipos de controladores deben cargar antes o después de otros tipos de controladores. El valor por debajo de los asociados

Grupo de clave de registro de configuración de un conductor al conductor con un grupo.

llaves del conductor y configuración del servicio residen por debajo de HKLM \ SYSTEM \ CurrentControlSet \ Services. Si nos fijamos en esta clave,

encontrará la clave VgaSave para el controlador de dispositivo de visualización VGA, que se puede ver en el registro es un miembro del grupo de video

en Guardar. Cualquier controlador de sistema de archivos de Windows que requiere para el acceso a la unidad de sistema de Windows se cargan

automáticamente como parte del grupo de sistema de archivos de arranque. Otros controladores del sistema de archivos son parte del grupo de sistema

de archivos, que las configuraciones en modo seguro y estándar de redes habilitadas incluyen también.

Cuando se arranca en una configuración en modo seguro, el cargador de arranque (Winload) pasa un interruptor asociado al núcleo

(Ntoskrnl.exe) como un parámetro de línea de comandos, junto con cualquier interruptor que ha especificado en el BCD para la instalación 're

arranque. Si arranca en cualquier modo seguro, Winload establece el arranque seguro BCD opción con un valor que describe el tipo de modo

seguro que seleccione. Para el modo de seguridad estándar, conjuntos WINLOAD mínimo, y de modo seguro en red habilitado, se añade red. Winload

añade

mínimo y conjuntos safebootalternateshell de modo seguro con símbolo del sistema y dsrepair para dicho modo.

Los parámetros de Windows exploraciones del kernel de arranque en busca del modo seguro interruptores temprana durante el arranque,

durante el InitSafeBoot funcionar, y establece la variable interna InitSafeBootMode a un valor que refleja los interruptores el núcleo encuentra.

El kernel escribe el InitSafeBootMode valor al valor del registro HKLM \ SYSTEM \ CurrentControlSet \ Control \ SafeBoot \ opción \

ValorDeLaOpción de manera que los componentes de modo de usuario, como el SMC, puede determinar qué modo de arranque el sistema

está en. Además, si el sistema se inicia en la caja fuerte el modo con el símbolo del sistema, el núcleo establece el HKLM \ SYSTEM \

CurrentControlSet \ control \ SafeBoot \ opción \ UseAlternateShell valor a 1. el kernel registra los parámetros que Winload pasa a ella en el

valor HKLM \ SYSTEM \ CurrentControlSet \ control \ SystemStartOptions.

Cuando los controladores de dispositivo de cargas subsistema de E / S gestor del kernel que HKLM \ SYSTEM \ CurrentControlSet \

Services especifica, el gerente de E / S ejecuta la función IopLoadDriver. Cuando el administrador de Plug and Play detecta un nuevo

dispositivo y quiere cargar dinámicamente el controlador de dispositivo para el dispositivo detectado, el enchufe y el gerente Juego

ejecuta la función PipCallDriverAddDevice. Ambas funciones llaman a la función IopSafebootDriverLoad antes de cargar el controlador en

cuestión.

CHAPTER 13 Startup and Shutdown 531


IopSafebootDriverLoad comprueba el valor del InitSafeBootMode y determina si el conductor debe cargar. Por ejemplo, si el sistema se
inicia en modo seguro estándar, IopSafebootDriverLoad mira para el grupo del conductor, si el conductor tiene uno, bajo la subclave

mínima. Si IopSafebootDriverLoad encuentra el grupo del conductor en la lista, IopSafebootDriverLoad indica a su llamador que el

conductor pueda cargar. De otra manera,

IopSafebootDriverLoad busca el nombre del conductor bajo la subclave mínima. Si el nombre del conductor aparece como una subclave, el conductor

puede cargar. Si IopSafebootDriverLoad No puedo encontrar las subclaves del grupo conductor o el nombre del controlador, no se cargará el

conductor. Si el sistema se inicia en modo seguro en red habilitados,

IopSafebootDriverLoad realiza las búsquedas en la subclave red. Si el sistema no arranca en modo seguro, IopSafebootDriverLoad deja
toda la carga conductores.

Programas de usuario Aware Safe-Mode-

Cuando el administrador de control de servicios (SCM) componente de modo de usuario (que implementa Services.exe) inicializa durante el

proceso de arranque, el SCM comprueba el valor de HKLM \ SYSTEM \ CurrentControlSet \ Control \ SafeBoot \ opción \ ValorDeLaOpción

para determinar si el sistema está realizar un arranque en modo seguro. Si es así, el SMC refleja las acciones de IopSafebootDriverLoad. Aunque

el SMC procesa los servicios enumerados en HKLM \ SYSTEM \ CurrentControlSet \ Services, se carga únicamente servicios de la subclave

modo seguro apropiado especifica por su nombre. Puede encontrar más información sobre el proceso de inicialización SMC en la sección

“Servicios” en el Capítulo 4 de la parte 1.

Userinit, el componente que inicializa el entorno de un usuario cuando el usuario inicia sesión (% SystemRoot% \ System32 \ Userinit.exe),

es otro componente de modo de usuario que necesita saber si el sistema se inicia en modo seguro. Se comprueba el valor de HKLM \ SYSTEM

\ CurrentControlSet \ Control \ SafeBoot \ opción \ UseAlternateShell. Si se establece este valor, Userinit ejecuta el programa especificado como

el shell del usuario en el valor HKLM \ SYSTEM \ CurrentControlSet \ Control \ SafeBoot \ AlternateShell en lugar de ejecutar Explorer.exe.

Windows escribe el nombre del programa cmd.exe al valor AlternateShell durante la instalación, por lo que el comando de Windows que

aparezca la shell por defecto para el modo seguro con símbolo del sistema. A pesar de que el símbolo del sistema es la cáscara, puede escribir explorer.exe

en el símbolo del sistema para iniciar el Explorador de Windows, y se puede ejecutar ningún otro programa de interfaz gráfica de usuario

desde la línea de comandos también.

¿Cómo determina una aplicación si el sistema se inicia en modo seguro? Llamando a la de Windows GetSystemMetrics

(SM_CLEANBOOT) función. secuencias de comandos por lotes que necesitan para realizar ciertas operaciones cuando el sistema

arranca en modo seguro buscan la variable de entorno SAFEBOOT_OPTION debido a que el sistema define esta variable de entorno

sólo cuando el arranque en modo seguro.

CAPÍTULO 13 Inicio y cierre 532


El registro de inicio en modo seguro

Cuando dirige el sistema para arrancar en modo seguro, Winload entrega la cadena especificada por el

bootlog opción para el núcleo de Windows como un parámetro, junto con el parámetro que solicita el modo seguro. Cuando el núcleo se inicia,

comprueba la presencia de la bootlog Parámetro si o no cualquier parámetro-modo seguro está presente. Si el kernel detecta una cadena registro de

arranque, el kernel registra la acción del núcleo toma en cada controlador de dispositivo se considera para la carga. Por ejemplo, si IopSafebootDriverLoad

indica al gestor de E / S no cargar un controlador, las llamadas de E / S de dirigentes IopBootLog dejar constancia de que el conductor no estaba

cargada. Del mismo modo, después de IopLoadDriver carga con éxito un controlador que es parte de la configuración en modo seguro, IopLoadDriver llamadas

IopBootLog dejar constancia de que el conductor cargado. Puede examinar los registros de arranque para ver qué controladores de dispositivos son

parte de una configuración de arranque.

Dado que el núcleo quiere evitar modificar el disco hasta que se ejecuta Chkdsk, al final del proceso de arranque, IopBootLog no puede

simplemente volcar los mensajes en un archivo de registro. En lugar, IopBootLog registra los mensajes en el HKLM \ SYSTEM \ CurrentControlSet \ valor

del registro BootLog. A medida que el primer componente en modo de usuario para cargar durante un inicio, el Gestor de sesiones (% SystemRoot% \

System32 \ Smss.exe) realiza Chkdsk para garantizar la coherencia las unidades del sistema y después se completa la inicialización del registro

ejecutando el

NtInitializeRegistry llamada al sistema. El núcleo toma esta acción como una señal de que se puede abrir con seguridad un archivo de registro en el

disco, lo que lo hace, la invocación de la función IopCopyBootLogRegistryToFile. Esta función crea el archivo Ntbtlog.txt en el directorio de sistema de

Windows (% SystemRoot%) y se copia el contenido del valor del registro BootLog al archivo. IopCopyBootLogRegistryToFile También establece un

indicador para IopBootLog que le permite IopBootLog sabe que escribir directamente en el archivo de registro, en lugar de grabar mensajes en el

registro, es ahora bien. La siguiente salida muestra el contenido parciales de un registro de inicio de la muestra:

Microsoft (R) Windows (R) Versión 6.1 (Build 7601) 10 4 2012 09: 04: 53.375

Cargado conductor \ SystemRoot \ system32 \ ntkrnlpa.exe controlador cargado \

SystemRoot \ system32 \ hal.dll cargado conductor \ SystemRoot \ system32 \

kdcom.dll

Cargado conductor \ SystemRoot \ system32 \ mcupdate_GenuineIntel.dll controlador cargado \

SystemRoot \ system32 \ PSHED.dll

Cargado conductor \ SystemRoot \ system32 \ bootvid.dll controlador cargado \

SystemRoot \ system32 \ CLFS.SYS controlador cargado \ SystemRoot \ system32 \

CI.DLL

Loaded driver \SystemRoot\system32\drivers\Wdf01000.sys Loaded driver


\SystemRoot\system32\drivers\WDFLDR.SYS Loaded driver
\SystemRoot\system32\drivers\acpi.sys Loaded driver
\SystemRoot\system32\drivers\WMILIB.SYS Loaded driver
\SystemRoot\system32\drivers\msisadrv.sys Loaded driver
\SystemRoot\system32\drivers\pci.sys Loaded driver
\SystemRoot\system32\drivers\volmgr.sys Loaded driver
\SystemRoot\system32\DRIVERS\compbatt.sys Loaded driver
\SystemRoot\system32\DRIVERS\BATTC.SYS Loaded driver
\SystemRoot\System32\drivers\mountmgr.sys Loaded driver
\SystemRoot\system32\drivers\intelide.sys Loaded driver
\SystemRoot\system32\drivers\PCIIDEX.SYS Loaded driver
\SystemRoot\system32\DRIVERS\pciide.sys Loaded driver
\SystemRoot\System32\drivers\volmgrx.sys Loaded driver
\SystemRoot\system32\drivers\atapi.sys Loaded driver

CAPÍTULO 13 Inicio y cierre 533


\SystemRoot\system32\drivers\ataport.SYS Loaded driver

\SystemRoot\system32\drivers\fltmgr.sys

CHAPTER 13 Startup and Shutdown 534


Loaded driver \SystemRoot\system32\drivers\fileinfo.sys
...

Did not load driver @battery.inf,%acpi\acpi0003.devicedesc%;Microsoft AC Adapter Did not load driver
@battery.inf,%acpi\pnp0c0a.devicedesc%;Microsoft ACPI-Compliant Control Method Battery Did not load driver
@oem46.inf,%nvidia_g71.dev_0297.1%;NVIDIA GeForce Go 7950 GTX Did not load driver @oem5.inf,%nic_mpciex%;Intel(R) PRO/Wireless 3945ABG
Network Connection Did not load driver @netb57vx.inf,%bcm5750a1clnahkd%;Broadcom NetXtreme 57xx Gigabit Controller Did not load driver
@sdbus.inf,%pci\cc_080501.devicedesc%;SDA Standard Compliant SD Host Controller

...

Windows Recovery Environment (WinRE)


El modo seguro es un repliegue satisfactoria para los sistemas que no se podrá iniciar debido a un controlador de dispositivo se bloquea durante la

secuencia de arranque, pero en algunas situaciones un arranque en modo seguro no ayudará al arranque del sistema. Por ejemplo, si un conductor que

impide que el sistema de arranque es un miembro de un grupo de seguridad, botas de modo seguro se producirá un error. Otro ejemplo de una situación en

la que el modo seguro no ayudará al arranque del sistema es cuando un controlador de terceros, como por ejemplo un controlador de escáner de virus, que

se carga en el maletero evita que el sistema se inicie. (Cargador-empiezan los conductores de carga si el sistema se encuentra en modo seguro.) Otras

situaciones en las botas de modo seguro fallará son cuando un módulo del sistema o un archivo de controlador de dispositivo fundamental que forma parte

de una configuración de modo seguro se daña o cuando registro maestro de arranque de la unidad del sistema (MBR) está dañado.

Usted puede conseguir alrededor de estos problemas utilizando el Entorno de recuperación de Windows. El entorno de recuperación de Windows

proporciona una variedad de herramientas y tecnologías de reparación automatizadas para corregir automáticamente los problemas de inicio más

comunes. Incluye cinco herramientas principales:

■ Reparación inicial Una herramienta automatizada que detecta los problemas de inicio de Windows más comunes y

automáticamente intenta repararlos.

■ Restauración del sistema Permite restaurar a un punto de restauración anterior en los casos en los que no se puede arrancar la instalación

de Windows para hacerlo, incluso en modo seguro.

■ Recuperar la imagen del sistema Llamado Complete PC Restore, así como ASR (Sistema de Recuperación Automatizada), en las versiones

anteriores de Windows, esto restaura una instalación de Windows desde una copia de seguridad completa, no sólo un punto de

restauración, que no contenga todos los archivos dañados y la pérdida de datos.

■ Herramienta de diagnóstico de memoria de Windows Realiza las pruebas de diagnóstico de memoria que si hay signos de RAM defectuoso.

RAM defectuosa puede ser la razón para el núcleo y la aplicación se bloquea al azar y el comportamiento errático del sistema.

■ Símbolo del sistema Para los casos en que la solución de problemas o reparación requiere intervención manual (como la copia de archivos

desde otra unidad o manipular el BCD), se puede utilizar el símbolo del sistema para tener una concha llena de Windows que puede lanzar

casi cualquier programa de Windows (siempre y cuando las dependencias requeridas puede satisfacerse) -a diferencia de la consola de

recuperación en las versiones anteriores de Windows, que sólo se admite un conjunto limitado de comandos especializados.

CHAPTER 13 Startup and Shutdown 535


Al arrancar un sistema desde el CD de Windows o discos de arranque, la instalación de Windows le da la opción de instalar Windows o la

reparación de una instalación existente. Si decide reparar una instalación, el sistema muestra un cuadro de diálogo denominado Opciones de

recuperación del sistema, se muestra en la Figura 13-7.

FIGURA 13-7 El cuadro de diálogo Opciones de recuperación

Las versiones más recientes de Windows también instalan WinRE a una partición de recuperación en una instalación limpia del sistema.

En estos sistemas, puede acceder a WinRE mediante la opción F8 para acceder a las opciones avanzadas de inicio durante la ejecución

Bootmgr. Si ve una opción Reparar el equipo, la máquina dispone de una copia de disco duro local. Si por alguna razón el suyo no, puede

seguir las instrucciones en el blog de Microsoft WinRE ( http://blogs.msdn.com/winre ) Para instalar WinRE en el disco duro a sí mismo de los

medios de instalación de Windows y kit de instalación automatizada de Windows (AIK).

Si selecciona la primera opción, WinRE continuación se mostrará el cuadro de diálogo de la Figura 13-8, la cual tiene las diversas opciones de

recuperación. La elección de la segunda opción, por el contrario, es equivalente a la opción de recuperación de la imagen del sistema se muestra en la

Figura 13-8.

FIGURA 13-8 El cuadro de diálogo Opciones de recuperación del sistema avanzado

CAPÍTULO 13 Inicio y cierre 536


Además, si el sistema no ha podido arrancar como resultado de los archivos dañados o por cualquier otra razón que Winload puede entender,

que instruye Bootmgr para iniciar automáticamente WinRE en el próximo ciclo de reinicio. En lugar del cuadro de diálogo se muestra en la Figura

13-8, el entorno de recuperación se iniciará automáticamente la herramienta de reparación de inicio, que se muestra en la Figura 13-9.

FIGURA 13-9 La herramienta de reparación de inicio

At the end of the scan and repair cycle, the tool will automatically attempt to fix any damage found, including replacing
system files from the installation media. You can click the details link to see information about the damage that was fixed.
For example, in Figure 13-10, the Startup Repair tool fixed a damaged boot sector.

FIGURE 13-10 Details view of the Startup Repair tool

If the Startup Repair tool cannot automatically fix the damage, or if you cancel the operation, you’ll get a chance to try other
methods and the System Recovery Options dialog box will be displayed.

CAPÍTULO 13 Inicio y cierre 537


Boot Status File
Windows uses a boot status file (% SystemRoot%\Bootstat.dat) to record the fact that it has progressed through
various stages of the system life cycle, including boot and shutdown. This allows the Boot Manager, Windows
loader, and the Startup Repair tool to detect abnormal shutdown or a failure to shut down cleanly and offer the user
recovery and diagnostic boot options, like Last Known Good and Safe Mode. This binary file contains information
through which the system reports the success of the following phases of the system life cycle:

■ Boot (the definition of a successful boot is the same as the one used for determining Last Known Good status,
which was described earlier)

■ Shutdown

■ Resume from hibernate or suspend

El archivo de estado de arranque también indica si un problema se detectó la última vez que el usuario ha intentado arrancar el sistema

operativo y las opciones de recuperación se muestra, lo que indica que el usuario ha tenido conocimiento del problema y las medidas

adoptadas. Runtime Library API (RTL) en Ntdll.dll contiene las interfaces privadas que Windows utiliza para leer y escribir en el archivo. Al

igual que el BCD, no puede ser editada por los usuarios.

Solución de problemas comunes de arranque


En esta sección se describen los problemas que pueden ocurrir durante el proceso de arranque, describiendo sus síntomas, lo que les ha causado, y

se acerca a la solución de ellos. Para ayudar a localizar un problema que se puede encontrar, que están organizados de acuerdo con el lugar en el

maletero en el que se producen. Tenga en cuenta que para la mayoría de estos problemas, debe ser capaz de arrancar en la recuperación del entorno

Windows y permitir que la herramienta de reparación de inicio para analizar su sistema y llevar a cabo cualquier tarea de reparación automatizadas.

MBR corrupción
■ Los síntomas Un sistema que tiene registro de inicio maestro corrupción (MBR) ejecutará el encendido del BIOS prueba (POST),

pantalla de información de la versión del BIOS o la marca OEM, cambie a una pantalla en negro, y luego colgar. Dependiendo del

tipo de corrupción MBR ha experimentado, es posible que aparezca uno de los siguientes mensajes: “tabla de partición no válida”,

“cargar el sistema operativo de error”, o “sistema operativo no se encuentra”.

■ Porque El MBR puede corromperse debido a errores de disco duro, el disco está dañado como resultado de un error del conductor

mientras se ejecuta Windows, o revolver intencional como resultado de un virus.

■ Resolución Arrancar en el entorno de recuperación de Windows, seleccione la opción Símbolo del sistema, y
​luego ejecutar el bootrec / fixmbr mando. Este comando reemplaza el código ejecutable en el MBR.

CHAPTER 13 Startup and Shutdown 538


La corrupción del sector de arranque

■ Los síntomas la corrupción del sector de arranque puede parecerse a la corrupción MBR, donde el sistema se bloquea después de la POST del

BIOS en una pantalla en negro, o es posible que vea los mensajes “Se ha producido un error de lectura de disco”, “autoarranque no se

encuentra”, o “BOOTMGR comprimido” que aparece en una pantalla en negro.

■ Porque El sector de arranque puede corromperse debido a errores de disco duro, el disco está dañado como resultado de un error del

conductor mientras se ejecuta Windows, o revolver intencional como resultado de un virus.

■ Resolución Arrancar en el entorno de recuperación de Windows, seleccione la opción Símbolo del sistema, y ​luego
ejecutar el bootrec / fixboot mando. Este comando vuelve a escribir el sector de arranque del volumen que especifique.
Usted debe ejecutar el comando tanto en el volumen de arranque del sistema y si son diferentes.

La configuración errónea BCD

■ Síntoma After BIOS POST, you’ll see a message that begins “Windows could not start because of a computer
disk hardware configuration problem”, “Could not read from selected boot disk”, or “Check boot path and disk
hardware”.

■ Cause The BCD has been deleted, become corrupt, or no longer references the boot volume because the
addition of a partition has changed the name of the volume.

■ Resolution Boot into the Windows Recovery Environment, choose the Command Prompt option, and then execute the bootrec
/scanos and bootrec /rebuildbcd comandos. Estos comandos escanear cada volumen en busca de instalaciones de
Windows. Cuando descubren una instalación, se le preguntará si deben añadirlo a la BCD como una opción de arranque
y qué nombre se debe mostrar para la instalación en el menú de arranque. Para otros tipos de daños BCDrelated,
también se puede utilizar Bcdedit.exe para realizar tareas tales como la construcción de un nuevo BCD desde cero o
clonar una buena copia existente.

La corrupción de archivos del sistema

■ Los síntomas Hay varias formas de la corrupción de archivos del sistema -que incluyen los ejecutables, controladores o DLL-puede

manifestarse. Una forma de hacerlo es con un mensaje en una pantalla en negro después de la POST del BIOS que dice: “Windows no puede

iniciarse porque el siguiente archivo falta o está dañado”, seguido del nombre de un archivo y una solicitud para volver a instalar el archivo. Otra

forma de hacerlo es con un accidente de pantalla azul durante el arranque con el texto, “STOP: 0xc0000135 {No se puede encontrar el

componente}”.

■ causas El volumen en el que se encuentra un archivo de sistema está dañado o uno o más archivos de sistema se han
eliminado o dañado.

■ Resolución Arrancar en el entorno de recuperación de Windows, seleccione la opción Símbolo del sistema, y ​luego ejecutar el chkdsk mando.

Chkdsk intentará reparar daños en el volumen. Si Chkdsk no reporta ningún problema, obtener una copia de seguridad del archivo de

sistema en cuestión. Un lugar para comprobar es en la carpeta% SystemRoot% \ winsxs \ directorio de copia de seguridad, en el que

Windows coloca copias de todos los archivos de sistema para el acceso de Protección de recursos de Windows. (Véase el recuadro

“Protección de recursos de Windows”.) Si no puede encontrar una copia del archivo de allí, ver si

CAPÍTULO 13 Inicio y cierre 539


se puede encontrar una copia de otro sistema en la red. Tenga en cuenta que el archivo de copia de seguridad debe ser del

mismo service pack o revisión que el archivo que va a sustituir.

En algunos casos, varios archivos del sistema se borran o se corrompen, por lo que el proceso de reparación puede implicar múltiples reinicios y

errores de inicio como usted repara los archivos de uno en uno. Si usted cree que la corrupción de archivos del sistema sea extensa, se debe

considerar la restauración del sistema desde una imagen de copia de seguridad, como uno generado por Windows Backup and Restore o desde un

punto de restauración.

Al ejecutar copia de seguridad y restauración (que se encuentra en la carpeta de mantenimiento en el menú Inicio), se puede generar una imagen de

recuperación del sistema de imágenes, que incluye todos los archivos en los volúmenes de sistema y de inicio, además de un disquete en el que se

almacena información sobre el discos y volúmenes del sistema. Para restaurar un sistema a partir de una imagen así, inicie desde los medios de instalación

de Windows y seleccione la opción adecuada cuando se le solicite (o utilizar el entorno de recuperación mostrado anteriormente).

Si usted no tiene una copia de seguridad desde el que restaurar, es un último recurso para ejecutar una reparación de Windows: Arranque desde el

medio de instalación de Windows, y siga el asistente como si se va a realizar una nueva instalación. El asistente le preguntará si desea realizar una

reparación o instalación nueva. Cuando usted le dice que desea reparar, el programa de instalación vuelve a instalar todos los archivos del sistema,

dejando sus datos de aplicaciones y configuraciones de registro intacto.

Protección de recursos de Windows

Para preservar la integridad de los muchos componentes que intervienen en el proceso de arranque, así como otros archivos de Windows,

bibliotecas y aplicaciones críticas, Windows implementa una tecnología llamada

Protección de recursos de Windows ( WRP). WRP is implemented through access control lists (ACLs) that protect critical
system files on the machine. It is also exposed through an API (located in %SystemRoot%\System32\Sfc.dll and
%SystemRoot%\System32\Sfc_os.dll) that can be accessed by the Sfc.exe utility to manually check a file for
corruption and restore it.

WRP también protegerá carpetas críticos enteros, si es necesario, incluso de bloqueo hacia abajo la carpeta para que sea inaccesible

por los administradores (sin modificar la lista de control de acceso en la carpeta). La única forma compatible para modificar archivos

protegidos WRP es a través del servicio Windows instalador de módulos, que puede ejecutarse en la cuenta TrustedInstaller. Este servicio

se utiliza para la instalación de parches, paquetes de servicios, revisiones, y Windows Update. Esta cuenta tiene acceso a los distintos

archivos protegidos y es de confianza por el sistema (como su nombre lo indica) para modificar los archivos críticos y reemplazarlos. WRP

también protege las claves críticas de registro, y puede incluso bloquear árboles enteros del registro si se consideran todos los valores y

subclaves a ser crítico.

WRP establece la ACL en archivos, directorios, claves protegidas o registro de tal manera que sólo la cuenta TrustedInstaller es capaz de

modificar o eliminar estos archivos. Los desarrolladores de aplicaciones pueden utilizar el SfcIsFileProtected o SfcIsKeyProtected API para

comprobar si un archivo o clave del registro está bloqueado.

Para compatibilidad hacia atrás, ciertos instaladores se consideran bien conocido -Una aplicación

calzo compatibilidad existe que suprimirá la “acceso denegado” error que ciertos instaladores recibirían al intentar
modificar los recursos protegidos WRP. En su lugar, el instalador recibe un código falso “éxito”, pero la modificación no
se hace. Esta virtualización es similar al Usuario

CAPÍTULO 13 Inicio y cierre 540


conjunto de valores.

Sistema Colmena Corrupción

■ Los síntomas Si la sección del Registro del sistema (que se analiza junto con archivos de sección de la sección “El Registro” en el

Capítulo 4 de la parte 1) falta o está dañada, Winload mostrará el mensaje “Windows no puede iniciarse porque el siguiente archivo
conecte
falta entran
o está en esta
dañado : \ categoría
Windowsy\puede aparecer
System32 como\ un
\ Config accidente
System”, ende pantalla
una azul
pantalla eno negro
un bloqueo, compatible
después con el requestedExecutionLevel
de la prueba POST del BIOS.

■ causas La sección del Registro del sistema, que contiene información de configuración necesaria para que el sistema
arranque, se ha dañado o se ha eliminado.

■ Resolución Arrancar en el entorno de recuperación de Windows, seleccione la opción Símbolo del sistema, y ​luego ejecutar el chkdsk mando.

Si el problema no se corrige, obtener una copia de seguridad de la sección del Registro del sistema. Windows hace copias del registro

de las colmenas cada 12 horas (manteniendo la copia inmediatamente anterior con una extensión .OLD) en una carpeta llamada%

SystemRoot% \ System32 \ Config \ regback, por lo que copiar el archivo con el nombre de sistema de% SystemRoot% \ System32 \

Config .

Si Restaurar sistema está activada (Restaurar sistema se discute en el Capítulo 12, “Sistema de archivos”), a menudo se puede obtener una copia

de seguridad más reciente de las secciones del registro, incluyendo el subárbol del sistema, desde el más reciente punto de restauración. Se puede

elegir Restaurar sistema desde el entorno de recuperación de Windows para restaurar el registro desde el último punto de restauración.

Crash Screen post-Splash o Cuelgue


■ Los síntomas Los problemas que se producen después de que aparezca la pantalla de bienvenida de Windows, aparece el escritorio, o que se

CAPÍTULO 13 Inicio y cierre 541


donde todo el sistema es congelado o el cursor del ratón rastrea el ratón, pero el sistema es de otra manera que no

responde.

■ causas Estos problemas son casi siempre el resultado de un error en un controlador de dispositivo, pero a veces pueden ser el resultado de

la corrupción de una sección del Registro que no sea el subárbol del sistema.

■ Resolución Puede tomar varias medidas para intentar corregir el problema. Lo primero que se debe tratar es la última configuración

buena conocida. Última buena conocida (LKG), que se describe anteriormente en este capítulo y en la sección “Servicios” del capítulo

4 de la parte 1, consiste en el conjunto de control de registro que se utilizó por última para arrancar el sistema con éxito. Debido a que

un conjunto de control incluye la configuración del sistema de núcleo y la base de datos de registro del controlador de dispositivos y

servicios, usando una versión que no refleja cambios o controladores o servicios recién instalados podría evitar la fuente del

problema. Se accede a la última buena conocida pulsando la tecla F8 al inicio del proceso de arranque para acceder al mismo menú

desde el que puede arrancar en modo seguro.

Como se ha dicho anteriormente en este capítulo, cuando se arranca en LKG, el sistema guarda el conjunto de control que está evitando y lo etiqueta

como el ha fallado establece control. Puede aprovechar el control fallido establecido en los casos en LKG hace un arranque del sistema para determinar lo

que estaba causando que el sistema no podrá arrancar mediante la exportación de los contenidos del conjunto de controles actual de la bota éxito y el

fracaso de ajuste de control de

. archivos reg. Esto se hace mediante el uso de la funcionalidad de exportación de Regedit, el cual se accede en el menú Archivo:

1. Ejecutar Regedit y seleccione HKLM \ SYSTEM \ CurrentControlSet.

2. Seleccione Exportar en el menú archivo y guardar en un archivo llamado good.reg.

3. Abrir HKLM \ SYSTEM \ Select, leer el valor de Error y seleccione la subclave denominada HKLM \

Control de sistema XXX, dónde XXX es el valor de Error.

4. Exportar los contenidos del control establecido en bad.reg.

5. Uso de WordPad (que se encuentra bajo Accesorios en el menú Inicio) a nivel mundial reemplazar todo

casos de CurrentControlSet en good.reg con ControlSet.

6. Utilice WordPad para cambiar todas las instancias de control XXX ( reemplazando XXX con el valor de la

conjunto de control no) en bad.reg con ControlSet.

7. Ejecutar Windiff de las herramientas de soporte, y comparar los dos archivos.

Las diferencias entre un conjunto de control fallido y una muy buena pueden ser numerosas, por lo que debe centrar su examen en cambios

bajo la subclave de control, así como bajo los parámetros de subclaves de controladores y servicios registrados en la subclave Servicios. Ignorar

los cambios realizados en las subclaves de enumeración de claves de registro de conductor en la rama Servicios del conjunto de control.

Si el problema que estás experimentando es causado por un conductor o servicio que estaba presente en el sistema, ya que antes del

último inicio correcto, LKG no hará que el sistema pueda arrancar. Del mismo modo, si un ajuste de configuración problemática cambió fuera

del conjunto de control o se hizo antes del último inicio correcto, LKG no ayudará. En esos casos, la siguiente opción de probar es el modo

seguro (descrito anteriormente en esta sección). Si el sistema se inicia con éxito en modo seguro y que conoce lo particular, conductor estaba

causando el inicio normal falle, puede desactivar el controlador mediante el Administrador de dispositivos (accesible desde

CAPÍTULO 13 Inicio y cierre 541


el elemento de panel de control del sistema). Para ello, seleccione el controlador en cuestión y elija Desactivar en el menú Acción. Si ha actualizado

recientemente el conductor, y cree que la actualización introdujo un error, se puede optar por hacer retroceder el conductor a su versión anterior en su

lugar, también con el Administrador de dispositivos. Para restaurar un controlador para su versión anterior, haga doble clic en el dispositivo para abrir

su cuadro de diálogo Propiedades y haga clic en Volver al controlador en la ficha Controlador.

En los sistemas con Restaurar sistema está habilitado, una opción cuando LKG no es para hacer retroceder todo el estado del sistema (según la

definición de la función Restaurar sistema) a un punto anterior en el tiempo. El modo seguro detecta la existencia de puntos de restauración, y cuando

están presentes le preguntará si desea iniciar una sesión en la instalación para llevar a cabo un diagnóstico manual y reparar o iniciar el Asistente para

Restaurar sistema. El uso de la función Restaurar sistema para que un sistema pueda arrancar de nuevo es atractivo cuando se conoce la causa de un

problema y desea que la reparación sea automático o cuando no se sabe la causa, pero no quieren invertir tiempo para determinar la causa.

Si Restaurar sistema no es una opción o si desea determinar la causa de un accidente durante el arranque normal y el sistema ejecuta

correctamente en modo seguro, intento de obtener un registro de inicio de la bota sin éxito al presionar F8 para acceder al menú de arranque especial y

elegir la opción de registro de arranque. Como se ha descrito anteriormente en este capítulo, el Gestor de sesiones (% SystemRoot% \ System32 \

Smss.exe) guarda un registro de la bota que incluye un registro de controladores de dispositivos que el sistema de carga y se optó por no cargar a%

SystemRoot% \ Ntbtlog.txt , por lo que obtener un registro de arranque si el accidente se produce después de colgar o Session Manager inicializa. Al

reiniciar en modo seguro, el sistema añade nuevas entradas en el registro de arranque existente. Extraer las partes del archivo de registro que se

refieren a las botas de tentativa y de modo seguro fallidos en archivos separados. Eliminan las líneas que contienen el texto “no se cargó controlador”,

y luego compararlos con una herramienta de comparación de texto como Windiff. Uno por uno, deshabilitar los controladores que cargan durante el

arranque normal pero no en el modo de arranque seguro hasta que el sistema se inicia de nuevo con éxito. (A continuación, volver a activar los

conductores que no eran responsables del problema.)

Si no puede obtener un registro de inicio del arranque normal (por ejemplo, debido a que el sistema se bloquea antes Session Manager inicializa), si

el sistema también se bloquea durante el arranque en modo seguro, o si una comparación de registros de arranque de la normal y seguro botas -mode no

revelaron diferencias significativas (por ejemplo, cuando el conductor que está causando fallos en el arranque normal se inicia después de Session

Manager inicializa), la siguiente herramienta para probar es el comprobador de controladores combinado con el análisis de volcado. (Véase el Capítulo

14, “Análisis de volcado” para obtener más información sobre estos dos temas.)

Apagar

Si alguien se registra en un proceso y se inicia el cierre llamando a la de Windows ExitWindowsEx


función, se envía un mensaje a Csrss de esa sesión dándole instrucciones para realizar el cierre. Csrss a su vez se hace pasar por la persona que

llama y envía un mensaje RPC a Winlogon, diciéndole que realizar un apagado del sistema. Winlogon continuación, se hace pasar por el momento,

ha iniciado la sesión de usuario (que podría o no tener el mismo contexto de seguridad como el usuario que inició el apagado del sistema) y las

llamadas ExitWindowsEx con

CAPÍTULO 13 Inicio y cierre 542


algunos indicadores internos especiales. Una vez más esta llamada hace que un mensaje que se enviará al proceso Csrss dentro de dicho período de sesiones,

solicitando el cierre del sistema.

Esta vez, Csrss ve que la solicitud es de Winlogon y recorre todos los procesos en la sesión de inicio de sesión del usuario

interactiva (de nuevo, no el usuario que solicitó un apagado) en orden inverso a su el nivel de apagado. Un proceso puede especificar un

nivel de apagado, lo que indica que el sistema cuando se quiere salir con respecto a otros procesos, llamando SetProcessShutdownParameters.

los niveles de cierre válidos están en el rango de 0 a 1023, y el nivel por defecto es 640. Explorer, por ejemplo, establece su nivel de

cierre a 2 y el Administrador de tareas especifica 1. Para cada proceso que posee una ventana de nivel superior, Csrss envía el

WM_QUERYENDSESSION mensaje a cada hilo en el proceso que tiene un bucle de mensajes de Windows. Si el hilo devuelve TRUE, el

cierre del sistema pueda proceder. Csrss continuación, envía el mensaje WM_ENDSESSION Windows para el hilo que solicitarlo para

salir. Csrss espera el número de segundos definidos en HKCU \ Control Panel \ Desktop \ HungAppTimeout para el hilo para salir. (El

valor por defecto es de 5.000 milisegundos.)

Si el hilo no sale antes del tiempo de espera, Csrss desvanece la pantalla y muestra la pantalla hungprogram muestra en la figura

13-11. (Puede desactivar esta pantalla, creando el valor del registro HKCU \ Control Panel \ Desktop \ AutoEndTasks y se establece en 1.)

Esta pantalla indica qué programas se están ejecutando actualmente y, si está disponible, su estado actual. Windows indica qué

programa no se está cerrando de manera oportuna y le da al usuario la posibilidad de elegir matar el proceso o abortar el apagado. (No

hay tiempo de espera en esta pantalla, lo que significa que una solicitud de cierre podría esperar para siempre en este punto.) Además,

las aplicaciones de terceros pueden agregar su propia información específica sobre el estado, por ejemplo, un producto de virtualización

podría mostrar el número de forma activa la ejecución de máquinas virtuales.

FIGURA 13-11 pantalla del programa Hung

CAPÍTULO 13 Inicio y cierre 543


Experimento: Testigos de la HungAppTimeout
Se puede ver el uso del valor del Registro HungAppTimeout ejecutando el Bloc de notas, introducir texto en su editor, y después

de cerrar la sesión. Después de la cantidad de tiempo especificado por el valor del registro HungAppTimeout ha expirado,

CSRSS.exe presenta un mensaje que le pregunta si desea o no que al finalizar el proceso de Bloc de notas, que no ha salido

porque está esperando a que diga que si o no a guardar el texto introducido en un archivo. Si hace clic en el botón Cancelar,

CSRSS.exe aborta el cierre.

Como un segundo experimento, si intenta cerrar de nuevo (con la caja de diálogo de consulta de Bloc de notas todavía abierto), el Bloc de

notas mostrará su propio cuadro de mensaje para informarle de que el cierre no puede proceder limpiamente. Sin embargo, este cuadro de

diálogo no es más que un mensaje informativo para ayudar a los usuarios- CSRSS.exe seguirá considerando que el Bloc de notas está

“colgado” y mostrar la interfaz de usuario para terminar los procesos que no responden.

Si el hilo hace la salida antes de que el tiempo de espera, Csrss continúa enviando los mensajes pares

WM_QUERYENDSESSION / WM_ENDSESSION a los otros hilos en el proceso que poseen ventanas. Una vez que todos los hilos que

poseen ventanas en el proceso han salido, Csrss termina el proceso y pasa al siguiente proceso en la sesión interactiva.

Si Csrss encuentra una aplicación de consola, se invoca el controlador de control de consola mediante el envío del evento CTRL_

LOGOFF_EVENT. (Sólo se mostrarán los procesos de servicio reciban el evento CTRL_SHUTDOWN_EVENT al cerrar el sistema.) Si el manejador

devuelve FALSO, Csrss mata el proceso. Si el manejador devuelve TRUE o no responde por el número de segundos definidos por HKCU \ Control

Panel \ Desktop \ WaitToKillAppTimeout (el valor predeterminado es de 20.000 milisegundos), Csrss muestra la pantalla-programa colgado muestra

en la figura 13-11.

A continuación, Winlogon llama ExitWindowsEx tener Csrss terminar los procesos COM que forman parte de la sesión de usuario

interactiva.

En este punto, todos los procesos en la sesión de usuario interactiva han sido terminados. llamadas próximos wininit ExitWindowsEx, que

en esta ocasión se ejecuta en el contexto de proceso del sistema. Esto hace que Wininit para enviar un mensaje a la parte Csrss de la sesión

0, donde viven los servicios. Csrss luego mira a todos los procesos pertenecientes al contexto del sistema y realiza y envía los mensajes

WM_QUERYENDSESSION / WM_ENDSESSION a las roscas de la GUI (como antes). En lugar de enviar CTRL_LOGOFF_EVENT, sin embargo,

se envía a la consola CTRL_ SHUTDOWN_EVENT aplicaciones que se han registrado los manipuladores de control. Tenga en cuenta que el

SMC es un programa de consola que no se registra un controlador de control. Cuando

CAPÍTULO 13 Inicio y cierre 544


recibe la solicitud de cierre, que a su vez envía el mensaje de control de servicio de desactivación de todos los servicios que se registraron para

notificación de cierre. Para más detalles sobre el apagado de servicios (tales como el tiempo de espera de apagado Csrss utiliza para el SMC),

consulte la sección “Servicios” en el Capítulo 4 de la parte 1.

Aunque Csrss realiza los mismos tiempos de espera como cuando fue terminando los procesos de usuario, que no muestra ningún cuadro de diálogo

y no mata a todos los procesos. (Los valores del registro de los tiempos de espera de proceso del sistema se toman a partir del perfil de usuario

predeterminado.) Estos tiempos de espera simplemente permitir que el sistema procesa una oportunidad de limpiar y salida antes de que el sistema se

apaga. Por lo tanto, muchos procesos del sistema son, de hecho, aún en marcha cuando el sistema se apaga, tales como SMS, Wininit, Servicios y LSASS.

Una vez Csrss ha terminado su sistema de pases notifica procesos que el sistema se está cerrando, Winlogon finaliza el
proceso de apagado llamando a la función ejecutiva subsistema NtShutdownSystem.
Esta función llama a la función PoSetSystemPowerState para orquestar el cierre de los conductores y el resto de los subsistemas

ejecutivas (Plug and Play manager, gestor de energía, ejecutivo, gestor de E / S, administrador de configuración, y administrador de

memoria).

Por ejemplo, PoSetSystemPowerState llama al gestor de E / S para enviar paquetes de apagado de E / S a todos los controladores de dispositivos que han

solicitado notificación de cierre. Esta acción da controladores de dispositivos oportunidad para llevar a cabo ningún proceso especial de su dispositivo

podría requerir antes de que Windows sale. Las pilas de subprocesos de trabajo se intercambian en, el gestor de configuración elimina todos los datos de

registro modificados en el disco, y el administrador de memoria escribe todas las páginas que contienen datos de archivos modificados de nuevo a sus

respectivos archivos. Si la opción de borrar el archivo de paginación al apagar el equipo está activado, el administrador de memoria borra el archivo de

paginación en este momento. El gestor de E / S se llama una segunda vez para informar a los controladores del sistema de archivos que el sistema se está

cerrando. apagado del sistema termina en el administrador de energía. La acción del administrador de energía toma depende de si el usuario ha especificado

una parada, un reinicio, o una baja potencia.

Conclusión

En este capítulo, hemos examinado los pasos detallados que comporta el inicio y el cierre de Windows (ambos con normalidad y en los

casos de error). Hemos examinado la estructura general de Windows y los mecanismos básicos del sistema que recibe el sistema

funcionando, siga funcionando, y finalmente cerrarlo. El último capítulo de este libro explica cómo tratar con un tipo inusual de

apagado: los fallos del sistema.

CAPÍTULO 13 Inicio y cierre 545


CAPÍTULO 13 Inicio y cierre 546
CAPÍTULO 8 Sistema de I / O 547