Информация
На главную Главная

Мой t-cards.ru
Войти Войти
Зарегистрироваться Регистрация

Разное
Форум Форум
Вернуться Форумы на t-cards.ru> Hard"n"Soft
Логин
Пароль
Регистрация Участники Поиск >> FAQ


Сообщения в теме: "Загрузка ms-dos через grub..."
31.03.2008 23:15
Admin

Регистрация: 05.10.2005
Проживание: Москва
Сообщения: 284
По умолчаниюЗагрузка ms-dos через grub

В продолжение темы о загрузке с юсб. Решил выделить в отдельную тему, чтоб проще искалось.

Понадобилось мне на своем usb-диске загрузиться в дос, чтоб заюзать ghost и иже с ними.
Как это надо делать:

1. Выделил отдельный раздел (сделал 1 Гб), отформатированный под fat (fat32). ВАЖНО: не задвигайте раздел в самый конец диска, в биосе есть какое-то ограничение на расположение раздела, ни один загрузчик не видит. Grub например говорит

Error 18.
Selected cylinder exceeds maximum supported by BIOS.

У меня этот раздел был изначально на расстоянии примерно 150 Гб от начала диска, потом я его успешно переместил partition magic'ом поближе, сейчас на 20 Гб от начала расположен.

2. Нужна загрузочная дискета. Причем стандартная, которую формирует win2000 / XP, не подходит, т.к. в составе файлов там нет утилиты sys.com, она нужна для правильного переноса системных файлов и загрузочного раздела. А загрузочные CD (например Hiren's Boot CD) тоже не подошли - после sys c: они засерали раздел каким-то дерьмищем и видели вместо 1Гб всего 4Мб, ахтунг какой-то.
А если sys.com от этого Live CD подложить на стандартную виндовую загрузочную дискету, то получаем

Incorrect DOS version.

Нашел по первой ссылке программку bootdisk, она хорошую загрузочную дискету формирует.

3. Загружаемся с дискеты, убеждаемся, что fat-раздел нашелся правильно (например как диск C), даем команду sys c: и переходим к п.4. Если при загрузке с дискеты все подвисло, надо при выборе меню нажать Shift-F5 (режим командной строки), проверить, что диск С на месте, сделать cd block и sys c: (это все касаемо именно этого загрузочного образа). И еще я выяснил, что раздел надо сделать именно fat32 из-под винды, из-под линукса сделал раздел - он его что-то не увидел.

4. Теперь нам надо поиметь файл длиной в 512 байт, который будет представлять собой копию загрузочной области того раздела, который мы тока что наполнили досом. Я делал так - загружаемся в линукс (Live CD какой-нить), даем команду

dd if=/dev/sda4 of=bootsect.dos bs=512 count=1

, где /dev/sda4 - наш раздел, bootsect.dos - выходной файл.

5. Теперь надо подложить этот файл bootsect.dos в корень нашего fat-раздела.

6. И заключительное - конфигурируем grub

title DOS
root (hd0,3)
makeactive
chainloader /bootsect.dos


, где (hd0,3) - это наш раздел (глазами grub'а), /bootsect.dos - тот образ, который мы подложили в п.5.

7. Ну и потом делаем autoexec.bat и config.sys по вкусу, не буду описывать, все через это прошли наверное.

Примечание:
Пункты 4 и 5 можно опустить, если просто сказать grub'у
chainloader +1

У меня изначально это по каким-то причинам не заработало, а позже проверил - все работает как надо.

И вдогонку.
Что я еще пытался сделать - не было у меня возможности перенести систему на раздел с помощью команды sys c:, я пробовал вот что: брал делал образ загрузочного сектора дискеты

dd if=/dev/fd0 of=bootsect.dos bs=512 count=1

, потом подкладывал системные файлы (io.sys, msdos.sys, command.com) в корень раздела, но получал

Disk I/O error

Где-то прочитал, что типа io.sys должен начинаться сразу за загрузочной областью раздела и типа только команда sys может сделать всё правильно. Не знаю, прогон это или нет, но и правда не вышло.

И еще все твердят, что fat-раздел должен быть обязательно активным. Я не понял, где именно это важно и не достаточно ли такой опции в grub'е, как makeactive, но не суть, кому интересно, проверьте.