从01开始 从01开始
首页
  • 计算机科学导论
  • 数字电路
  • 计算机组成原理

    • 计算机组成原理-北大网课
  • 操作系统
  • Linux
  • Docker
  • 计算机网络
  • 计算机常识
  • Git
  • JavaSE
  • Java高级
  • JavaEE

    • Ant
    • Maven
    • Log4j
    • Junit
    • JDBC
    • XML-JSON
  • JavaWeb

    • 服务器软件
    • Servlet
  • Spring
  • 主流框架

    • Redis
    • Mybatis
    • Lucene
    • Elasticsearch
    • RabbitMQ
    • MyCat
    • Lombok
  • SpringMVC
  • SpringBoot
  • 学习网课的心得
  • 输入法
  • 节假日TodoList
  • 其他
  • 关于本站
  • 网站日记
  • 友人帐
  • 如何搭建一个博客
GitHub (opens new window)

peterjxl

人生如逆旅,我亦是行人
首页
  • 计算机科学导论
  • 数字电路
  • 计算机组成原理

    • 计算机组成原理-北大网课
  • 操作系统
  • Linux
  • Docker
  • 计算机网络
  • 计算机常识
  • Git
  • JavaSE
  • Java高级
  • JavaEE

    • Ant
    • Maven
    • Log4j
    • Junit
    • JDBC
    • XML-JSON
  • JavaWeb

    • 服务器软件
    • Servlet
  • Spring
  • 主流框架

    • Redis
    • Mybatis
    • Lucene
    • Elasticsearch
    • RabbitMQ
    • MyCat
    • Lombok
  • SpringMVC
  • SpringBoot
  • 学习网课的心得
  • 输入法
  • 节假日TodoList
  • 其他
  • 关于本站
  • 网站日记
  • 友人帐
  • 如何搭建一个博客
GitHub (opens new window)
  • 计算机历史

  • 数字电路

  • 计算机组成原理

  • 汇编语言

  • C语言

  • 数据结构

  • 操作系统

    • 我的操作系统学习笔记

    • 我的操作系统实验笔记

      • 搭建实验环境
        • 前言
        • 工具介绍
        • Ubuntu下实验环境搭建(推荐)
        • 调试操作系统
        • Windows下实验环境搭建(待完善,不推荐)
        • 参考
      • 操作系统的引导
      • 系统调用
    • 操作系统网课-王道考研

    • 操作系统
  • Linux

  • 计算机网络

  • Git

  • 数据库

  • 计算机小知识

  • 编译原理

  • 名人堂

  • 计算机基础
  • 操作系统
  • 我的操作系统实验笔记
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
1
2
3

‍

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

cd ~/oslab
./run
1
2

‍

图片描述信息​

‍

‍

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

‍

‍

# 编译内核

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

$ cd ./linux-0.11/
$ make all
1
2

‍

‍

‍

以下说明来自实验楼:

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

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

‍

‍

‍

‍

# 调试操作系统

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

‍

汇编语言级别的调试:

$ cd ~/oslab/

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

以下说明来自实验楼:

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

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

图片描述​

按q可以退出调试

‍

‍

‍

‍

C语言级别的调试

先运行

$ cd ~/oslab
$ ./dbg-c
1
2

‍

再开一个终端,运行

$ cd ~/oslab
$ ./rungdb
1
2

‍

‍

以下说明来自实验楼

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

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

图片描述​

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

‍

‍

‍

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

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

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

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

‍

‍

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

​​

‍

接下来打开复制以下文件到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
1
2
3
4
5
6
7
8
9
10
11

​

‍

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

​​

​

‍

‍

‍

# 参考

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)

在GitHub上编辑此页 (opens new window)
上次更新: 2023/4/23 09:32:45
用户级线程
操作系统的引导

← 用户级线程 操作系统的引导→

Theme by Vdoing | Copyright © 2022-2023 粤ICP备2022067627号-1 粤公网安备 44011302003646号
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式