1. Друзья, в это тяжёлое и непонятное для всех нас время мы просим вас воздержаться от любых упоминаний политики на форуме, - этим ситуации не поможешь, а только возникнут ненужные ссоры и обиды. Это касается также шуток и юмора на тему конфликта. Пусть войны будут только виртуальными, а политики решают разногласия дипломатическим путём. С уважением, администрация Old-Games.RU.

    Скрыть объявление
  2. Пожалуйста, внимательно прочитайте правила раздела.
  3. Если Вы видите это сообщение, значит, вы ещё не зарегистрировались на нашем форуме.

    Зарегистрируйтесь, если вы хотите принять участие в обсуждениях. Перед регистрацией примите к сведению:
    1. Не регистрируйтесь с никами типа asdfdadhgd, 354621 и тому подобными, не несущими смысловой нагрузки (ник должен быть читаемым!): такие пользователи будут сразу заблокированы!
    2. Не регистрируйте больше одной учётной записи. Если у вас возникли проблемы при регистрации, то вы можете воспользоваться формой обратной связи внизу страницы.
    3. Регистрируйтесь с реально существующими E-mail адресами, иначе вы не сможете завершить регистрацию.
    4. Обязательно ознакомьтесь с правилами поведения на нашем форуме, чтобы избежать дальнейших конфликтов и непонимания.
    С уважением, администрация форума Old-Games.RU
    Скрыть объявление

Загрузка MS-DOS

