Ubuntu18/20安装配置Bochs2.6.9与编译运行GeekOS_Java_c110的博客-程序员宝宝

技术标签: Ubuntu  ubuntu  操作系统  bochs  GeekOS  

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

感谢观看

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

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/Java_c110/article/details/115737121

智能推荐

检测心电信号的p波的matlab代码,matlab心电信号R波检测程序.doc_小聪约了只喵的博客-程序员宝宝

《生物医学信号处理》实习报告学生姓名:学号:实验室名称:项目名称:心电信号的R波检测项目内容:总结常用的QRS波检测算法;选择一种QRS波检测算法,理解该检测算法;编写程序,检测不含噪声的模拟ECG信号中R波对模拟ECG信号加高斯噪声生成含噪声的模拟ECG信号;利用前面编写的QRS波检测算法,检测含噪声模拟ECG信号的R波;分别检测不含噪声和含噪声的心率失常ECG信号(任务一中得到的MIT-BIH...

ryzen运行matlab,关于Ryzen 2700运行SOLIDWORKS提速的办法_lihahamiao的博客-程序员宝宝

三个月前自己组装了台电脑,配置如下:电脑型号 微星 MS-7B89 台式电脑(扫描时间:2019年10月05日)操作系统 Windows 10 专业版 64位 ( DirectX 12 )处理器 AMD Ryzen 7 2700 Eight-Core 八核主板 微星 B450M MORTAR (MS-7B89) ( AMD PCI 标准主...

教学中使用计算机的数据,计算机教学中数据挖掘技术的应用_来B的博客-程序员宝宝

数据挖掘技术作为一种数据分析的手段,在许多行业都得到了应用。而计算机作为人们越来越依赖的一种信息化设施,也在社会经济中发挥了重要作用。在日常生活中,人们多是利用计算机来完成数据挖掘的使用,而实际上,数据挖掘不仅使一种利用计算机分析数据的手段,更应该视为计算机的一个组成部分。对此,美国人早有预言:数据挖掘会成为计算机发展的一个重要组成部分。现如今,在计算机教学活动中已经将数据挖掘作为了教学的一个部分...

计算机组装与维护实习内容,【电脑|电脑维修-计算机组装和维护的实习报告】..._黄文瀚的博客-程序员宝宝

『易坊知识库摘要_电脑|电脑维修-计算机组装和维护的实习报告』3. 对Windows操作系统有更深层次的认知。4. 了解Linux操作系统的安装过程及使用特点。四、实习内容:1. 实习动员大会2. 听有关电脑维修-计算机组装和维护的报告3. 致远楼计算机组成实践...按关键词阅读:维修电脑报告实习维护组装计算机1、xxxxxxxx 学院实习报告班级: XXXXXXX-X 姓名:XXXXXX实习名称...

matlab读取hdf显示,matlab读取hdf_还没长大的成年人的博客-程序员宝宝

HDF, BMP, JPEG, GIF, PCX, XWD, CUR, ICO, RAS, PBM, PGM, PPM AU, SND - NeXT/Sun sound 音訊 WAV - Microsoft Wave sound MATLAB 程式設計入門篇......Matlab 的数据文件I/ O 的实现方法 0 引言 Matlab 是一个功能强大的计算机...JPEG、. HDF、. PCX...

随便推点

关于Flash的学习(第一步(后续继续更新))_一个做底层的码农的博客-程序员宝宝

首先对于MX25L3233F型号Flash。指令部分先不说,我先介绍Flash大小换算和擦除部分。首先,我们先明确下此Flash为32M Bit,也就是4M Byte。在文章开头概括时会介绍Flash有多少个扇区对应多大的Byte、多少个块对应多大的Byte。比如这里写到的是总共1024个扇区,每隔扇区4K Byte。所以这里这么计算,就跟Flash大小对应起来了:1024*4(K By...

vue-----路由(router)的全局配置_山竹回家了的博客-程序员宝宝_vue-router全局

vue中的路由一般是指页面跳转的路径,我们需要做的事,将组件(components)映射到路由(routes),然后告诉Vue Router在哪里渲染它们。VueRouter:构造函数,通过它实例化路由模块对象routes:添加路由配置1router:注入路由router-view:路由所映射组件的展示区域router-link:路由超链接$route:获取路由参数,它是一个对象$router:实现路由跳转,以代码的方式来实现一、安装NPM安装:npm install vue-r.

keil + proteus 仿真AT89C51单片机点亮一个灯泡并让灯泡不停闪烁_涛歌依旧的博客-程序员宝宝_proteus灯泡

用单片机点亮一个灯泡并让灯泡不停闪烁, 这几乎是单片机的入门课程了。 网上有很多图文并茂的资料把这个步骤写得很详细, 我就不再画蛇添足了, 有兴趣的同学请在网上搜索, 很easy. 最近在看计算机组成原理, 对电路略有兴趣, 捡起多年前玩过的东东, 呵呵, 宝刀不老, 我还能记清楚自己当时点亮一个灯泡并让灯泡不停闪烁的那种激动的心情。 虽然现在工作完全用不到了, 但兴趣犹在。

MMU内存管理单元之TLB快表_明故宫的记忆的博客-程序员宝宝_tlb表

文章目录1. TLB快表1.1 MMU的cache ——TLB1.2 快速上下文切换FSCE1.3 Global TLB和non-global1. TLB快表  页表以数据结构的方式存放在DDR中,假如cpu每做一次地址访问,都要去DDR里去取出1级描述符,然后解析1级描述符,再去查找2级描述符,解析2级描述符,加上偏移得到物理地址,那真是太慢了1.1 MMU的cache ——TLB  TLB的全称是Translation Lookaside Buffer,我们知道,处理器在取指或者执行访问memo

怎么利用计算机自带功能删除垃圾,如何清理电脑垃圾,教您如何彻底清除系统垃圾..._连玉君的博客-程序员宝宝

使用过电脑的用户都晓得,电脑在使用一段时间后,势必会产生一些缓存的垃圾,导致电脑的运行速度变慢,内存减少,一般的用户都会采取清理软件来简单的处理,就凭一个软件是不行的,再好的软件也不会完全清理掉的,为此,小编给大家分享彻底清除系统垃圾的清理方法。平时,一些用户都有清理系统垃圾的习惯,一般都是使用第三方软件工具来清理,也就是清理大师,360,电脑管家等等,但是都是做表皮的工作,不久后,垃圾依旧,要想...

如何从u盘启动选择修复计算机,今天解决联想电脑如何设置u盘启动的修复步骤..._五石的博客-程序员宝宝

win10系统对大家来说可能都不会陌生,但是还是会遇到联想电脑如何设置u盘启动的问题时不知道如何解决。有不少平时很懂系统相关的网友也许也不知道如何处理。那我们应当怎么处理呢?我们只需要按照:1、电脑重启或开机,在开机画面出现的时候,快速按下BIOS热键进入BIOS设置页面2、然后,使用键盘左右方向键移动至"security"菜单,再使用上下方向键移动至"secure boot"选项并回车就简简单单...

推荐文章

热门文章

相关标签