CONFIG.SYS


is the configuration file for the DOS and OS/2 operating systems that specifies startup options options that cannot be changed after the system has booted. The data it contains is read by the system and used to configure many aspects including memory management, peripherals and applications. Each line can contain a name-value pair that is either a directive that sets the value of a system setting or with name "DEVICE" extends system capability by loading a file such as a device driver or a terminate-and-stay-resident program. was introduced with DOS 2.0.
As Windows technology diverged from DOS over time, use of diminished. Both and are in the root folder of the Windows 95 and Windows 98 boot drives, but typically, they are empty. Windows Me does not use a CONFIG.SYS file at all. Instead, it loads environment variables from the Windows Registry key: HKLM\System\CurrentControlSet\Control\SessionManager\Environment.

Use

User maintained

The file is maintained by a user in order to control the behavior of the system. As an ASCII text file, a user generally edits it via a text editor.

System consumed

During boot, the DOS BIOS loads the file from the root directory of the drive from which the system boots. After processing the file, the system loads and executes the command shell specified in the SHELL line, or if there is no such line. The command shell in turn is responsible for processing the file.

Missing/corrupt

Even though loading CONFIG.SYS is part of a normal bootup process, the system can boot if the file is missing or corrupt. A system probably requires troubleshooting if the file gets deleted or corrupted.

Default shell

If does not contain a SHELL directive, DOS typically searches for in the root directory of the boot drive. If this is not found, versions of DOS before 6.0 will not start up. MS-DOS 6.0/PC DOS 6.1 and Novell DOS 7 and higher will instead display a prompt to enter the path and filename of a command processor. This recovery prompt is also displayed when the primary command processor is aborted due to faults or if it is exited deliberately. This also provides limited means to replace the shell at runtime without having to reboot the system.
Since the MS-DOS 7.0 and higher COMMAND.COM executable is incompatible with DR-DOS, but typically resides in the root of drive C: in dual-boot scenarios with DR-DOS, DR-DOS 7.02 and higher no longer allow to bypass SHELL directives in // "skip"/"trace"/"step" modes. Also, if no SHELL directive could be found when skipping processing via , the user is prompted to enter a valid shell file name before trying to load COMMAND.COM from the root. Pressing without specifying a file will assume the former default.

File size limit

Depending on the version, the size of the file is limited to a few kilobytes under MS-DOS/PC DOS, whereas the file's size is unlimited under DR-DOS. This is because the former operating systems will compile the file into some tokenized in-memory representation before they sort and regroup the directives to be processed in a specific order, whereas DR-DOS interprets the file and executes most directives line-by-line, thereby giving full control over the load order of drivers and TSRs via DEVICE and INSTALL and allowing to adapt the user interaction and change the flow through the file based on conditions like processor types installed, any type of keys pressed, load or input errors occurring, or return codes given by loaded software. This becomes particularly useful since INSTALL can also be used to run non-resident software under DR-DOS, so that temporary external programs can be integrated into the CONFIG.SYS control flow.

Data limits

In MS-DOS/PC DOS 2.0 through 4.01, the length of the SHELL line was limited to 31 characters, whereas up to 128 characters are possible in later versions. DR-DOS even accepts up to 255 characters. directives do not accept long filenames.

Dual booting DOS and Windows 9x

When installing Windows 95 over a preexisting DOS/Windows install, and are renamed to and. This is intended to ease dual booting between Windows 9x and DOS. When booting into DOS, they are temporarily renamed and. Backups of the Windows 95 versions are made as and files.
When Caldera DR-DOS 7.02/7.03 is installed on a system already containing Windows 95, Windows' and retain those names. DR-DOS' startup files are installed as and.

OS/2

uses a file for configuring options, drivers and environment before the graphical subsystem loads. There are many undocumented or poorly documented directives used by OS/2. continues to be used by the OS/2 derivatives eComStation and ArcaOS. In the OS/2 subsystem of Windows NT, what appeared as to OS/2 programs is actually stored in the registry.

Example

An example CONFIG.SYS for MS-DOS 5:

