30天自制操作系统-Linux-环境下搭建笔记

参考 Github

使用的工具aa

  • nasm
  • dd
  • qemu

nasm

nasm 用来编译汇编代码到目标文件. 如:

1
$ nasm test.nas -o test

dd test

dd 用来制作软盘.

1
2
$ dd if=test of=test.img count=1 bs=512
$ dd if=/dev/zero of=test.img bs=512 seek=1 skip=1 count=2879

bs=512 其实是默认值. count 表示要从 input file 复制的 block 数, block 的大小取决于 bs 设定的值, 默认为 512, bs 就是 bytes, 表示一次读写的 bytes 数.

第一条命令是将目标文件的内容复制到软盘中.

第二条命令中 /dev/zero, 其是一个特殊文件, 提供足够多的空字符 (null characters), 用来初始化一个数据存储空间. seek=1 表示从输出文件的第二个 block 开始写入. skip=1 表示从输入文件的第二个 block 开始读取, count=2879 表示要复制的 block 数. 由于第一条命令只写入了 1 个 block, 因此这里相当于清空后面的 block.

qemu

qemu 用来启动虚拟机. 如:

1
$ qemu-system-x86_64 -drive file=test.img,if=floppy

man qemu-system-x86_64-drive 是定义一个 driver, file 用来指定文件,也就是定义哪一个 disk 的 driver, if=flopy 表示是一个软盘. 但似乎也可以用来启动.


30天自制操作系统-Linux-环境下搭建笔记
http://example.com/2022/12/17/30天自制操作系统-Linux-环境下搭建笔记/
作者
Jie
发布于
2022年12月17日
许可协议