Русификация FreeDOS::Журнал СА7.2004
www.samag.ru
     
Поиск   
              
 www.samag.ru    Web  0 товаров , сумма 0 руб.
E-mail
Пароль  
 Запомнить меня
Регистрация | Забыли пароль?
Журнал "Системный администратор"
Журнал «БИТ»
Подписка
Архив номеров
Где купить
Наука и технологии
Авторам
Рекламодателям
Контакты
   

  Опросы
  Статьи

Событие  

В банке рассола ждет сисадмина с полей фрактал-кукумбер

Читайте впечатления о слете ДСА 2024, рассказанные волонтером и участником слета

 Читать далее...

Организация бесперебойной работы  

Бесперебойная работа ИТ-инфраструктуры в режиме 24/7 Как обеспечить ее в нынешних условиях?

Год назад ИТ-компания «Крок» провела исследование «Ключевые тренды сервисного рынка 2023». Результаты

 Читать далее...

Книжная полка  

Читайте и познавайте мир технологий!

Издательство «БХВ» продолжает радовать выпуском интересных и полезных, к тому же прекрасно

 Читать далее...

СУБД PostgreSQL  

СУБД Postgres Pro

Сертификация по новым требованиям ФСТЭК и роль администратора без доступа к данным

 Читать далее...

Критическая инфраструктура  

КИИ для оператора связи. Готовы ли компании к повышению уровня кибербезопасности?

Похоже, что провайдеры и операторы связи начали забывать о требованиях законодательства

 Читать далее...

Архитектура ПО  

Архитектурные метрики. Качество архитектуры и способность системы к эволюционированию

Обычно соответствие программного продукта требованиям мы проверяем через скоуп вполне себе понятных

 Читать далее...

Как хорошо вы это знаете  

Что вам известно о разработках компании ARinteg?

Компания ARinteg (ООО «АРинтег») – системный интегратор на российском рынке ИБ –

 Читать далее...

Графические редакторы  

Рисование абстрактных гор в стиле Paper Cut

Векторный графический редактор Inkscape – яркий представитель той прослойки open source, с

 Читать далее...

День сисадмина  

Учите матчасть! Или как стать системным администратором

Лето – время не только отпусков, но и хорошая возможность определиться с профессией

 Читать далее...

День сисадмина  

Живой айтишник – это всегда движение. Остановка смерти подобна

Наши авторы рассказывают о своем опыте и дают советы начинающим системным администраторам.

 Читать далее...

Виртуализация  

Рынок решений для виртуализации

По данным «Обзора российского рынка инфраструктурного ПО и перспектив его развития», сделанного

 Читать далее...

Книжная полка  

Как стать креативным и востребованным

Издательский дом «Питер» предлагает новинки компьютерной литературы, а также книги по бизнесу

 Читать далее...

Книжная полка  

От создания сайтов до разработки и реализации API

В издательстве «БХВ» недавно вышли книги, которые будут интересны системным администраторам, создателям

 Читать далее...

Разбор полетов  

Ошибок опыт трудный

Как часто мы легко повторяем, что не надо бояться совершать ошибки, мол,

 Читать далее...

1001 и 1 книга  
19.03.2018г.
Просмотров: 6144
Комментарии: 0
Машинное обучение с использованием библиотеки Н2О

 Читать далее...

12.03.2018г.
Просмотров: 6857
Комментарии: 0
Особенности киберпреступлений в России: инструменты нападения и защита информации

 Читать далее...

12.03.2018г.
Просмотров: 4140
Комментарии: 0
Глубокое обучение с точки зрения практика

 Читать далее...

12.03.2018г.
Просмотров: 2978
Комментарии: 0
Изучаем pandas

 Читать далее...

12.03.2018г.
Просмотров: 3781
Комментарии: 0
Программирование на языке Rust (Цветное издание)

 Читать далее...

19.12.2017г.
Просмотров: 3789
Комментарии: 0
Глубокое обучение

 Читать далее...

19.12.2017г.
Просмотров: 6283
Комментарии: 0
Анализ социальных медиа на Python

 Читать далее...

19.12.2017г.
Просмотров: 3134
Комментарии: 0
Основы блокчейна

 Читать далее...

19.12.2017г.
Просмотров: 3434
Комментарии: 0
Java 9. Полный обзор нововведений

 Читать далее...

16.02.2017г.
Просмотров: 7246
Комментарии: 0
Опоздавших не бывает, или книга о стеке

 Читать далее...

17.05.2016г.
Просмотров: 10616
Комментарии: 0
Теория вычислений для программистов

 Читать далее...

30.03.2015г.
Просмотров: 12336
Комментарии: 0
От математики к обобщенному программированию

 Читать далее...

18.02.2014г.
Просмотров: 13969
Комментарии: 0
Рецензия на книгу «Читаем Тьюринга»

 Читать далее...

