CONFIG.SYS

Перейти к навигацииПерейти к поиску

CONFIG.SYS — файл конфигурирования операционных систем семейств DOS, Windows 9x и OS/2. Это текстовый файл, содержащий директивы настройки системы и команды загрузки драйверов, он должен располагаться в корневом каталоге загрузочного устройства (англ. Boot disk) (дискеты или диска).

Под DOS директивы в этом файле задают некоторые аппаратные (такие, как состояние индикатора Num Lock) и системные параметры (например, количество и вложенность стеков для обработки аппаратных прерываний, количество дисковых буферов и т. п.), а также загружают драйверы для управления дополнительной и расширенной памятью (HIMEM.SYS, EMM386.EXE), экраном (ANSI.SYS, DISPLAY.SYS), дисководом CD-ROM и т. п.

Использование

Под DOS CONFIG.SYS обрабатывается ядром системы IO.SYS. После обработки CONFIG.SYS загружается файл MSDOS.SYS и указанный директивой shell= в CONFIG.SYS интерпретатор командной строки или, в случае отсутствия этой директивы, COMMAND.COM. Уже командный интерпретатор отвечает за исполнение файла AUTOEXEC.BAT.

Это происходит во всех версиях DOS вплоть до MS-DOS 7.x (на которой основаны Windows 95 и Windows 98). Также, начиная с MS-DOS 6.0 появилась возможность пропустить обработку CONFIG.SYS с помощью функциональных клавиш F5 и F8, но эту возможность можно запретить с помощью директивы switches= в этом же файле[1]. В предыдущих версиях MS-DOS (до версии 6.0) не существовало возможности обойти обработку CONFIG.SYS при загрузке, в результате ошибка в написании (например, указание обычного исполнимого файла вместо драйвера) могла приводить к фатальным сбоям и невозможности загрузиться и для восстановления требовалась загрузка со сменного носителя (дискеты).

В Windows ME, основанной на MS-DOS 8.0, через этот файл уже нельзя загружать драйверы[2][3], однако известны способы обхода этого ограничения[4].

В операционных системах семейства Windows NT файл CONFIG.SYS не используется[5].

В операционных системах семейства OS/2 файл CONFIG.SYS используется на различных стадиях загрузки загрузчиком ядра OS2LDR, ядром OS2KRNL, а также рядом других компонент системы, в зависимости от текущей настройки системы.

Файл config.nt

В операционных системах семейства Windows NT файл CONFIG.SYS не используется, а при старте DOS-сессий (для запуска в режиме эмуляции приложений, написанных для DOS) вместо него используется файл config.nt. Этот файл должен быть расположен в %systemroot%\System32, и его синтаксис похож на синтаксис CONFIG.SYS[6].

Двойная загрузка DOS и Windows 9x

При установке Windows 9x поверх уже установленной DOS или Windows файл CONFIG.SYS (так же, как AUTOEXEC.BAT и системные исполняемые файлы IO.SYS, MSDOS.SYS и COMMAND.COM) переименовывается в CONFIG.DOS[7]. Это делается с целью облегчения двойной загрузки между Windows 9x и DOS: при загрузке в предыдущую версию системы (через выбор соответствующего пункта из стартового меню Windows, вызываемого клавишей F8, или через нажатие клавиши F4 при старте системы), этот файл временно, до следующей перезагрузки, переименовывается обратно, а файл CONFIG.SYS, созданный для Windows 9x, переименовывается в CONFIG.W40[8]. (При этом файл IO.SYS в Windows 95 переименовывается в WINBOOT.SYS, а в Windows 98/ME — в JO.SYS)[8][9][10].

CONFIG.SYS в клонах DOS

Клоны DOS кроме файла CONFIG.SYS могут использовать файлы и c другими именами, что облегчает сосуществование разных версий DOS на одном диске. Например, в свободной операционной системе FreeDOS CONFIG.SYS ищется только если не найден файл FDCONFIG.SYS[11], а в некоторых версиях DR-DOS ищется файл DCONFIG.SYS[12].

Синтаксис CONFIG.SYS в FreeDOS отличается от синтаксиса в MS-DOS — а именно, в FreeDOS иной синтаксис для организации меню загрузки[13].

Синтаксис

CONFIG.SYS имеет свой специальный синтаксис[14][15][16]. В основном, он состоит из директив вида команда=значение (или то же самое, но без знака равенства — например, numlock off). Список некоторых часто используемых команд CONFIG.SYS:

