目录

一、运行要求

二、开始运行

三、重启linux

细节补充


一、运行要求

实验环境VMware + Ubuntu18.04

安装gcc,nasm,make

命令为:sudo apt-get install gcc,sudo apt-get install nasm,sudo apt-get install make

HelloOS系统文件下载网址:

极客时间-操作系统实战45讲: 极客时间-操作系统实战45讲课程已经上线,欢迎订阅 – Gitee.com

二、开始运行

1、以下是HelloOS源文件。

以下文件中是C语言文件和汇编文件。

2、首先打开对应文件夹的终端,输入指令:make all;此时所有文件编译完成。

下面是复杂的编译流程,但make all 就可以全部搞定。

3、将HelloOS.bin文件复制到boot文件夹下

4、将install.md中的内容追加到/boot/grub/grub.cfg中。

注意以下代码中msdos4可能要更改,在终端输入命令:df /boot/

menuentry 'HelloOS' { insmod part_msdos#GRUB加载分区模块识别分区 insmod ext2#GRUB加载ext文件系统模块识别ext文件系统 set root='hd0,msdos4'#注意boot目录挂载的分区,这是我机器上的情况 multiboot2 /boot/HelloOS.bin #GRUB以multiboot2协议加载HelloOS.bin boot #GRUB启动HelloOS.bin}

在文件系统下面的为/dev/sda1则将msdos4改为msdos1。

进入boot/grub/grub.cfg中追加。

此时grub.cfg是只读文件需要更改文件权限。在对应文件夹中打开终端,

切换为root模式:su root;如果root密码忘记了通过命令:sudo passwd root 更改。

修改限权:chmod o+w grub.cfg 这样grub.cfg就可以修改了。

5、最后终端输入命令:sudo gedit /etc/default/grub

将GRUB_TIMEOUT_STYLE=hidden注释掉;将GRUB_TIMEOUT改为30;最后将GRUB_CMDLINE_LINUX_DEFAULT改为text。

三、重启linux

重启linux,选择HelloOS进入。

这样HelloOS就运行完成了。

细节补充

控制计算机屏幕

计算机屏幕显示往往是显卡的输出,显卡有很多形式:集成在主板的叫集显,做在 CPU 芯片内的叫核显,独立存在通过 PCIE 接口连接的叫独显,性能依次上升,价格也是。

独显的高性能是游戏玩家们所钟爱的,3D 图形显示往往要涉及顶点处理、多边形的生成和变换、纹理、着色、打光、栅格化等。而这些任务的计算量超级大,所以独显往往有自己的 RAM、多达几百个运算核心的处理器。因此独显不仅仅是可以显示图像,而且可以执行大规模并行计算,比如“挖矿”。

我们要在屏幕上显示字符,就要编程操作显卡。

其实无论我们 PC 上是什么显卡,它们都支持一种叫 VESA 的标准,这种标准下有两种工作模式:字符模式和图形模式。显卡们为了兼容这种标准,不得不自己提供一种叫 VGABIOS 的固件程序。

下面是显卡工作细节。

它把屏幕分成 24 行,每行 80 个字符,把这(24*80)个位置映射到以 0xb8000 地址开始的内存中,每两个字节对应一个字符,其中一个字节是字符的 ASCII 码,另一个字节为字符的颜色值。如下图所示: