0
点赞
收藏
分享

微信扫一扫

《操作系统真象还原》环境搭建

最近事情比较多,博客的留言可能过一段时间才能一一回复,抱歉。

《30天自制操作系统》一书感觉不太适合我hhh,然后就换了一本《操作系统真象还原》,接着拼命肝

基础环境 腾讯云Ubuntu服务器

清理无用空间

查看服务器docker占用的空间

docker system df

《操作系统真象还原》环境搭建_ubuntu

使用命令

docker system prune

可以用于清理磁盘,删除关闭的容器、无用的数据卷和网络,以及 dangling 镜像(即无 tag 的镜像)。

docker system prune -a命令清理得更加彻底,可以将没有容器使用 Docker 镜像都删掉。注意,这两个命令会把你暂时关闭的容器,以及暂时没有用到的 Docker 镜像都删掉了

安装gcc

root权限下

apt-get update
apt-get upgrade

等待一小段时间,因为腾讯云用了加速的,更新起来还是很快的

apt-get  install  build-essential

《操作系统真象还原》环境搭建_javascript_02

安装nasm

apt-get install nasm

《操作系统真象还原》环境搭建_javascript_03

安装bochs

好像网上大部分都是源码安装,试试

apt-get install bochs

《操作系统真象还原》环境搭建_docker_04

安装了挺多东西的

bochs --version

《操作系统真象还原》环境搭建_docker_05

暂时没啥问题,写个代码看能不能正常运行

编译

把书上那部分汇编代码放到 ​​mbr.S​​ 里面去

《操作系统真象还原》环境搭建_ubuntu_06

nasm -o mbr.bin mbr.S

《操作系统真象还原》环境搭建_javascript_07

ls -l

《操作系统真象还原》环境搭建_javascript_08

可以看到确实是 ​​512​​ 字节,笨扇区内的剩余空间被填充满了。

成为MBR

接着我们将该文件写入 0盘0道1扇区

路径修改为我们的,如下:

dd if=./mbr.bin of=./hd60M.img bs=512 count=1 conv=notrunc

《操作系统真象还原》环境搭建_javascript_09

跟书中的记录是一样的,不过换成了英文

运行测试

先输一个 bochs ,接着输入6,发生错误

《操作系统真象还原》环境搭建_javascript_10

Message: dlopen failed for module 'x' (libbx_x.so): file not found

原因是没有安装 ​​bochs-x​​,解决:

apt-get install bochs-x

突然想起来还没有弄 ​​bochsrc.disk​​ 文件

到​​/usr/bin​​目录下去:

《操作系统真象还原》环境搭建_docker_11

