光盘中文翻译版:https://github.com/yourtion/30dayMakeOS.git
原版光盘(含iso文件):https://github.com/sky5454/30daysMakeOS-Origin-ISOfiles.git
原版光盘git版本:https://github.com/Tassandar/OSASK.git
使用dd(Windows)刻盘及Fat知识: 30天自制操作系统-Hello OS
工具tolset目录
- nask编译器, 把nas文件(作者的汇编源码)转为二进制的,用来把nas文件编译成二进制img文件。可能用翻译更贴切,不过说成编译也没有什么毛病。 路径/tolset/z_tools/nask.exe
- imgtol.com 刻软盘工具
用法z_toolsimgtol.com w a: helloos.img
现在软盘淘汰了,所以推荐把img写到移动储存设备,如u盘/sd卡
- make.exe 读取并执行Makefile的GNU系列工具,能读取指定目录下的Makefile脚本。其参数与Makefile有关
img文件在qemu的启动脚本分析
目录 /01_day
helloos.nas 汇编语言源码文件
asm.bat 一个 调用nask把汇编转为二进制 的脚本,内容:
..z_tools ask.exe helloos.nas helloos.img
install.bat 把img写到软盘a的脚本,内容:
..z_toolsimgtol.com w a: helloos.img
run.bat 运行img的脚本,内容及分析如下:
copy helloos.img ..z_toolsqemufdimage0.bin
..z_toolsmake.exe -C ../z_tools/qemu
把img复制到qemu目录下同时命名为fdimage0.bin
命令make -C指定目录,读取指定目录下的Makefile文件
所以,我们看一下Makefile文件(/z_tools/qemu/Makefile)内容吧
default :
qemu-win.bat
没错他指导系统执行bat文件(/z_tools/qemu/qemu-win.bat),bat脚本内容
1 @set SDL_VIDEODRIVER=windib 2 @set QEMU_AUDIO_DRV=none 3 @set QEMU_AUDIO_LOG_TO_MONITOR=0 4 qemu.exe -L . -m 32 -localtime -std-vga -fda fdimage0.bin
// 设置三个环境变量,然后用qemu指定参数启动bin(原来的名字是img,这个bin内容和img一样)
-L 指定BIOS和VGA BIOS所在目录,此处为当前目录
-m 指定容量,单位Mb,此处为32Mb
-localtime 使用localtime
-std-vga 模拟标准的VGA卡,带有Bochs VBE扩展
Standard VGA card with Bochs VBE extensions. If your guest OS supports the VESA 2.0 VBE extensions (e.g. Windows XP) and if you want to use high resolution modes (>= 1280x1024x16) then you should use this option.
-fda <二进制文件> 指定二进制镜像文件作为软盘a加载
总结
fdimage0.bin就是helloos.img,改了名字而已,内容完全一样。
简洁步骤
先把汇编源码文件helloos.nas编译成二进制img,然后:
- 真机启动只需要把img刻到u盘,然后从主板选择启动。
- 虚拟qemu启动只需要声明环境变量,然后指定一些参数来启动img
注:真机刻盘启动,UltraISO-菜单:启动-写入硬盘映像…
虚拟UEFI环境:archlinux上安装QEMU+EFI BIOS
更多书籍:推荐邮电出版社的自制系列: https://book.douban.com/series/34137