先建立开发环境,我的环境:
主机系统: Windows XP, 最好再装个虚拟机,在虚拟机里装个Linux系统
FreeDos版本: 我用的是2.0.20版本, http://sourceforge.net/projects/freedos/files/Kernel/2.0.20/
编译软件: NASM, Turbo C 3.0
x86模拟器: Bochs, JPC, VirtualBox都可以
要想让FreeDos运行起来,需要编译如下文件:
编译步骤:
5.1 输入bximage命令 , 选择fd, 选择1.44,保存文件为dostest.img #创建一个1.44M的Image文件,
5.2 losetup /dev/loop1 dostest.img #将dostest.img 关联到环回设备1、
5.3 dd if=boot.bin of=/dev/loop1 #将boot.bin 写入dostest.img的引导扇区中
5.4 mount -o /dev/loop1 /mnt #将Image挂载在/mnt 目录下
5.3 cp KERNEL.SYS /mnt #将编译好的KERNEL.SYS 拷贝到/mnt下,即写入到Image中
5.4 cp bin/COMMAND.CMD /mnt #将bin下面的COMMAND.COM 拷贝到/mnt下,即写入到Image中
5.5 umount /mnt #卸载mnt目录
5.6 loset -d /dev/loop1 #将dostest.img从环回设备上卸载掉
最后一步:用X86模拟器启动dostest.img
如果编译kernel出错,可能与环境有关。
推荐:我已经做好了一个版本, 点此下载。
与官方不同的地方:
1. 修改了boot.asm。官方的boot.asm不能加载文件较大的KERNEL.SYS 2. 官方的FreeCom需要硬盘支持,所以我重新编译了个不需要硬盘支持的,放在build目录下 3. 如上面编译步骤所述,生成Image比较麻烦,我写了个简单的buildimg.c程序,运行即可将boot.bin,KERNEL.SYS,COMMAND.COM组装到dostest.img中,很方便。 4. 直接用命名行替代了makefile,解压后运行build.bat,在build目录下即可生成dostest.img。
OK,下面分别是dostest.img在JPC和Virtualbox下运行的截图: