dlinyj: (Default)
[personal profile] dlinyj
Мне казалось, что это простая и понятная задача, тяп-ляп и в дамках, но потратив два полных дня и всё свободное рабочее время, понял что не всё так просто. А самое удивительное, что нет толковых рабочих мануалов!


Наконец работающий образ, готовый к dd на флешку


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

Казалось бы, что может быть проще: у меня есть точно работающий образ 16 МБ флешки (обратите внимание на разницу между МБ и МиБ, я говорю о МБ и далее всё будет в МБ). Далее можно создать пустой образ CF с помощью команды dd, truncate или mkdiskimage:

dd if=/dev/zero of=4gb.img bs=1K count=3915576 status=progress
truncate --size 4009549824 4gb.img
mkdiskimage 4gb.img 7769 16 63

Все делают разное, но в сути нам пойдёт любой вариант. truncate самый быстрый. И после, казалось бы, делаем вот что:

qemu-system-i386 -hda mydos.img -hdb 4gb.img

Загружаемся с рабочего образа, fdisk под ДОС размечаем всё, и после форматируем полученный диск с переносом системных файлов, командой format d:/s . Всё подробно описано тут.

И всё красиво, элегантно, но это НЕ РАБОТАЕТ. Файлы переносятся, но на диск загрузки потом не идёт...

Да, ограничение в 2 ГБ есть, но это прекрасно учитывает сам fdisk, он не позволяет создать раздел больше чем 2 ГБ. Поэтому там делаешь несколько разделов. Образ рабочий, файлы видны с другого диска, можно монтировать в linux. Но загрузка не идёт. Знаю про пометку диска загрузочным, но как я понимаю эту пометку ставит команда format.

Итак, рассказываю рабочий рецепт

Почему именно он рабочий я не знаю, как его повторить другим способом, тоже пока не ясно.

1. Качаем комплект установочных дискет ДОС 6.22 отсюда. Распаковываем их в папку 622.
2. Стартуем qemu с дискетки, с возможность ввода команд.

qemu-system-i386 -fda 622/disk01.img -hda 4gb.img -boot a -monitor stdio

Для смены диска в консоли qemu вводим команду:

(qemu) change floppy0 622/disk02.img

И так для всех дискет.

После этого мы получаем работающий образ диска, на который qemu успешно грузится (команда qemu-system-i386 -hda 4gb.img).

А теперь, следите за руками! После загрузки смотрим как видит fdisk этот носитель. А видит его как 500 МБ носитель! Никаких расширенных разделов 640 килобайт 500 МБ хватит всем!



Разметить так ручками ни в DOS, ни в Linux мне не удалось. Анализ скриптов на дискетках не дал результата. Вот такая вот магия.

Осталось проверить, будет ли это работать на рельном железе (FreeDOS, таким образом установленный, не захотел запускаться).

Date: 2024-04-24 04:18 pm (UTC)
From: [identity profile] paranoiknikanor.livejournal.com

Знаю про пометку диска загрузочным, но как я понимаю эту пометку ставит команда format.
Активным раздел делается через fdisk.


Date: 2024-04-24 04:19 pm (UTC)
From: [identity profile] dlinyj.livejournal.com

Да, мне уже сказали что надо делать fdisk /mbr. Но я буду рад полной версии команды.

