程序员的网络日志 程序员的网络日志
首页
  • 计算机科学导论
  • 数字电路
  • 计算机组成原理
  • C语言
  • 数据结构
  • 汇编语言
  • 操作系统
  • Linux
  • 编译原理
  • 计算机网络
  • 数据库
  • Java基础
  • JavaWeb
  • 笔记软件
  • Quicker
  • Qttabar
  • Wgesture
  • 浏览器与插件
  • 视频播放器
  • 待办清单
  • 终端软件
  • uTools
  • 番茄盒子
  • 网站日记
  • 赞赏支持
  • 关于本站
  • 如何搭建一个博客
  • 如何搭建一个邮箱
GitHub (opens new window)
首页
  • 计算机科学导论
  • 数字电路
  • 计算机组成原理
  • C语言
  • 数据结构
  • 汇编语言
  • 操作系统
  • Linux
  • 编译原理
  • 计算机网络
  • 数据库
  • Java基础
  • JavaWeb
  • 笔记软件
  • Quicker
  • Qttabar
  • Wgesture
  • 浏览器与插件
  • 视频播放器
  • 待办清单
  • 终端软件
  • uTools
  • 番茄盒子
  • 网站日记
  • 赞赏支持
  • 关于本站
  • 如何搭建一个博客
  • 如何搭建一个邮箱
GitHub (opens new window)
  • 计算机科学导论

  • 数字电路

  • 计算机组成原理

  • 数据结构

  • 操作系统

    • 我的操作系统学习笔记

    • 我的操作系统实验笔记

      • 搭建实验环境
        • 前言
        • 工具介绍
        • Ubuntu下实验环境搭建(推荐)
        • 调试操作系统
        • Windows下实验环境搭建(待完善,不推荐)
        • 参考
  • Linux

  • 编译原理

  • 计算机网络

  • 数据库

  • 计算机科学导论
  • 计算机基础
  • 操作系统
  • 我的操作系统实验笔记
2022-10-23
目录

搭建实验环境

# 0. 搭建实验环境

# 前言

原本老师的配套实验是在这里做的:操作系统原理与实践_Linux - 蓝桥云课 (opens new window)

这是一个网站,可以提供远程连接虚拟机给到用户操作。同时上面有很详细的实验手册。但有这样一个问题:如果想要保存自己的环境,是要收费的(完成学生认证后5折);且远程还是有一点不方便,因此我决定自己搭建一套环境。当然,在网站上做也是有好处的,可以在上面看到很多同学留下的笔记等,有问题也可以在上面提。

其实已经有实验手册了,发现自己白写了....:HIT-OSLAB-MANUAL (opens new window)

后续我会记录实验过程,供大家参考

‍

‍

‍

# 工具介绍

Bochs:发音同"Box",是一款开源,使用C++编写的,高度便携的 IA-32(X86)架构PC模拟器。简单来说,就是可以运行操作系统,并且方便调试

GCC:编译器,这里用来编译操作系统。Linux最初的版本就是由GCC编译的

GDB:调试器,GCC编译器的兄弟。类似汇编里的debug

‍

‍

# Ubuntu下实验环境搭建(推荐)

‍

# 准备操作系统

由于我的电脑是Windows,可以用VMWare或VirtualBox运行Ubuntu。我这里用Virtual Box,免费的。然后在VirtualBox下安装Ubuntu,可以参考VirtualBox虚拟机安装Ubuntu16_megfli的博客 (opens new window)。安装花费了2~3个小时

‍

我自己遇到的问题如下:

  1. 安装时黑屏时间过长:参考自己解决虚拟机Ubuntu开机黑屏 (opens new window),我尝试重启后正常了
  2. 安装时Ubuntu显示屏幕过小:参考关于VirtualBox安装Ubuntu时界面显示不全,没有下一步选项_qq_1193979453的博客 (opens new window)

安装完后,我们可以设置共享目录,方便Windows和虚拟机共享文件:新版本virtualbox Ubuntu16.04设置共享文件夹_Dwyane05的博客 (opens new window)

‍

# 安装运行操作系统需要的依赖

我们不必从头开始安装Bochs,GCC等,有很多热心的网友已经帮我们配置好了:在终端里运行以下命令即可

$ git clone https://github.com/Wangzhike/HIT-Linux-0.11.git
$ cd HIT-Linux-0.11/prepEnv/hit-oslab-qiuyu/
$ ./setup.sh

