实现操作系统 1 Bochs的安装配置 最简单的 操作系统

首先给大家推荐一下我老师大神的人工智能教学网站。教学不仅零基础,通俗易懂,而且非常风趣幽默,还时不时有内涵黄段子!点这里可以跳转到网站

Bochs:为多平台设计的x86架构模拟器/虚拟机

材料:
1、Ubuntu16.04LTS
2、Bochs-2.6.8

一、安装步骤:
1、到官网上下载Bochs-2.6.8.tar.gz 下载链接

下载源码而不直接使用sudo apt-get install vgabios bochs bochs-x bximage命令行安装是因为我们还要安装Bochs的调试功能

2、解压下载好源码:

tar zxvf bochs-2.6.8.tar.gz

3、进入解压后的目录,然后执行命令行:

./configure --enable-debugger --enable-disasm
make
sudo make install

注意:
第1条是开启Bochs的调试和反汇编功能;
安装过程中可能出现一些问题,一般都是一些包和引用没有安装,下面是我遇到的几个问题及解决方案:

错误1:fatal error: X11/Xlib.h: No such file or directory
解决方案:sudo apt-get install libx11-dev

错误2:fatal error: X11/extensions/Xrandr.h: No such file or directory
解决方案:sudo apt-get install xorg-dev

Bochs在终端显示的界面

安装成功后,在终端输入bochs即可看到bochs的画面了:

二、配置Bochs
安装好Bochs后,接下来就需要对Bochs进行配置了,如果你不自己写配置文件的话,执行bochs命令时Bochs会自己在当前目录顺序寻找以下文件作为默认配置文件:
.bochsrc
bochsrc
bochsrc.txt
bochsrc.bxrc(仅对Windows有效)

Bochs安装目录下所有文件

我们可以通过ls -a命令看到Bochs安装目录下的所有文件:

然后可以进入到.bochsrc文件里面查看自带的配置信息

在这里我们自己创建一个名叫bochsrc的配置文件,来告诉Bochs我们想要的虚拟机是什么样子的,下面就是我的配置文件:

#################################################################
# Bochs的配置文件
# Configuration file for Bochs
#################################################################

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

# filenameof ROM images
romimage:file=/usr/local/share/bochs/BIOS-bochs-latest
vgaromimage:file=/usr/local/share/bochs/VGABIOS-lgpl-latest

# which disk image will be used 这个是启动软盘,我们虚拟出来的那个a.img
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/local/share/bochs/keymaps/x11-pc-us.map

注意这里要确保romimage和vgaromimage这两项的路径是正确的,不然虚拟机启动时会提示“couldn’t open ROM image file”的错误,还有Bochs的版本不一样的话,键盘设置的方式也不太一样。

三、最简单的操作系统
那么接下来,我们就要开始写一个最简单的操作系统了,这个代码全由汇编完成,而且只有不到20行:

    org    07c00h
    mov    ax, cs
    mov    ds, ax
    mov    es, ax
    call   DispStr
    jmp    $
DispStr:
    mov    ax, BootMessage
    mov    bp, ax
    mov    cx, 16
    mov    ax, 01301h
    mov    bx, 000ch
    mov    dl, 0
    int    10h
    ret
BootMessage:    db    "Hello, OS world!"
times    510-($-$$)    db    0
dw       0xaa55

用NASM编译一下这段代码:

nasm boot.asm -o boot.bin

k然后在boot.asm的目录下我们可以看到多了一个512字节的boot.bin文件,这个文件就要被我们写入到软盘里面。这里当然你可以写入到一个真实的空白软盘上,但是现在基本上都已经见不到软盘了吧,所以我们这里就用Bochs来虚拟出所需要的软盘。

bximage过程

四、Bochs的使用
1.创建软盘映像:
输入sudo bximage,然后在问到要创建hd还是fd的时候,输入fd,之后就一直回车默认就行了

2.这下我们通过虚拟,有了计算机,又有了软盘,是时候将我们刚刚编译好的引导扇区写进软盘了,Linux下自带了dd命令可以很方便地进行软盘读写:

sudo dd if=boot.bin of=a.img bs=512 count=1 conv=notrunc
软盘写入

一切准备就绪,是时候进行启动Bochs了,进入到你的boot.bin所在目录下,然后在终端输入命令:

sudo bochs -f bochsrc

注意:这里要特别注意bochsrc就是我们第二步写的那个配置文件,因为安装Bochs成功之后可以在任意地方使用bochs命令了,但是要使用我们的配置文件bochsrc的话就需要加上绝对路径,比如非Bochs安装目录下运行bochs的命令如下:

sudo bochs -f /home/bychen/downloads/bochs-2.6.8/bochsrc
这里写图片描述

输入回车,
注意:如果这里出现是一个什么都没有的一片黑色的界面的话,那是因为我们这里是带调试模式的Bochs,回车之后还需要一次回车,然后在出现Bochs提示符之后输入“c”,再次回车)

最简单的操作系统

看到Bochs界面上出现的“Hello, OS world!”
这就是一个最简单的操作系统了~

点这里可以跳转到人工智能网站

发表评论