Можно ли загрузить операционную систему с дискеты с помощью USB-устройства?

Можно ли загрузить операционную систему с дискеты с помощью USB-устройства?

Я большой энтузиаст операционных систем и прохожу соответствующий курс. Поэтому в качестве проекта мне поручили реализовать простую операционную систему.

Они предоставили мне простую реализацию операционной системыДЖОШ.

Я могу следовать всем данным инструкциям и скомпилировать загрузочный сектор и элементарную часть ядра с помощью ассемблера NASM. Также я добавил свой собственный код для отображения дополнительной информации о машине.

Подводить итоги,ДЖОШ— это операционная система, разработанная для загрузки с дисководов. Но у меня нет устройств для работы с дисководами.

Разработчики JOSH предусмотрели dd if=boot.bin bs=512 count=1 of=/dev/fd0возможность записи файла boot.bin на дискету.

Мне нужно знать, можно ли создать виртуальную дискету на USB-накопителе и можно ли загрузить с нее эту операционную систему.

Поскольку я использую Ubuntu, я буду очень признателен, если кто-нибудь объяснит мне, как создать виртуальную дискету на моем USB-накопителе и как поместить файлы boot.bin и kernel.bin на этот виртуальный дисковод.

Насколько я понял, у нас должен быть какой-то сектор размером 512 байт для этого файла boot.bin.

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

решение1

Вам следует рассмотретьPXE-загрузка.

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

Но технология загрузки PXE использует виртуальную дискету для начальной загрузки вашей конечной операционной системы. И существуют различные сопутствующие инструменты для работы с виртуальными дискетами (заполнение их, сохранение их в виде файла), а также отправка виртуальной дискеты по проводам для загрузки целевой машины. Так что вы, скорее всего, найдете то, что вам нужно, в мире PXE.

Раньше я использовал Tftpd32 для этого. Я собирался разместить ссылку на него, но Chrome теперь предупреждает о вредоносном ПО на этом сайте, так что будьте осторожны. Я думаю, что Windows теперь тоже включает в себя такие вещи (в WDS в Windows Server).

решение2

Ничего страшного, решение найдено.

ДЖОШэто однозадачная операционная система с прерываниями. Мы получаем загрузочный файл размером 512 байт, имеющий действительную загрузочную подпись, с сайта и простой файл ядра, который на самом деле является операционной системой.

Этот загрузочный сектор понимает только файловую систему FAT12, поэтому для его запуска нам придется использовать дисковод.

Я создал виртуальную дискету, записал загрузочный файл в MBR этого диска, скопировал на нее файл ядра и запустил его на виртуальной машине.

Как я узнал изздесьмы можем создать образ дискеты, используя следующие команды.

~$ cd /media    // open the terminal in your home directory and head to /media

/media$ sudo mkdir floppy     // create a directory in media


// go back to home directory again


~$ mkfs.msdos -C myfloppy.img 1440      // create a floppy disk image of size 1.44 MB

~ $ sudo mount -o loop myfloppy.img /media/floppy/    // mount the image with the floppy directory.

// now open another terminal where your boot.bin file and kernel.bin file is and enter the following

/os$ lsblk    // get the name of the mounted floppy image, you can identify it from the list with a disk that has 1.5 MB size

/os$ sudo dd if=./boot.bin of=/dev/loop0    // now burn the boot file to the MBR

/os$ sudo cp kernel.bin /media/floppy/     // copy the kernel file to the disk image

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

решение3

У меня есть старая USB-флешка с эмуляцией дискеты: вы можете записать на нее образ дискеты, и флешка будет обнаружена как USB-дисковод.

Связанный контент