我试图理解为什么 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() 的 hexdump 并将扇区数写入偏移量 5 处的字节:
没有 lseek() 操作系统无法正确启动。