# osenv **Repository Path**: houhuawei23/osenv ## Basic Information - **Project Name**: osenv - **Description**: osenv for nudt - **Primary Language**: C - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2023-09-25 - **Last Updated**: 2023-10-21 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## Linux-0.11 实验环境快速配置 ### OS nudt 2023 Fall #### 1 简介 该安装包用于快速配置 linux-0.11 操作系统实验环境。 `linux-0.11` 内核由林纳斯(Linus)等人编写于上世纪九十年代,其代码基于 `ia32` 指令集架构。 目前,大家手中的电脑都是64位处理器了,想要成功编译`linux-0.11`内核源码,就需要配置好相应的编译环境。 为了无需实体机就能运行我们编译好的内核,就需要将其运行在虚拟机软件上,本实验采用的是 `bochs`。 本安装包的作用就是帮助同学们快速配置上述内容,从而能在自己电脑上调试`linux-0.11`内核。 #### 2 系统配置要求 - `Ubuntu 18.04 LST,20.04 LST,22.04 LST` 都进行了适配,且测试通过 - 如果你用的是 windows,可以安装 Vmware 软件,可安装上述 Ubuntu 系统,然后执行本安装包。 - 如果你用的是 windows,强烈建议你安装 `WSL2`,并安装上述 Ubutnu 系统。 - WSL2 与 Vmware 相比,其优势在于更加快速、高效,使用的体验感更流畅。 - WSL2 比 Vmware更轻量级,也不需要安装较大的桌面版Ubuntu。 - WSL2 能够发挥本机电脑 60% - 70% 的性能。 #### 3 安装包文件结构 - `./bochs-2.7.tar.gz`: bochs 虚拟机软件 - `./linux-0.11/` - `src-x`: x 版本的内核源码 - `./run-bochs.sh`: 直接在 `bochs` 上运行编译好的内核镜像 - `./run-bochs-dbg.sh`: 以 `bochs-dbg` 模式运行 - `./run-bochs-gdb.sh`: 以 `bochs-gdb` 模式运行 - `./run-gdb.sh`: 打开 `gdb`,对 `bochs-gdb` 模式运行下的内核进行调试 - `./mount-hdc.sh`: 挂载硬盘镜像文件 `rootimage-0.11` - `./osenv.sh`: linux-0.11 os 实验环境配置脚本,其大致流程为: - 确认系统版本,确定安装路径 - 是否更改 `apt source`(官方源网速较慢,更换为国内镜像源) - 更新软件目录,更新软件:`apt update && apt upgrade` - 安装必要的库文件,以便能编译 `32`位的内核源码 - 安装 `bochs` 虚拟机软件 - `cd` 到`./linux-0.11`,编译内核 - `./run-bochs.sh` 运行编译好的内核 - 如果一切正常,则可以看到 `bochs` 运行界面,以及终端打印的 `hello os!` 字符画 #### 4 安装流程 下载安装包(以zip格式打包) ```bash # 处于 os 主目录 # 解压安装包压缩包 (请选用与压缩包匹配的解压命令) $ unzip osenv.zip # 运行安装包脚本文件 # 不再在脚本内重定向 stdout 和 stderr # 如有报错,则会终止脚本执行,请自行分析报错信息并解决 # 或在仓库中提交issue # 将 stdout 保存在 osenv.out $ sudo ./osenv.sh | tee osenv.out # 安装结束后会编译并运行 ./linux-0.11/src 中的内核镜像 # 可以看到 `bochs` 运行界面,以及终端打印的 `hello os!` 字符画 ``` #### 5 命令示例 5.1 编译 + 运行 ```bash # 处于 linux-0.11 目录,以编译 src-1.2 中的源码为例 # 编译 src-1.2 中的内核源码,生成内核镜像文件 Image $ make src-1.2 # 在 bochs 上直接运行 src-1.2 的内核镜像 Image $ ./run-bochs.sh src-1.2 ``` 5.2 bochs-dbg 调试 ```bash # bochs-dbg 调试 src-1.2 内核镜像 $ ./run-bochs-dbg.sh src-1.2 ``` 5.3 bochs-gdb + gdb 调试 ```bash # 在一个终端中运行 bochs-gdb $ ./run-bochs-gdb.sh src-1.2 # 新建一个终端,运行 gdb,对 bochs-gdb 中运行的内核进行调试 $ ./run-gdb.sh ``` 5.4 编译命令 ```bash # 清除在 src-1.2 中编译生成的所有文件 $ make clean-src-1.2 # 默认编译 src 内核源码 $ make # 清除所有 src 的编译结果 $ make clean-all ``` 5.5 挂载硬盘镜像 ```bash # 确保主机操作系统 linux 内核开启了对 minix 文件系统的支持 # 将 ./images/rootimage-0.11 硬盘镜像以 minix 格式挂载到 ./hdc 目录下 $ ./mount-hdc.sh # 进入 ./hdc 目录,查看目录内容 $ cd ./hdc $ ls # 取消挂载 $ sudo umount ./hdc ```