自己动手写操作系统 环境配置与最小的操作系统

本文详细介绍如何从零开始,在Ubuntu 16.04 LTS 32位环境下搭建开发环境,并使用NASM汇编语言编写首个操作系统引导程序。文章涵盖了安装配置Linux、NASM及Bochs等工具的过程,同时提供了引导程序的完整代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

默认读者会基本的Linux命令,以及会用Linux下任意一种编辑器
 
这本书的第一版《自己动手写操作系统》里作者似乎使用的是windows来进行开发,到了第二版主要使用Linux,书里第二章还专门论述了一下换平台的原因……总之,作为程序员,会Linux是很必要的,因此,我也决定使用Linux来进行学习。
 
Linux版本:ubuntu16.04 LTS  32位(因为之前用来改过Linux-0.11的源码,当时配置的环境就是32位,所以就懒得再换64位了)
直接官网下载用VM-ware安装就好了。
然后安装第一章中需要的NASM
sudo apt install nasm

  

然后用编辑器之神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                ; 结束标志
然后在shell中将其汇编
nasm boot.asm -o boot.bin
接下来要安装 bochs 直接到这里下载  https://sourceforge.net/projects/bochs/files/    我选择的是当前最新版,2.6.9
下载后解压
sudo tar zxvf bochs-2.6.9.tar.gz

安装bochs的步骤就照着书上的来,但是可能会出现一些问题,因为bochs是用gtk开发的,所以首先要安装gtk
sudo apt-get install build-essential xorg-dev libgtk2.0-dev
之后再
cd bochs-2.6.9
./configure --enable-debugger --enable-disasm
sudo make
sudo make install

然后要创建一个软盘映像文件img

bximage

 

 

 
 
 
bochs 2.6.9是这样的界面,和书上不一样,所幸没有什么太难的英文,这里一看就选1
 
 
 
选1之后的界面就和书上的一致了,除了第一个要输入的地方输入fd以外,后面就回车就好了,不再截图。
 
接下来要把引导程序写到软盘映像img里面
使用dd命令
dd if=boot.bin of=a.img count=1 conv=notrunc

 

 
接下来要配置bochs环境参数
# Configuration file for Bochs
###############################################################

# how much memory the emulated machine will have
megs: 32

# filename of ROM images
romimage: file=/usr/share/bochs/BIOS-bochs-latest
vgaromimage: file=/usr/share/vgabios/vgabios.bin

# what disk images will be used 
floppya: 1_44=a.img, status=inserted

# choose the boot disk.
boot: floppy

# where do we send log messages?
log: bochsout.txt

# disable the mouse
mouse: enabled=0

# enable key mapping, using US layout as default.
keyboard:keymap=/usr/share/bochs/keymaps/x11-pc-us.map  #注意:这一行我改动过了,和书上的不一样,因为bochs的版本变动,关于keyboard参数书写的格式有变动,
#要把keyboard_mapping改成keyboard,还有map要改成keymap,还有中间的那句enabled=1也要删掉,这里真是纠结半天-_-||对了,这个环境参数保存成bochsrc和上面几个文件放一起,方便
 
 
接着输入
bochs -f bochsrc

 

 
然后按6回车就可以开始进行调试啦

 
 
注意:这里黑框框啥都没有是正常的,因为这个模拟是单步运行的,所以需要你输入命令来让他运行,所以这里直接输入c让他运行直到碰到断点(当然我并没有设断点),然后回车
 
 
就 Hello, OS world!了
 
 
 
 

转载于:https://www.cnblogs.com/Lighters-c/p/7604740.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值