博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
自己动手写操作系统 环境配置与最小的操作系统
阅读量:6195 次
发布时间:2019-06-21

本文共 2412 字,大约阅读时间需要 8 分钟。

默认读者会基本的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 号中断    retBootMessage:        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-disasmsudo makesudo 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 havemegs: 32# filename of ROM imagesromimage: file=/usr/share/bochs/BIOS-bochs-latestvgaromimage: 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 mousemouse: 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

你可能感兴趣的文章
oracle 数据库备份 手工备份
查看>>
移动端开发的一些技巧总结(1)
查看>>
CODING 代码托管架构升级之路
查看>>
并发系列6-Java并发面试系列文章总结【石杉的架构笔记】
查看>>
MySQL中有关TIMESTAMP和DATETIME的总结
查看>>
SpringBoot之HandlerInterceptor拦截器的使用 ——(三)获取requestBody解决java.io.IOException: Stream closed...
查看>>
分块+二分 BZOJ 3343
查看>>
bzoj4842 Delight for a Cat
查看>>
H5入门阶段
查看>>
正则表达式的特殊用法
查看>>
IIS日志
查看>>
Ubuntu 提示sudo: java: command not found解决办法
查看>>
php常用的系统函数大全
查看>>
iwinfo 的使用
查看>>
vue削笔机
查看>>
app下载——js设备判断
查看>>
正则表达式 exec 获取字符串中的汉字
查看>>
寒假作业3
查看>>
Java中怎样判断一个字符串是否是数字?
查看>>
浅谈AngularJS中的$parse和$eval
查看>>