记录bochs+geekos报错指南

记录bochs+geekos报错指南

环境:virtualbox+ubuntu12.04

物理机:ArchLinux

1. 安装virtualbox并实现文件共享

# Arch Linux
pacman -S virtualbox

在设备中创建共享文件夹,并在设备中选择安装增强功能

# 安装gcc、bzip2
apt install gcc bzip2 make perl

# 在虚拟机/media/vboxuser/VBox_GAs_7.1.6运行可执行文件

# 执行完成后将虚拟机用户添加至vboxsf组,否则共享文件夹无运行权限
sudo usermod -aG vboxsf usrname 

2. 安装配置Bochs

# 安装 build-essential 及一些开发依赖
apt install build-essential 
apt install libx11-dev libxpm-dev libxrandr-dev libgtk2.0-dev libtool automake

# 解压并进入Bochs文件夹,开始编译
cd ./Bochs
sudo ./configure -enable-debugger -enable-disasm # -enable-debugger和 -enable-disasm 表示开启调试和反汇编功能
sudo make
sudo make install

3. 编译安装nasm

apt install curl

# 从官网curl源文件
curl -O https://www.nasm.us/pub/nasm/releasebuilds/2.08.02/nasm-2.08.02.tar.gz

# 解压并进入文件夹

# 配置、编译、安装
sudo ./configure
sudo make
sudo make install

nasm版本一定要安装旧一点的版本,比如2.08.02版本,否则会出现如下问题

nasm导致的bochs报错

4. 编译 GeekOS

# 安装 32 位 C 标准库头文件
apt install gcc-multilib g++-multilib libc6-dev-i386

# 从官网下载源代码包,解压并进入project0
# 修改Makefile文件
# 对Makefile的第148行做如下修改,加入-fno-stack-protector参数(GCC中的一个编译选项,用于禁用栈保护)
GENERAL_OPTS := -O -Wall $(EXTRA_C_OPTS) -fno-stack-protector
# 对Makefile的第149行做如下修改,删除-Werror 参数(警告仅作为提示输出,不会阻止编译完成)
CC_GENERAL_OPTS := $(GENERAL_OPTS)
# 对Makefile的第100行,106行加上 -m32参数(用 32位模式 编译代码)
# 为第109行加上 -m elf_i386 参数(用 ELF 格式的 32 位 x86 (i386) 目标平台的规则来链接生成最终可执行文件)

# 在Makefile文件下运行 make 指令编译内核
sudo make depend # 将依赖写入.depend 文件
sudo make 

使用你熟悉的文本编译器修改.bochsrc配置文件

vim .bochsrc

####
megs: 32

# 将路径替换为你自己具体的路径
romimage: file=/usr/local/share/bochs/BIOS-bochs-latest
vgaromimage: file=/usr/local/share/bochs/VGABIOS-lgpl-latest

boot: a

floppya: 1_44=fd.img, status=inserted

log: bochs.out

mouse: enabled=0

private_colormap: enabled=0
display_library: x

clock: sync=realtime, time0=local

cpu: count=1, ips=1000000

magic_break: enabled=1
####

# :wq保存并退出

运行bochs测试GeekOs系统

bochs编译geekos成功

参考

基于Bochs安装GeekOs

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值