Custom Boot Menu in Windows XP
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
8-17-09 Update
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...
Install Recovery Console as boot menu option
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.
- Log in as administrator, insert the Windows XP Setup CD into your CD-ROM drive.
- Go to
Start->Run-> - Type
D:i386winnt32.exe /cmdconswhereD:is CD-ROM drive - Reboot.
Configure Automatic Administrator Logon for Recovery Console
Complete the following steps while logged on with administrative credentials:
- Go to
Start->Run-> - Type
%SystemRoot%system32secpol.msc /s - Click Local Policies, and then click Security Options.
- Double-click the Recovery Console: Allow automatic administrative logon policy, and set it to Enabled.
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!
Create Custom Boot Menu
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.
- Go to
Start->Run-> - Type
%COMSPEC% /K "cd %SYSTEMDRIVE%" - Type
attrib -H -S -A -R boot.ini - Type
copy boot.ini boot-orig.ini - Type
notepad boot.iniand edit the file, be sure to change the timeout from 30 to anything else. - When finished editing, close notepad and return to the command shell.
- Type
attrib +S +H +A +R boot.inito return the boot.ini file attributes to normal. - Type
bootcfg /Queryto check your boot.ini file for errors. - Reboot and check out your new custom boot menu!
Example boot.ini (mine)
[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
Description of boot.ini
- The timeout variable specifies how long Windows waits before choosing the default operating system.
- The default variable specifies the default operating system.
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.
- The term disk(0) refers to the SCSI logical unit (LUN) to use. This may be a separate disk, but most SCSI setups have only one LUN for each SCSI ID.
- The term rdisk(0) refers to physical disk 1.
- The term partition(1) is the partition on the first drive in the computer. If there are two partitions, partition C is partition(1) and partition D is partition(2).
- A multi-boot parameter calls for checking the Winnt folder to start from a specified SCSI controller's disk and partition.
/NODEBUGspecifies that no debugging information is being monitored. Debugging information is useful only for developers.- You can add the
/SOSoption to display driver names while the drivers are being loaded. By default, the OS Loader screen only shows progress dots. - Previous Operating System on
C:implies that the previous operating system is MS-DOS, becauseC:is an MS-DOS path.
Available switch options for the boot.ini file
/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
Using the BOOTCFG command
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] -
Parameter List
/CopyMakes a copy of an existing boot entry [operating systems] section for which you can add OS options to./DeleteDeletes an existing boot entry in the [operating systems] section of the BOOT.INI file. You must specify the entry# to delete./QueryDisplays the current boot entries and their settings./RawAllows the user to specify any switch options to be added for a specified boot entry./TimeoutAllows the user to change the Timeout value./DefaultAllows the user to change the Default boot entry./EMSAllows the user to configure the /redirect switch for headless support for a boot entry./DebugAllows the user to specify the port and baudrate for remote debugging for a specified boot entry./AddswAllows the user to add predefined switches for a specific boot entry./RmswAllows the user to remove predefined switches for a specific boot entry./Dbg1394Allows the user to configure 1394 port debugging for a specified boot entry./?Displays this help/usage.
Examples
- BOOTCFG /Copy /?
- BOOTCFG /Delete /?
- BOOTCFG /Query /?
- BOOTCFG /Raw /?
- BOOTCFG /Timeout /?
- BOOTCFG /EMS /?
- BOOTCFG /Debug /?
- BOOTCFG /Addsw /?
- BOOTCFG /Rmsw /?
- BOOTCFG /Dbg1394 /?
- BOOTCFG /Default /?
- BOOTCFG /?
BOOTCFG parameters
/s ComputerSpecifies the name or IP address of a remote computer (do not use backslashes). The default is the local computer./u DomainUserRuns 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 PasswordSpecifies the password of the user account that is specified in the /u parameter./id OSEntryLineNumSpecifies 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.
My bootcfg results
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
Accessing the safe mode advanced boot menu
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.
If you can't boot windows or recovery console after you edit the boot.ini
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:
- Configure the computers bios to boot from the CD-ROM or DVD-ROM drive.
- Insert the Windows XP CD-ROM into your CD-ROM or DVD-ROM drive, and then restart your computer.
- When you receive the "Press any key to boot from CD" message, press a key to start your computer from the Windows XP CD-ROM.
- When you receive the "Welcome to Setup" message, press R to start the Recovery Console.
- If you have a dual-boot or multiple-boot computer, select the installation that you have to use from the Recovery Console.
- When you are prompted, type the administrator password, and then press ENTER.
- At the command prompt, type
bootcfg /list, and then press ENTER. The entries in your current Boot.ini file appear on the screen. - At the command prompt, type
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:
- When you receive a message that is similar to the following message, press Y:
Total Identified Windows Installs: 1 [1] C:Windows Add installation to boot list? (Yes/No/All)
- You receive a message that is similar to the following message:
Enter Load Identifier
This is the name of the operating system. When you receive this message, type the name of your operating system, and then press ENTER. This is either Microsoft Windows XP Professional or Microsoft Windows XP Home Edition. - You receive a message that is similar to the following:
- Enter OS Load options
- When you receive this message, type
/fastdetect, and then press ENTER.
NOTE: The instructions that appear on your screen may be different, depending on the configuration of your computer.
- Type
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.
How to Hide Boot.ini Entries from Displaying
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:
- Remove the read-only attribute from the Boot.ini file.
- Use an editor to edit the Boot.ini file.
- Place the following entry above the lines you want hidden:
[any text]. This will hide all entries below the [any text] heading.
- To restore the entry and make it accessible again, remove the [any text] line.
- Save the file and reapply the read-only attribute.
- Restart your computer.
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"
Additional Info and Links
- Troubleshooting the Startup Process
- Download Debugging Tools for Windows - Overview
- How to set up a remote debug session using a null modem cable
- Set Up Remote Debugging on Windows XP with SP2
- HOW TO: Edit the Boot.ini file in Windows 2000
- Available switch options for the Boot.ini file
- Safe-Mode boot switches for Windows Boot.ini file
- Information on application use of 4GT RAM tuning
- XGEN: Exchange 2000 requires /3GB switch with more than 1 gigabyte of physical ram
- Purpose of the Boot.ini file in Windows 2000 or Windows NT
- How to disable detection of devices on serial ports
- MAXMEM option in Windows NT Boot.ini file
- Setting up for remote debugging
- How to set up a remote debug session using a modem
- How to set up a remote debug session using a null modem cable
- Boot.ini and ARC path naming conventions and usage
Boot.ini Switches
You can add many different switches to the Boot.ini file that will modify the way that Microsoft Windows starts.
/basevideoThe /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=numberThis 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./crashdebugThis 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.)/debugThis 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=comnumberThis 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=numberThis 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./nodebugThis switch turns off debugging. This switch can cause a Stop error if a program has a debug hardcoded breakpoint in its software./numproc=numberThis 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./pcilockFor 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:comnumberThis 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.- This switch is also used with uninterruptible power supplies (UPS), such as those supplies from American Power Conversion brand (APC), that connect to a serial port. If this switch is not available when Windows starts, and Windows tries to detect a mouse on this port, the UPS incorrectly starts its shutdown mode. NOTE: In earlier versions of Windows, including Windows NT 4.0, this switch was named /noserialmice.
/sosThe /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./PAEUse 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=filenameWith 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=filenameWith 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./bootlogThis switch turns on boot logging to a file that is named systemrootNtbtlog.txt. For more information about boot logging, see Windows Help./burnmemory=numberThis 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./3GBWith 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/noguibootThis switch starts Windows in Safe Mode./safeboot:network/sos/bootlog/noguibootThis switch starts Windows in Safe Mode with networking./safeboot:minimal(alternateshell)/sos/bootlog/noguibootThis switch starts Windows in Safe Mode with a command prompt./safeboot:dsrepair/sosOn domain controllers only, this switch starts Windows in Directory Services Restore Mode.
- NOTE: The /sos,/bootlog, and/noguiboot switches are not required with any one of these settings, but the switches can help with troubleshooting. These switches are included if you press F8 and then select one of the modes.
/uservaUse 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./redirectUse 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.
BOOTCFG addsw
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
Parameters
/mm MaximumRAMAdds the /maxmem switch to the specified OSEntryLineNum and sets the maximum amount of RAM that the operating system can use./bvAdds the /basevideo switch to the specified OSEntryLineNum, directing the operating system to use standard VGA mode for the installed video driver./soAdds the /sos switch to the specified OSEntryLineNum, directing the operating system to display device driver names while they are being loaded./ngAdds the /noguiboot switch to the specified OSEntryLineNum, disabling the Windows XP Professional progress bar that appears before the CTRL+ALT+DEL logon prompt.
Examples
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
BOOTCFG copy
Makes another operating system instance copy, for which switches can be added.
Syntax
BOOTCFG /copy [/s Computer [/u DomainUser /p Password]] [/d Description] [/id OSEntryLineNum]
Parameters
/d DescriptionSpecifies the description for the new operating system entry.
Examples
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
BOOTCFG dbg1394
Configures 1394 port debugging for a specified operating system entry.
Syntax
BOOTCFG /dbg1394 {ON|OFF|EDIT} [/s Computer [/u DomainUser /p Password]] [/ch channel] /id OSEntryLineNum
Parameters
ON|OFF|EDITSpecifies the value for 1394 port debugging. Value DescriptionONEnables remote debugging support by adding the /dbg1394 switch to the specified OSEntryLineNum.OFFDisables remote debugging support by removing the /dbg1394 switch from the specified OSEntryLineNum.EDITAllows changes to port and baud rate settings by changing the channel values associated with the /dbg1394 switch for the specified OSEntryLineNum.
/ch channelSpecifies 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.
Examples
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
BOOTCFG debug
Adds or changes the debug settings for a specified operating system entry.
Syntax
BOOTCFG /debug {ON|OFF|EDIT} [/s Computer [/u DomainUser /p Password]] [/port {COM1|COM2|COM3|COM4}] [/baud {9600|19200|38400|57600|115200}] [/id OSEntryLineNum]
Parameters
ON|OFF|EDITSpecifies the value for debugging. Value DescriptionONEnables remote debugging support by adding the /debug switch to the specified OSEntryLineNum.OFFDisables remote debugging support by removing the /debug switch from the specified OSEntryLineNum.EDITAllows 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.
Examples
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
BOOTCFG default
Specifies the operating system entry to designate as the default.
Syntax
BOOTCFG /default [/s Computer [/u DomainUser /p Password]] [/id OSEntryLineNum]
Examples
BOOTCFG /default /id 2 BOOTCFG /default /s srvmain /u maindomhiropln /p p@ssW23 /id 2
BOOTCFG delete
Deletes an operating system entry in the [operating systems] section of the Boot.ini file.
Syntax
BOOTCFG /delete [/s Computer [/u DomainUser /p Password]] [/id OSEntryLineNum]
Examples
BOOTCFG /delete /id 1 BOOTCFG /delete /s srvmain /u maindomhiropln /p p@ssW23 /id 3
BOOTCFG ems
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.
Syntax
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]
Parameters
ON|OFF|EDITSpecifies 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.
Examples
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
BOOTCFG query
Queries and displays the [boot loader] and [operating systems] section entries from Boot.ini.
Syntax
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.
Examples
BOOTCFG /query BOOTCFG /query /s srvmain /u maindomhiropln /p p@ssW23 BOOTCFG /query /u hiropln /p p@ssW23
BOOTCFG raw
Adds operating system load options specified as a string to an operating system entry in the [operating systems] section of the Boot.ini file.
Syntax
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
Examples
BOOTCFG /raw "/debug /sos" /id 2 BOOTCFG /raw /s srvmain /u maindomhiropln /p p@ssW23 "/crashdebug " /id 2
BOOTCFG rmsw
Removes operating system load options for a specified operating system entry.
Syntax
BOOTCFG /rmsw [/s Computer [/u DomainUser /p Password]] [/mm] [/bv] [/so] [/ng] /id OSEntryLineNum
Parameters
/mmRemoves 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./bvRemoves the /basevideo switch from the specified OSEntryLineNum. The /basevideo switch directs the operating system to use standard VGA mode for the installed video driver./soRemoves the /sos switch from the specified OSEntryLineNum. The /sos switch directs the operating system to display device driver names while they are being loaded./ngRemoves 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.
Examples
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
BOOTCFG timeout
Changes the operating system time-out value.
Syntax
BOOTCFG /timeout TimeOutValue [/s Computer [/u DomainUser /p Password]]
Parameters
TimeOutValueSpecifies 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.
Examples
BOOTCFG /timeout 30 BOOTCFG /s srvmain /u maindomhiropln /p p@ssW23 /timeout 50
« Fetch Feed Subscribers from Google Reader with CURLSkeleton .htaccess file for Powweb Hosting »
Comments