One of the first things that I do upon receiving a new Windows computer is I create my own custom boot menu that shows up every time I boot my machine.
This is especially handy when you suspect a virus or a failed installation that corrupted your registry; you can reboot into safe mode and scan for it. It is easy to create a custom boot menu for yourself, and it is so worth it.
Jump ahead: 1, 2, 3, 4, 5, 6, 7, 8, 9
Here's a useful windows batch script that removes the non-editable attributes, creates a backup copy, opens notepad to edit boot.ini, and when notepad is closed it re-attribs the data.
Save it in path like eboot.bat
@ECHO OFF && mode CON COLS=150 LINES=60 && color 0F && cls && setlocal if NOT DEFINED USERNAME exit /B && if /i NOT "%USERNAME%" == "life" ( if NOT "%USERNAME%" == "administrator" exit /B ) set BF=%SYSTEMDRIVE%boot.ini title Editing Boot.ini attrib -H -R -S -A "%BF%" attrib -H -R -A "%BF%.bak" && type "%BF%" >> "%BF%.bak" && attrib +H +R +A "%BF%.bak" start /b /wait notepad "%BF%" attrib +H +R +S +A "%BF%"
Windows NT has found only %dK of low memory. 512k of low memory is required to run Windows NT. You may need to upgrade your computer or run a configuration program provided by the manufacturer. Windows NT has not found enough extended memory. 7Mb of extended memory is required to run Windows NT. You may need to upgrade your computer or run a configuration program provided by the manufacturer. Memory Map: %lx - %lx NTLDR is corrupt. The system cannot boot. NTLDR is corrupt. The system cannot boot. ax:%x dx:%x cx:%x bx:%x es:%x TRAP %lx DEBUG TRAP ================== DOUBLE FAULT ================================ ===== STACK SEGMENT OVERRUN or NOT PRESENT FAULT =============== ============== GENERAL PROTECTION FAULT ======================== =================== PAGE FAULT ================================= ** At linear address %lx ===================== EXCEPTION ================================ tr=%x cr0=%lx cr2=%lx cr3=%lx gdt limit=%x base=%lx idt limit=%x base=%lx cs:eip=%x:%lx ss:esp=%x:%lx errcode=%x eax=%lx ebx=%lx ecx=%lx edx=%lx ds=%x es=%x edi=%lx esi=%lx ebp=%lx cr0=%lx fs=%x gs=%x flags=%lx IntDis TrapEn TrapDis Link %x Esp0 %x SS0 %x Esp1 %lx Cr3 %lx Eip %lx Eflg %lx Eax %lx Ebx %lx Ecx %lx Edx %lx Esp %lx Ebp %lx Esi %lx Edi %lx ES %x CS %x SS %x DS %x FS %x GS %x Ldt %x !This program cannot be run in DOS mode. `PAGELK `.rdata PAGEDATA PAGECONS INITCONS NOLEGACY ntdetect.com ntdetect.com i386ntdetect.com InitializeMemory failed %lx multi(0)disk(0)rdisk(0)partition(1) multi(0)disk(0)rdisk(0)partition(%u) Rebooting in 5 seconds... Couldn't initialize I/O Couldn't initialize memory Couldn't allocate memory for TSS Couldn't allocate memory for PCR multi(0)disk(0)rdisk(0)partition(0) multi(0)disk(0)cdrom(%u) ramdisk(0) multi(0)disk(0)fdisk(0) *** Assertion failed %s in %s line %d LoaderMemoryData descriptor! ERROR - FwAllocateHeapPermanent couldn't find the Out of permanent heap! Out of temporary heap! GDT - %lx (%x) IDT - %lx (%x) ERROR - GDT and IDT are not contiguous! ERROR - MempSetupPaging(%lx, %lx) failed MempSetDescriptorRegion failed %lx PXENV_GET_BINL_INFO(BINLREPLY) failed with %x PXENV_GET_BINL_INFO(DHCPACK) failed with %x ERROR - Unimplemented Firmware Vector called (FID %lx) LastKnownGood multi(0)disk(0)rdisk(1)partition(0) multi(0)disk(0)rdisk(1)partition(%d) multi(0)disk(0)rdisk(1)partition(1) multi(0)disk(0)rdisk(0)partition(%d) multi(0)disk(0)fdisk(1)partition(0) multi(0)disk(0)fdisk(0)partition(0) BlFindDiskSignature found no match for %s multi(xxx)disk(xxx)rdisk(xxx) NTBOOTDD.SYS NTBOOTDD.SYS restart Restart the system immediately. ? Display this message. Invalid Command, use '?' for help. restart 5.1.2600.5512 HalGetBusData: SlotDataSize > TotalDataSize HalGetBusData: KeFindConfigurationEntry failed scsi(%d)cdrom(%d)fdisk(%d) scsi(%d)disk(%d)rdisk(%d) scsi(%d)disk(%d)fdisk(%d) scsi(%1d) BuildRequest: Write Command BuildRequest: Read Command StartUnit: Enter routine InterpretSenseInfo: Request sense info not valid InterpretSenseInfo: Media changed InterpretSenseInfo: Bus reset InterpretSenseInfo: Unit attention InterpretSenseInfo: Media write protected InterpretSenseInfo: Command aborted InterpretSenseInfo: Unrecognized sense code InterpretSenseInfo: Illegal command InterpretSenseInfo: Illegal block address InterpretSenseInfo: Invalid LUN InterpretSenseInfo: Music area InterpretSenseInfo: Data area InterpretSenseInfo: Volume overflow InterpretSenseInfo: Illegal SCSI request InterpretSenseInfo: No specific sense key InterpretSenseInfo: In process of becoming ready InterpretSenseInfo: Manual intervention required InterpretSenseInfo: Format in progress InterpretSenseInfo: Initializing command required InterpretSenseInfo: Lun not ready InterpretSenseInfo: Waiting for device InterpretSenseInfo: Device not ready InterpretSenseInfo: Bad media InterpretSenseInfo: Hardware error InterpretSenseInfo: Additional sense code qualifier is %x InterpretSenseInfo: Additional sense code is %x InterpretSenseInfo: Sense key is %x InterpretSenseInfo: Error code is %x ScsiDiskFilterBad: Found Hitachi CDR-1750S. HITACHI CDR-3650/1650S HITACHI CDR-1750S FilterBad: Enter routine FindScsiDevices: Vendor string is %s FindScsiDevices: Vendor string is %.24s FindScsiDevices: Inquiry data at %lx SCSI ReadDriveCapacity: Number of Sectors is %d SCSI ReadDriveCapacity: Sector size is %d SCSI ReadCapacity: Enter routine partition scsi(0) signature IoAllocateAdapterChannel: Out of map registers. IoAllocateAdapterChannel: Called while adapter in use. bootstat.dat hiberfil.sys NTFS EL TORITO SPECIFICATION BOOTFONT.BIN BOOTFONT.BIN multi(0)video(0)monitor(0) multi(0)key(0)keyboard(0) eisa(0)disk(0)fdisk(1) multi(0)disk(0)fdisk(1) eisa(0)disk(0)fdisk(0) eisa(0)disk(0)fdisk(1)partition(0) eisa(0)disk(0)fdisk(0)partition(0) RamdiskOpen: no file table entry available RamdiskOpen: exit success RamdiskOpen: not ramdisk 0 RamdiskOpen: not a ramdisk path ramdisk RamdiskMount called RamdiskReadStatus called RamdiskSetFileInfo called RamdiskRename called RamdiskGetDirectoryEntry called RDIMAGELENGTH = 0x%0I64x bytes RDIMAGEOFFSET = 0x%x bytes RDCHUNKSIZE = 0x%0I64x bytes RDFILESIZE = 0x%0I64x bytes RDMTFTPTIMEOUT = %d RDMTFTPDELAY = %d RDMTFTPSPORT = %d RDMTFTPCPORT = %d RDMTFTPADDR = %u.%u.%u.%u RDPATH = %s RAMDISK options: RDCHUNKSIZE RDFILESIZE RDMTFTPTIMEOUT RDMTFTPDELAY RDMTFTPSPORT RDMTFTPCPORT RDMTFTPADDR RDIMAGELENGTH RDIMAGEOFFSET Unable to read RAM disk image: status %d count %x (wanted %x) Unable to seek RAM disk image: %d Done reading ramdisk BlGetFileInformation(%s) failed: %d BlOpen(%s) failed: %d RomMtftpReadFile failed %d MTFTP Download complete. 0x%I64x bytes transferred using %d sessions MTFTP Session %d: %s from %u.%u.%u.%u sport=%d cport=%d offset=0x%I64x Allocated %d pages at page %x for RAM disk BlAllocateAlignedDescriptor(%d pages) failed: %d Downloading Ramdisk using MTFTP. File Size=0x%I64x Chunk Size=0x%I64x status from TftpGetPut 0x%x calling TftpGetPut(%s,0x%x) ArcOpen(%s) failed: %d no found in path RamdiskReadImage(%s) Ramdisk is active RamdiskInitializeFromPath(%s) RamdiskWrite entered Mapped offset %x, va %p, availableLength %x RamdiskRead: read beyond EOF RamdiskRead: offset %x, length %x, buffer %p keyboard pointer monitor DeviceHarddisk %s%s(%d)%s(%d)%s(%d) DeviceFloppy DeviceCDRom %s%s(%d)%s(%d) partition(0) BD: %s base address %p OS Loader [%d;%dH EFI PART boot.bmp CentaurHauls GenuineTmx86 CyrixInstead AuthenticAMD GenuineIntel DEBUGSTOP BD: Boot Debugger Initialized BAUDRATE DEBUGPORT NODEBUG Boot Debugger Using: COM%d (Baud Rate %d) File too big Bad opcode received Bad TFTP packet length Timeout on receive Unexpected port number Block number greater than expected Sorry, wasn't talking to you! Bad TFTP options blksize %s: %s() failed 0x%lx %s: OldBase : %p %s: NewBase : %p %s: Diff : 0x%I64x %s: NextOffset : %p %s: *NextOffset : 0x%x %s: SizeOfBlock : 0x%lx LdrRelocateImageWithBias ENOTDIR ENOEXEC ENAMETOOLONG operation was success pagefile.sys consolein consoleout partition( %spartition(0) signature( AppPatch SYSTEM FONTS system32 SYSTEM32CONFIGSYSTEM.SAV system.sav SYSTEM32CONFIGSYSTEM system.alt system32config x86systempartition hal.dll ntoskrnl.exe kdcom.dll systempartition system32 SystemRoot LastGood LastGood.Tmp SDIBOOT= osloadpartition LASTKNOWNGOOD osloadfilename osloader xipmegs= XIPMEGS= xipram= XIPRAM= xiprom= XIPROM= xipboot XIPBOOT debugport= DEBUGPORT= KERNEL= execute EXECUTE noexecute NOEXECUTE noexecute=alwaysoff NOEXECUTE=ALWAYSOFF BOOTLOGO SAFEBOOT osloadoptions x86systempartition= osloadoptions= osloadfilename= osloadpartition= systempartition= System32NTLDR osloader= boot.ini boot.ini /fastdetect consoleout=multi(0)video(0)monitor(0) consolein=multi(0)key(0)keyboard(0) Couldn't open drive %s ntkrnlpa.exe Bad ProductType value Missing ProductType value Missing ProductOptions key Missing Control key CmpResolveDriverDependencies Missing or invalid ControlServiceGroupOrderList registry value CmpFindDriver CmpFindNLSData CmpFindControlSet system.log %s %s %s LastBootStatus=%d SAFEBOOT:DSREPAIR SOS BASEVIDEO BOOTLOG SAFEBOOT:MINIMAL(ALTERNATESHELL) SOS BOOTLOG NOGUIBOOT SAFEBOOT:NETWORK SOS BOOTLOG NOGUIBOOT SAFEBOOT:MINIMAL SOS BOOTLOG NOGUIBOOT CRASHDEBUG /WIN95DOS /MAXMEM /REDIRECT /SCSIORDINAL: ROLLBACK cmdcons bootsect.dos autoexec winboot.sys command default usebiossettings redirect redirectbaudrate timeout DefSwitches [operating systems] [multiboot] [flexboot] [boot loader] C:windows C:winnt BlAllocateDescriptor failed! Couldn't allocate PCR descriptor in NtProcessStartup,BlSetupForNt is failing Couldn't allocate valid TSS descriptor in NtProcessStartup, BlSetupForNt is failing 0123456789ABCDEF0 osloader.EXE RtlAssert ScsiDebugPrint ScsiPortCompleteRequest ScsiPortConvertPhysicalAddressToUlong ScsiPortConvertUlongToPhysicalAddress ScsiPortFlushDma ScsiPortFreeDeviceBase ScsiPortGetBusData ScsiPortGetDeviceBase ScsiPortGetLogicalUnit ScsiPortGetPhysicalAddress ScsiPortGetSrb ScsiPortGetUncachedExtension ScsiPortGetVirtualAddress ScsiPortInitialize ScsiPortIoMapTransfer ScsiPortLogError ScsiPortMoveMemory ScsiPortNotification ScsiPortQuerySystemTime ScsiPortReadPortBufferUchar ScsiPortReadPortBufferUlong ScsiPortReadPortBufferUshort ScsiPortReadPortUchar ScsiPortReadPortUlong ScsiPortReadPortUshort ScsiPortReadRegisterBufferUchar ScsiPortReadRegisterBufferUlong ScsiPortReadRegisterBufferUshort ScsiPortReadRegisterUchar ScsiPortReadRegisterUlong ScsiPortReadRegisterUshort ScsiPortSetBusDataByOffset ScsiPortStallExecution ScsiPortValidateRange ScsiPortWritePortBufferUchar ScsiPortWritePortBufferUlong ScsiPortWritePortBufferUshort ScsiPortWritePortUchar ScsiPortWritePortUlong ScsiPortWritePortUshort ScsiPortWriteRegisterBufferUchar ScsiPortWriteRegisterBufferUlong ScsiPortWriteRegisterBufferUshort ScsiPortWriteRegisterUchar ScsiPortWriteRegisterUlong ScsiPortWriteRegisterUshort osloader.pdb bootbldrdaytonaobji386osloader.pdb OS Loader V5.10 osloader.exe ntoskrnl.exe hal.dll KDCOM.DLL hiberfil.sys unsupporteddebug BL_MSG_FIRST Windows could not start because of an error in the software. Please report this problem as : Windows could not start because the following file was not found and is required : Windows could not start because of a bad copy of the following file : Windows could not start because the following file is missing or corrupt: Windows could not start because of a hardware memory configuration problem. Windows could not start because of a computer disk hardware configuration problem. Windows could not start because of a general computer hardware configuration problem. Windows could not start because of the following ARC firmware boot configuration problem : Check hardware memory configuration and amount of RAM. Too many configuration entries. Could not access disk partition tables The 'osloadpartition' parameter setting is invalid. Could not read from the selected boot disk. Check boot path and disk hardware. The 'systempartition' parameter setting is invalid. Could not read from the selected system boot disk. Check 'systempartition' path. The 'osloadfilename' parameter does not point to a valid file. system32ntoskrnl.exe. The 'osloader' parameter does not point to a valid file. system32hal.dll. 'osloader'hal.dll Loader error 1. Loader error 2. load needed DLLs for kernel. load needed DLLs for HAL. find system drivers. read system drivers. did not load system boot device driver. load system hardware configuration file. find system partition name device name. find boot partition name. did not properly generate ARC name for HAL and system paths. Loader error 3. system32ntoskrnl.exe Please contact your support person to report this problem. You can attempt to repair this file by starting Windows Setup using the original Setup CD-ROM. Select 'r' at the first screen to start repair. Please re-install a copy of the above file. Please check the Windows documentation about hardware memory requirements and your hardware reference manuals for additional information. Please check the Windows documentation about hardware disk configuration and your hardware reference manuals for additional information. Please check the Windows documentation about hardware configuration and your hardware reference manuals for additional information. Please check the Windows documentation about ARC configuration options and your hardware reference manuals for additional information. Hardware Profile/Configuration Recovery Menu This menu allows you to select a hardware profile to be used when Windows is started. If your system is not starting correctly, then you may switch to a previous system configuration, which may overcome startup problems. IMPORTANT: System configuration changes made since the last successful startup will be discarded. Use the up and down arrow keys to move the highlight to the selection you want. Then press ENTER. No hardware profiles are currently defined. Hardware profiles can be created from the System applet of the control panel. To switch to the Last Known Good configuration, press 'L'. To Exit this menu and restart your computer, press F3. To switch to the default configuration, press 'D'. To Exit this menu and restart your computer, press F3. Seconds until highlighted choice will be started automatically: %d Press spacebar NOW to invoke Hardware Profile/Last Known Good menu Boot default hardware configuration The system is being restarted from its previous location. Press the spacebar to interrupt. The system could not be restarted from its previous location due to no memory. because the restoration image is corrupt. because the restoration image is not compatible with the current configuration. due to an internal error. due to an internal error. due to a read failure. System restart has been paused: Delete restoration data and proceed to system boot menu Continue with system restart The last attempt to restart the system from its previous location failed. Attempt to restart again? Continue with debug breakpoint on system wake Windows could not start because the specified kernel does not exist or is not compatible with this processor. Starting Windows... Resuming Windows... Windows could not start because there was an error reading the boot settings from NVRAM. Please check your firmware settings. You may need to restore your NVRAM settings from a backup. [debugger enabled] Windows (default) NTLDR: BOOT.INI file not found. NTLDR: no [operating systems] section in boot.txt. Booting default kernel from %s. Please select the operating system to start: Use the up and down arrow keys to move the highlight to your choice. Press ENTER to choose. Seconds until highlighted choice will be started automatically: Invalid BOOT.INI file Booting from %s I/O Error accessing boot sector file %sBOOTSECT.DOS NTLDR: Couldn't open drive %s NTLDR: Fatal Error %d reading BOOT.INI NTDETECT V5.0 Checking Hardware ... NTDETECT failed Current Selection: Title..: %s Path...: %s Options: %s Enter new load options: [EMS enabled] Invalid BOOT.INI file Windows Advanced Options Menu Please select an option: Safe Mode Safe Mode with Networking Step-by-Step Confirmation Mode Safe Mode with Command Prompt VGA Mode Directory Services Restore Mode (Windows domain controllers only) Last Known Good Configuration (your most recent settings that worked) Debugging Mode Disable automatic restart on system failure Enable Boot Logging For troubleshooting and advanced startup options for Windows, press F8. Enable VGA Mode Press ESCAPE to disable safeboot and boot normally. Start Windows Normally Return to OS Choices Menu We apologize for the inconvenience, but Windows did not start successfully. A recent hardware or software change might have caused this. If your computer stopped responding, restarted unexpectedly, or was automatically shut down to protect your files and folders, choose Last Known Good Configuration to revert to the most recent settings that worked. If a previous startup attempt was interrupted due to a power failure or because the Power or Reset button was pressed, or if you aren't sure what caused the problem, choose Start Windows Normally. Windows was not shutdown successfully. If this was due to the system not responding, or if the system shutdown to protect data, you might be able to recover by choosing one of the Safe Mode configurations from the menu below: Seconds until Windows starts: Windows could not start due to an error while booting from a RAMDISK. Windows failed to open the RAMDISK image. Loading RAMDISK image...
You definately should install the Recovery Console as a boot option in case you experience any problems later. The Recovery Console lets you repair a damaged or non-booting windows installation.
Start->Run->
D:i386winnt32.exe /cmdcons
where D:
is CD-ROM driveComplete the following steps while logged on with administrative credentials:
Start->Run->
%SystemRoot%system32secpol.msc /s
From now on when you start Recovery Console, you are not prompted for a password!
To see the commands available on the Recovery Console, type help
from within the Recovery Console. If your computer will not start, you can run the Recovery Console from the Setup CD.
Make Recovery Console more Powerful: - How to add more power to Recovery Console by using Group Policy in Windows XP Professional
NOTE: Now we are ready to create our custom boot menu configuration file.. Be very cautious when editing your boot.ini file as a mistake can disable your computer from booting!
First we allow access to the file that controls the boot menu using attrib
, then we create a backup of the original boot.ini
, next we edit the boot.ini file, and finally we reset the access on the file.
Start->Run->
%COMSPEC% /K "cd %SYSTEMDRIVE%"
attrib -H -S -A -R boot.ini
copy boot.ini boot-orig.ini
notepad boot.ini
and edit the file, be sure to change the timeout from 30 to anything else.attrib +S +H +A +R boot.ini
to return the boot.ini file attributes to normal.bootcfg /Query
to check your boot.ini file for errors.[boot loader] timeout=24 default=multi(0)disk(0)rdisk(0)partition(1)WINDOWS [operating systems] multi(0)disk(0)rdisk(0)partition(1)WINDOWS="XP Pro Normal" /fastdetect /noexecute=optin /numproc=2 multi(0)disk(0)rdisk(0)partition(1)WINDOWS="Safe Mode" /safeboot:minimal /sos /bootlog /noguiboot multi(0)disk(0)rdisk(0)partition(1)WINDOWS="Safe Mode Networking" /safeboot:network /sos /bootlog /noguiboot multi(0)disk(0)rdisk(0)partition(1)WINDOWS="Safe Mode CMD Prompt" /safeboot:minimal(alternateshell) /sos /bootlog /noguiboot multi(0)disk(0)rdisk(0)partition(1)WINDOWS="XP Pro Debug" /debug /sos /basevideo /noguiboot /bootlog C:CMDCONSBOOTSECT.DAT="Microsoft Windows Recovery Console" /cmdcons
The term scsi(0) means that the primary controller (that is frequently the only controller) is responsible for the device. If there are two SCSI controllers, and the disk is associated with the second controller, the controller is named scsi(1). If the system uses IDE, enhanced IDE (EIDE), or Enhanced Small Device Interface (ESDI) drives, or if the system uses a SCSI adapter that does not have a built-in BIOS, replace scsi with multi.
/NODEBUG
specifies that no debugging information is being monitored. Debugging information is useful only for developers./SOS
option to display driver names while the drivers are being loaded. By default, the OS Loader screen only shows progress dots.C:
implies that the previous operating system is MS-DOS, because C:
is an MS-DOS path./basevideo
/baudrate=number
/crashdebug
/debug
/debugport=comnumber
/maxmem=number
/noguiboot
/nodebug
/numproc=number
/pcilock
/fastdetect:comnumber
/sos
/PAE
/HAL=filename
/kernel=filename
/bootlog
/burnmemory=number
/3GB
/safeboot:
/NoSerialMice
/userva
/redirect
/channel
NOTE: More detailed info on page 2
This command line tool can be used to configure, query, change or delete the boot entry settings in the BOOT.INI
file.
BOOTCFG /parameter [arguments]
-
/Copy
Makes a copy of an existing boot entry [operating systems] section for which you can add OS options to./Delete
Deletes an existing boot entry in the [operating systems] section of the BOOT.INI file. You must specify the entry# to delete./Query
Displays the current boot entries and their settings./Raw
Allows the user to specify any switch options to be added for a specified boot entry./Timeout
Allows the user to change the Timeout value./Default
Allows the user to change the Default boot entry./EMS
Allows the user to configure the /redirect switch for headless support for a boot entry./Debug
Allows the user to specify the port and baudrate for remote debugging for a specified boot entry./Addsw
Allows the user to add predefined switches for a specific boot entry./Rmsw
Allows the user to remove predefined switches for a specific boot entry./Dbg1394
Allows the user to configure 1394 port debugging for a specified boot entry./?
Displays this help/usage./s Computer
Specifies the name or IP address of a remote computer (do not use backslashes). The default is the local computer./u DomainUser
Runs the command with the account permissions of the user specified by User or DomainUser. The default is the permissions of the current logged on user on the computer issuing the command./p Password
Specifies the password of the user account that is specified in the /u parameter./id OSEntryLineNum
Specifies the operating system entry line number in the [operating systems] section of the Boot.ini file to which the operating system load options are added. The first line after the [operating systems] section header is 1.C:>bootcfg /Query Boot Loader Settings -------------------- timeout: 24 default: multi(0)disk(0)rdisk(0)partition(1)WINDOWS Boot Entries ------------ Boot entry ID: 1 Friendly Name: "XP Pro Normal" Path: multi(0)disk(0)rdisk(0)partition(1)WINDOWS OS Load Options: /fastdetect /noexecute=optin /numproc=2 Boot entry ID: 2 Friendly Name: "Safe Mode" Path: multi(0)disk(0)rdisk(0)partition(1)WINDOWS OS Load Options: /safeboot:minimal /sos /bootlog /noguiboot Boot entry ID: 3 Friendly Name: "Safe Mode Networking" Path: multi(0)disk(0)rdisk(0)partition(1)WINDOWS OS Load Options: /safeboot:network /sos /bootlog /noguiboot Boot entry ID: 4 Friendly Name: "Safe Mode CMD Prompt" Path: multi(0)disk(0)rdisk(0)partition(1)WINDOWS OS Load Options: /safeboot:minimal(alternateshell) /sos /bootlog /noguiboot Boot entry ID: 5 Friendly Name: "XP Pro Debug" Path: multi(0)disk(0)rdisk(0)partition(1)WINDOWS OS Load Options: /debug /sos /basevideo /noguiboot /bootlog Boot entry ID: 6 Friendly Name: "Microsoft Windows Recovery Console" Path: C:CMDCONSBOOTSECT.DAT OS Load Options: /cmdcons
Remove all floppy disks and CDs from your computer, and restart your computer.
Press F8 when prompted.
NOTE: If Windows XP Professional starts without displaying the menu shown above, restart your computer. Press F8 after the firmware POST process completes but before Windows XP displays graphical output like the image on the right.
Start the computer from the Windows XP CD, start the Recovery Console, and then use the Bootcfg.exe tool to rebuild the Boot.ini file. To do this, follow these steps:
bootcfg /list
, and then press ENTER. The entries in your current Boot.ini file appear on the screen.bootcfg /rebuild
, and then press ENTER. This command scans the hard disks of the computer for Windows XP, Microsoft Windows 2000, or Microsoft Windows NT installations, and then displays the results. Follow the instructions that appear on the screen to add the Windows installations to the Boot.ini file. For example, follow these steps to add a Windows XP installation to the Boot.ini file:Total Identified Windows Installs: 1 [1] C:Windows Add installation to boot list? (Yes/No/All)
Enter Load Identifier
/fastdetect
, and then press ENTER.exit
, and then press ENTER to quit Recovery Console. Your computer restarts, and the updated boot list appears when you receive the "Please select the operating system to start" message.You can hide additional installations of Windows from being displayed in the boot menu, but still gain access to them when you need to.
To hide menu items from the Boot.ini file, so they will not be accessible:
[any text]. This will hide all entries below the [any text] heading.
For example, the 3 bottom entries below will not be displayed or accessible the next time the system is restarted. Simply remove [any text] to gain access to this installation.
[boot loader] timeout=30 default=multi(0)disk(0)rdisk(0)partition(1)NT351SVR [operating systems] multi(0)disk(0)rdisk(0)partition(1)NT351SVR="NT Server 3.51" multi(0)disk(0)rdisk(0)partition(1)NT351SVR="NT Server 3.51 [VGA mode]" /basevideo /sos [any text] multi(0)disk(0)rdisk(0)partition(1)WINNT35="NT Wks 3.51" multi(0)disk(0)rdisk(0)partition(1)WINNT35="NT Wks 3.51 [VGA mode]" /basevideo /sos C:="MS-DOS"
You can add many different switches to the Boot.ini file that will modify the way that Microsoft Windows starts.
/basevideo
The /basevideo switch forces the system into standard 640x480 16-color VGA mode by using a video driver that is compatible with any video adapter. This switch permits the system to load if you select the wrong video resolution or the wrong refresh rate. Use this switch in conjunction with the /sos switch. If you install a new video driver, and it does not work correctly, you can select the Windows 2000 entry with this switch to start the computer and to change to a different driver./baudrate=number
This switch sets the baud rate of the debug port that is used for kernel debugging. The default baud rate is 9600 kilobits per second (Kbps) if a modem is attached. The default baud rate is 19200 Kbps for a null-modem cable. 9,600 is the normal rate for remote debugging over a modem. For example, type /baudrate=9600 to specify a baud rate of 9600. If this switch is in the Boot.ini file, the /debug switch is automatically enabled./crashdebug
This switch turns on the COM port for debugging when Windows 2000 crashes. /crashdebug is useful if you experience random kernel errors. With this switch, you can use the COM port for normal operations while Windows is running. If Windows crashes, the switch converts the port to a debug port. (This action turns on remote debugging.)/debug
This switch turns on the kernel debugger when you start Windows. The switch can be activated at any time by a host debugger that is connected to the computer, if you want to turn on live remote debugging of a Windows system through the COM ports. Unlike the /crashdebug switch, /debug uses the COM port whether you are debugging or not. Use this switch when you are debugging problems that are reproducible./debugport=comnumber
This switch specifies the communications port to use for the debug port, where number is the communications port, such as COM1, that you want to use. For example, type /debugport=com1, where the com port is COM1. By default, /debugport uses COM2 if it exists. Otherwise, the switch uses COM1. If you include this switch in the Boot.ini file, the /debug switch becomes active./maxmem=number
This switch specifies the maximum amount of RAM that Windows can use. Do not make this setting less than 12. Use this parameter to confirm whether a memory chip is faulty./nodebug
This switch turns off debugging. This switch can cause a Stop error if a program has a debug hardcoded breakpoint in its software./numproc=number
This switch sets the number of processors that Windows will run at startup. With this switch, you can force a multiprocessor system to use only the quantity of processors (number) that you specify. This switch can help you troubleshoot performance problems and defective CPUs./pcilock
For x86-based systems, this switch stops the operating system from dynamically assigning hardware input, hardware output, and interrupt request resources to Peripheral Connect Interface (PCI) devices. With this switch, the BIOS configures the devices. NOTE: In earlier versions of Windows, including Windows NT 4.0, this switch was named /noserialmice. /fastdetect:comnumber
This switch turns off serial and bus mouse detection in the Ntdetect.com file for the specified port. Use this switch if you have a component other than a mouse that is attached to a serial port during the startup process. For example, type /fastdetect:comnumber, where number is the number of the serial port. Ports may be separated with commas to turn off more than one port. If you use /fastdetect, and you do not specify a communications port, serial mouse detection is turned off on all communications ports./sos
The /sos switch displays the device driver names while they are being loaded. By default, the Windows Loader screen only echoes progress dots. Use this switch with the /basevideo switch to determine the driver that is triggering a failure./PAE
Use the /PAE switch with the corresponding entry in Boot.ini to permit a computer that supports physical address extension (PAE) mode to start normally. In Safe Mode, the computer starts by using normal kernels, even if the /PAE switch is specified./HAL=filename
With this switch, you can define the actual hardware abstraction layer (HAL) that is loaded at startup. For example, type /HAL=halmps.dll to load the Halmps.dll in the System32 folder. This switch is useful to try out a different HAL before you rename the file to Hal.dll. This switch is also useful when you want to try to switch between starting in multiprocessor mode and starting in single processor mode. To do this, use this switch with the /kernel switch./kernel=filename
With this switch, you can define the actual kernel that is loaded at startup. For example, type /kernel=ntkrnlmp.exe to load the Ntkrnlmp.exe file in the System32 folder. With this switch, you can switch between a debug-enabled kernel that is full of debugging code and a regular kernel./bootlog
This switch turns on boot logging to a file that is named systemrootNtbtlog.txt. For more information about boot logging, see Windows Help./burnmemory=number
This switch specifies the amount of memory, in megabytes, that Windows cannot use. Use this parameter to confirm a performance problem or other problems that are related to RAM depletion. For example, type /burnmemory=128 to reduce the physical memory that is available to Windows by 128 MB. /3GB
With this switch, user mode programs can access 3 GB of memory instead of the usual 2 GB that Windows allocates to user mode programs. The switch moves the starting point of kernel memory to 3 GB. This switch is used only with Windows 2000 Server Enterprise Edition. Some configurations of Microsoft Exchange Server 2000 and Microsoft Windows 2000 Advanced Server may require this switch./safeboot:
This switch causes Windows to start in Safe Mode. This switch uses the following parameters:
/safeboot:minimal/sos/bootlog/noguiboot
This switch starts Windows in Safe Mode./safeboot:network/sos/bootlog/noguiboot
This switch starts Windows in Safe Mode with networking./safeboot:minimal(alternateshell)/sos/bootlog/noguiboot
This switch starts Windows in Safe Mode with a command prompt./safeboot:dsrepair/sos
On domain controllers only, this switch starts Windows in Directory Services Restore Mode./userva
Use this switch to customize the amount of memory that is allocated to processes when you use the /3GB switch. This switch permits more page table entry (PTE) kernel memory but still maintains almost 3 GB of process memory space. NOTE: Microsoft Product Support Services strongly recommends using a range of memory for the /USERVA switch that lies within the range of 2900-3030. This range is wide enough to provide a large enough pool of system page table entries for all currently observed issues. Usually a setting of /userva=2900 will provide close to the maximum available number of system page table entries possible./redirect
Use this switch to turn on Emergency Management Services (EMS) on a Windows Server 2003, Enterprise Edition-based computer. For additional information about EMS, search on "Emergency Management Services" in Windows Help and Support.Adds operating system load options for a specified operating system entry.
BOOTCFG /addsw [/s Computer [/u DomainUser /p Password]] [/mm MaximumRAM] [/bv] [/so] [/ng] /id OSEntryLineNum
/mm MaximumRAM
Adds the /maxmem switch to the specified OSEntryLineNum and sets the maximum amount of RAM that the operating system can use./bv
Adds the /basevideo switch to the specified OSEntryLineNum, directing the operating system to use standard VGA mode for the installed video driver./so
Adds the /sos switch to the specified OSEntryLineNum, directing the operating system to display device driver names while they are being loaded./ng
Adds the /noguiboot switch to the specified OSEntryLineNum, disabling the Windows XP Professional progress bar that appears before the CTRL+ALT+DEL logon prompt.BOOTCFG /addsw /mm 64 /id 2 BOOTCFG /addsw /so /id 3 BOOTCFG /addsw /so /ng /s srvmain /u hiropln /id 2 BOOTCFG /addsw /ng /id 2 BOOTCFG /addsw /mm 96 /ng /s srvmain /u maindomhiropln /p p@ssW23 /id 2
Makes another operating system instance copy, for which switches can be added.
BOOTCFG /copy [/s Computer [/u DomainUser /p Password]] [/d Description] [/id OSEntryLineNum]
/d Description
Specifies the description for the new operating system entry.BOOTCFG /copy /d "ABC Server" /id 1 BOOTCFG /copy /s srvmain /u maindomhiropln /p p@ssW23 /d "Windows XP" /id 2 BOOTCFG /copy /u hiropln /p p@ssW23 /d "AB Ver 1.001" /id 2
Configures 1394 port debugging for a specified operating system entry.
BOOTCFG /dbg1394 {ON|OFF|EDIT} [/s Computer [/u DomainUser /p Password]] [/ch channel] /id OSEntryLineNum
ON|OFF|EDIT
Specifies the value for 1394 port debugging. Value Description
ON
Enables remote debugging support by adding the /dbg1394 switch to the specified OSEntryLineNum.OFF
Disables remote debugging support by removing the /dbg1394 switch from the specified OSEntryLineNum.EDIT
Allows changes to port and baud rate settings by changing the channel values associated with the /dbg1394 switch for the specified OSEntryLineNum./ch channel
Specifies the channel to use for debugging. Valid values are integers between 1 and 64. Do not use the /ch channel parameter if 1394 port debugging is being disabled.BOOTCFG /dbg1394 /id 2 BOOTCFG /dbg1394 on /ch 1 /id 3 BOOTCFG /dbg1394 edit /ch 8 /id 2 BOOTCFG /s srvmain /u maindomhiropln /p p@ssW23 /dbg1394 off /id 2
Adds or changes the debug settings for a specified operating system entry.
BOOTCFG /debug {ON|OFF|EDIT} [/s Computer [/u DomainUser /p Password]] [/port {COM1|COM2|COM3|COM4}] [/baud {9600|19200|38400|57600|115200}] [/id OSEntryLineNum]
ON|OFF|EDIT
Specifies the value for debugging. Value Description
ON
Enables remote debugging support by adding the /debug switch to the specified OSEntryLineNum.OFF
Disables remote debugging support by removing the /debug switch from the specified OSEntryLineNum.EDIT
Allows changes to port and baud rate settings by changing the values associated with the /debug switch for the specified OSEntryLineNum./port {COM1|COM2|COM3|COM4}
Specifies the COM port to be used for debugging. Do not use the /port parameter if debugging is being disabled./baud {9600|19200|38400|57600|115200}
Specifies the baud rate to be used for debugging. Do not use the /baud parameter if debugging is being disabled.NOTE: If 1394 port debugging is required, use BOOTCFG /dbg1394.
BOOTCFG /debug on /port com1 /id 2 BOOTCFG /debug edit /port com2 /baud 19200 /id 2 BOOTCFG /s srvmain /u maindomhiropln /p p@ssW23 /debug off /id 2
Specifies the operating system entry to designate as the default.
BOOTCFG /default [/s Computer [/u DomainUser /p Password]] [/id OSEntryLineNum]
BOOTCFG /default /id 2 BOOTCFG /default /s srvmain /u maindomhiropln /p p@ssW23 /id 2
Deletes an operating system entry in the [operating systems] section of the Boot.ini file.
BOOTCFG /delete [/s Computer [/u DomainUser /p Password]] [/id OSEntryLineNum]
BOOTCFG /delete /id 1 BOOTCFG /delete /s srvmain /u maindomhiropln /p p@ssW23 /id 3
Enables the user to add or change the settings for redirection of the EMS console to a remote computer. By enabling EMS, you add a "redirect=Port#" line to the [boot loader] section of the Boot.ini file and a /redirect switch to the specified operating system entry line. The EMS feature is enabled only on servers.
BOOTCFG /ems {ON|OFF|EDIT} [/s Computer [/u DomainUser /p Password]] [/port {COM1|COM2|COM3|COM4|BIOSSET}] [/baud {9600|19200|38400|57600|115200}] [/id OSEntryLineNum]
ON|OFF|EDIT
Specifies the value for EMS redirection. Value Description
ON Enables remote output for the specified OSEntryLineNum. Adds a /redirect switch to the specified OSEntryLineNum and a redirect=comX setting to the [boot loader] section. The value of comX is set by the /port parameter.
OFF Disables output to a remote computer. Removes the /redirect switch from the specified OSEntryLineNum and the redirect=comX setting from the [boot loader] section.
EDIT Allows changes to port settings by changing the redirect=comX setting in the [boot loader] section. The value of comX is reset to the value specified by the /port parameter. /port {COM1|COM2|COM3|COM4|BIOSSET}
Specifies the COM port to be used for redirection. BIOSSET directs EMS to get the BIOS settings to determine which port should be used for redirection. Do not use the /port parameter if remotely administered output is being disabled./baud {9600|19200|38400|57600|115200}
Specifies the baud rate to be used for redirection. Do not use the /baud parameter if remotely administered output is being disabled.NOTE: For more information on the Emergency Management Services (EMS), see Help and Support Center.
BOOTCFG /ems on /port com1 /baud 19200 /id 2 BOOTCFG /ems on /port biosset /id 3 BOOTCFG /s srvmain /ems off /id 2 BOOTCFG /ems edit /port com2 /baud 115200 BOOTCFG /s srvmain /u maindomhiropln /p p@ssW23 /ems off /id 2
Queries and displays the [boot loader] and [operating systems] section entries from Boot.ini.
BOOTCFG /query [/s Computer [/u DomainUser /p Password]]
NOTE: The following is a sample of BOOTCFG /query output:
Boot Loader Settings -------------------- timeout: 30 default: multi(0)disk(0)rdisk(0)partition(1)WINDOWS Boot Entries ------------ Boot entry ID: 1 Friendly Name: "Microsoft Windows XP Professional" Path: multi(0)disk(0)rdisk(0)partition(1)WINDOWS OS Load Options: /fastdetect /debug /debugport=com1:
The Boot Loader Settings portion of the BOOTCFG query output displays each entry in the [boot loader] section of Boot.ini. The Boot Entries portion of the BOOTCFG query output displays the following detail for each operating system entry in the [operating systems] section of Boot.ini: Boot entry ID, Friendly Name, Path, and OS Load Options.
BOOTCFG /query BOOTCFG /query /s srvmain /u maindomhiropln /p p@ssW23 BOOTCFG /query /u hiropln /p p@ssW23
Adds operating system load options specified as a string to an operating system entry in the [operating systems] section of the Boot.ini file.
BOOTCFG [/s Computer [/u DomainUser /p Password]] /raw OSLoadOptionsString [/id OSEntryLineNum]
NOTE: Bootcfg raw is used to add text to the end of an operating system entry, overwriting any existing operating system entry options. This text should contain valid OS Load Options such as /debug, /fastdetect, /nodebug, /baudrate, /crashdebug, and /sos. For example, the following command adds "/debug /fastdetect" to the end of the first operating system entry, replacing any previous operating system entry options: BOOTCFG /raw "/debug /fastdetect" /id 1
BOOTCFG /raw "/debug /sos" /id 2 BOOTCFG /raw /s srvmain /u maindomhiropln /p p@ssW23 "/crashdebug " /id 2
Removes operating system load options for a specified operating system entry.
BOOTCFG /rmsw [/s Computer [/u DomainUser /p Password]] [/mm] [/bv] [/so] [/ng] /id OSEntryLineNum
/mm
Removes the /maxmem switch and its associated maximum memory value from the specified OSEntryLineNum. The /maxmem switch specifies the maximum amount of RAM that the operating system can use./bv
Removes the /basevideo switch from the specified OSEntryLineNum. The /basevideo switch directs the operating system to use standard VGA mode for the installed video driver./so
Removes the /sos switch from the specified OSEntryLineNum. The /sos switch directs the operating system to display device driver names while they are being loaded./ng
Removes the /noguiboot switch from the specified OSEntryLineNum. The /noguiboot switch disables the Windows XP Professional progress bar that appears before the CTRL+ALT+DEL logon prompt.BOOTCFG /rmsw /mm 64 /id 2 BOOTCFG /rmsw /so /id 3 BOOTCFG /rmsw /so /ng /s srvmain /u hiropln /id 2 BOOTCFG /rmsw /ng /id 2 BOOTCFG /rmsw /mm 96 /ng /s srvmain /u maindomhiropln /p p@ssW23 /id 2
Changes the operating system time-out value.
BOOTCFG /timeout TimeOutValue [/s Computer [/u DomainUser /p Password]]
TimeOutValue
Specifies the timeout value in the [boot loader] section. The value is the number of seconds the user has to select an operating system from the boot loader screen before NTLDR loads the default. If the value is 0, then NTLDR immediately starts the default operating system without displaying the boot loader screen.BOOTCFG /timeout 30 BOOTCFG /s srvmain /u maindomhiropln /p p@ssW23 /timeout 50