DOS=HIGH,UMB
DEVICE=C:\DOS\HIMEM.SYS
DEVICE=C:\DOS\EMM386.EXE RAM
DEVICEHIGH=C:\DOS\ANSI.SYS
FILES=30
SHELL=C:\DOS\COMMAND.COM C:\DOS /E:512 /P

Variations

Some DOS variants load a file with an alternate name if its exists instead of loading from the default CONFIG.SYS:
; CCONFIG.SYS: While Concurrent DOS versions 3.2 to 4.1 did not support CONFIG.SYS, later versions, Concurrent DOS 386 and Concurrent DOS XM, as well as Multiuser DOS, System Manager and REAL/32 load CCONFIG.SYS instead of CONFIG.SYS. Some versions of Multiuser DOS use a filename of CCONFIG.INI instead, whereas REAL/32 is known to look for MCONFIG.SYS. These operating systems support many additional and different configuration settings not known under MS-DOS/PC DOS, but they are stored in the binary repository named CCONFIG.BIN rather than in CCONFIG.INI. Both files are typically modified through a configuration utility named CONFIG.EXE only.
; DCONFIG.SYS: DR DOS 3.31, PalmDOS 1.0, Novell DOS 7, OpenDOS 7.01, and DR-DOS 7.02 and higher, a file named DCONFIG.SYS, if present, takes precedence over CONFIG.SYS. Since DR DOS 6.0, this was used in conjunction with disk compression software, where the original boot drive C: would become drive D: after loading the compression driver, but it is commonly used to help maintain multiple configuration files in multi-boot scenarios.
; ODCONFIG.SYS: OpenDOS 7.01 and DR-OpenDOS 7.02 look for a file named ODCONFIG.SYS, whereas some issues of DR-DOS 7.02 and higher instead also look for DRCONFIG.SYS.
; FDCONFIG.SYS: Used by FreeDOS.
; RXCONFIG.SYS: Used by RxDOS 7.24 and higher.
; CONFIG.PTS: Used by PTS-DOS.
Other variations include:
  • CONFIG.SYS is used by , an MS-DOS derivative by the former East-German VEB Robotron.
  • Under FlexOS, CONFIG.SYS is a binary file defining the resource managers and device drivers loaded.

    Content

The content of a CONFIG.SYS file and its many variants is described below. Each item describes a directive, load command or another syntactic element.

Comment

; : Starts a comment as long as no text precedes it on a line.
; : Starts a comment and unlike can follow a directive to form an in-line comment. See. In MS-DOS/PC DOS, the inline-comment is not ignored if put in double-quotes.
; : Starts a comment like semi-colon.

Load file

; : Similar to under DOS, loads programs in CONFIG.SYS. Similar to under OS/2, but runs in foreground and halts CONFIG.SYS processing until return.
; : Loads a device driver into memory.
; : Loads a device driver into upper memory.
; : See.
; : See.
; : Installs a TSR program into memory, like, but installs after the DOS data segment relocation. Compare also: INSTCDEX.
; : Installs a TSR program into memory.
; : Installs a TSR program into upper memory.
; : Installs a TSR program into memory, like, but installs after the DOS data segment relocation. Compare also: INSTCDEX.
; : Similar to, loads programs in CONFIG.SYS. Similar to under DOS and under OS/2, but loads programs in background concurrently.

Directive

