Ubuntu18/20安装配置Bochs2.6.9与编译运行GeekOS

1 篇文章 0 订阅
1 篇文章 0 订阅

Ubuntu20.04/18.04安装Bochs2.6.9编译运行GeekOS

请注意:博主仅测试在Ubuntu18和Ubuntu20上成功安装Bochs-2.6.9、nasm-2.08.02、geekos-0.3.0,其它版本可能会出现不兼容的情况。若安装调试过程中出现各种奇奇怪怪的错误,请百度报错信息,或给我留言。博主也是在多次失败的情况下,总结各位大佬的解决方案,才成功的。

1.在电脑上安装Linux操作系统

安装过程就不多介绍了,放个Ubuntu的种子,需要的自行下载

  • Ubuntu 18.04 Desktop (amd64)

magnet:?xt=urn:btih:286D2E5B4F8369855328336AC1263AE02A7A60D5&dn=ubuntu-18.04.4-desktop-amd64.iso

  • Ubuntu 20.04 Desktop (amd64)

magnet:?xt=urn:btih:9FC20B9E98EA98B4A35E6223041A5EF94EA27809&dn=ubuntu-20.04-desktop-amd64.iso&xl=2715254784

Ubuntu20安装成功如下图
Ubuntu20图

2.编译安装Bochs需要准备好安装环境

安装Bochs之前需要联网安装下面这些软件:

sudo apt-get install build-essential
sudo apt-get install xorg-dev
sudo apt-get install bison
sudo apt-get install libgtk2.0-dev
sudo apt-get install gcc-multilib

下载安装速度可能较慢,需要点耐心,如果下载中出现失败,用手机开个热点给电脑试下

3.安装Bochs2.6.9

  1. 下载Bochs2.6.9
    进入链接: 下载地址.
    找到bochs-2.6.9.tar.gz并下载保存

  2. 解压bochs-2.6.9.tar.gz
    可以直接鼠标右键选择“提取到此处”

  3. 安装Bochs
    进入bochs-2.6.9目录
    在终端输入下列命令

sudo ./configure --enable-debugger --enable-disasm
sudo make
sudo make install
  1. 启动Bochs
    直接在终端输入bochs启动,这里可能会报错,不用着急,百度可以解决。
    若没有报错,则会出现Bochs的菜单
    但是建议选项为[2],没有找到配置文件
    1

  2. 配置Bochs
    当我们在终端输入bochs后,
    Bochs会自己在当前目录顺序寻找以下文件作为默认配置文件:
    .bochsrc
    bochsrc
    bochsrc.txt
    bochsrc.bxrc(仅对Windows有效)
    我们可以自己创建一个名为.bochsrc的文件,来指定Bochs配置我们想要的虚拟机
    (请将.bochsrc文件放在 geekos-0.3.0/src/project0/build 目录下。没有geekos?请看第4步!在此目录下会有一个自带的.bochsrc文件,但它是隐藏文件)
    在终端输入

sudo gedit .bochsrc

粘贴以下内容(注意这里要确保romimage和vgaromimage这两项的路径是正确的,不然虚拟机启动时会提示“couldn’t open ROM image file”的错误,还有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 这个是启动软盘
floppya:1_44=fd.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

保存退出

4.安装nasm和下载GeekOS

  1. 下载安装nasm
    进入链接: 下载地址.
    选择nasm-2.08.02.tar.gz,下载保存
    解压后进入nasm-2.08.02目录
    依次输入以下命令:
./configure
sudo make
sudo make install

再在终端输入nasm -version
出现2.08.02,OK继续!

  1. 下载GeekOS
    直接去GeekOS下载
    下载完成后解压

5.编译GeekOS

进入目录 geekos-0.3.0/src/project0/build
终端输入

sudo make depend
sudo make

会报错,因为Makefile在make时将warnings全部视为了errors
于是我们打开当前目录下的Makefile
3

sudo gedit Makefile

找到第149行的-Werror:

CC_GENERAL_OPTS := $(GENERAL_OPTS) -Werror 

修改为:

CC_GENERAL_OPTS := $(GENERAL_OPTS)

在Makefile文件的第148行 GENERAL_OPTS := -O -Wall $(EXTRA_C_OPTS) 后面添加编译选项:
(高版本的Ubuntu会有优化问题,导致project运行时线程报错,所以此处可以把-O改成-O0,取消优化)

-fno-stack-protector

然后把Makefile文件中的100行至109行修改为如下内容:

TARGET_CC := $(TARGET_CC_PREFIX)gcc -m32                                                  
 
# Host C compiler.  This is used to compile programs to execute on                        
# the host platform, not the target (x86) platform.  On x86/ELF
# systems, such as Linux and FreeBSD, it can generally be the same                        
# as the target C compiler.                                                               
HOST_CC := gcc -m32                                                                       

# Target linker.  GNU ld is probably to only one that will work.                          
TARGET_LD := $(TARGET_CC_PREFIX)ld  -m elf_i386

然后输入命令:

sudo make clean
sudo make depend
sudo make

会出现

cat geekos/fd_boot.bin geekos/setup.bin geekos/kernel.bin > fd.img

3

即为编译成功
注意:这里的fd.img是软盘文件,和.bochsrc文件相关,非常重要!如果启动Bochs出现黑色界面,但是有弹窗报错,多半和它有关。

6.运行GeekOS

进入目录 geekos-0.3.0/src/project0/build
终端输入:bochs
会出现Bochs菜单,且建议选项为[6]意思是开始模拟
输入"6"弹出黑色页面,然后再在命令行输入"c"
4

如果出现错误提示,可能是因为软盘映像中没有找到编译好的可执行程序,所以需要我们导入程序。
可以自己编写一段程序,也可以使用自带的示例程序,将编译好的引导扇区写进软盘。

Linux下自带了dd命令可以很方便地进行软盘读写:

sudo dd if=main.o of=fd.img bs=512 count=1 conv=notrunc

("main.o"是要写入软盘的程序文件,“fd.img"是目的软盘,可以用自己建的软盘"a.img”,也可以用自动生成的)

重新运行GeekOS,看到Bochs界面上出现的“Welcome to GeekOS!”,恭喜你成功了!

感谢观看

如果文章对你有用,点个赞再走吧,有问题的可以评论区讨论。

  • 19
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值