КомандаОписание
;Строка с комментарием
breakЗадаёт поведение системы при нажатии комбинации Ctrl+C во время работы программ
buffersРезервирует место под указанное количество дисковых буферов
countryЗадаёт региональные настройки (формат даты и времени, наименование валюты, порядок сортировки и т. п.)
deviceЗагружает драйвер
devicehighЗагружает драйвер в UMB
dosПараметры загрузки DOS (к примеру, перенос части ядра в HMA)
fcbsСколько одновременно можно открывать FCB
filesСколько одновременно можно открывать файлов
installЗагружает резидентную программу (обычный исполнимый модуль не в формате драйвера)
installhighЗагружает резидентную программу в UMB
lastdriveЗадаёт последнюю букву, доступную для назначения дискам
numlockЗадаёт состояние переключателя Num Lock
remСтрока с комментарием
setУстанавливает значение переменной окружения
shellУказывает интерпретатор командной строки, отличный от command.com, и/или его опции
stacksРезервирует место для стеков обработки аппаратных прерываний
switchesДополнительные опции загрузки

Также, сразу после команды можно поставить знак вопроса ('?', например dos?=high) — в этом случае перед исполнением директивы запрашивается подтверждение исполнения.

Некоторые устаревшие или недокументированные команды[17]:

КомандаОписание
availdev(MS-DOS 2.х) availdev=false делает имена драйверов (CON, LPT1 и т. п.) доступными только в стиле Unix через несуществующий каталог \dev (например, \dev\com1)
cpsw(MS-DOS 4.x) cpsw=off отключает переключение кодовых страниц
ifs(MS-DOS 4.x) загружает драйвер файловой системы
multitrack(MS-DOS 4.0 и выше) multitrack=off отключает многодорожечное чтение — введено для решения проблем совместимости с нестандартными контроллерами дисков и дискет
switchar(MS-DOS 2.х) задаёт знак-префикс, отличный от /, для указания опций в командных строках — предполагалось использовать для уменьшения конфликта с путями, указанными в стиле Unix, где каталоги разделяются знаком /, а не \

Некоторые команды, специфичные только для OS/2[18]:

КомандаОписание
autofailПодавляет вывод сообщений об аппаратных ошибках
basedevЗагружает базовые драйверы устройств
cacheУправляет кешированием файловой системы HPFS
dllbasingУлучшает использование виртуальной памяти
dumpprocessАктивизирует сброс дампа
ioplУправляет доступом к кольцам защиты
libpathУправляет поиском динамических библиотек (DLL)
maxwaitПауза перед отданием задаче высшего приоритета
memmanУправляет свопингом
priorityУправляет приоритетом подзадач
protectonlyПри установке в yes запрещает выполнение приложений DOS или Windows
reiplАвтоматическая перезагрузка после системного сбоя
rmsizeЗадаёт доступную память для сеанса DOS
threadsЗадаёт число подзадач
vmeОтключает расширения виртуального режима процессора 486DX2

Несколько конфигураций и меню

Начиная с MS-DOS 6.0 появилась возможность в CONFIG.SYS группировать директивы в секции и описывать меню. Секции позволяют задать несколько конфигураций, а меню позволяет выбрать одну из них при загрузке системы. Секция начинается с имени секции в квадратных скобках [<имя секции>] и заканчивается с началом следующей секции (или с концом файла). При этом секция [menu] используется для описания меню, а секция [common] обрабатывается перед обработкой любой выбранной в меню конфигурации. Для задания меню в CONFIG.SYS были добавлены следующие команды:

КомандаОписание
includeВключает в обработку секцию содержимое другой секции
menucolorЗадаёт цвет меню
menudefaultЗадаёт пункт меню по умолчанию
menuitemОписывает пункт меню
submenuОписывает пункт подменю

При выборе пункта меню имя секции, указанное в этом пункте, сохраняется в переменной окружения CONFIG. Это позволяет с помощью команд goto %CONFIG% и if "%CONFIG%"== в AUTOEXEC.BAT (и в прочих пакетных файлах) выполнять разные действия в зависимости от выбора конфигурации при загрузке[15].

Примеры файла CONFIG.SYS

numlock = off
break = on
dos = high,umb
country = 7,,c:\dos\country.sys
files = 40
device = c:\dos\himem.sys
device = c:\dos\emm386.exe ram i=b000-b7ff
shell = command.com /p /e:512

Пример CONFIG.SYS с меню:

[menu]
menuitem=WIN, Windows
menuitem=XMS, DOS with only Extended Memory
menudefault=WIN, 10
[common]
dos=high,umb
country=7,,c:\dos\country.sys 
device=c:\dos\himem.sys
shell=command.com /e:512 /p
[WIN]
device=c:\dos\emm386.exe ram
devicehigh=c:\windows\mouse.sys
devicehigh=c:\dos\setver.exe
[XMS]
device=c:\dos\emm386.exe noems

Пример CONFIG.SYS с меню в стиле FreeDOS:

