返回介绍

使用方法

发布于 2025-02-25 23:29:31 字数 2656 浏览 0 评论 0 收藏 0

  • 准备活动

$ cd ~/oslab

把当前目录切换到 oslab 下,用 pwd 命令确认,用“ls -l”列目录内容。本实验的所有内容都在本目录或其下级目录内完成。

  • 编译内核

“编译内核”比“编写内核”要简单得多。首先要进入 linux-0.11 目录,然后执行:

$ make all

因为“all”是最常用的参数,所以可以省略,只用“make”,效果一样。

在多处理器的系统上,可以用-j 参数进行并行编译,加快速度。例如双 CPU 的系统可以:

$ make -j 2

make 命令会显示很多很多很多的信息,你可以尽量去看懂,也可以装作没看见。只要最后几行中没有“error”就说明编译成功。最后生成的目标文件是一个软盘镜像文件——linux-0.11/Image。如果将此镜像文件写到一张 1.44MB 的软盘上,就可以启动一台真正的计算机。

linux-0.11 目录下是全部的源代码,很多实验内容都是要靠修改这些代码来完成。修改后需要重新编译内核,还是执行命令:

$ make all

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

  • 运行和调试

在 Bochs 中运行最新编译好的内核很简单,在 oslab 目录下执行:

$ ./run

如果出现 Bochs 的窗口,里面显示 linux 的引导过程,最后停止在“[/usr/root/]#”,表示运行成功,如下图所示。

图片描述信息 图 1 用 Bochs 启动 Linux 0.11 以后的样子

内核调试分为两种模式:汇编级调试和 C 语言级调试。

汇编级调试需要执行命令:

$ ./dbg-asm

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

C 语言级调试稍微复杂一些。首先执行如下命令:

$ ./dbg-c

然后再打开一个终端窗口,进入 oslab 目录后,执行:

$ ./rungdb

新终端窗口中运行的是 GDB 调试器。关于 gdb 调试器请查阅 GDB 使用手册。

  • Ubuntu 和 Linux 0.11 之间的文件交换

oslab 下的 hdc-0.11-new.img 是 0.11 内核启动后的根文件系统镜像文件,相当于在 bochs 虚拟机里装载的硬盘。在 Ubuntu 上访问其内容的方法是( 大家使用 sudo 时,password 是 shiyanlou ):

$ sudo ./mount-hdc

之后,hdc 目录下就是和 0.11 内核一模一样的文件系统了,可以读写任何文件(可能有些文件要用 sudo 才能访问)。读写完毕,不要忘了卸载这个文件系统:

$ sudo umount hdc

经过 sudo ./mount-hdc 这样处理以后,我们可以在 Ubuntu 的 hdc 目录下创建一个 xxx.c 文件,然后利用 Ubuntu 上的编辑工具(如 gedit 等)实现对 xxx.c 文件的编辑工作,在编辑保存以后。执行 sudo umount hdc 后,再进入 Linux 0.11(即 run 启动 bochs 以后)就会看到这个 xxx.c(即如下图所示),这样就避免了在 Linux 0.11 上进行编辑 xxx.c 的麻烦,因为 Linux 0.11 作为一个很小的操作系统,其上的编辑工具只有 vi,使用起来非常不便。

图片描述信息 图 2 用 Ubuntu 和 Linux 0.11 完成文件交换以后再启动 Linux 0.11 以后

另外在 Linux 0.11 上产生的文件,如后面实验中产生的 process.log 文件,可以按这种方式”拿到“Ubuntu 下用 python 程序进行处理,当然这个 python 程序在 Linux 0.11 上显然是不好使的,因为 Linux 0.11 上搭建不了 python 解释环境。

注意 1:不要在 0.11 内核运行的时候 mount 镜像文件,否则可能会损坏文件系统。同理,也不要在已经 mount 的时候运行 0.11 内核。

注意 2:在关闭 Bochs 之前,需要先在 0.11 的命令行运行“sync”,确保所有缓存数据都存盘后,再关闭 Bochs。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文