; : Specifies if programs can be aborted on errors.
; : Configures which drives should store file access date stamps in the reserved area of directory entries in FAT file systems.
; : Conditional execution on AT-compatible machines only.
; : Boot manager.
; : Configures verbosity of error messages.
; : Changes internal default serial device driver for device.
; : Disables the availability of character devices outside phantom \DEV directory.
; : Loads base device driver into memory.
; : Emits a short beep, even if audible notifications are disabled via.
; : Specifies operating system to be booted.
; : Sets or clears extended checking.
; : Specifies the number of disk buffers to allocate.
; : Same as, but explicitly loads buffers into HMA or UMB.
; : Maximum number of 512-byte cache blocks dynamically allocated from system pool.
; : Maximum time in ms before unused cache blocks are returned to system pool.
; : Maximum time in ms before a dirty cache block gets flushed to disk.
; : Specifies whether the keyboard status is turned on or off.
; : Specifies the name of the CD-ROM hardware driver.
; : Specifies the number of buffers for CD-ROM access.
; : Specifies the type of clock used by the system.
; : Specifies the OEM codepage.
; : Specifies the address of the CMOS RAM.
; : Specifies colors for boot menus.
; : Defines count and logical order and configures I/O address and timeout for COM1: device.
; : Defines count and logical order and configures I/O address and timeout for COM2: device.
; : Defines count and logical order and configures I/O address and timeout for COM3: device.
; : Defines count and logical order and configures I/O address and timeout for COM4: device.
; : Specifies buffer for DMA.
; : Redefines the lead-in character for CONFIG.SYS inline-comments, or causes the following line to be ignored.
; : Enables and configures international support.
; : Sets display cursor to specified position for configuration menus.
; : For codepage switching support.
; : Specifies RAM refresh speed.
; : Conditional execution on 8088 CPUs only.
; : Conditional execution on 8088 and higher CPUs only.
; : Conditional execution on 8086 CPUs only.
; : Conditional execution on 8086/8088 and higher CPUs only.
; : Conditional execution on 286 CPUs only.
; : Conditional execution on 286 and higher CPUs only.
; : Conditional execution on 386 and higher CPUs only, i.e. or
; : Conditional execution on 386 and higher CPUs only.
; : Conditional execution on 486 CPUs only.
; : Conditional execution on 486 and higher CPUs only.
; : Configures the relocation of the drive descriptor tables.
; : Specifies the memory segment address up to which multi-sector disk data deblocking is allowed.
; : Enables internal debugger support.
; : Boot manager.
; : Configures country and codepage information for code, SCR, LPT1, LPT2, LPT3 devices.
; : Configures cache memory sizes.
; : Specifies floppy disk compatibility mode.
; : Specifies display font.
; : Specifies whether to load DOS into the high memory area and/or use upper memory.
; : Specifies whether to load DOS tables into upper memory.
; : Specifies alternative path to search for DOS files.
;
; : Specifies the search path for data files.
; : Specifies physical parameters of disk drives.
; : Define parameters for unrecognized drives.
; : Enables and specifies drive for PDUMP.nnn error logs.
; : Specifies if additional checks should be carried out when starting programs.
; : Specifies an error / return code to be assumed in the following.
; : Specifies the state of the A20 gate when starting a program.
; : Specified the size of the hash table for fast file open operations. Works considerably differently from the external MS-DOS/PC DOS FASTOPEN driver.
; : Specifies the number of cached FCBs that can be opened at once.
; : Same as, but explicitly loads FCBs into upper memory.
; : Boot manager.
; : Specifies the number of files that can be opened at once.
; : Same as, but explicitly loads file handles into upper memory.
; : See or or.
; : See.
; : See or.
; : See or.
; : See or or.
; : See.
; : See or.
; : Enables and configures console and command line history buffer and extended pattern search functionality.
; : Specifies the address of the HMA segment.
; : Configures HLT energy saving.
; : Specifies if the system should check for boot sector viruses.
; : Loads installable file systems.
; : Specifies programs which should be allowed to run at ring 2 in order to directly access the hardware for I/O.
; : Include directives from another menu block.
; : Specifies whether the keyboard mode status is turned on or off.
; : Rotates PIC controller interrupt priorities so that specified number gets the highest priority
; : Specifies the keyboard layout.
; : Specifies the address of the relocated keyboard buffer.
; : Specifies the maximum of drives that can be accessed.
; : Same as LASTDRIVE, but explicitly loads the Current Directory Structure into upper memory.
; : Specifies a list of search paths for DLLs.
; : Specifies how old programs should be handled.
; : Specifies number of file locks.
; : Configures boot logo support under MS-DOS. Allows to display startup message in conjunction with PTS-DOS boot manager.
; : Defines count and logical order and configures I/O address and timeout for LPT1: device.
; : Defines count and logical order and configures I/O address and timeout for LPT2: device.
; : Defines count and logical order and configures I/O address and timeout for LPT3: device.
; : Enables, defines count and logical order and configures I/O address and timeout for LPT4: device.
; : Specifies time before a waiting process gets a higher priority.
; : Configures memory allocation strategy
; : Specifies the default DOS memory allocation strategy.
; : Defines menu options.
; : Specifies menu colors.
; : Specifies the default menu block.
; : Specifies a menu block.
; : Specifies whether multitrack disk operations are used or not.
; : Specifies the default No character in Yes/No/Resume questions.)
; : Specifies whether the keyboard Num Lock| status is turned on or off.
; : Specifies if user must acknowledge errors in CONFIG.SYS.
; : Configures buffer size for LPT1, LPT2, LPT3.
; : Conditional execution on PC-compatible machines only.
; : Configures priority scheduler.
; : Configures priority of programs using disk I/O.
; : Changes internal default printer device driver for PRN device.
; : Specifies if DOS programs can be run or not.
; : Loads user interface.
; : Conditional execution on PS/1-compatible machines only.
; : Conditional execution on PS/2-compatible machines only.
; : Mutes display output send to STDOUT.
; : Specifies if system should reboot automatically on errors.
; : Specifies a drive letter not to be used up for local block device drivers.
; : Specifies the default Resume character in Yes/No/Resume queries.)
; : Defines the real mode memory size.
; : Specifies, if the first character of deleted files should be stored in the reserved area of directory entries in the FAT file system.
; : Similar to under PTS-DOS, specifies the video mode to be used under FreeDOS. Under PTS-DOS, does not specify the video mode but screen access methods.
; : Specifies whether the keyboard Scroll Lock| status is turned on or off.)
; : Sets environment variables.
; : Loads the command interpreter shell.
; : Same as, but supports an additional parameter to define the size of the pre-allocation for COMMAND.COM to relocate its resident portion into the HMA
; : Specifies the state of the keyboard modifiers like Shift Lock, Num Lock, Scroll Lock or Insert mode.
; : Specifies if files should be closed on.
; : Specifies if POST should be skipped on reboots.
; : Compatibility dummy - DR DOS 3.31 - 6.0 were mostly reentrant and had a different stacks layout.
; : Specifies the number of stacks for hardware interrupts.
; : Default stack size allocated for new threads.
; : Same as, but explicitly loads buffers into upper memory.
; : Boot manager.
; : Internal use.
; : Specifies how XMS A20 gate control should work.
; : Specifies a submenu block.
; : Specifies a drive where to log error information instead of displaying a textmode popup screen.
; : Specifies swap file path.
; : Defines the default SwitChar used by the system.
; : Specifies special options.
; : Specifies if a fix for a FPU rounding bug should be activated or not.
; : Specifies file name of alternative DOS operating systems to boot.
; : Configures the location of the various DOS parts in memory.
; : Load system from alternative disk area.
; : Size of system memory pool from which the system dynamically allocates for various purposes
; : Specifies if DOS data and code should be loaded into UMBs.
; : Specifies number of concurrent threads.
; : Configures minimum and maximum time slices for scheduler.
; : Specifies the file extension for temporary files.
; : Globally or locally enables or disables CONFIG.SYS single-stepping execution. The functionality under OS/2 differs significantly from that under DOS.
; : Specifies size of log buffer.
; : Logs detailed error information.
; : Configures DOS management to use a specific segment as UMB memory.
; : Configures the UMB server used.
; : Specifies the address ranges used as UMB RAM.
; : Enables or disables disk write verification.
; : Specifies the DOS version to be reported to programs.
; : Configures VGA display status.
; : Similar to under FreeDOS, specifies current video mode.
; : Specifies if virtual DMA can be used.
; : Specifies if the processor's Virtual Mode Extensions should be deactivated or not.
; : Configures VxD driver for Windows.
; : Configures system support for Windows.
; : Configures the relocation of the extended BIOS data area
; : Conditional execution on XT-compatible machines only.
; : Configures the built-in Year 2000 support.
; : Specifies the default Yes character in Yes/No/Resume queries.
; : Configures deletion tracking.