操作系统实战 45 讲:运行HelloOS界面

目录

一、运行要求

 二、开始运行

三、重启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语言文件和汇编文件。

2165e7a057e9455ea50c4e9a180bd17a.png

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

a81e78c61ec24ab8a99aa1eea05db137.png

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

edde58141f314b479e2d3876f777e461.png

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

56392c9f70894e428533015ad20ada9d.png

 

 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。

3f2f35636ec2417e9bd0ecae6219d929.png

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

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

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

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

03e8f5954fb6435a8b615c65c40c56f4.png

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

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

0369191b158b4c36a1fb5e4390c97ec6.png

三、重启linux

重启linux,选择HelloOS进入。

d39977e8305c412cb130152860b6a6f9.png

 864b97d66929472b99912985153a4733.png

这样HelloOS就运行完成了。

1655939a33cc418886a305a882971463.webp

 细节补充

控制计算机屏幕

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

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

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

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

下面是显卡工作细节。

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

db0ef0e1290d40bcbc0c5ebd310b221a.png

 

 

 

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值