《操作系统》by李治军 | 实验1 - 熟悉实验环境

        最近在学习李治军老师的操作系统课程,在进行正式实验前首先要搭建并熟悉实验环境,网上看了很多教程,成功搭建了实验环境,但对于实验流程还是云里雾里。所以这篇文章主要梳理了一下实验的大致思路(不含具体命令和代码,请事先安装好实验环境哦),希望能帮助理解接下来的实验。

【实验环境】

        蓝桥云课上有实验楼可以进行实验(现在可以免费延时),不过我是在自己的电脑上搭建的实验环境。

        我的电脑是 Windows 系统,其实是可以直接在 Windows 系统下搭建实验环境的,但是 Linux 系统下实验起来会方便一些。所以我通过 VMware 安装了一个 Linux 系统的虚拟机(推荐 Ubuntu ),然后再在这个 Ubuntu 系统上搭建实验环境。

        实验环境是工作在一个宿主操作系统之上,我这里就是 Ubuntu 系统。我们在宿主操作系统上进行对 Linux 0.11 源码的修改、开发以及编译,最后通过 bochs 运行新编译好的 Linux 0.11 。

一、实验工具介绍

1、Bochs

        Bochs是一个免费且开放源代码的 IA-32 (x86) 架构 PC 机模拟器,它可以模拟PC各种硬件的配置,包括I/O设备、内存、BIOS等等。在bochs模拟的环境中可以运行 Linux、DOS 、各种版本的 Windows 等多种操作系统,非常适合开发操作系统,其自带的 bochsdbg 调试器使得调试操作系统非常容易。

2、GNU

        我们常见的操作系统有 Windows、DOS、Linux、Unix、Mac OS等等,GNU也是一个操作系统,其内容软件完全以 GPL 方式发布。这个操作系统是 GNU 计划的主要目标,GNU 名称来自GNU's Not Unix!的递归缩写。GNU的设计类似Unix,是一个类Unix操作系统,但它不包含具著作权的Unix代码。

3、GCC

        GCC是GNU的编译器套件,全称——GNU Compiler Collection,是由GNU开发的编程语言编译器。GCC最早原名GNU C语言编译器——GNU C Compiler,因为它只能编译处理C语言。但GCC扩展很快,变得可处理C++,后来又扩展为能够支持更多编程语言,如 Fortran、Pascal、Objective-C、Java、Ada、Go 以及各类处理器架构上的汇编语言等。

4、GDB

        GDB全称——GNU symbolic debugger,是 Linux 下常用的程序调试器。GDB诞生于 GNU 计划(同时诞生的还有 GCC、Emacs 等)。GDB秉承了 Unix 类操作系统的一贯风格,采用纯命令行操作,类似 DOS 下的 debug 。

二、运行原始的 Linux 0.11

1、进入实验环境 oslab 。

  • bochs 目录下是与 bochs 相关的执行文件、数据文件和配置文件。
  • 第一列最后一个 run 脚本就是运行 bochs 的脚本命令。

(1)bochs 运行后会自动在它的虚拟软驱 A 和虚拟硬盘上各挂载一个镜像文件

         软驱(Floppy):挂载 linux-0.11 文件夹下的 Image 文件

         硬盘:挂载 oslab 文件夹下的 hdc-0.11.img

(2)bochs 的配置文件中的设置是从软驱 A 启动,所以 Linux 0.11 会被自动加载。

(3)而 Linux 0.11 会驱动硬盘,并 mount 硬盘上的文件系统,也就是将 hdc-0.11.img 内镜像的文件系统挂载到 0.11 系统内的根目录 —— /。在 0.11 下访问文件系统,访问的就是 hdc-0.11.img 文件内虚拟的文件系统。

2、打开终端,进入 linux-0.11 目录,并执行 make 命令:编译链接 linux-0.11 目录下的所有文件,最后在 linux-0.11 目录下生成一个软盘镜像文件—— Image,这就是我们需要的目标文件。

3、进入 oslab 目录,执行 run 脚本运行 bochs ,bochs 从软驱A启动,而软驱A又挂载了第 2 步生成的 Image 文件,所以就能在 Bochs 中运行最新编译好的 Linux 0.11 内核:

三、总结

简而言之,实验的大致思路如下:

1. 通过 bochs 模拟一台 PC,可以直接理解成一台虚拟机。

2. 对 Linux 0.11 的代码进行修改或开发。

3. 通过编译器对代码进行编译和链接,得到最终的目标文件: Image 文件。

4. 通过 bochs 加载这个 Image 文件,就模拟了PC执行 Linux 0.11 的效果。

  • 可以跟着老师蓝桥云实验课程的步骤做,思路会清晰很多:

操作系统原理与实践_Linux - 蓝桥云课

  • 实验前可以先了解一下 Linux 的基本操作:

Linux 基础入门_Linux - 蓝桥云课

猜你喜欢

转载自blog.csdn.net/Amentos/article/details/129162728