13.02.2014г.
Просмотров: 9100
Комментарии: 0
Читайте, размышляйте, действуйте

 Читать далее...

12.02.2014г.
Просмотров: 7053
Комментарии: 0
Рисуем наши мысли

 Читать далее...

10.02.2014г.
Просмотров: 5362
Комментарии: 3
Страна в цифрах

 Читать далее...

18.12.2013г.
Просмотров: 4594
Комментарии: 0
Большие данные меняют нашу жизнь

 Читать далее...

18.12.2013г.
Просмотров: 3402
Комментарии: 0
Компьютерные технологии – корень зла для точки роста

 Читать далее...

04.12.2013г.
Просмотров: 3129
Комментарии: 0
Паутина в облаках

 Читать далее...

03.12.2013г.
Просмотров: 3379
Комментарии: 0
Рецензия на книгу «MongoDB в действии»

 Читать далее...

02.12.2013г.
Просмотров: 3000
Комментарии: 0
Не думай о минутах свысока

 Читать далее...

Друзья сайта  

 Русификация FreeDOS

Архив номеров / 2004 / Выпуск №7 (20) / Русификация FreeDOS

Рубрика: Администрирование /  Продукты и решения   | Дополнительные материалы

ВАДИМ ДРУЖИН

Русификация FreeDOS

Разработка системы FreeDOS началась более 10 лет назад – файл HISTORY.TXT в исходных текстах ядра начинает отсчёт с 25 мая 1993 года. Несмотря на столь солидную историю, пригодной для практического использования в современных условиях система стала недавно – поддержка файловой системы FAT32 начала разрабатываться в 2001 году. Конечно, не все применения DOS требуют поддержки большой файловой системы. Задолго до появления FAT32 FreeDOS использовалась как встроенная операционная система в условиях малого дискового пространства и небольших объемов оперативной памяти, а также входила в состав дистрибутива программы DOSEMU – среды эмуляции DOS для Linux. Однако для меня DOS – это прежде всего система, которую можно загрузить с дискеты и использовать для восстановления работоспособности операционной системы на жестком диске, среда для запуска утилит аварийного восстановления данных и антивирусных программ. После появления версий Microsoft Windows с поддержкой файловой системы FAT32 использовать для аварийно-восстановительных работ DOS без поддержки этой файловой системы было проблематично. Поэтому достаточно длительное время FreeDOS меня не интересовала.

Недавно, подготавливая загрузочную антивирусную дискету, у меня возникли трудности в ограничении по размеру – необходимые файлы не удавалось упаковать в объём 3,5-дюймовой дискеты, несмотря на все ухищрения. Тогда я решил поискать версию DOS с поддержкой FAT32, но с меньшим объёмом загрузочных файлов, чем у MS-DOS из комплекта Windows. Оказалось, что у FreeDOS уже имеются нужные возможности и при этом сохранился маленький объём загрузочного файла. Сравним размер ядра MS-DOS из состава Windows 98 Second Edition RUS и ядра из дистрибутива FreeDOS Beta9RC5:

DOS

Файл

Размер

MS-DOS

IO.SYS

222390 байт

FreeDOS

KERNEL32.SYS

45815 байт

Разница почти в 5 раз! Так что для запуска с дискеты предпочтительно использовать именно FreeDOS.

К сожалению, при работе с FreeDOS выяснился один неприятный момент – FreeDOS не поддерживает смену информации о кодовых страницах. Команда COUNTRY в файле CONFIG.SYS обрабатывается только частично, используется первый параметр (код страны) для установки национальных форматов даты, времени, валюты и разделителей, а указанная кодовая страница (второй параметр) игнорируется, и используется страница, жёстко зашитая во время компиляции. Поэтому после установки из дистрибутива FreeDOS не может нормально обрабатывать файлы и каталоги с русскими именами. Но эту проблему можно решить. Так как FreeDOS распространяется с полными исходными текстами, никто не мешает нам собрать версию ядра с поддержкой нужной кодовой страницы. Описанию этой процедуры и посвящена статья.

Для сборки ядра FreeDOS нам понадобится компилятор языка C. Выполнять компиляцию можно при помощи Turbo C 2.01, Turbo C++ 1.01, Turbo C 3.0, Borland C 4.51 и 5.01, по утверждению авторов, можно использовать другие компиляторы Borland, Microsoft C и (Open)Watcom C. Хотя некоторые версии компиляторов Borland сейчас доступны в Интернете для свободного скачивания, я (как и разработчики FreeDOS) рекомендую использовать OpenWatcom C. Я пробовал использовать для сборки компилятор Turbo C 2.01. Процесс прошёл успешно, но получившееся ядро не смогло нормально загрузиться. А после сборки компилятором OpenWatcom C 1.2 получился полностью рабочий исполняемый файл.

