русифікація FreeDOS
Нещодавно, готуючи завантажувальний антивірусну дискету, у мене виникли труднощі в обмеженні за розміром - необхідні файли не вдавалося упакувати в обсяг 3,5-дюймової дискети, незважаючи на всі хитрощі. Тогя вирішив пошукати версію DOS з підтримкою FAT32, але меншим обсягом завантажувальних файлів, ніж у MS-DOS комплекту Windows. Виявилося, що у FreeDOS вже є необхідні можливості і при цьому зберігся маленький обсяг завантажувального файлу. Порівняємо розмір ядра MSDOS зі складу Windows 98 Second Edition RUS і ядра з дистрибутива FreeDOS Beta9RC5:
Якщо завантажувати утиліти окремо, ви отримаєте самі останні версії, програми, що входять в інсталяційний образ, можуть бути застарілими. Я використовував для складання вихідні тексти ядра версії 2.0.34 з дистрибутива FreeDOS Beta9RC5, вони знаходяться в файлі FREEDOS \ PACKAGES \ SRC_BASE \ DISK04 \ KERNELS.ZIP на компактдиску. Після розпакування архіву зі збереженням структури каталогів в корені диска C ми отримаємо каталог C: \ SOURCE \ KE2034, в якому і розташовуються вихідні тексти, документація англійською мовою (в підкаталозі DOCS) і командні файли, які виконують збірку.
Наступні рядки змінити:
set XNASM = c: \ bin \ nasm16> set XNASM = c: \ nasm \ nasm
set XUPX = upx --8086 .best> set XUPX = c: \ upx \ upx --8086 --best
Якщо ви використовуєте версію компілятора Watcom C для середовища Win32, то в рядок
set PATH =% PATH%;% WATCOM% \ binw
потрібно додати шлях до каталогу binnt:
set PATH =% PATH%;% WATCOM% \ binw;% WATCOM% \ binnt
Отже, для компіляції у нас все готово, залишилося тільки виконати те, заради чого все це затівалося - русифікацію. Мінімально необхідна модифікація ядра, яка дозволяє без проблем обробляти файли з російськими символами в іменах, - це завдання правильної таблиці перетворення малих / заголовних букв. Інформація про кодової сторінці (частиною якої є таблиця перетворення) зберігається в файлі KERNEL \ NLS_HC.ASM. Цей файл є копією одного з вихідних файлів, що знаходяться в каталозі KERNEL \ NLS. У стандартному ядрі це KERNEL \ NLS \ 001-437.HC.
Тепер повернемося в каталог KE2034 і, зібравшись з духом, запустимо команду BUILD.BAT. Після закінчення компіляції в каталозі BIN ми отримаємо файл KERNEL.SYS - наше нове ядро FreeDOS. Крім нього, в каталозі BIN знаходяться додаткові файли і утиліти:
- AUTOEXEC.BAT - приклад конфігураційного командного файлу;
- CONFIG.SYS - приклад конфігураційного файлу DOS;
- INSTALL.BAT - командний файл для створення завантажувального диска з зібраним ядром;
- KWC38632.map - карта пам'яті ядра (налагоджувальна інформація);
- KWC38632.sys - копія ядра, в імені файлу которогоуказани використані опції збірки - тип компілятора, тип процесора, тип файлової системи;
- SYS.COM - команда для копіювання системних файлів і запису на диск завантажувального сектора.
Я не розбирався, прив'язана чи жорстко команда SYS.COM до версії ядра, швидше за все немає, але про всяк випадок я використовую обидва файли, зібрані разом. Щоб перевірити працездатність скомпільованих файлів, можна використовувати командний файл INSTALL.BAT. Вставте в дисковод A: чисту дискету і, перебуваючи в каталозі KE2034 \ BIN, виконайте команду INSTALL. На дискету буде скопійовано ядро, конфігураційні файли і командний інтерпретатор. Тільки при копіюванні файлу COMMAND.COM виникає невелика проблема. Справа в тому, що команда SYS шукає цей файл в трьох місцях - у вихідному каталозі, в кореневому каталозі вихідного диска і в змінного середовища «COMSPEC», при цьому вона не перевіряє, чи належить знайдений файл саме FreeDOS. Так як в каталозі KE2034 \ BIN після завершення збирання ніякого COMMAND.COM немає, знайдений і скопійований на дискету буде командний інтерпретатор тієї операційної системи, під якою виконувалася компіляція. Чи не найгірше рішення, проте якщо виявиться, що поточна операційна система - це не FreeDOS, а MS-DOS (або MS Windows), то завантажувальний диск буде непрацездатною, так як COMMAND.COM від Microsoft працює тільки в «своїй» версії DOS. Щоб виправити цю ситуацію, можна або заздалегідь скопіювати в каталог KE2034 \ BIN командний інтерпретатор від FreeDOS, або після створення дискети скопіювати файл на неї, замінивши варіант, записаний командою SYS. На інсталяційні компактдиску FreeDOS COMMAND.COM можна знайти в каталозі isolinux \ buildcd.
Тепер залишилося перезавантажити комп'ютер (не забувши в налаштуваннях BIOS Setup дозволити завантаження з дискети) і переконатися в працездатності скомпільованої ядра.
Додаток:- Російська збірка ядра FreeDOS 2.0.33: freedos-2.0.33-rus.zip (107575 байт)
- Модифікований файл кодової сторінки (потрібен для самостійної збірки): freedos-config-rus.zip (2629 байт)
- файл 007-866.hc