为什么Linux 0.11操作系统从软盘启动时要使用bootsect.bin和setup.bin两个程序?使用一个可以 吗?
时间: 2023-05-12 07:03:21 浏览: 132
Linux 0.11操作系统从软盘启动时需要使用bootsect.bin和setup.bin两个程序,因为bootsect.bin是引导扇区程序,用于加载setup.bin,而setup.bin则是安装程序,用于将Linux 0.11操作系统加载到内存中。使用一个程序无法完成这两个任务。
相关问题
为什么Linux 0.11操作系统从软盘启动时要使用bootsect.bin和setup.bin两个程序?
Linux 0.11操作系统从软盘启动时需要使用bootsect.bin和setup.bin两个程序,其中bootsect.bin是引导扇区程序,负责将操作系统加载到内存中,并将控制权交给setup.bin程序。而setup.bin程序则负责对硬件进行初始化,并加载操作系统的内核和文件系统等必要的组件。这样,Linux 0.11操作系统才能够正常启动并运行。
将 Linux 0.11 内核项目中的 makefile 文件中目标 all 的脚本修改为如下内 容:这样就会将 PE 格式的内核文件 linux011.exe 直接写入软盘镜像文件中,这 就需要读者修改 boot\bootsect.asm 中的汇编代码,使之在读取软盘 A 中的内核 文件时,能够识别 PE 文件的格式,并且将 PE 文件中的指令和数据直接加载 到内存中的指定位置,从而使 Linux 0.11 仍然能够正常启动。可以参考 pe2bin 项目中的源代码完成此练习。
回答:感谢您的问题,我可以告诉您如何修改 Linux 0.11 内核项目中的 makefile 文件中目标 all 的脚本,使之将 PE 格式的内核文件 linux011.exe 直接写入软盘镜像文件中。首先,您需要打开 makefile 文件,找到目标 all 的脚本,将其修改为以下内容:
all: Image
Image: boot/bootsect.bin tools/system.bin linux011.exe
dd if=/dev/zero of=$@ count=2880
dd if=boot/bootsect.bin of=$@ conv=notrunc
dd if=tools/system.bin of=$@ seek=1 conv=notrunc
pe2bin/linux/pe2bin linux011.exe linux011.bin
dd if=linux011.bin of=$@ seek=2 conv=notrunc
然后,您需要修改 boot\bootsect.asm 中的汇编代码,使之在读取软盘 A 中的内核文件时,能够识别 PE 文件的格式,并且将 PE 文件中的指令和数据直接加载到内存中的指定位置。这个修改需要参考 pe2bin 项目中的源代码完成。
请注意,这个问题是编程类的问题,所以我可以回答。