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安装成功如下图

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],没有找到配置文件

  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

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

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

6.运行GeekOS

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

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

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!”,恭喜你成功了!

感谢观看

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

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

  1. 硬实时RTLinux安装配置详解 (二):编译运行RTLinux

    硬实时RTlinux系统配置 4. 配置RTLinux 4.1 配置Patch 4.2 配置RTLinux内核 4.3. 编译Rtlinux内核 4.4 制作initramfs启动引导: 5. 大功告 ...

  2. ubuntu18.4中查看mysql_Ubuntu18.0.4下mysql 8.0.20 安装配置方法图文教程

    mysql 8.0.20 安装配置方法图文教程整理下,供大家参考. 一.准备工作 1.检查是否已经安装mysql 当前计算机没有安装mysql. 2.下载MySQL8.0. 根据MySQL安装指南,发 ...

  3. Ubuntu18.04安装配置Qt5.15

    Ubuntu18.04安装配置Qt5.15 Qt选择 下载Qt 安装Qt5.15.0 配置 后记 Qt选择 在官方的声明中,Qt5.15是Qt5.x的最后一个LTS版本,增加了即将在2020年底推出的 ...

  4. win10配置mysql8.0_Win10下mysql 8.0.20 安装配置方法图文教程

    Win10系统下MySQL 8.0.20安装和配置超详细教程 MySQL下载 MySQL直接去官网下载就行,选择community版本(免费)下载,链接. 在select operating syst ...

  5. Ubuntu18.04安装配置FRR

    FRR 文章描述了如何在Ubuntu18.04的环境下安装配置frr 0. 更新安装源 vi /etc/apt/sources.list 更改文件内容 deb http://mirrors.aliyu ...

  6. MySQL8.0.20安装配置+用Navicat连接详细教程(win10,Navicat15)

    MySQL 是最流行的关系型数据库管理系统,在 WEB 应用方面 MySQL 是最好的 RDBMS(Relational Database Management System:关系数据库管理系统)应用 ...

  7. ubuntu18.04安装配置指南(实测)

    Dustone 2021.5.9 本文为实验室Ubuntu重装系统后的配置简要指南,配置为1080Ti. 0:文件备份 桌面## 图片 文档 下载 matlab 主目录(project) sublim ...

  8. rea t插件 vscode_VSCode构建汇编语言环境(配置VSCode自动调用dosbox编译运行MASM/TASM程序)...

    首先,最简单的方法当然是直接安装vscode插件比如下面这个:根据里面的说明使用即可 MASM/TASM - Visual Studio Marketplace​marketplace.visuals ...

  9. Ubuntu18.04安装配置jmol

    说明: 本文介绍了在Ubuntu18.04下如何配置jmol-14.31.34. 一.安装openjdk ①更新apt源缓存 ②安装openjdk 二.上传文件到Downloads目录如下 三.解压文 ...

最新文章

  1. 数据中台解决的三大问题
  2. android开发我的新浪微博客户端-用户授权页面UI篇(3.1)
  3. windows目录内打开CMD的几种方法
  4. 解决debian apt-get upgrade 错误triggers ci file contains unknown directive `interest-noawait'
  5. python语言结构_Python语言表示语句结构时采用
  6. mysql逗号分隔正则查询_正则表达式在逗号分隔的列表中查找字符串和下一个字符-MySQL?...
  7. 大数据:Parquet文件存储格式
  8. click传值vue_对vue下点击事件传参和不传参的区别详解
  9. SSM框架项目的pom导入包和xml配置
  10. 快手大数据架构演进实录
  11. _2020年10个最好的Linux发行版本
  12. Linux 下压缩与解压.zip和.rar
  13. Java集合的所有知识点详解,偏通俗易懂,集合笔记
  14. 天宇物流公司创业计划书
  15. 产品读书《自控力:斯坦福大学最受欢迎的心理学课程》
  16. method call expected
  17. Java实现mds降维_降维算法MDS
  18. 压缩包文件如何将密码找回来
  19. execve头文件C语言,利用fork()和execve()运行程序
  20. webstorm解决git冲突

热门文章

  1. 视频制作技巧:为视频画面批量添加垂直翻转处理
  2. 使用PaddlePaddle进行微博谣言检测
  3. 三十而立,国产Office遍地开花,电子表格工具推陈出新
  4. Visual Studio Code开发HTML5安装插件快捷使用Bootstrap样式
  5. FastReport使用数据源
  6. 聊一聊微信小程序包内容
  7. 思科模拟器静态路由的配置
  8. 《ffmpeg入门学习》 六 java把多个图片合成视频,并添加图片水印
  9. 手机配合termux部署DDbot 教程
  10. 微信小程序不同机型底部安全区域问题