文章目录
- 前言
- 下载安装
- 在Bochs实现最简单的操作系统
- 创建软盘
- 编写并编译汇编指令
- 编写bochs配置文件
- 将操作系统写入到软盘
- 启动操作系统
前言
通过自带软件库sudo apt-get install bochs bochs-x
安装的Bochs运行时不显示任何内容,这里选用源码安装方式。
下载安装
- 源码下载https://sourceforge.net/projects/bochs/files/bochs/2.7/bochs-2.7.tar.gz/download
- 解压
tar -zxvf bochs-2.7.tar.gz
- 进入目录
cd bochs-2.7
- 生成配置
./configure --prefix=/usr/local/bochs --enable-debugger --enable-iodebug --enable-iodebug --enable-x86-debugger --with-x --with-x11
- 编译
make
- 安装
sudo make install
- 编辑环境变量
vim ~/.bashrc
# 添加到~/.bashrc文件末尾 alias bochs='/usr/local/bochs/bin/bochs' alias bximage='/usr/local/bochs/bin/bximage'
- 环境变量生效
source ~/.bashrc
- 测试
bochs
在Bochs实现最简单的操作系统
创建软盘
使用bochs自带的bximage工具创建软盘,执行bximage
编写并编译汇编指令
- 创建文件
vim boot.asm
- 添加内容
org 07c00h ; 告诉编译器程序加载到7c00处 mov ax, cs mov ds, ax mov es, ax call DispStr ; 调用显示字符串例程 jmp $ ; 无限循环 DispStr: mov ax, BootMessage mov bp, ax ; ES:BP = 串地址 mov cx, 16 ; CX = 串长度 mov ax, 01301h ; AH = 13, AL = 01h mov bx, 000ch ; 页号为0(BH = 0) 黑底红字(BL = 0Ch,高亮) mov dl, 0 int 10h ; 10h 号中断 ret BootMessage: db "Hello, OS world!" times 510-($-$$) db 0 ; 填充剩下的空间,使生成的二进制代码恰好为512字节 dw 0xaa55 ; 结束标志
- 保存后编译
nasm boot.asm -o boot.bin
编写bochs配置文件
- 创建文件
vim bochsrc
- 添加内容
megs: 32 romimage: file=/usr/local/bochs/share/bochs/BIOS-bochs-latest vgaromimage: file=/usr/share/vgabios/vgabios.bin floppya: 1_44=boot.img, status=inserted boot: floppy log: bochsout.txt mouse: enabled=0 keyboard: keymap=/usr/local/bochs/share/bochs/keymaps/x11-pc-us.map
将操作系统写入到软盘
dd if=boot.bin of=a.img bs=512 count=1 conv=notrunc
启动操作系统
bochs -f bochsrc
至此,成功在bochs上运行了我们的操作系统,这个系统的功能是输出字符串Hello, OS world!