0%

boshs使用

安装bochs和sdl

brew install bochs

brew install sdl

创建虚拟软盘

bximage

使用bximage命令直接创建磁盘镜像,选择1创建磁盘 输入fd,表示创建软盘 选择软盘的大小,默认的1.44M就可以了 输入镜像的名称,可以使用默认的镜像名a.img,也可以自定义名称boot.img,只要能跟配置文件中的名称对应即可

编写boot引导程序

创建一个boot.asm文件 编写代码 此处asm略


编译程序 写入软盘

nasm boot.asm -o boot.bin

编译结束后,将生成的二进制程序boot.bin写入到boot.img中

使用系统自带的dd命令,把Boot程序强制写入到虚拟软盘的固定扇区中

dd if=boot.bin of=boot.img bs=512 count=1 conv=notrunc

if指定输入源文件名,of指定输出文件名,count=1指定传输的块大小为512B,conv=notrunc规定在写入数据后不截断输出文件的尺寸大小。以下为该命令的执行日志信息

配置启动信息

创建一个bochsrc的配置文件

找到bochs安装目录下的配置路径:/usr/local/Cellar/bochs/2.7/share/doc/bochs/bochsrc-sample.txt (mac下) 关于配置路径问题,标志就是找到bochsrc-sample.txt该文件。不同的电脑、不同的bochs版本可能会有区别。 拷贝bochsrc-sample.txt文件,并重命名为boshsrc(存放在项目目录下),加入如下配置

romimage: file=\(BXSHARE/BIOS-bochs-latest vgaromimage: file=\)BXSHARE/VGABIOS-lgpl-latest floppya: 1_44=boot.img, status=inserted # 这里配置为前面生成的.img 不然会找不到设备报错 # 从软盘启动 boot: floppy #输出日志 log: bochsout.txt # 置鼠标不可用 mouse: enabled=0 #键盘配置 keyboard: keymap=#$BXSHARE/keymaps/x11-pc-us.map #内存容量 megs: 32 #使用GUI界面 display_library: sdl2

启动bochs

bochs -f bochsrc 选择6


出现的问题及解决方式

  • 在运行时出现了报错 (Bochs is exiting with the following message: [ ] bochsrc:955: Bochs is not compiled with lowlevel sound support) 查了下是因为在复制原文件后需要将sound和speaker注释掉

  • Device: [HD ] Message: ata0-0: could not open hard drive image file '30M.sample' 修改配置中的ata0-master type改成none ata0-master: type=none, mode=flat, path="30M.sample" #ata0-master: type=disk, mode=flat, path="30M.sample"

  • Device: [BIOS ] Message: No bootable device. 配置文件中 floppya 设置的.img位置不一致 改成对应的.img即可


References

https://juejin.cn/post/7076052275600293918

https://blog.csdn.net/qq_44445809/article/details/123256063

https://www.cnblogs.com/zengjfgit/p/5695173.html

欢迎关注我的其它发布渠道

------------- 💖 🌞 本 文 结 束 😚 感 谢 您 的 阅 读 🌞 💖 -------------