Компилятор OpenWatcom можно свободно загрузить из Интернета по адресу: http://openwatcom.mirrors.pair.com/watcom/open-watcom-win32-1.2.exe – это полный инсталятор для среды Win32, включая компиляторы C и Fortran77 (размер файла 63.1 Mб).

Если вы не хотите качать весь файл, можно получить набор только необходимых для компиляции компонентов по адресу: http://openwatcom.mirrors.pair.com/watcom/zips-1.2.

Компиляцию можно выполнять как из-под Windows, так и из-под DOS. Версию компилятора для DOS можно использовать, например, в среде DOSEMU под Linux. В зависимости от ОС, под которой будет проходить компиляция, нужно скачать соответствующий набор ZIP-архивов.

Файлы OpenWatcom 1.2 для компиляции под DOS

c_doswin

C compiler (DOS & Win16 hosts)

clib_a16

C runtime libraries (16-bit all targets)

clib_d16

C runtime libraries (16-bit DOS)

cm_clib_a16

C runtime libraries (16-bit all targets)

cm_clib_d16

C runtime libraries (16-bit DOS)

cm_clib_hdr

C runtime library header files

cm_core_all

Core binaries (All hosts)

cm_core_dos

Core binaries (DOS host)

cm_core_doswin

Core binaries (DOS & Win hosts)

core_doswin

Core binaries (DOS & Win16 hosts)

ext_dos4gw

DOS/4GW DOS extender

 

Файлы OpenWatcom 1.2 для компиляции под Win32

c_nt

C compiler (Win32 hosts)

clib_a16

C runtime libraries (16-bit all targets)

clib_d16

C runtime libraries (16-bit DOS)

cm_clib_a16

C runtime libraries (16-bit all targets)

cm_clib_d16

C runtime libraries (16-bit DOS)

cm_clib_hdr

C runtime library header files

cm_core_all

Core binaries (All hosts)

cm_core_nt

Core binaries (Win32 host)

core_nt

Core binaries (Win32 hosts)

Все скачанные архивы нужно распаковать в какой-нибудь каталог, пусть для определенности это будет C:WATCOM. Распаковывать архивы нужно с сохранением структуры каталогов.

Кроме компилятора C для сборки понадобится также ассемблер NASM версии не ниже 0.98.36. Я использовал версию 0.98.38 (DOS 32-bit). Загрузить NASM можно по адресу: http://nasm.sourceforge.net. Будем считать, что NASM распакован в каталог C:NASM.

Маленький размер ядра FreeDOS достигается при помощи использования динамической упаковки. После компиляции файл дополнительно обрабатывается упаковщиком UPX, и при загрузке происходит его автоматическая распаковка в оперативную память. Похожую технологию использует ядро Linux, там для упаковки используется алгоритм GZIP или BZIP2. Скачать UPX можно по адресу: http://upx.sourceforge.net. Я пользовался UPX 1.24d (32-bit DOS version). По аналогии с NASM пусть UPX располагается в каталоге C:UPX.

Итак, все утилиты, необходимые для компиляции, у нас есть, теперь нужно получить сами исходные тексты FreeDOS.

Вы можете скачать с сайта http://www.freedos.org дистрибутив FreeDOS в виде образа загрузочного компакт-диска (ISO), в который входят исходные тексты, скомпилированные версии всех файлов и интерактивный инсталлятор, либо скачать с того же адреса по отдельности необходимые утилиты (команды и драйверы DOS) и по адресу http://sourceforge.net/projects/freedos исходные тексты ядра.

Если скачивать утилиты по отдельности, вы получите самые последние версии, программы, входящие в установочный образ, могут быть устаревшими. Я использовал для сборки исходные тексты ядра версии 2.0.34 из дистрибутива FreeDOS Beta9RC5, они находятся в файле FREEDOS PACKAGESSRC_BASEDISK04KERNELS.ZIP на компакт-диске. После распаковки архива с сохранением структуры каталогов в корне диска C мы получим каталог C:SOURCEKE2034, в котором и располагаются исходные тексты, документация на английском языке (в подкаталоге DOCS) и командные файлы, выполняющие сборку. Сборка производится с помощью командного файла BUILD.BAT или утилиты make. При запуске make без параметров выполняется вызов того же самого BUILD.BAT, так что разницы фактически никакой.

Перед началом компиляции нужно задать параметры, такие как тип и место нахождения используемого компилятора, архитектура процессора, для которого предназначено ядро (16 или 32 бита), и необходимость поддержки файловой системы FAT32. Задаются эти параметры в файле CONFIG.BAT. Чтобы получить исходный вариант файла (с настройками по умолчанию), нужно скопировать с этим именем файл CONFIG.B (copy CONFIG.B CONFIG.BAT). Теперь вносим в файл CONFIG.BAT необходимые изменения.

