Я пытаюсь понять, почему lseek() используется в этом создателе изображений. Почему 5 байт от начала файла? Если я изменю этот номер, ОС не загрузится.
Создатель образа создает файл .img
с bootloader.bin внутри.
/* modify the sector count */
total_sector_number = file_size / 512
lseek(disk_image_fd, 5, SEEK_SET);
write(disk_image_fd, &total_sector_number, 2);
write(disk_image_fd, &kernel_32_sector_number, 2);
//printf("%d\n", lawl);
printf("TOTAL_SECTOR_NUMBER : %d\n", total_sector_number);
printf("KERNEL_32_SECTOR_NUMBER : %d\n", kernel_32_sector_number);
Исходный код (создатель изображений): http://pastebin.com/raw.php?i=MuDpYP3Y
Загрузчик: http://pastebin.com/raw.php?i=kzw2ZaU1
Шестнадцатеричный дамп с lseek() и записью количества секторов в байт по смещению 5:
Без lseek() ОС загружается неправильно.