‍

然后我们就可以运行Linux0.11了:

cd ~/oslab
./run

‍

图片描述信息​

‍

‍

关于本项目,更多的可以参考作者的Github说明文档。

‍

‍

# 编译内核

在实验过程中,我们需修改操作系统的代码,然后重新编译一个新的操作系统镜像,并让Bochs运行,编译步骤如下:

$ cd ./linux-0.11/
$ make all

‍

‍

‍

以下说明来自实验楼:

make 命令会显示很多很多的信息,你可以尽量去看懂,也可以装作没看见。只要最后几行中没有 “error” 就说明编译成功。

make 命令会自动跳过未被修改的文件,链接时直接使用上次编译生成的目标文件,从而节约编译时间。但如果重新编译后,你的修改貌似没有生效,可以试试先 make clean​ ,再 make all​(或者一行命令:make clean && make all​。make clean​ 是删除上一次编译生成的所有中间文件和目标文件,确保是在全新的状态下编译整个工程。

‍

‍

‍

‍

# 调试操作系统

我们编写操作系统代码的时候,难免会遇到问题,此时调试能帮助我们分析问题:

‍

汇编语言级别的调试:

$ cd ~/oslab/

# 运行脚本前确定已经关闭刚刚运行的 Bochs
$ ./dbg-asm

以下说明来自实验楼:

汇编级调试的启动之后 Bochs 是黑屏,这是正常的。

可以用命令 help​ 来查看调试系统用的基本命令。更详细的信息请查阅 Bochs 使用手册。

图片描述​

按q可以退出调试

‍

‍

‍

‍

C语言级别的调试

先运行

$ cd ~/oslab
$ ./dbg-c

‍

再开一个终端,运行

$ cd ~/oslab
$ ./rungdb

‍

‍

以下说明来自实验楼

注意:启动的顺序不能交换,否则 gdb 无法连接。

出现下图所示的提示,才说明连接成功

图片描述​

注意:可能要等一段时间后,才能连接成功。

‍

‍

‍

# Windows下实验环境搭建(待完善,不推荐)

不推荐理由:有很多工具在Windows下不能运行,例如调试工具等,不太推荐。具体可以参考实验手册,也有详细的说明了。

如果你是用Windows,那么如果如果运行虚拟机,虚拟机里再运行Bochs的话,对电脑的配置比较高的。如果内存不够,那么运行虚拟机后就容易卡顿,并且虚拟机内存不够的话也容易卡顿。(内存高的话就不用担心卡顿,比如我是32G 台式机,给虚拟机分配8G内存后,总的CPU利用率也才71%,使用过程中基本没有卡顿)

如果自己电脑配置不高的同学,也可以通过云服务器的方式搭建实验环境。

‍

‍

安装Bochs:默认一路Next即可。安装完后会有两个对话框提示是否打开更新日志和介绍,关闭即可。

image​

‍

接下来打开复制以下文件到Bochs的安装目录(安装过程中有指定安装目录的↑, 其实就是除了文件Bochs-2.1.1.exe、README、rootimage-0.11,其他文件都复制过去)

bochsout.txt
bochsrc-fd.bxrc
bochsrc-hd.bxrc
bootimage-0.11
bootimage-0.11-fd
bootimage-0.11-hd
bootimage-0.12-fd
bootimage-0.12-hd
diskb.img
gcclib-1.40.taz
hdc-0.11.img

​

‍

接下来,直接双击bochsrc-hd.bxrc,就可以看到如画面,操作系统就被运行起来了

image​

​

‍

‍

‍

# 参考

mirrors / Wangzhike / HIT-Linux-0.11 · GitCode (opens new window)

操作系统原理与实践 - 熟悉实验环境 - 蓝桥云课 (opens new window)

Windows下用Bochs编译运行Linux-0.11_Demon的黑与白的博客-CSDN博客_bochs linux0.11 (opens new window)

介紹 | HIT-OSLAB-MANUAL (opens new window)

上次更新: 2022/10/23 11:52:34
从操作系统启动开始
Linux

← 从操作系统启动开始 Linux→

最近更新
01
从操作系统启动开始
10-23
02
学习操作系统之前
10-22
03
关于我
10-18
更多文章>
Theme by Vdoing | Copyright © -2022 粤ICP备2022067627号-1 粤公网安备 44011302003646号
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式