OSDev

для всех
Текущее время: 09 май 2025, 16:25

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 4 ] 
Автор Сообщение
СообщениеДобавлено: 31 янв 2025, 10:14 

Зарегистрирован: 28 окт 2007, 18:33
Сообщения: 1448
Пытался заставить один из своих современных компов (там какой-то Ryzen, выпущенный лет пять назад или даже меньше -- лениво смотреть) грузить MS DOS с более-менее современного же жёсткого диска. Сам диск я, кажется, уже раньше упоминал -- подделка с Озона, которая продавалась как 1 Тбайт (с соответствующей наклейкой WD) и чья модель в BIOS Setup тоже соответствует заявленной, но реальная ёмкость в два раза меньше. Впрочем, за исключением этого, диск работает (пока) нормально.

В роли ДОСа -- версия 8 из состава WinME, т.е. последняя версия вообще. Она благополучно грузится с флэшки, прикидывающейся дискеткой на 2,88 Мбайт.

Сначала я, естественно, попытался разбить диск с помощью FDISK из ДОСа. Он оказался неработоспособен: показывает пургу, а не реальную ёмкость, и всё такое. Очевидно, он не способен корректно обработать получаемый от BIOS размер диска (хотя, казалось бы, в WinME должны бы уже починить ряд проблем, которые были в древних версиях).

Ладно, снял диск и пошёл на основной комп, который работает под Вынь-10. Естественно, она благополучно диск разбила; правда, отказалась делать раздел меньше 63 Мбайт, но даже у ранних ДОСов с таким объёмом проблем не было (они начинались вскоре после 500 Мбайт, насколько помню). Здесь же отформатировал раздел как FAT, записал кой-какие файлы -- всё нормально. Подключаю к другой машине -- нифига: ДОС, загруженный с "дискетки", раздел не опознаёт и работать с ним категорически не желает.

Возвращаю диск на рабочую машину и лезу на него шестнадцатеричным редактором: посмотреть, что творится в таблице разделов. Обнаруживается, что установлен код раздела 0E -- т.е. FAT-16, но с использованием LBA. Странно, почему ДОС из WinME такое не понимает -- LBA, кажись, завезли ещё в Вынь-98, ну да ладно.

Вручную меняю таблицу разделов, указываю код раздела 04 (обычный FAT-16, лежащий в первых 32 Мбайтах диска), сам раздел делаю примерно 31 Мбайт, прописываю его границы и всё прочее. Тащу на экспериментальную машину: ДОС раздел увидел, отформатировал, систему записал, загрузка с него прошла. В общем, задача решена, но, как оказалось, это ещё не всё.

Тащу диск на рабочую машину, чтоб переписать на него TASM и всякое такое прочее -- в общем, чем минимально работающая среда разработки была под ДОСом. А Вынь-10 этот раздел... видит, но абсолютно некорректно: файловую систему не опознаёт, а размер прописывает в 200+ мегабайт. Естественно, работать с ним нельзя.

Вот так удалось совершить открытие, что мелкомягкие в какой-то момент сломали поддержку старых форматов MBR -- хотя сама файловая система FAT-16 работает нормально хоть на диске, хоть на флэшке, хоть на сд-карте (я с удивлением раньше обнаружил, что сд-карту на 2 гига винда отформатировала именно в FAT-16).

Пока непонятно, как данные с основного компа таскать в ДОС (ну, не считая возможности переноса на флэшке-"дискетке", но это медленно и печально). Собираюсь попробовать сделать на том диске второй раздел и отформатировать его в FAT-32, но не факт, что заработает в обоих системах одновременно. Ещё можно попробовать создать второй раздел FAT-16, но с кодом типа раздела 06: вдруг Вынь-10 не хочет опознавать именно код 04, т.е. совсем маленький раздел в начале диска.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 31 янв 2025, 13:21 

Зарегистрирован: 06 янв 2025, 17:29
Сообщения: 21
Решил отвлечься от работы и поэкспериментировать. Подключил в qemu DOS 6.22 диск (файл) d.img 32768K, создал раздел, отформатировал. Переписал содержимое программой dd (disk dump) на флэшку 1G, в Win10 подключилась и читается. Записал файл, в линуксе прочитал. Далее таблица раздела: 0, 1, 1, 0, 4, F, 3F, 3F, 3F, 0, 0, 0, C1, FB, 0, 0. Может это не совсем корректный эксперимент, но может вам чем то поможет. Кстати, знакомые знатоки DOS, почему то категорически не желают использовать версию DOS старше 6.22. Ещё припоминаю, что сталкивался когда то с нестандартной (не знаю как правильно сказать) геометрией CHS у дисков большого объёма, может в этом причина.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 31 янв 2025, 15:35 

Зарегистрирован: 28 окт 2007, 18:33
Сообщения: 1448
JackKatch писал(а):
Далее таблица раздела: 0, 1, 1, 0, 4, F, 3F, 3F, 3F, 0, 0, 0, C1, FB, 0, 0


Хм... Код файловой системы 04 -- тот самый, который ДОС8 видит, а Винда у меня не хочет... 06, кстати говоря, тоже не хочет -- только что попробовал, создал ручками второй раздел на 500 мегабайт на этом же диске. В ДОС -- всё нормально, в Винде фигню показывает.

Кстати, LBA начального сектора у Вас -- 3F, т.е. 63, но если по CHS смотреть -- первый сектор первой головки, а в нём отсчёт секторов с единицы. Учитывая, что на дорожке 63 сектора, CHS = 0, 1, 1 соответствует LBA = 64. Странно.

Цитата:
Может это не совсем корректный эксперимент, но может вам чем то поможет


В принципе, Винда может по-разному работать с фиксированными и сменными носителями, причём жёсткий диск может считать фиксированным, даже если он подключён как сменный -- фиг её знает, честно говоря. (У меня он подключён по USB, ибо постоянно в сам комп влезать тяжело). Так что, возможно, связано ещё и с особенностями подключения...

Цитата:
Кстати, знакомые знатоки DOS, почему то категорически не желают использовать версию DOS старше 6.22


Ну, потому что последняя настоящая ДОС -- как раз 6.22, остальное -- из состава Вынь-95/98/Ме. Мне просто лениво искать :) Кроме того, была надежда, что ДОС7 или 8 сможет работать с ФАТ32, хотя это непринципиально.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 01 фев 2025, 18:35 

Зарегистрирован: 10 окт 2013, 14:54
Сообщения: 110
Главная проблема с DOS - это CHS. Сломать просто, починить тяжело ...

Разделы создать можно много чем (я создаю своим qsinit ;))
В идеале взять какой-ньть древний партишнмагик (были диски с целыми наборами этого самозагрузающегося добра в своё время) и создать им - он сделает всё выравненным на CHS.

И раздел явно лучше сделать ~2Gb - это всё ещё FAT16, но проблем с таким размером будет точно меньше. По крайней мере, 7ка вполне себе беспроблемно работает с 2Gb FAT16 и на GPT и на MBR дисках (главное, спрятать их в момент инсталляции или она потрёт там всё и пропишет свой загрузчик ;)).

SII писал(а):
У меня он подключён по USB, ибо постоянно в сам комп влезать тяжело
О! С USB надо осторожней, с ним граблей на BIOS мамках было - караул (только в работе через int 13h, разумеется).
На всех асусах оно не читало ничего выше 128Gb, тупо возвращало мусор.
На гигабайтах возвращало неправильный размер - на 1 сектор меньше. Это не фатально для MBR, но фатально для GPT.

Собстно, лучше бы проверить - записать в винде что-ньть в конце диска (раздел или просто несколько байт в последнем секторе), а потом убедиться, что BIOS код USB это вообще видит ...


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 4 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB