目录

一、运行要求

二、开始运行

三、重启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.binboot #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 码,另一个字节为字符的颜色值。如下图所示:

操作系统实战 45 讲:运行HelloOS界面相关推荐

  1. 操作系统实战45讲01:运行HelloOS

    目录 1. HelloOS说明 1.1 HelloOS构成 1.2 HelloOS编译 2. 部署HelloOS 2.1 设置grub进入引导菜单 2.2 增加HelloOS启动选项 2.3 启动He ...

  2. MySQL实战45讲学习笔记

    文章目录 MySQL实战45讲-学习笔记 01 基础架构:一条SQL查询语句是如何执行的? mysql逻辑架构 连接器 查询缓存 分析器 优化器 执行器 02 日志系统:一条SQL更新语句如何执行 r ...

  3. 《Mysql实战45讲》学习笔记 1-22

    Mysql <Mysql实战45讲> 1.一条sql查询语句是如何执行的 Server层: 连接器,查询缓存,分析器,优化器,执行器 存储引擎层: 负责数据的存储和提取 (Innodb, ...

  4. mysql 实战 45讲 学习笔记 基础知识 原理剖析

    MySQL 实战45讲 持续更新中~ 00讲 开篇 我们知道如何写出逻辑正确的SQL语句来实现业务目标,却不确定这个语句是不是最优的 我们听说了一些使用数据库的最佳实践,但是更想了解为什么这么做 我们 ...

  5. 《MySQL实战45讲》——学习笔记12 “InnoDB刷脏页的控制策略“

    本篇介绍MYSQL InnoDB的WAL机制带来的小问题--利用WAL技术,数据库将随机写转换成了顺序写,大大提升了数据库的性能,但也带来了内存脏页的问题: 脏页会被后台线程自动flush,也会由于数 ...

  6. MySQL 实战45讲--笔记

    文章目录 MySQL 实战45讲-->笔记 开篇词 基础篇(8讲) 01 | 基础架构:一条SQL查询语句是如何执行的? 1.1 SQL 语句在 MySQL 的各个功能模块中的执行过程. 依次看 ...

  7. MySQL实战45讲——MySQL是怎么保证数据不丢的?

    文章摘抄自林晓斌老师<MySQL实战45讲>.今天这篇文章, 我会继续和你介绍在业务高峰期临时提升性能的方法. 从文章标题"MySQL是怎么保证数据不丢的? ", 你就 ...

  8. 丁奇的MySQL实战45讲 学习笔记[链接]

    收录一下, 方便自己查阅 <MySQL实战45讲>1~15讲 -丁奇,学习笔记 <MySQL实战45讲>16~30讲 -丁奇,学习笔记 <MySQL实战45讲>31 ...

  9. 《MySQL实战45讲》——学习笔记04-05 “深入浅出索引、最左前缀原则、索引下推优化“

    04 | 深入浅出索引(上) 1. 什么是索引? 索引的出现其实就是为了提高数据查询的效率,就像书的目录一样,书有500页,每页存的都是书的内容,目录可能只有5页,只存了页码:通过目录能快速找到某个主 ...

最新文章

  1. 沈向阳:微软每一个技术研发都会进行AI伦理道德评审
  2. python分几种_python有几种类型?
  3. Leetcode Wildcard Matching
  4. Java面试常问计算机网络问题
  5. matlab 自适应噪声对消,基于Matlab的RLS自适应语音噪声对消系统的设计与实现
  6. linux sybase 自动备份,Linux平台下Sybase数据库备份方法分析.doc
  7. oracle truct,java向oracle 存储过程 传输数组
  8. 链接随机html,通过Javascript/HTML生成随机链接
  9. idea 调试远程tomcat
  10. 传输层TCP(流量控制和拥塞控制)
  11. Itext7 jar 下载 链接
  12. Weblogic10.3.6反序列化漏洞补丁更新
  13. 国产操作系统--NeoKylin基本操作命令汇总(一)
  14. 关于华三路由器nat映射ftp端口号登录服务器失败问题
  15. linux下LTP工具说明
  16. php技术逻辑思维图,PHP 逻辑思维题
  17. 系统架构设计笔记(38)—— 工作流设计
  18. Bugzilla使用手册
  19. 用c语言编程确定一个相图的截面,2011级本科C语言上机复习题.doc
  20. R语言ggplot2可视化:使用ggpubr包的text_grob函数和as_ggplot函数可视化文本段落(将指定文本段落可视化出来、指定文本段可视化为图像)

热门文章

  1. 通过Docker 安装 cloudera manager 平台
  2. 如何在 Unity 中制作一个道具系统
  3. dreamweaver快捷键大全
  4. transformer--ViT
  5. Python breakpoint()函数
  6. 何为助贷?助贷业务的盈利模式
  7. 微端更新慢、甚至不更新是怎么回事?
  8. 简单的Android程序多少钱,Android简单程序利息计算器
  9. ASCII、Unicode、UTF-8
  10. virtualBox安装centos6增强包报错解决及配置共享文件夹