Date: 2024-04-24 04:24 pm (UTC)
From: [identity profile] paranoiknikanor.livejournal.com
(https://www.rigacci.org/docs/biblio/online/firmware/fdisk.htm)

Notes on DOS FDISK Command

www.rigacci.org

см.


Some Example Screen Dumps From DOS 6.22 FDISK


MS-DOS Version 6
Fixed Disk Setup Program
(C)Copyright Microsoft Corp. 1983 - 1993

FDISK Options

Current fixed disk drive: 1

Choose one of the following:

1. Create DOS partition or Logical DOS Drive
2. Set active partition * (Does not disturb data on drive)
3. Delete partition or Logical DOS Drive
4. Display partition information
5. Change current fixed disk drive * (If only one drive is present,
this option does not appear)
Enter choice: [1]

Press Esc to exit FDISK

2й пункт — Set active partition.


То есть надо записать mbr и назначить раздел активным.



Date: 2024-04-24 04:27 pm (UTC)
From: [identity profile] dlinyj.livejournal.com

Второй я делал, а вот как записать mbr?

Date: 2024-04-24 04:28 pm (UTC)
From: [identity profile] lubezniy.livejournal.com
Нет. format с ключом /s только пишет на раздел системные файлы DOS (io.sys и msdos.sys) в нужные места после создания файловой системы. Ну и command.com тоже пишет, уже без особых требований. Всё остальное делает fdisk в таблице разделов MBR.
Edited Date: 2024-04-24 04:30 pm (UTC)

Date: 2024-04-24 04:31 pm (UTC)
From: [identity profile] paranoiknikanor.livejournal.com

По той же ссылке


FDISK /MBR is an undocumented parameter that will create a new Master
Boot Record.


Date: 2024-04-24 04:43 pm (UTC)
From: [identity profile] dlinyj.livejournal.com

Я не поленился, проверил, в qemu это не помогло. Надо ещё указать номер диска:


fdisk /mbr 2 

Date: 2024-04-24 04:43 pm (UTC)
From: [identity profile] dlinyj.livejournal.com

В любом случае этот вариант не работает.

Date: 2024-04-24 11:30 pm (UTC)
From: [identity profile] arush-damage.livejournal.com

Это странно, емнип всегда без номера диска работало.


Вот и в интернета пишут что:


FDISK /MBR [MS-DOS 6.00 and above ONLY]
FDISK /MBR recreates the boot sector of the first (bootable) hard disk overwriting it with a fresh copy, by writing a new Master Boot Record (MBR) based on existent disk structure, without altering the partition table information.


http://secrets.mysfyts.com/index.asp?Page=Fdisk (http://secrets.mysfyts.com/index.asp?Page=Fdisk)

Или у тебя линуксовый fdisk?



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

Edited Date: 2024-04-24 11:57 pm (UTC)

Date: 2024-04-24 11:51 pm (UTC)
From: [identity profile] arush-damage.livejournal.com

Не вполне понятно что значит "Файлы переносятся, но на диск загрузки потом не идёт..."
Не помню как в qemu, а в биосе надо было правильно выбрать загрузочный диск, по дефолту вроде первый хдд использовался или дискеты... Но это неточно.


Если ты просто перегружал систему запущенную как "qemu-system-i386 -hda mydos.img -hdb 4gb.img" то по идее оно должно было продолжать с оригинального образа загружаться.


Там система такая была — биос смотрит какой диск выбран загрузочным(или первым, или перемычками первым выставлен) и ищет на нем активный МБР раздел, если такой есть — грузит МБР сектор в память и делает jump в загруженный сектор, дальше код из МБР(в случае доса) грузит два системных файла(которые копирует format /s) и запускает command.com. Вроде так.


Edited Date: 2024-04-24 11:54 pm (UTC)

Date: 2024-04-25 09:17 am (UTC)
From: [identity profile] dima bodus (from livejournal.com)

опция /MBR просто записывает стандартную загрузочную программу в начало сектора 0/0/1 активного HDD. Таблица разделов диска находится в конце сектора 0/0/1. Если туда записана нестандартная загрузочная программа, например, для исправления устаревшего BIOS, или создана кривая таблица разделов, то fdisk /mbr только навредит. Указание номера диска после /MBR в DOS 6.22 не работает!


Может, все же попробовать fdisk /CMBR 2 из DOS 7.1 или утилиту MBRWizard?


https://thestarman.pcministry.com/asm/mbr/switches.htm (https://thestarman.pcministry.com/asm/mbr/switches.htm)


а еще лучше — ставить PTS-DOS 6.7 )))

Edited Date: 2024-04-25 09:29 am (UTC)

Date: 2024-04-25 10:08 am (UTC)
From: [identity profile] dlinyj.livejournal.com
Мне хочется именно 6.22

Date: 2024-04-25 10:10 am (UTC)
From: [identity profile] dlinyj.livejournal.com
Я не настолько плох и мне казалось очевидным и не требующим разъяснений. Но специально для тебя, проверяю командой:

qemu-system-i386 -hda 4gb.img

Date: 2024-04-25 11:39 am (UTC)
From: [identity profile] dima bodus (from livejournal.com)

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

Date: 2024-04-25 12:35 pm (UTC)
From: [identity profile] dlinyj.livejournal.com
Ну я в этом посте описал, что всё получилось. Более того, после dd на карточку, всё работает на железе.

Date: 2024-04-25 07:43 pm (UTC)
From: [identity profile] dima bodus (from livejournal.com)

> Осталось проверить, будет ли это работать на реальном железе (FreeDOS, таким образом установленный, не захотел запускаться).
Я понял, что или не проверили пока, или постигла неудача

Date: 2024-04-26 05:45 am (UTC)
From: [identity profile] dlinyj.livejournal.com


На реальном железе, включая параметры карточки, что она четыре гб.

Видит как два, так как в BIOS я её забыл прописать, а там была двухгиговая. Но можно перемножить спектра, головки, блины на 512 и убедится что это 4ГБ
Edited Date: 2024-04-26 06:49 am (UTC)

Date: 2024-04-26 11:48 am (UTC)
From: [identity profile] dima bodus (from livejournal.com)

Новость в тему https://habr.com/ru/news/810613/ (https://habr.com/ru/news/810613/)

Date: 2024-05-06 01:43 pm (UTC)
From: [identity profile] andrei cherniaev (from livejournal.com)
Может быть программа (https://github.com/pengutronix/genimage) справится с созданием загрузочного образа? genimage — это мощное средство, которое используется, например, в Buildroot.

January 2026

S M T W T F S
    123
456 78910
11121314151617
18192021222324
25262728293031

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jan. 22nd, 2026 08:28 pm
Powered by Dreamwidth Studios