《操作系统真象还原》环境搭建

《操作系统真象还原》环境搭建

部署工作环境

最近在学习《操作系统真象还原》,并打算跟随作者手写一个自己的os。我的实验环境跟作者稍有不同,在配置过程中遇到一些问题,如果你也在使用manjaro,也许我的一些经验能够帮到你。

安装软件

sudo pacman -S nasm
sudo pacman -S bochs

配置bochs

创建os文件夹,作为我的工作目录。拷贝一份bochs默认的配置文件到我的工作目录下

cp /usr/share/doc/bochs/bochsrc-sample.txt  ~/os/bochsrc

作如下修改

解除这一行的注释
#mesg: 32
mesg:32    
#ata0-master: type=disk, mode=flat, path="30M.sample" 
注释掉这两行
#sound: driver=default, waveout=/dev/dsp. wavein=, midiout=

配置工作暂且一放,我们先编译一段汇编代码,在bochs上运行一下。来检验我们的配置情况

SECTION MBR vstart=0x7c00
    mov ax,cs
    mov ds,ax
    mov es,ax
    mov ss,ax
    mov fs,ax
    mov sp,0x7c00

    mov ax, 0x600
    mov bx, 0x700
    mov cx, 0
    mov dx, 0x184f

    int 0x10
    mov ah, 3
    mov bh, 0
    int 0x10

    mov ax, message
    mov bp, ax
    mov cx,5
    mov ax,0x1301
    mov bx,0x2
    int 0x10
    jmp $
    message db "1 MBR"
    times 510-($-$$) db 0
    db 0x55,0xaa

nasm支持多种输出文件格式,可以使用nasm-hf查看。默认是输出bin格式,如果想要将编译好的程序运行在linux系统中,应该输出elf格式,elf是linux的可执行文件的格式。因为我们这段程序一会要运行在无操作系统的环境中,因此直接输出成纯二进制格式,即bin格式

nasm -o mbr.bin mbr.S #当前汇编文件名mbr.S

创建虚拟硬盘

bximage #在交互模式下选择创建虚拟硬盘的参数

bochs提示我们将如下内容添加到我们bochsrc配置文件中

ata0-master: type=disk, path="hd60M.img", mode=flat

dd命令将编译好的mbr.bin 写入hd60M.img

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

启动bochs

bochs -f bochsrc

按下c 显示如下,说明环境搭建成功!!

posted @ 2021-04-15 02:02  orangeQWJ  阅读(338)  评论(0编辑  收藏  举报