尧图精选

第1章:本专栏提供的虚拟机乌班图系统

🕒 发布时间:2026/10/2 13:57:51 📁 来源:尧图网络
专栏导航上一篇第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 dongt 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
上一篇/下一篇内容由系统自动关联 返回资讯列表 →