Тема в разделе "Hard & Soft", создана пользователем akimovster, 15 фев 2008.

  1. tuliss

    tuliss

    Регистрация:
    24 фев 2014
    Сообщения:
    5.975
    Так как я решил замарочится с мультизагрузкой, возникли некоторые вопросы которые я просто не помню.

    В целом такой вариант как

    partition 0 - DOS 6.22 / syslinux
    partition 1 - win95
    partition 2 - win98
    partition 3 - ext

    Можно сказать работает.
    syslinux для win 95 и win98 просто передает управления скрывая другие первичные разделы. Dos 6.22 не может так грузится, так как там установлен загрузчик syslinux :)
    Для этого можно использовать функцию syslinux и грузить из файла предварительно скопированную загрузочную область в формат .bss (первые 440 байт) . В общем спросите вы, чего тебе еще надо ? Хочется извращений :spiteful:

    Так как на DOS у нас лежит загрузчик syslinux, то для правки конфига надо грузится в DOS. Почему бы не сделать так

    partiton 0 - win95
    partition 1 - win98
    partition 2 - dos 6.22 / syslinux
    partition 3 - ext

    Вот тут и возникает проблема. Загрузчик совершенно нормально грузится, может загрузить как win95 так и win98 но вот dos 6.22 нет. .bss файл уже не срабатывает.
    Я не знаю будет ли он срабатывать, так как 3 раздел находится за пределами 2 gb :)
    (завтра попробую создать три раздела в приделах 500 метров, вдруг сработает)
    В syslinux есть возможность загрузки сразу io.sys , но у меня он не работает да же когда dos установлен нормально в 0 раздел.

    Я конечно попробую сделать еще по другому, оставить как в первом варианте и найти функцию смены букв диска (вроде бы она в syslinux есть, но я не читал детально)

    И еще может мне кто - то номарльно объяснить про BPB ?

    Для DOS например указаны такие параметры в wiki по syslinux
    seg=0x70 sect=0x8000 setbpb nohand

    P.S. В общем тут подумалось, может быть действительно поделить на малые разделы в приделах 2 gb и попробовать установить dos в 3 раздел и посмотреть отличается ли загрузчик в 1 разделе ? На текущий момент, dos при запуске говорит, что установится в 3 раздел он ну никак не может.
    Хотя я пробовал делать sys в третий раздел и безуспешно. В обще будут какие мысли ?
     
  2. Goblinit

    Goblinit

    Регистрация:
    18 мар 2011
    Сообщения:
    4.405
    мысль не заморачиваться. если уж такая любознательность, то погонять дос, удалить, погонять 95, удалить, гонять 98. всё равно везде дос ведь
     
  3. tuliss

    tuliss

    Регистрация:
    24 фев 2014
    Сообщения:
    5.975
    Не не, не наш метод. Там дальше у меня еще продолжение планируется. :)

    У меня просто пока один вопрос, прописывается ли в загрузочной области msdos с какого первичного раздела он будет грузится ?
     
  4. Goblinit

    Goblinit

    Регистрация:
    18 мар 2011
    Сообщения:
    4.405
    возможно, я неправ. Но все ос майкрософт грузятся только с active primary
     
  5. tuliss

    tuliss

    Регистрация:
    24 фев 2014
    Сообщения:
    5.975
    active нужен вот в каком случаи.

    Я пропущу bios этап.
    После bios загружает 440 байт загрузочного кода MBR, расположенного в начале диска
    Потом как раз и идет поиск активного раздела. Те далее у нас грузится syslinux.
    Все, дальше нам активный раздел более не нужен.

    Как вариант, можно вообще обойтись без активного раздела. syslinux имеет altmbr.bin Он не сканирует диск на наличие загрузочного раздела; вместо этого, последнему байту MBR присваивается значение, отображающее то, с какого раздела необходимо выполнять загрузку.

    Код:
    # printf '\x5' | cat /usr/lib/syslinux/bios/altmbr.bin - | \
    dd bs=440 count=1 iflag=fullblock conv=notrunc of=/dev/sda
    В общем пока искал, нашел вот что. Интересно, что за патч такой.

    NOTE: It is VERY IMPORTANT that the boot sector file extension is .BSS which tells syslinux to patch DOS superblock - otherwise it won't boot properly!!!
    KERNEL MSDOS.BSS

    P.S. К сожалению я не помню как происходит загрузка у DOS :)
     
  6. Goblinit

    Goblinit

    Регистрация:
    18 мар 2011
    Сообщения:
    4.405
    ключевое слово было primary. По-моему, Если раздел не первый и не праймари, система не грузится
     
  7. tuliss

    tuliss

    Регистрация:
    24 фев 2014
    Сообщения:
    5.975
    Вот у меня то же есть сомнения на тему первого раздела. Надо завтра помедитировать в hex редакторе.
     
  8. tuliss

    tuliss

    Регистрация:
    24 фев 2014
    Сообщения:
    5.975
    В общем если интересно.
    mbr у нас в определенный момент начинает искать активный раздел и пытается передать управление загрузчику. Так вот , в DOS в определенной области загрузчика , а точнее по 0x027 прописывает - ТА ДА! Серейный номер ! который генерируется во время форматирования системы из INT 21h/AH=2Ah (запрос на системную дату) и INT 21h/AH=2Ch (запрос на системное время). Если я правильно все понял, то загрузчик как раз и ищет этот системный номер на разделе и если он не совпадает то естественно ничего не грузится.

    Поправьте меня если я ошибаюсь. (ошибаюсь :))

    Изначально я все разделы сделал в приделах 2 gb, по 120 каждый. Третий после успешный загрузки я увеличл до 2046 (придел fat16), все нормально загрузилось. Во после увелечение других загузка не пошла :/ Буду мучить дальше.


    UP. Серейный номер, не влияет на загрузку ровным счетом вообще. С измененным SN все прекрасно загрузилось. Второй раздел увеличел до 1 gb.
     
    Последнее редактирование: 4 мар 2015
  9. tuliss

    tuliss

    Регистрация:
    24 фев 2014
    Сообщения:
    5.975
    в общем в загрузочной области msdos прописывает информацию о размере и местоположении раздела запуска (ну т.е диск C:) Далее, когда он находит файлы io.sys он передает управление ему итд. Сейчас читаю спеки, но пока не вижу где прописывается или как генерируется эта информация.

    Еще странно, как вообще должна работать связка в syslinux с указанием io.sys ?
    Естественно мы получим сообщение о non-system , так как он сам по себе не передает управления дальше или как то надо дополнительно указать, что бы он брал область io.sys дальше блока non-system ?
     
    Последнее редактирование: 15 июл 2015
  10. tuliss

    tuliss

    Регистрация:
    24 фев 2014
    Сообщения:
    5.975
    Подниму тему.
    В общем я тут перепробовал разные варианты всего из современного. grub4dos,grub2,syslinux
    У каждого плюсы и недостатки.
    grub4dos - честного говоря, пслд сборки работают мягко говоря странно. Самые пслд версии не поставились в нормальном режиме.
    Если брать классику, то там все хорошо и понятно.

    grub2 - Много изменений, плохая документация. Раздули код. Убрали поддержку floppy (с одной стороны конечно уже пора). Пслд версию я все же поставил на floppy, и вроде как бы все прекрасно но!
    Установить grub2 можно только через grub-install. Сделать как раньше в grub root и setup из commandline не получится. Проблема в том, что boot.img линкуется с core.img и прописывается где он находится.
    Можно конечно тут попробовать накостылять, но не хочу пока этим заниматься. Поэтому остается открытый вопрос, как его например с дискеты ставить.
    Куча модулей без описания для чего они.

    syslinux - вот тут я в восторге. Отличная документация, продуманная архитектура. Поддержка dos, куча модулей c описание, что они выполняют.
    Минус пока один, нет возможности мапинга партации дисков.
     
    SAS нравится это.
  11. tuliss

    tuliss

    Регистрация:
    24 фев 2014
    Сообщения:
    5.975
    Еще небольшой отчет.

    Дело идет понемногу. Сейчас провожу тесты, после того как я для себя выведу некие алгоритмы действий, выложу образ дискеты.

    Что в итоге примерно получилось.
    Дискета с загрузчиком syslinux 6.03 , grub4dos 0.4.6a , plop 5.0.15
    Очень минимальный dos 6.22 для возможности установки этих загрузчиков
    (io.sys, msdos.sys,command.com,fdisk,format,sys)
    Утилита dd.

    Теперь можно будет загрузится с дискеты, а через нее уже CDROM или USB (через plop)
    В grub4dos, я сейчас делаю меню по установки нескольких независимых систем. (win95/win98)

    По сути, можно было бы вообще обойтись grub4dos и plop и я над этим сильно думаю. Мне очень нравится syslinux :)
    dos 6.22 выбран,так как с freedos есть проблемы. Если разбить и отформатировать систему в freedos , а потом ставить загрузчики в mbr , то все корежится.

    Пока для затравки меню, над которым я ломаю голову.
    Если есть мысли, дайте знать.
    Снимок экрана 2015-07-24 в 17.56.33.png
     
    Последнее редактирование: 24 июл 2015
    Gamerun нравится это.
  12. tuliss

    tuliss

    Регистрация:
    24 фев 2014
    Сообщения:
    5.975
    В итоге пришлось отказаться от 0.4.6a grub. На старых машинах выпадает ошибка A20, насколько я смог разобраться связанно с переходом на новую версию GCC, но это пока догадка.
    Ставить набор для сборки и проверять нет сил, если у кого-то есть кроскомпилятор настроенный, то буду только рад.
    Текущая версия 0.4.5a минимально, что заработало везде.
     
  13. Goblinit

    Goblinit

    Регистрация:
    18 мар 2011
    Сообщения:
    4.405
    позднее обязательно будут скриншоты?
     
  14. Bato-San Чеширский волк-киборг

    Bato-San

    Регистрация:
    24 июн 2010
    Сообщения:
    14.136
    так уже никто лет 20 не делает. В смысле "загрузчики в MBR" - загрузчик вовсе необязательно писать туда, что бы загрузить его ось. :yes:
     
    Последнее редактирование: 3 ноя 2015
  15. tuliss

    tuliss

    Регистрация:
    24 фев 2014
    Сообщения:
    5.975
    Я все выложу. Сейчас проходят тесты, что бы все было нормально.

    В итоге получился примерно так:

    DOS - только на Parition 1
    Windows 95 - partition 2
    Windows 98 - partition 3
    Далее расширенный - 4
    и логические сколько надо.
    Там можно уже ставить winnt4, w2k,winxp.

    Если сделать везде fat16, то DOS будет видеть все разделы, но мы будет ограничены в 2048MB.
    Активный раздел, становится диском C: , так что вопросов тут не возникает.
    Все Windows видят все разделы, при большом желании разделы можно делать при загрузке скрытыми.
    Но я как раз преследую цель , что бы они были видны.
    Еще я пытался установить win 9x на логические диски и делать подмену разделов, но это очень нестабильно работает, в итоге остановился на разделах.
    Не хватило место только для WinME, но я думаю не велика потеря ? :)

    Еще остается открытом grub4dos или syslinux, при любви к пслд , grub4dos все же мощнее.
    Но можно всю основную часть сделать с grub4dos и установить в качестве загрузчика потом syslinux.

    В общем сейчас небольшая отладка и предварительно закину образ дискеты с описанием.
    --- добавлено 3 ноя 2015, предыдущее сообщение размещено: 3 ноя 2015 ---
    Если у тебя один раздел, то конечно mbr решен смысла.
    Ну и про 20 лет , это ты конечно палку перегнул.

    Например именно так работает grub, он ставит boot.img в mbr .
     
    Последнее редактирование: 3 ноя 2015
  16. Bato-San Чеширский волк-киборг

    Bato-San

    Регистрация:
    24 июн 2010
    Сообщения:
    14.136
    :facepalm: ты ни-че-го не понял. Но в целом радует попытка изобрести велосипед.
     
  17. tuliss

    tuliss

    Регистрация:
    24 фев 2014
    Сообщения:
    5.975
    Ну так просвети. Проблема возникает только с freedos и только если именно ее средствами был разбит диск и после этого ставим syslinux.
    Если раздел был сделан в dos штатными средствами (неважно каким) то все нормально.
    Честно говоря,заниматься поиском проблемы мне лень, так как freedos мне не уперся.

    Ну и да, это велосипед на новый лад. Есть куча старых менеджеров, которые все это делают.
     
  18. Bato-San Чеширский волк-киборг

    Bato-San

    Регистрация:
    24 июн 2010
    Сообщения:
    14.136
    @tuliss, есть куча старых загрузчиков ntloader, которые это тоже делают, притом красиво и изящно - это маленький намёк.
     
  19. tuliss

    tuliss

    Регистрация:
    24 фев 2014
    Сообщения:
    5.975
    они так не делают, это так же маленький намек.
    Если бы ntloader умел это все делать, думаю все бы его давно использовали.
    Так же для ntloader нужен отдельный файл с 512 байтами для загрузки dos.
    Не умеет изменять каким делать раздел активным.
    Не умет прятать разделы. Да еще много чего не умеет.
     
    Последнее редактирование: 3 ноя 2015
  20. Bato-San Чеширский волк-киборг

    Bato-San

    Регистрация:
    24 июн 2010
    Сообщения:
    14.136
    Последнее редактирование: 3 ноя 2015
  1. На этом сайте используются файлы cookie, чтобы персонализировать содержимое, хранить Ваши предпочтения и держать Вас авторизованным в системе, если Вы зарегистрировались.
    Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie.
    Скрыть объявление