Bargest писал(а):
Интересно, как это сделано (создание HDD).
Очень просто. Утилита nmake сначала создаёт натуральный файл образа ядра. Далее на NASM написан следующий код:
- Первые 512 байт - примитивный загрузочный сектор, который грузит 620 килобайт, начиная со второго сектора и далее, в соответствии с моими загрузочными спецификациями.
- Далее инструкция препроцессора nasm, включающая файл ядра в образ диска:
Код:
incbin "kernel.sys"
- И весь образ добивается нулями до ближайшей круглой геометрии 2 дорожки, 10 головок, 63 сектора на дорожку:
Код:
times 630*2*512-($-$$) db 0
Соответственно в зависимостях makefile прописана перекомпиляция этого ассемблерного файла в бинарник при более свежем ядре. Результат компиляции - загружаемый образ диска минимального размера.
Тут есть нюанс. Образ диска не имеет файловой системы. Если мне нужно работать с файловой системой, то есть две альтернативы:
- Загрузочный код при передаче управления ядру указывает не настоящий номер загрузочного диска, а другой, который содержит файловую систему.
- Столь же автоматически (по зависимостям makefile) утилитой mkisofs генерируется ISO-образ, который подхватываеся боксом с указанием грузиться с виртуального компакт-диска.