Есть достаточно простое задание - сделать загрузчик на дискете, то есть чтобы когда в биосе ставишь загрузку с дискеты - управление передавлось некому нашему коду (без разницы какому, можно просто выводить текстовую строку на экран и всё). Прочитал много много теории про загрузочные записи загрузчики и т.д., нашёл на асме готовый код непосредственно загрузчика (там буквально 10-15 строчек на самом деле). Единственная проблема - как из всего этого теперь сделать загрузочную дискету. Я понимаю, что мне надо просто записать первые байты на дискете, но как это сделать? Нашёл какие-то разные программы под винду, но сейчас нет компа с ней, точнее дискетника на нём. Пробовал писать таким найденным кодом:
#include <sys/types.h> /* unistd.h needs this */
#include <unistd.h> /* contains read/write */
#include <fcntl.h>
int main()
{
char boot_buf[512];
int floppy_desc, file_desc;
file_desc = open("./boot", O_RDONLY);
read(file_desc, boot_buf, 510);
close(file_desc);
boot_buf[510] = 0x55;
boot_buf[511] = 0xaa;
floppy_desc = open("/dev/fd0", O_RDWR);
lseek(floppy_desc, 0, SEEK_CUR);
write(floppy_desc, boot_buf, 512);
close(floppy_desc);
}
Он компилится и запускается, но в итоге на дискету ничего не пишется, дискетник даже не включается. Стоит отметить, что у меня он монтируется почему-то только руками и пробовал писать вместо /dev/fd0 непосредственно место, куда он примонтирован - не помогло. Просто так дискету вижу нормально, отформатировал её, но вот выше написанным кодом записать никак не могу. Подскажите, что делаю не так? Или может вообще есть более простой способ?