IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> 实现一个最简单的内核 -> 正文阅读

[系统运维]实现一个最简单的内核

今天看了极客时间操作系统实战的专栏,在实现简单内核(没有任何功能,只是打印出一句话)时也遇到了一些问题,这里记录一下。
在这里插入图片描述
这里不自己写引导汇编加载扇区的汇编代码,而是直接使用Ubuntu自带的GRUB 加载我们的OS。

1 编写代码

entry.asm 处理好C语言的工作环境
main.c Hello OS的主函数,里面的printf函数需要我们自己去实现
vgastr.h vgastr.c 实现printf函数(显存开始的地址是0xb8000)
在这里插入图片描述

void _strwrite(char* string)
{
char* p_strdst = (char*)(0xb8000);//指向显存的开始地址
while (*string)
{
*p_strdst = *string++;
p_strdst += 2; //跳过字符颜色信息的空间
}
return;
}
void printf(char* fmt, ...)
{
_strwrite(fmt);
return;
}

2 编译 OS

使用到了 make工具 和 makefile文件,这里还不是很理解。
在这里插入图片描述
经过编译我们会得到一个Hello OS.bin 文件,让GRUB能够找到这个文件,在操作系统启动的时候我们就可以加载他。

3 安装

GRUB 在启动时会加载一个 grub.cfg 的文本文件,我们对他进行修改加入我们的Hello OS启动项:

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
}

修改grub.cfg时权限不够,解决办法:
命令是sudo chmod +w /boot/grub/grub.cfg。
然后是sudo gedit /boot/grub/grub.cfg。

然后需要把 HelloOS.bin 文件放到/boot/目录下
先使用 df /boot/ 命令查看boot目录挂载的分区(然后去改动set root这一行)
如果上面这个命令失效 可以df-h 查看所有文件挂载找到boot
移动HelloOS.bin到boot目录时又出现了错误,解决办法:
运行命令sudo nautilus就可以打开一个管理员权限的文件管理器,这个文件夹里找到HelloOS.bin选择复制到boot目录即可

最后重启机器,在加载页面按shift键选择我们的helloOS系统即可!
在这里插入图片描述

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2021-09-02 11:48:00  更:2021-09-02 11:49:57 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 12:47:45-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码