Автор: Mario79 
xx.01.2006 - набор статьи 
20.03.2006 - публикация статьи 
23.03.2006 - исправление и дополнение статьи
26.02.2007 - переработано и дополнено в связи с изменившимися реалиями

Загрузка ОС Колибри с USB Flash Drive
На сегодняшний день ОС Колибри не имеет поддержки USB устройств на уровне самой системы, по этой причине для запуска с USB Flash накопителей приходится идти на определенные хитрости.
Существует 2 известных способа запустить ОС Колибри с «флешки».

1) Эмуляция флоппи диска в BIOS.
Метод прост до тупости на «флешку» записывается IMG образ, с полной эмуляцией, то есть 0 сектор IMG образа становится 0 сектором «флешки», и так далее пока все сектора образа не будут скопированы на накопитель. Из недостатков этого способа сразу можно заметить потерю рабочего пространства выше 1,44 Мб. Особенно обидным это является для накопителей, емкость которых намного превышает этот размер.
Как производится такая «установка» системы в разных ос:
а) ОС Linux описание можно получить, введя в консоли команду man dd
б) ОС Windows запись можно произвести с помощью программы WinHex (или аналогичной), копированием 2880 секторов с диска A (floppy disk) на диск, который является Flash накопителем, начиная с 0 сектора.
в) DOS можно просто отформатировать эмулируемое устройство, разумеется, если это позволяет BIOS материнской платы компьютера.

2) Эмуляция Flash накопителя как жесткого диска в BIOS.
Здесь надо сделать пояснение: даже если ваш BIOS эмулирует «флешку» как флоппи диск это совсем не означает, что вы ограничены размерами файловой системы FAT12, которая в основном применяется на флоппи дисках и имеет ограничение на размер около 4 Мб.
На практике это означает, что отформатированный в FAT16 накопитель будет замечательно видеться как флоппи диск с размером до 2 Гб. К сожалению, все мои попытки загрузиться с применением файловой системы FAT32, которая позволила бы на полный размер использовать USB Flash накопители размером более 2 Гб, не увенчались успешно.

Вернемся непосредственно к загрузке.
Поскольку на данный момент Колибри не является полностью самостоятельной ОС, то повсеместно она применяется параллельно с другими ОС. Эта ситуация привела к тому, что собственного независимого загрузчика (если не считать флоппи диски) у Колибри фактически нет.
На сегодняшний день остались актуальными только 2 загрузчика: meosload.com и mtldr.
Оба могут запускаться из среды DOS.
Установка Колибри на флешку в моем варианте начинается с установки DOS на флешку, как первичной системой, из-под которой будут запущены загрузчики Колибри. Конечно, в этом случае с точки зрения лицензии лучше использовать полные аналоги DOS, которые имеют свободную лицензию на использование, но не в этом суть, так что не будем отвлекаться на мелочи.

Установить DOS на «флешку» можно несколькими способами:
а) ОС Windows при форматировании флешки выбрать пункт скопировать системные файлы, в общем, то же самое что и для флоппи дискеты. К сожалению, этот метод подходит только для линейки 9х, на 2К не проверял, но в ХР этот пункт недоступен.
б) DOS при наличии эмуляции «флешки» как гибкого или жесткого диска может сделать диск загрузочным. Для этого нужно ввести команду sys X: где Х заменить на букву, под которой у вас значится эмулируемый Flash накопитель (Будьте осторожны, если вы укажите не тот диск, то можете убить загрузчик установленной на ваш жесткий диск ОС). При этом DOS, может, и будет ругаться, но не обращайте на это внимание и выберите F (продолжить), главное чтобы в загрузочный сектор накопителя был записан загрузчик, который и будет запускать DOS с «флешки».
В результате мы будем иметь USB Flash накопитель с установленным DOS.

Из всех файлов, которые будут находиться на «флешке» необходимы только Command.com, Io.sys, Msdos.sys - остальные можно удалить, для наших целей они не нужны. Если по какой либо причине эти три файла не скопировались на накопитель, то скопируйте их вручную. Далее желательно перезагрузить компьютер и проверить загрузку DOS с флешки. Если все пройдет нормально, то вы получите приглашение командной строки DOS, в противном случае нужно попытаться установить снова.
В дополнение к этим трем файлам потребуется в ручную создать еще пару пустых файлов: Config.sys, Autoexec.bat - это необходимо, для того чтобы сделать впоследствии полностью автоматическую загрузку Колибри, а не стартовать загрузчик из командной строки каждый раз.

Ну, вот половина работы сделана. Далее возникают некоторые трудности, которые мы успешно разрешим (для того я и писал эту статью).
Трудности заключаются в том, что в стандартном варианте ни один загрузчики не загружает IMG образ в память (загружается и запускается только ядро), поскольку подразумевается, что образ будет загружен ядром. Но как вы, наверное, уже догадались образ ядру грузить просто не откуда, так как с USB устройствами Колибри пока не дружит.

Отсюда остается один выход - сделать так чтобы загрузчик загрузил не только ядро, но и образ по нужному месту в памяти. НО! (Опять это но!) Загрузчик запущен в DOS, который работает в реальном (Real mode) режиме процессора, с ограничением на адресацию памяти в 1 Мб, а образ в адресном пространстве Колибри как раз должен располагаться, аккурат начиная с первого мегабайта и далее в памяти.
Как же быть? Эврика! DOS ведь может обращаться через дополнительные драйверы к памяти выше первого мегабайта (кстати так и поступает ядро при загрузке образа с флоппи), но реализовано это так коряво, что пользоваться этим не хочется совсем. (Конечно это мое субъективное мнение).

Одновременно с этим есть другой способ обратиться к памяти выше первого мегабайта. В процессорах х86 существует возможность установить недокументированный, но считающийся практически стандартным «нереальный» (Unreal mode) режим работы.
Конечно, прямая адресация в таком режиме невозможна, но можно обращаться к памяти косвенно через регистры, у которых были изменены лимиты адресации.
В результате получаем сравнительно простой способ доступа к памяти вплоть до 4 Гб, находясь фактически в реальном режиме работы процессора.

В результате я доработал загрузчик meosload.com (поскольку в его коде мне оказалось проще разобраться), теперь он загружает и ядро и образ, а затем стартует ОС.
Для включения «нереального» рема работы процессора я изначально использовал код, взятый с <http://www.wasm.ru> который я переработал в программу enable.exe
Позже код был переписан на синтаксис FASM (оригинал был для TASM), товарищем Serge, за что ему огромное спасибо, поскольку у меня не хватило ума и терпения сделать это самому.

Итак, это было длинное отступление, но без него вы бы не поняли всю идею предложенного мной способа загрузки.
Осталось лишь скопировать на «флешку» файлы  enable.exe и meosload.com, а также прописать в Autoexec.bat их загрузку (Autoexec.bat можно редактировать любым текстовым редактором) и, разумеется, на «флешке» в корне диска должен находиться сам файл образа kolibri.img.

Вот в принципе и все. Осталось перезагрузить компьютер и выбрать загрузку с USB Flash накопителя. В синем окне загрузки в качестве загрузочного устройства нужно выбрать пункт 3-использовать уже загруженный образ.

P.S.
1) Хочу выразить большую признательность за помощь в подготовке материала Андрею (NoName), Эдуарду (DoomEdArchangel) и Сергею (Serge).
2) В архиве с этим файлом содержаться упомянутые в тексте enable.exe и meosload.com и их исходные коды.