操作系统-熟悉实验环境(1)
本文最后更新于:Wednesday, September 30th 2020, 8:09 pm
熟悉实验环境
1、x86模拟器Bochs1
Bochs is a highly portable open source IA-32 (x86) PC emulator written in C++, that runs on most popular platforms. It includes emulation of the Intel x86 CPU, common I/O devices, and a custom BIOS. Bochs can be compiled to emulate many different x86 CPUs, from early 386 to the most recent x86-64 Intel and AMD processors which may even not reached the market yet.
可以看到Boch可以模拟intel x86 CPU
在它模拟出的环境中可以运行 Linux、DOS 和各种版本的 Windows 等多种操作系统
2、操作系统Ubuntu
因为有些实验内容涉及到在自己改进的 Linux 0.11下,运行自己编的应用程序。被改进的功能都是高 版本 Linux 内核已经具有的,在其上确认自己编写的应用程序无误后,再用之测试自己改进的 Linux 0.11,可以更有信心些。
3、实验压缩包hit-oslab
文件结构:
1 | |
Image文件
我们在宿主操作系统也就是ubuntu上对Linux 0.11进行开发,修改和编译。
之后在Linux-0.11目录会生成一个
Image的文件。(编译后的目标文件)该文件包含引导和所以内核的二进制代码。
oslab 采用 bochs 模拟器加载这个 Image 文件,模拟执行 Linux 0.11,这样省却了重新启动计算机的麻烦。
bochs目录
bochs目录是与bochs相关的执行文件、数据文件和配置文件
run 脚本
run是 运行bochs的脚本命令运行后bochs会自动在他的
虚拟软驱——linux-0.11/Image
虚拟硬盘——hdc-0.11.img
在 0.11 下访问文件系统,访问的就是 hdc-0.11.img 文件内虚拟的文件系统。
退出bochs之前现存盘,运行sync命令hdc-0.11.img 文件
文件的格式是 Minix 文件系统的镜像。Linux 所有版本都支持这种格式的文件系统
所以可以在宿主系统上挂载该文件系统。达到宿主系统和Linux 0.11之间文件交换的效果
其中包含的文件有:
- Bash shell;
- 一些基本的 Linux 命令、工具,比如 cp、rm、mv、tar;
- vi 编辑器;
- gcc 1.4 编译器,可用来编译标准 C 程序;
- as86 和 ld86;
- Linux 0.11 的源代码,可在 0.11 下编译,然后覆盖现有的二进制内核。
编译
make all(make 命令会自动跳过未被修改的文件 )
如果重新编译没有效果可以试试删除中间文件: make clean && make all
运行
./run
4、调试
汇编级调试
./dbg-asmC语言调试
./dbg-c./rungdb(新开一个窗口)注意:启动的顺序不能交换,否则 gdb 无法连接。
5、文件交换
1
2
3
4
5
6
7
8
9
10
11
# 启动挂载脚本
$ cd ~/oslab
$ sudo ./mount-hdc
# 进入文件系统
$ cd ./mount-hdc/
# 读写完毕,卸载文件系统
$ cd ~/oslab
$ sudo umount hdc
1 | |
Reference
[1] 哈尔滨工业大学.操作系统
本博客所有文章除特别声明外,均采用 CC BY-SA 3.0协议 。转载请注明出处!