自制操作系统之一:Centos7.9 安装 bochs
nanshan 2024-10-25 13:02 22 浏览 0 评论
自制操作系统第一步,就是搭建模拟环境,方便调试和运行。Bochs是一个x86硬件平台的开源模拟器。可以模拟各种硬件配置,包括CPU、内存、硬盘、显示器、以太网、BIOS等常见硬件以及整个PC平台,以下是bochs-2.6.8在Centos 7.9环境下的安装过程。
一、安装依赖
一次性安装好所需依赖,避免后续报错处理。
yum install gtk2 gtk2-devel libXt \
libXt-devel libXpm libXpm-devel SDL SDL-devel \
libXrandr-devel.x86_64 xorg-x11-server-devel \
glibc-headers gcc-c++ SDL SDL-devel
二、下载安装文件
下载bochs源码并解压
# 下载资源页: https://sourceforge.net/projects/bochs/files/bochs/2.6.8/
# 下载源码
wget "https://sourceforge.net/projects/bochs/files/bochs/2.6.8/bochs-2.6.8.tar.gz"
# 解压文件
tar -zxvf bochs-2.6.8.tar.gz
三、编译安装
3.1、运行环境配置
打开bochs-2.6.8目录下隐藏文件 .bochsrc,可以定制软件配置。一般使用默认配置,以下是一些关键参数,可以根据自己需要进行调整。
#相当于设置BIOS的启动项,此处为软盘启动。
boot:floppy
# 表示设置插入软盘的类型为容量1.44 MB的软盘,软盘镜像文件的文件名为boot.img,状态是已经插入,写保护开关置于关闭状态。
floppya:type=1_44,1_44="boot.img", status=inserted,write_protected=0
# cpu配置
cpu: model=core2_penryn_t9600, count=1, ips=50000000, reset_on_triple_fault=1, ignore_bad_msrs=1, msrs="msrs.def"
cpu: cpuid_limit_winnt=0
#cpuid配置
cpuid: x86_64=1, mmx=1, sep=1, simd=sse4_2, apic=xapic, aes=1, movbe=1, xsave=1
cpuid: family=6, model=0x1a, stepping=5
# 设置可用物理内存容量,以MB为单位,目前Bochs软件可用的内存上限是2048 MB
megs:2048
# 关闭声卡驱动,如果是ECS环境,没有安装声卡模块,可以关闭这个配置
# sound: driver=default, waveout=/dev/dsp. wavein=, midiout=
3.2、配置检查
进入安装目录,完成bonchs配置。如果配置过程中出现报错,可以参考 五、异常处理 模块解决。
cd bochs-2.6.8
./configure --with-x11 --with-wx --enable-debugger --enable-disasm \
--enable-all-optimizations --enable-readline --enable-long-phy-address \
--enable-ltdl-install --enable-idle-hack --enable-plugins --enable-a20-pin \
--enable-x86-64 --enable-smp --enable-cpu-level=6 --enable-large-ramfile \
--enable-repeat-speedups --enable-fast-function-calls --enable-handlers-chaining \
--enable-trace-linking --enable-configurable-msrs --enable-show-ips --enable-cpp \
--enable-debugger-gui --enable-iodebug --enable-logging --enable-assert-checks \
--enable-fpu --enable-vmx=2 --enable-svm --enable-3dnow --enable-alignment-check \
--enable-monitor-mwait --enable-avx --enable-evex --enable-x86-debugger \
--enable-pci --enable-usb --enable-voodoo
3.3、编译安装
执行编译安装,等待安装结束。如果安装过程中出现报错,常见的报错信息,也可以参考 五、异常处理 模块解决。
make install
3.4、验证安装结果
在安装目录执行 ./bochs 命令,出现以下结果,即为安装成功。
[root@centos7.9 bochs-2.6.8]# ./bochs
# 正常输出如下:
========================================================================
Bochs x86 Emulator 2.6.8
Built from SVN snapshot on May 3, 2015
Compiled on Mar 23 2024 at 22:27:20
========================================================================
00000000000i[ ] LTDL_LIBRARY_PATH not set. using compile time default '/usr/local/lib/bochs/plugins'
00000000000i[ ] BXSHARE not set. using compile time default '/usr/local/share/bochs'
00000000000i[ ] lt_dlhandle is 0x1878fb0
00000000000i[PLUGIN] loaded plugin libbx_unmapped.so
00000000000i[ ] lt_dlhandle is 0x1879a80
00000000000i[PLUGIN] loaded plugin libbx_biosdev.so
00000000000i[ ] lt_dlhandle is 0x187a430
00000000000i[PLUGIN] loaded plugin libbx_speaker.so
00000000000i[ ] lt_dlhandle is 0x187b290
00000000000i[PLUGIN] loaded plugin libbx_extfpuirq.so
00000000000i[ ] lt_dlhandle is 0x187bb00
00000000000i[PLUGIN] loaded plugin libbx_parallel.so
00000000000i[ ] lt_dlhandle is 0x187d6e0
00000000000i[PLUGIN] loaded plugin libbx_serial.so
00000000000i[ ] lt_dlhandle is 0x18819d0
00000000000i[PLUGIN] loaded plugin libbx_iodebug.so
00000000000i[ ] reading configuration from .bochsrc
00000000000e[ ] .bochsrc:714: ataX-master/slave CHS set to 0/0/0 - autodetection enabled
00000000000e[ ] .bochsrc:918: invalid choice 'sound' parameter 'mode'
00000000000e[PCSPK ] .bochsrc:918: unknown parameter for speaker ignored.
------------------------------
Bochs Configuration: Main Menu
------------------------------
This is the Bochs Configuration Interface, where you can describe the
machine that you want to simulate. Bochs has already searched for a
configuration file (typically called bochsrc.txt) and loaded it if it
could be found. When you are satisfied with the configuration, go
ahead and start the simulation.
You can also start bochs with the -q option to skip these menus.
1. Restore factory default configuration
2. Read options from...
3. Edit options
4. Save options to...
5. Restore the Bochs state from...
6. Begin simulation
7. Quit now
Please choose one: [6]
四、配置环境变量
配置好环境变量,后续在系统即可直接使用,而不需要进入安装目录运行。
vim ~/.bash_profile
export BXSHARE=/usr/local/share/bochs
source ~/.bash_profile
五、异常处理
5.1 配置报错
configure: error: in `/root/os_demo/bochs-2.6.2':
configure: error: C++ preprocessor "/lib/cpp" fails sanity check
# 解决方案: 安装 gcc-c++
yum install gcc-c++
5.2、找不到头文件
x.cpp:37:22: fatal error: X11/Xlib.h: No such file or directory
或者
x.cpp:42:35: fatal error: X11/extensions/Xrandr.h: No such file or directory
# 解决方案: 安装 libX* 相关组件
yum install libX*
5.3、找不到 .cc 文件
make: *** 没有规则可以创建“misc/bximage.o”需要的目标“misc/bximage.cc”。 停止。
# 解决方案:缺少对应 .cc 文件, 复制以下 .cpp文件为 .cc 后缀文件即可
cp misc/bximage.cpp misc/bximage.cc
cp iodev/hdimage/hdimage.cpp iodev/hdimage/hdimage.cc
cp iodev/hdimage/vmware3.cpp iodev/hdimage/vmware3.cc
cp iodev/hdimage/vmware4.cpp iodev/hdimage/vmware4.cc
cp iodev/hdimage/vpc-img.cpp iodev/hdimage/vpc-img.cc
cp iodev/hdimage/vbox.cpp iodev/hdimage/vbox.cc
5.4、运行 ./bochs 报错
.bochsrc:907: Bochs is not compiled with lowlevel sound support
# 解决方案:缺少声音相关设备支持,打开 .bochsrc 文件,注释sound相关配置,再重新编译
vim .bochsrc
# sound: driver=default, waveout=/dev/dsp. wavein=, midiout=
至此,已经安装好bochs模拟软件啦,待后续开发调试使用。
相关推荐
- HTTP 和 HTTPS 有何不同?一文带你全面了解
-
随着互联网时代的高速发展,Web服务器和客户端之间的安全通信需求也越来越高。HTTP和HTTPS是两种广泛使用的Web通信协议。本文将介绍HTTP和HTTPS的区别,并探讨为什么HTTPS已成为We...
- HTTP和HTTPS的区别?
-
本文主要讲解http和https的关系与区别,分辨不清区别的同学要注意朝下看完,Web面试中最常问的已到面试题~~一.HTTP和HTTPS的相同点:大多数情况下,HTTP和HTTPS是相同的,...
- 详解HTTP协议与RESTFUL
-
1.HTTP简介http协议是一种超文本传输协议,主要应用在浏览器与服务器之间的通信,可以传输文本,图片,视频等。它是一种应用层协议,也是基于TCP协议,当然现在流行的Https协议是在TLS或SSL...
- http与https的区别,读完之后,大部分程序员收藏了...
-
在URL前加https://前缀表明是用SSL加密的。你的电脑与服务器之间收发的信息传输将更加安全。Web服务器启用SSL需要获得一个服务器证书并将该证书与要使用SSL的服务器绑定。http和ht...
- JMeter测试HTTP GET请求(附实例)
-
一、HTTPRequest配置项解析●WebServer:1.Protocol[http]:○若为HTTP协议可以不填写(默认为HTTP);○若为HTTPS协议可以填写“https”;还可...
- 2019山东高考分数线公布:本科文503 理443
-
刚刚,2019年山东高考各批次录取最低分数线公布了!6月24日下午,山东省教育厅举行2019年山东高考第二场新闻发布会。山东省教育招生考试院在发布会上公布了山东今年高招各批次录取控制分数线。其中,本科...
- Linux系统网站出现503错误提示怎么解决?
-
当Linux系统上的网站出现503ServiceUnavailable错误时,通常表示服务器暂时无法处理请求,可能由后端服务崩溃、资源耗尽或配置错误导致。以下是系统化的排查和解决方案:一、...
- 三石说:一文带你了解Https
-
今天我们继续深入http,本篇将介绍Https的内容,相信你看过之后对https有一定的了解。HTTPSHTTPS(全称:HyperTextTransferProtocoloverSecu...
- HTTP与HTTPS的区别
-
首先,需要知道HTTP和HTTPS是什么。HTTP是超文本传输协议,是一个基于请求与响应,无状态的,应用层的协议,常基于TCP/IP协议传输数据,是互联网上应用最为广泛的一种网络协议。也...
- Caddy服务器开启HTTP/3:如何让你的网站快如闪电?
-
Caddy服务器开启HTTP/3:如何让你的网站快如闪电?在互联网技术飞速迭代的今天,HTTP/3正以革命性的姿态颠覆传统网络传输模式。作为首个基于QUIC协议的HTTP标准,它不仅能大幅提升网站加载...
- HTTP/1.1、HTTP/2、HTTP/3 演变
-
HTTP基本概念HTTP是超文本传输协议,也就是HyperTextTransferProtocol。HTTP常见的状态码有哪些?1xx类状态码属于提示信息,是协议处理中的一种中间状态,实际...
- HTTP/3 黑科技:三次握手如何进阶 QUIC?30 年通信细节揭秘
-
大家好,我是“极客运维社”的飞哥,点击右上方“关注”,每天和大家分享关于网络设备及系统和企业组网方面干货。码字不易,如果您觉得文章还可以,就点赞+关注+收藏吧,也许在以后某个时间能够用得到。H...
- 总结HTTP/HTTPS协议基础的有那些漏洞,怎么检查,怎么防范
-
以下是基于黑盒测试、白盒测试和灰盒测试视角对HTTP/HTTPS协议漏洞检查与防范的分类整理:一、黑盒测试(外部视角,无内部权限)定义:模拟攻击者视角,仅通过外部网络接口进行测试,不依赖系...
- 什么是HTTP? HTTP 和 HTTPS 的区别?
-
HTTP(HyperTextTransferProtocol),即超文本运输协议,是实现网络通信的一种规范。HTTP是一个传输协议,即将数据由A传到B或将B传输到A,并且A与B之间能够存...
- 一篇文章搞懂HTTP和HTTPS的的本质区别
-
http协议是基于tcp协议,默认是80端口。它的特点是什么?它是基于请求和响应的,大家抓个包能看到http协议有一个请求报文有一个响应报文,还有它是一个无状态的协议,还有一个无连接的协议。无连接是指...
你 发表评论:
欢迎- 一周热门
-
-
如何在安装前及安装后修改黑群晖的Mac地址和Sn系列号
-
爱折腾的特斯拉车主必看!手把手教你TESLAMATE的备份和恢复
-
[常用工具] OpenCV_contrib库在windows下编译使用指南
-
Ubuntu系统Daphne + Nginx + supervisor部署Django项目
-
WindowsServer2022|配置NTP服务器的命令
-
WIN11 安装配置 linux 子系统 Ubuntu 图形界面 桌面系统
-
解决Linux终端中“-bash: nano: command not found”问题
-
NBA 2K25虚拟内存不足/爆内存/内存占用100% 一文速解
-
Linux 中的文件描述符是什么?(linux 打开文件表 文件描述符)
-
K3s禁用Service Load Balancer,解决获取浏览器IP不正确问题
-
- 最近发表
- 标签列表
-
- linux 查询端口号 (58)
- docker映射容器目录到宿主机 (66)
- 杀端口 (60)
- yum更换阿里源 (62)
- internet explorer 增强的安全配置已启用 (65)
- linux自动挂载 (56)
- 禁用selinux (55)
- sysv-rc-conf (69)
- ubuntu防火墙状态查看 (64)
- windows server 2022激活密钥 (56)
- 无法与服务器建立安全连接是什么意思 (74)
- 443/80端口被占用怎么解决 (56)
- ping无法访问目标主机怎么解决 (58)
- fdatasync (59)
- 405 not allowed (56)
- 免备案虚拟主机zxhost (55)
- linux根据pid查看进程 (60)
- dhcp工具 (62)
- mysql 1045 (57)
- 宝塔远程工具 (56)
- ssh服务器拒绝了密码 请再试一次 (56)
- ubuntu卸载docker (56)
- linux查看nginx状态 (63)
- tomcat 乱码 (76)
- 2008r2激活序列号 (65)