到了目录之后才惊觉自己是没有 bochsrc.disk文件,书中该文件是由 ​​share/doc/bochs/bochsrc-sample.txt​​​文件换名得来的,但是直接使用​​apt-get install bochs​​安装导致我们寻找不到配置文件目录(主要还是太菜了

源码安装bochs

卸载之前安装的文件

​apt-get --purge remove bochs​

​apt-get autoremove bochs​

​dpkg -l |grep ^rc|awk '{print $2}' |sudo xargs dpkg -P​

​apt-get --purge remove bochs-x​

​apt-get autoremove bochs-x​

​dpkg -l |grep ^rc|awk '{print $2}' |sudo xargs dpkg -P​

我下载的是2.6.9版本的压缩包

​https://sourceforge.net/projects/bochs/files/bochs/2.6.9/bochs-2.6.9.tar.gz/download​

《操作系统真象还原》环境搭建_ubuntu_12

然后安装一系列的包

​apt-get install xorg-dev libgtk2.0-dev bison​

省掉config过程很多依赖编译报错

解压

​tar zxvf bochs-2.6.9.tar.gz​

《操作系统真象还原》环境搭建_docker_13

​cd bochs-2.6.9​

运行configure脚本,它会测试你的机器,C/C++编译器以及一些库,用来判断何种配置适合于你的机器。运行:

​./configure --enable-debugger --enable-disasm​

解压如果正常的话,会生成一个Makefile文件,运行

​make clean​

​make​

安装

​make install​

错误解决

1,出现

install: cannot stat './bochsdbg': No such file or directory
Makefile:429: recipe for target 'install_bin' failed
make: [install_bin] Error 1 (ignored)

《操作系统真象还原》环境搭建_ubuntu_14

将源文件中bochs的文件夹名称改为bochsdbg

《操作系统真象还原》环境搭建_ubuntu_15

2,出现

mkdir: cannot create directory ‘/usr/local/share/bochs/keymaps’: File exists
Makefile:445: recipe for target 'install_share' failed
make: [install_share] Error 1 (ignored)

《操作系统真象还原》环境搭建_javascript_16

应该是已经安装了一遍的原因,删除 ​​/usr/local/share/bochs​​ 文件夹

然后​​make install​

《操作系统真象还原》环境搭建_javascript_17

无报错

输入​​bochs​

出现错误:

bx_dbg_read_linear: physical memory read error (phy=0x000000000000, lin=0x00000000)

《操作系统真象还原》环境搭建_docker_18

查阅资料后解决方案为:将bochsrc文件中第10行

​vgaromimage: /usr/share/vgabios/vgabios.bin​​​改为 ​​vgaromimage: file=/usr/share/vgabios/vgabios.bin​

但是我没有bochsrc文件,看看这个文件好像是书中的​​bochsrc.disk​​​文件,也就是由安装目录下的样本文件​​bochs/share/doc/bochs/bochsrc-sample.txt​​重命名而来。

寻找一下该文件

​find / -name "*bochsrc-sample.txt"​

《操作系统真象还原》环境搭建_ubuntu_19

修改之后发现没有卵用,重新搜索:

Bochs is exiting with the following message:
[ ] .bochsrc:187: cpu directive malformed.

《操作系统真象还原》环境搭建_javascript_20

输入 ​​bochs -help cpu​

查看支持的CPU

Supported CPU models:

bx_generic
pentium
pentium_mmx
amd_k6_2_chomper
p2_klamath
p3_katmai
p4_willamette
core_duo_t2400_yonah
atom_n270

然后 ​​vi .bochsrc ​

大概在187行会找到cpu: model=

《操作系统真象还原》环境搭建_javascript_21

cpu: model= 后面的部分修改为以上支持的cpu models中的一个
(建议注释原来的而不是删除原来的)

例如:
cpu: model=bx_generic

《操作系统真象还原》环境搭建_javascript_22

保存退出
重新运行bochs

出现新错误:

Bochs is exiting with the following message:
[ ] .bochsrc:915: Bochs is not compiled with lowlevel sound support

《操作系统真象还原》环境搭建_ubuntu_23

继续修改 ​​.bochsrc​​ 文件

​vi .bochsrc​

大概在915行,注释掉文件中的sound: driver=default, waveout=/dev/dsp. wavein=, midiout=

《操作系统真象还原》环境搭建_docker_24

再次重新运行bochs

运行成功

《操作系统真象还原》环境搭建_javascript_25

选择 ​​6​​ 进行模拟后出现错误

MoTTY X11 proxy: Unsupported authorisation protocol

Event type: PANIC
Device: [GUI ]
Message: Cannot connect to X display

《操作系统真象还原》环境搭建_javascript_26

安装 ​​bochs-x​​,之前不应该卸载的

apt-get install bochs-x

《操作系统真象还原》环境搭建_docker_27

查找后发现该问题的主要原因是:

使用了终端 比如 xshell or putty 去连接 centos ,而以这种方式的连接 是只能够 传递字符,不能传送图像的。而bochs是有界面的,图像界面无法在git bash命令行下展示。所以启动一直报错。

给云服务器安装图形化界面

apt-get install xinit
apt-get install gdm3
apt-get install ubuntu-desktop
shutdown -r now (重启操作,不行服务器重启)
获取root权限
使用vnc方式登录。

不过好像我云服务器的空间安装到这一步的时候空间就不足了,只能放弃hhh,安装了图形化界面之后应该就能正常模拟运行了。

笔者换成虚拟机安装这些环境,从头再来。

虚拟机环境 VMware Ubuntu16iso

记得先更改Ubuntu源,不然下载太慢了

自带gcc

《操作系统真象还原》环境搭建_docker_28

安装nasm

《操作系统真象还原》环境搭建_javascript_29

在ubuntu图形化界面的火狐浏览器里面下载​​bochs​​安装包

跟之前一样解压安装,进行到 ​​make​​ 时出现错误

/usr/bin/ld: gui/libgui.a(x.o): undefined reference to symbol 'XSetForeground'

/usr/lib/x86_64-linux-gnu/libX11.so.6: error adding symbols: DSO missing from command line

collect2: error: ld returned 1 exit status

《操作系统真象还原》环境搭建_ubuntu_30

此时可以考虑在执行configure时添加参数​​LIBS='-lX11'​​,也就是说可以是这样的:

./configure --enable-debugger --enable-disasm --enable-readline LIBS='-lX11'

然后接着像之前那样安装

几经坎坷,终于又到了这里

《操作系统真象还原》环境搭建_docker_31

选择 ​​6​​ ,回车

《操作系统真象还原》环境搭建_ubuntu_32

成功出现模拟界面,安装完成~

参考链接:

​​https://blog.fundebug.com/2018/01/10/how-to-clean-docker-disk/​​

​​https://cloud.tencent.com/developer/article/1616590?from=information.detail.腾讯云ubuntu图形界面​​

​​https://www.jianshu.com/p/6b3df43932c3​​

​​https://cloud.tencent.com/developer/article/1616590?from=information.detail.腾讯云 ubuntu 图形界面​​



举报

相关推荐

0 条评论