专栏导航
上一篇:第1章:在本机系统中安装 VirtualBox 虚拟机
回到目录
下一篇:第1章:开发环境搭建,在 Windows 中安装 Bochs
本节前言
对于本节所讲解的知识,有可能,你会需要时不时地参考本专栏的其它文章。真的遇到了需要参考之前的文章的知识点,请你自行查阅。
我呢,也会提到一部分的参考课节。但是呢,你不应该依赖于我的主动提及。最好呢,你自己能够多去了解和查看本专栏目录。
另外呢,本专栏是一个整体,是用来系统化地讲解 Linux 0.12 内核的一套教程。所以呢,也需要你在学习本节课程的时候,注意专栏的体系完整性。
比如软件安装,我们需要在整个专栏中,安装一套软件,那你如果是为了学习 Linux 0.12 内核,那么,你就需要跟随着本教程,安装好一整套软件,而不可以孤立地看着某个课节。
比如说,我们的专栏中,会讲解 Bochs 模拟器 的安装。这个软件的安装,就需要在我们专栏中所指定的乌班图 26.04.1 版本里面进行。脱离了这个系统版本,你在其它的版本的乌班图里面,或者是在其它的 Linux 发行版里面来安装,那么,你可能会安装不上。
所以,请大家在学习本专栏的课节的时候,务必要注意本专栏的体系完整性,注意查看本专栏的目录。
我们来查看一下我们当前软件安装任务进度。
- VMware 虚拟机,已完成
- VirtualBox 虚拟机,已完成
- 乌班图操作系统,已完成
- Bochs 模拟器,已完成
- QEMU 模拟器,已完成
- GCC,已完成
- G++,已完成
- nasm 汇编器,已完成
- make,已完成
- vim 编辑器,已完成
- Pluma 文本编辑器,已完成
- Visual Studio Code,已完成
到了这里,学习本专栏的知识,所需要的开发环境,已经大致备齐。
当初,在本专栏的开篇语里面,我们就说过,为了防止部分同学开发环境安装不上,我们特地将已配置好开发环境的一个乌班图系统,给准备好,并提供给大家。
而将这个虚拟机乌班图系统提供给大家,并讲解它的基本用法,便是我们本节课的内容了。
本节内容会很长。
我们开始。
一. 注意事项
虽然我们提供了这个虚拟机乌班图系统,但是,你想要在你的虚拟机里面成功导入它,也需要一点条件。
我们这里的虚拟机乌班图系统,它得是在 vmware 虚拟机里面来导入。如果你想要在 virtualbox 虚拟机里面导入,你是不会成功的。
另外呢,我们所需要的 vmware 虚拟机,它的版本,得是大于或等于下述课节中所安装的 vmware 版本。
参考课节:第1章:开发环境搭建,安装 VMware 虚拟机
这就是注意事项了。
二. 下载本专栏提供的乌班图虚拟机系统
首先呢,我还是要将我的网盘链接提供给大家。
这其实是我多年前就已经准备好的一个网盘链接。其用途,就是用来分享我的一些个课件。大家可以将这个链接保存下来。
链接:百度网盘 请输入提取码
提取码:yhql –来自百度网盘超级会员V4的分享
进入共享文件夹【水饺共享包】以后,找到下述的文件夹。
图1
进入红色框线所示的【操作系统】文件夹,然后找到下图所示的东西。
图2
进入图2 的红色框线所示的【虚拟机系统】文件夹,结果如下图所示。
图3
图3 的红色框线所示的文件夹,就是本专栏所提供的乌班图虚拟机系统了。
我没有用红色框线标出的两个虚拟机系统,你要是喜欢的话,你也可以把它保存到你的网盘。
关于下载位置,最好呢,你的下载位置与我的一致。
我是在 D 盘里面,新建了一个【VMOS】文件夹,然后呢,将红色框线所示的虚拟机系统文件夹,整个地下载到【VMOS】文件夹里面。
如果,你的下载位置与我的一致,那么,接下来,在将这个虚拟机系统导入到你自己的 vmware 的时候,你会略微省点力气。
不过呢,我们也难以保证说,人谁都不会出错。也许,有人就没有注意这一条,把我们提供的虚拟机系统,给下载到了别的位置上。
所以,接下来,我们会在下一分节,假定大家的下载位置,与我的不一致,然后我来教大家,如何将我们所提供的虚拟机系统,导入到你的 vmware 里面。
注意,即使你的下载路径与我的不一致,也要确保,下载到的路径中,不要含有中文与空格。
这个虚拟机系统,有 13 个 G 多一些的大小,所以,最好你开启百度网盘会员来下载。否则,下载时间会很长的。
三. 导入本专栏的乌班图虚拟机系统
我们假定,你把我们提供的虚拟机乌班图系统,下载到了与我推荐的路径不一致的地方,我们来看看,要如何来导入。
在我这里,我是将这个虚拟机系统,导入到了【D:\\doc】路径里面,如下图所示。
图4
接下来,我们一起 vmware 打开虚拟机,并定位到下图所示的界面。
图5
注意,必须是定位到 Home 选项卡,你才能来到图5 所示的界面。
然后呢,在图5 所示的界面里面,在三个灰色矩形区域中,中间的那个灰色矩形区域,它带有【Open a Virtual Machine】的字样,请点击它,结果如下图所示。
图6
在图6 所示的【打开】对话框里面,浏览到你将虚拟机乌班图系统所下载到的文件夹,并进入【Linux_Teach】文件夹里面,如下图所示。
图7
在图7 的上下两个红色框线里面,上面的框线,是要浏览到的路径。
假定,你将乌班图虚拟机系统下载到了【D:\\doc】里面,那么,你要浏览到的文件夹,便是【D:\\doc\\Linux_Teach】。
假定,你将乌班图虚拟机系统下载到了【D:\\VmwareSystem】里面,那么,你要浏览到的文件夹,便是【D:\\VmwareSystem\\Linux_Teach】。
假定,你将乌班图虚拟机系统下载到了【D:\\Happy\\Cat】里面,那么,你要浏览到的文件夹,便是【D:\\Happy\\Cat\\Linux_Teach】。
如果浏览的位置正确的话,那么,路径中最右边的文件夹,会是【Linux_Teach】,且其中有图7 的下边的红色框线所示的【Linux_Teach.vmx】文件。
点击选中【Linux_Teach.vmx】文件,然后在图7 所示的对话框中点击右下方的【打开】按钮,结果如下图所示。
图8
在图8 中,下方的红色框线所示的地方,是 Description 区域,它下面是一个用户可以自行设置的描述文本。我们在这个描述文本中,介绍了我们的虚拟机乌班图系统的用户名和登录密码。
上方的红色框线,是虚拟机的启动按钮,点击它,结果如下图所示。
图9
出现图9 所示的对话框,是因为,vmware 找不到本专栏在安装此虚拟机时,所设置的虚拟磁盘文件的位置了。接下来,我们点击【Browse…】按钮,结果如下图所示。
图10
在图10 这个对话框中,我们需要浏览到,与图7 步骤相同的位置。
假定,你将乌班图虚拟机系统下载到了【D:\\doc】里面,那么,你要浏览到的文件夹,便是【D:\\doc\\Linux_Teach】。
假定,你将乌班图虚拟机系统下载到了【D:\\VmwareSystem】里面,那么,你要浏览到的文件夹,便是【D:\\VmwareSystem\\Linux_Teach】。
假定,你将乌班图虚拟机系统下载到了【D:\\Happy\\Cat】里面,那么,你要浏览到的文件夹,便是【D:\\Happy\\Cat\\Linux_Teach】。
如果浏览的位置正确的话,那么,路径中最右边的文件夹,会是【Linux_Teach】,且其中会有【Linux_Teach.vmdk】文件。
点击选中【Linux_Teach.vmdk】文件,然后点击【打开】按钮,结果如下图所示。
图11
在图11 所示的对话框中,最下边的一行文字已经说了,【If you dong't know, answer "I Copied it"】,它的意思是,【如果你不知道,那就回答 “我复制了它”】。所以呢,在图11 所示的对话框中,我们点击红色框线所示的【I Copied it】按钮,结果如下图所示。
然后虚拟机就会开始执行导入和开机工作了。
完事儿之后,会来到下图所示的登录界面。
图12
密码,我们已经在 Description 中说了,是【123456】。
登录上去以后,结果如下图所示。
图13
在图13 里面,左侧的 Dock 中,有 Visual Studio Code 程序图标,但没有 Pluma 图标。实际上,这个软件,我们在这个系统中已经安装了,只是没有将程序图标固定在左侧的 Dock 里面而已。
将 Pluma 的程序图标固定在桌面左侧的 Dock 的工作,就请大家自行完成吧。
本分节的任务,就算是结束了。
四. 用 QEMU 来运行 music-study 内核
我们依次双击进入【主目录】->【D】->【music-study】文件夹,结果如下图所示。
图14
在图14 里面,有四个文件夹。每一个文件夹里面,都是一个独立的内核。
我们双击进入【music-16bit-stereo】文件夹里面,结果如下图所示。
图15
图15 所示的文件夹里面,所包含的内核,是一个包含着 SoundBlaster 声卡驱动程序的内核。其中,仅支持播放 16 位立体声音乐,并且仅仅是在内核刚刚运行时,自动加载一个我们已经固定写好了的音乐数据到内存中,然后去播放这个音乐。
所以,这实际上只是一个实验性的内核,仅仅是我在学习过程中,为了学习 SoundBlaster 声卡驱动程序,所编写的一个测试性的音乐内核。这个内核,它对我来讲,主要的价值就在于包含了 SoundBlaster 声卡驱动程序,在于它能够播放 16 位立体声音乐。
大概是在 2023 年的时候,我去复习李忠先生的《X86 汇编语言,从实模式到保护模式》。这次的学习,我除了学习书中内容以外,还学习了配套资料中的 SoundBlaster 声卡驱动一章。
李忠先生的配套资料中,仅仅是播放了一小段音乐,是他的还不会说话的小女儿的笑声。在编写程序时,用的是 NASM 汇编语言。
我呢,学完了配套资料中的程序之后,尝试着去阅读配套资料中的 SoundBlaster 声卡的硬件手册。里面全是英文资料。我英文一般,就用网易有道词典翻译了这个英文硬件手册,然后将翻译的结果打印了下来。
大致地学习了其中的一些个内容以后,我尝试着去编写 8 位立体声 SoundBlaster 声卡驱动,并且目标是播放一个完整的音乐。
在 2023 年,这个目标,我是完成了的。
完成了以后,后来,我就想着去尝试着编写驱动,让 SoundBlaster 声卡来播放 16 位立体声音乐。结果,没成功。当时,我想着,可能还是我基础不足吧。我打算,先将 16 位立体声驱动程序给搁置下来。啥时候,等我学完了 Linux 1.0 内核以后,再来琢磨这个任务。
结果呢,到现在,我也只是在学习着 Linux 0.95 版内核。学完了 Linux 0.95 版内核以后,我还要去看 0.96 版内核,0.99 版内核。最后,才是去看 1.0 版内核。
不过呢,就在 2026 年,也就是今年,在 8 月 15 号左右,我由于刚刚接触 AI 不久,就尝试着,用 AI 来帮我调试代码。结果呢,在 AI 的帮助之下,我呢,借着一点蒙选择题的运气,去尝试着调试代码,然后就把 16 位立体声 SoundBlaster 声卡驱动程序给调试通过了,成功地播放了音乐。
借着这股劲,我也把 16 位单声道驱动给调试好了。然后呢,我也把仅仅适用于乌班图18.04.4 和 18.04.2 的 QEMU 启动脚本,给修改成了可以在乌班图 26.04 里面运行的启动脚本了。
在图15 里面,有一个音乐文件,【test01.wav】,这个音乐文件,就是音乐内核中所播放的文件。大家双击这个音乐文件,就可以用乌班图里面的播放器来播放它了。
接下来,我们来演示一下,如何用 QEMU 来播放内核中的音乐。
我们在图15 中,双击进入【Lab】文件夹里面,然后在其中打开一个终端界面,并调整为如下图所示的纯净状态。
图16
然后呢,我们在图16 所示的终端界面里面,输入【make】,然后回车执行。
然后呢,会弹出来一个 QEMU 监视器。这个监视器,会在启动后打印一些文本,并播放音乐。
关于播放音乐的部分,我录制了一段视频,如下面的视频所示。
————————————————————————
16位立体声音乐内核演示
————————————————————————
播放完了音乐以后,会显示下述的东西。
图17
其中,最后两行文本,是我的一点感想。
也作为我送给大家的话语吧。
接下来呢,图17 所示的 QEMU 监视器,就可以关掉了,点击右上角的叉号,就可以关掉它。然后呢,用来启动 QEMU 的终端界面,也就是图16 所示的终端,我们也可以把它给关掉了。
需要注意的一点是,如果呢,你用鼠标点击了 QEMU 的监视器,也就是黑窗口的区域,那么,鼠标会进入乌班图系统中的 QEMU 监视器里面。QEMU 也是一个虚拟机。结果呢,你的这么一点击,你就会进入乌班图虚拟机系统中的 QEMU 虚拟机里面了。
你进入了二层虚拟机,好玩不?
进入以后呢,你可能需要返回乌班图里面,怎么做呢?
按下【Ctrl + Alt + G】快捷键,就可以从 QEMU 返回到乌班图里面了。
我们借着讲。
我们再次将图14 给贴在下面。
图14 副本
图14 的四个文件夹中,每个文件夹里面是一个独立的音乐内核,都包含着一种 SoundBlaster 声卡驱动程序。
文件夹名称带有【8bit】的,表明这个内核中含有 8 位声卡驱动。带有【16bit】字样的,表明这个内核中含有 16 位声卡驱动。
文件夹名称带有【mono】的,表明这个内核中含有单声道声卡驱动。带有【stereo】的,表明这个内核中含有立体声声卡驱动。
在图14 中,我们为大家准备了 8 位单声道音乐内核、8 位立体声音乐内核,和两个 16 位立体声音乐内核。
至于 16 位单声道音乐内核,我自己这里,其实是有准备的。只不过呢,它在我们提供的乌班图虚拟机系统里面,播放出来只是一个嘈杂的噪音,所以,我把它给删掉了。
不过,我可以在这里,在我的 Windows 系统里面,给大家演示一下它的效果。
——————————————————————
16位单声道音乐内核演示
——————————————————————
在图14 的四个文件夹里面,每一个文件夹中的内核,你都可以按照类似于我们所介绍的方法,进入某个内核所在文件夹里的【Lab】文件夹,然后在其中打开一个终端,然后输入【make】命令回车执行,就可以播放音乐了。
那么,在这里呢,播放音乐内核的演示过程,我就讲完了。
我们继续下一个话题。
五. 用 QEMU 来运行 linux-0.12-study 内核
我们依次前往【主目录】->【D】->【linux-0.12-study】,结果如下图所示。
图18
图18 所示的文件夹,就是 Linux-0.12-study 内核了,是我改编 Linux 0.12 内核,而形成的东西。
我们的专栏,应该会参考其中的许多的内容。但是呢,我不是直接给大家讲这个内核。因为,这个内核,它只是我用于个人学习的一个成果。里面呢,缺乏代码注释啥的。
我们在本专栏里面,会领着大家,一起呢,一点一点地,来编译 Linux 0.12 内核。最终呢,所形成的版本,不见得会比 Linux-0.12-study 好,但是呢,我们还是会格外地来写代码,去编译内核。告诉大家,我们是怎么来编译的,是怎么来修改代码和添加代码的,又是如何来添加一些个功能模块的。
接下来呢,在图18 里面,我们双击进入【Lab】文件夹,然后呢,打开一个终端界面,并调整位下图所示的纯净状态。
图19
然后呢,我们在图19 所示的终端里面,输入【make】,然后回车执行,结果呢,会弹出来一个 QEMU 监视器,如下图所示。
图20
接下来呢,你可以用鼠标点击 QEMU 的黑窗口区域,也就是 QEMU 的监视器部分,让鼠标进入其中。也可以不点击监视器区域,而是点击图20 所示窗口的标题栏,让 QEMU 的界面处于活跃状态和接收键盘输入,也行。
这两种方法,都可以让 QEMU 接收键盘输入。请大家先来做这件事。
然后呢,我们还得是提醒大家,如果你想要让鼠标指针从 QEMU 监视器里面回到乌班图里面,你需要按下【Ctrl + Alt + G】快捷键,就可以了。
接下来呢,我们往 QEMU 里面输入东西。首先呢,我们来输入【time】,然后按回车键,结果如下图所示。
图21
看看吧,程序它执行了。注意,里面显示的时间呢,不是北京时间,而是格林威治时间。
在世界地理上,有着时区的观念。格林威治,大致处在经度 0 度左右的时区,处于 0 号时区。北京呢,处于时区上的东八区。结果呢,北京时间减去 8 小时,才是格林威治时间。反过来呢,格林威治时间,加上 8 个小时,是北京时间。
也就是说,图21 里面所示的 14 点 24,实际上是北京时间 22 点 24,也就是我演示的时候,所处的时间。
然后呢,我们再输入【system】,然后按回车,结果如下图所示。
图22
然后呢,大家可能觉得,这个屏幕已经差不多要满了。所以呢,接下来,我们尝试着清理屏幕。
接下来呢,我们可以输入【cls】,也可以输入【clear】,然后按回车键,结果如下图所示。
图23
看吧,实现了清屏,是吧?
在这个内核里面,我们还实现了其它的一些个命令。
比如说,我们实现了【cd】命令、【pwd】命令、【reboot】、【ls】、【dir】、【mkdir】和【rmdir】命令。其中,【reboot】命令,是重启命令。你在乌班图系统里,也可以使用【reboot】命令来重启系统的。
不过呢,在这里,我们不打算来演示它们。想要自己玩的话,你自己来玩吧。
玩够了以后呢,我们来关闭图23 所示的 QEMU 界面。
但是呢,图19 所在的终端,我们先不要关闭它,留着它。
六. 用 Bochs 来运行 linux-0.12-study 内核
原来的图19 所示的终端,此时如下图所示。
图24
我们在图24 所示的终端中,输入【bochs】,然后回车执行,结果如下图所示。
图25
图25 里面,带有黑窗口的界面,它是 Bochs 模拟器的监视器。
所谓的监视器,就是说,它呢,此时就相当于模拟的电脑显示器,是一个模拟的电脑屏幕。
图25 里面的另一个界面,它里面有各种文本显示,它跟图24 所示的终端,是一个东西。只不过呢,此时,在左下角,有着【<bochs:1>】字样,这个呢,此时这个终端,是处在 bochs 模拟器的命令行的状态之中。
我们点击一下 bochs 命令行界面所在的窗口,以便让 bochs 命令行所在的窗口界面处于活跃状态和接收键盘输入。
然后呢,我们在这个 bochs 命令行环境中,输入【continue】命令,或者呢,你就只输入【c】,英文字母 C 的小写,【continue】的首字母,就可以了。
然后呢,按下回车键,结果呢,bochs 模拟器就会运行起来了,如下图所示。
图26
在图26 里面,bochs 监视器,同样是来到了 QEMU 监视器当初所处的环境里。
大家可以点击 bochs 模拟器的监视器所在的界面,来让它处于活跃状态和能够接收键盘输入。
在这个界面里面,大家同样可以输入【time】、【system】、【cls】、【clear】、【cd】命令、【pwd】命令、【reboot】、【ls】、【dir】、【mkdir】和【rmdir】命令。
对于 bochs 模拟器的监视器,大家可以放心地用鼠标来点击它,鼠标指针不会进入其中的。
但是呢,如果你不小心点击了下述的东西。
图27
点击了图27 的红色框线所示的鼠标禁用图标以后,鼠标输入将变为可用。鼠标输入可用以后,你点击了 bochs 模拟器的黑窗口部分,也就是监视器部分,接下来呢,鼠标指针可能就真的进去了。接下来,怎么出来,也就成了一个难题了。
万一进去了,咋办?
我们只好按下【Ctrl + Alt】快捷键,让鼠标指针从乌班图系统中回到你的本机系统,然后点击乌班图系统在 vmware 虚拟机中的选项卡中的关闭符号,如下图所示。
图28
点击了图28 所示的叉号以后,出现下述界面。
图29
在这个界面中,我们点击【Power Off】按钮,强制关闭乌班图系统,然后重启启动。
这就是不小心点击了 bochs 模拟器界面的鼠标禁用按钮的结果,一旦点了,那就只能回到本机,对乌班图系统强制关闭,然后重启。
所以,对于 bochs 模拟器,不要点那个鼠标禁用按钮。
我们重启系统以后,重新来到【主目录】->【D】->【linux-0.12-study】->【Lab】里面,此时的文件夹环境如下图所示。
图30
我们需要先删除它,然后才能正常地启动 bochs 模拟器。假如此时不删除它,而是直接在此处打开终端并调整到下图所示的纯净状态。
图31
然后呢,我们在图31 里面输入【bochs】然后回车执行,结果呢,会弹出下图所示的东西。
图32
出现了这个警告界面。【Panic】,是【惊慌】的意思。Linux 内核中,有一个函数,叫做【panic】,就是用来进行各种警告的。
出现了图32 所示的界面,我们需要点击红色框线所示的【Quit】按钮,然后呢,bochs 模拟器就关闭了,如下图所示。
图33
然后呢,我们在图33 里面,重新输入【bochs】并回车执行,这回呢,就可以正常启动了,结果如下图所示。
图34
这回呢,我们依然是说,先来点击一下右侧的、充满着各种文本的 bochs 命令行所在的窗口,以便让 bochs 命令行界面所在的窗口处于活跃状态和能够接收键盘输入。
然后呢,我们在 bochs 命令行里面,输入【c】或者【continue】或者【cont】,然后回车执行,然后 bochs 模拟器就会再次启动。结果如下图所示。
图35
我们点击一下 bochs 模拟器所在的界面,让 bochs 模拟器的监视器处于活跃状态和能够接收键盘输入。接下来呢,我们找到下述的位置。
图36
在图36 的右上角,红色框线所示的位置,那个按钮,就是 bochs 监视器的关闭按钮。我们点击它,结果呢,bochs 监视器所在的界面就会关闭了,结果如下图所示。
图37
在图37 中,红色框线给出了 bochs 监视器的退出消息。
从图37 最下边的命令行提示文字来看,此时,没有【<bochs:[某个数字]>】的字样,因此,此时,不是处在 bochs 命令行中,而是处在乌班图的普通终端环境之中。
也就是,在 bochs 所模拟的内核正常运行的情况下,我们点击了监视器所在界面的关闭按钮以后,bochs 监视器所在界面与 bochs 命令行均会退出,bochs 监视器界面消失,而 bochs 命令行所在界面会重新回到普通的命令行的状态。
接下来,我们关闭图37 所在的终端。
我们继续下一话题。
七. 用 QEMU 来运行一个带有 GUI 界面的内核
我们依次进入【主目录】->【D】->【day30-modify】->【ver19】文件夹,如下图所示。
图38
这个文件夹里面的内容,是我跟着日本程序员作家川合秀实先生,学习他的《30天自制操作系统》教材,来学习的时候,尝试着将他的内核,予以改编的时候,所形成的版本。
在川合秀实的代码中,实现了显示日本文字的功能。我呢,根据川合秀实先生的知识,加上自己的查阅资料,与蒙选择题的精神,最终呢,实现了在内核中显示汉字的功能。同时呢,我也在内核中加入了播放音乐的功能。
我们双击进入图38 中的【Lab】文件夹,然后打开一个终端并调整为下图所示的纯净状态。
图39
然后呢,我们在图39 所示的终端环境里,输入【make】并回车执行,结果如下图所示。
图40
我把播放音乐的视频也给录下来,贴在下面。
——————————————————————
30天改编版内核演示
——————————————————————
对于图40 所示的 QEMU 监视器,如果大家用鼠标点击了它,则鼠标会进入其中。并且,随着你的鼠标的移动,QEMU 监视器中的鼠标指针也会跟着移动。
请大家点进去,然后呢,按下【Tab】键,结果呢,QEMU 中的黑窗口,它的标题栏会改变颜色,如下图所示。
图41
此时,我们可以输入命令。我们输入【dir】,然后回车执行,结果如下图所示。
图42
我们输入【cls】,然后回车,结果如下。
图43
实现清屏了,是吧?
然后呢,在音乐已经播放完毕了的情况下,大家输入【music】,然后回车执行,音乐会再次播放起来。
不过,第二次播放的时候,音效会差一些。原因是,我学习 SoundBlaster 声卡驱动的时候,并未学习完整,只学习了如何启动 SoundBlaster 和初始播放音乐。播放完了以后,想要再次播放音乐,该怎么处理,我没有学,也没咋去琢磨。
所以,对于 SoundBlaster 声卡驱动,我算是只学了个半拉子。
不过,到这会儿,我也暂时不想继续专门研究它。等到学完了 Linux 1.0 内核以后,自然会学习到较为完整的 SoundBlaster 的声卡驱动程序吧。
这会儿,我能做的,就是尽量将我所会的东西,教给大家。以便,大家也能够在内核方面入门。
想要从 QEMU 中回到乌班图里面,还是需要按【Ctrl + Alt + G】快捷键。
到了这里,30天改编版内核我们就演示完了。
同时呢,本节内容,也就演示完了。
各个窗口,都关闭吧。
结束语
本节内容,依然是很长。
说起来,学习我写的教程,你还真的是需要克服一下这种长文了。
专栏导航
上一篇:第1章:在本机系统中安装 VirtualBox 虚拟机
回到目录
下一篇:第1章:开发环境搭建,在 Windows 中安装 Bochs
网硕互联帮助中心





评论前必须登录!
注册