Следующие строки нужно закомментировать:

set COMPILER=TC2

set TC2_BASE=c: c201

set XCPU=86

set XFAT=16

А взамен раскомментировать (убрать символы «:- » в начале строки):

:- set COMPILER=WATCOM

:- if not \%WATCOM% == goto watcom_defined

:- set WATCOM=c:watcom

:- set PATH=%PATH%;%WATCOM%inw

:- set XCPU=386

:- set XFAT=32

Следующие строки изменить:

set XNASM=c:in asm16 ® set XNASM=c: asm asm

set XUPX=upx --8086 –best ® set XUPX=c:upxupx --8086 --best

Если вы используете версию компилятора Watcom C для среды Win32, то в строку

set PATH=%PATH%;%WATCOM%inw

нужно добавить путь к каталогу binnt:

set PATH=%PATH%;%WATCOM%inw;%WATCOM%innt

Итак, для компиляции у нас всё готово, осталось только выполнить то, ради чего всё это затевалось – русификацию.

Минимально необходимая модификация ядра, которая позволяет без проблем обрабатывать файлы с русскими символами в именах, – это задание правильной таблицы преобразования строчных/заглавных букв. Информация о кодовой странице (частью которой является таблица преобразования) хранится в файле KERNEL NLS_HC.ASM. Этот файл является копией одного из исходных файлов, находящихся в каталоге KERNELNLS. В стандартном ядре это KERNELNLS?01-437.HC.

Насколько я понял из комментариев, для создания HC-файлов должна использоваться некая утилита, которая преобразует файл формата UNF (Universal NLS data Format) в ассемблерный листинг (HC). Никаких следов этой утилиты мне обнаружить не удалось, поэтому я решил взять в качестве исходного ассемблерный код файла NLS_HC.ASM и поменять таблицу непосредственно в нём. Структура файла вполне очевидна. Хотя, кроме заголовка, комментарии в файле отсутствуют, имеющиеся имена меток достаточно информативны. Таблица преобразования регистра символов имеет метку _nlsUpcaseHardcoded. Кроме этой таблицы, я также исправил таблицу порядка сортировки, которая помечена как _nlsCollHardcoded.

Порядок сортировки в изменённом варианте используется не алфавитный, а по возрастанию расширенных ASCII-кодов символов.

Для русской кодовой страницы 866 использование такого порядка даёт почти правильный результат, только в последовательность строчных русских букв вклинивается набор символов псевдографики (эти символы в именах файлов встречаются нечасто).

Мой вариант файла NLS_HC.ASM можно скачать по ссылке http://vdruzhin.chat.ru/freedos/007-866.hc. После скачивания файл нужно переименовать и скопировать вместо оригинального NLS_HC.ASM.

Теперь вернемся в каталог 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: чистую дискету и, находясь в каталоге KE2034BIN, выполните команду INSTALL. На дискету будет скопировано ядро, конфигурационные файлы и командный интерпретатор.

Только при копировании файла COMMAND.COM возникает небольшая проблема. Дело в том, что команда SYS ищет этот файл в трёх местах – в исходном каталоге, в корневом каталоге исходного диска и в переменной среды «COMSPEC», при этом она не проверяет, принадлежит ли найденный файл именно FreeDOS. Так как в каталоге KE2034BIN после завершения сборки никакого COMMAND.COM нет, найден и скопирован на дискету будет командный интерпретатор той операционной системы, под которой выполнялась компиляция. Не самое плохое решение, однако если окажется, что текущая операционная система – это не FreeDOS, а MS-DOS (или MS Windows), то загрузочная дискета будет неработоспособной, так как COMMAND.COM от Microsoft работает только в «своей» версии DOS. Чтобы исправить эту ситуацию, можно либо заранее скопировать в каталог KE2034BIN командный интерпретатор от FreeDOS, либо после создания дискеты скопировать файл на неё, заменив вариант, записанный командой SYS. На инсталяционном компакт-диске FreeDOS COMMAND.COM можно найти в каталоге isolinuxuildcd.

Теперь осталось перезагрузить компьютер (не забыв в настройках BIOS Setup разрешить загрузку с дискеты) и убедиться в работоспособности скомпилированного ядра.

Ссылки:

  1. FreeDOS – http://www.freedos.org
  2. OpenWatcom – http://www.openwatcom.org
  3. NASM (Netwide Assembler) – http://nasm.sourceforge.net
  4. UPX (Ultimate Packer for eXecutables) – http://upx.source-forge.net

Комментарии отсутствуют

Добавить комментарий

Комментарии могут оставлять только зарегистрированные пользователи

               Copyright © Системный администратор

Яндекс.Метрика
Tel.: (499) 277-12-45
E-mail: sa@samag.ru