screen=0x12
MENU Please Select Configuration:
MENU
MENU Option 0    basic stuff only
MENU Option 1    CD-ROM
MENU Option 2    TROUSERS
MENU Option 3    CD-ROM and TROUSERS
device=c:\dos\himem.exe
device=c:\dos\emm386.exe
dos=high,umb
country=7,,c:\dos\country.sys 
shell=c:\dos\command.com /p /e:512 /p
13? DEVICE=CDROM.SYS /D:CDDRIVE1
23? DEVICE=TROUSERS.SYS
0?  ECHO Warning: basic stuff only!

Примечания

  1. KB93602: How to Disable F5 and F8 During Startup in MS-DOS (англ.). Microsoft (16 ноября 1999). Дата обращения: 21 декабря 2008. Архивировано из оригинала 21 января 2012 года.
  2. KB269524: Overview of Real Mode Removal from Windows Millennium Edition (англ.). Microsoft (27 января 2007). Дата обращения: 21 декабря 2008. Архивировано из оригинала 21 января 2012 года.
  3. KB274646: Understanding the Settings in the Windows Millennium Edition Config.sys File (англ.). Microsoft (27 января 2007). Дата обращения: 7 июня 2009. Архивировано из оригинала 20 февраля 2012 года.
  4. Reines [MFD]. Real DOS-Mode Patch for Windows ME v1.3 (англ.) (15 августа 2000). Дата обращения: 21 декабря 2008. Архивировано 17 августа 2000 года.
  5. Appendix B. Other Application Environments (англ.). Библиотека TechNet. Microsoft. — Окружение для приложений Windows 3.x, MS-DOS и OS/2 в Windows NT. Дата обращения: 7 июня 2009. Архивировано из оригинала 21 января 2012 года.
  6. KB314106: Troubleshooting MS-DOS-based programs in Windows XP (англ.). Microsoft (28 июня 2005). Дата обращения: 7 июня 2009. Архивировано из оригинала 20 февраля 2012 года.
  7. KB121963: Requirements to Boot Previous Operating System (англ.). Microsoft (10 мая 2007). Дата обращения: 7 июня 2009. Архивировано из оригинала 21 января 2012 года.
  8. 1 2 MDGx / AXCEL216. The renaming game (англ.). Windows 95/98/NT4/2000/ME/XP/2003 + DOS 7.xx/8.00 Tricks + Secrets Files. Дата обращения: 7 июня 2009. Архивировано 17 мая 2008 года.
  9. KB187641: Err Msg: The Following File Is Missing or Corrupt… (англ.). Microsoft (23 января 2007). — «The Jo.sys file is used by Windows 98 and Windows Me in a dual-boot environment with MS-DOS». Дата обращения: 7 июня 2009. Архивировано из оригинала 21 января 2012 года.
  10. См. также: Bart’s free JO.SYS (англ.) (12 марта 2002). — Альтернативный вариант JO.SYS. Дата обращения: 7 июня 2009. Архивировано из оригинала 21 января 2012 года.
  11. FreeDOS: System Files (англ.). Дата обращения: 10 июля 2008. Архивировано 5 января 2006 года.
  12. Introduction to Caldera DR-DOS (англ.). Дата обращения: 10 июля 2008. Архивировано из оригинала 21 января 2012 года.
  13. Описание CONFIG.SYS в FreeDOS (англ.). Дата обращения: 10 июля 2008. Архивировано из оригинала 20 февраля 2012 года.
  14. KB232557: The Windows 98 Config.txt File (англ.). Microsoft (24 января 2007). — Копия файла CONFIG.TXT, поставляемого с Windows 98. Дата обращения: 7 июня 2009. Архивировано из оригинала 20 февраля 2012 года.
  15. 1 2 Batch Commands (англ.). Библиотека TechNet. Microsoft. Дата обращения: 7 июня 2009. Архивировано из оригинала 20 февраля 2012 года.
  16. Command-line reference A-Z (англ.). Библиотека TechNet. Microsoft (21 января 2005). — Команды подсистемы MS-DOS в составе Windows Server 2003. Дата обращения: 7 июня 2009. Архивировано из оригинала 20 февраля 2012 года.
  17. MS-DOS Undocumented commands (англ.). Дата обращения: 28 июля 2008. Архивировано из оригинала 20 февраля 2012 года.
  18. The Config.sys Documentation Project OS/2-eCS Commands (англ.). Дата обращения: 29 июля 2008. Архивировано из оригинала 20 февраля 2012 года.

Литература

  • В.Э.Фигурнов. Часть 3. Основы работы в среде MS DOS // IBM PC для пользователя. — М.: Инфра-М, 1999. — ISBN 5-86225-471-4.