![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
一个64位操作系统的设计与实现
文章平均质量分 60
参考田宇老师《一个64位操作系统的设计与实现》,OS实现链接:https://github.com/zjuHong/x64OS
smile_sa
菜鸡OS轮子爱好者
展开
-
VMware的磁盘格式化
在OS的文件系统中,需要预先将磁盘格式化为FAT32,从而进行相应的底层操作。然而对于VMware玩家而言,无法像操作物理硬盘一样直接进行格式化分区,因此需要间接进行相关的方法。一、准备工作一个虚拟机中的操作系统,本文选用了ubuntu。虚拟机中磁盘格式化工具,本文选用了gparted。实现OS和磁盘操作OS的磁盘共享操作,参考链接。由于实现OS的硬盘操作命令是基于IDE接口,因此磁盘类型和VMware配置文件也要相应的改成IDE,注意两个虚拟机的节点要设置为一致,配置文件修改的部分也需要一致。原创 2021-02-09 11:27:16 · 7085 阅读 · 0 评论 -
Legacy改UFEI的内核修改
一、内核头程序head.S田宇老师的《一个UEFI引导程序的实现》一文提出:“由于数据段描述符在GDT表中的位置无法确定,从而就无法直接通过段选择子对段寄存器进行赋值。不过,好在栈段寄存器SS指向的段是可读写的,那么将此段作为数据段是可行的。”基于此关键修改部分如下:#include "linkage.h".section .textENTRY(_start) mov %ss, %ax mov %ax, %ds mov %ax, %原创 2021-02-02 16:20:25 · 298 阅读 · 1 评论 -
U盘UEFI引导OS内核的小白教程
本文参考田宇老师的《一个UEFI引导程序的实现》一文,使用U盘进行UEFI的内核引导,在VMware虚拟机上运行内核。一、工具DiskGenius磁盘格式化工具。TianoCore EDK2开发环境(编译UEFI程序),本文直接使用了编译后的BootLoader.efi文件。资料链接,主要使用了引导文件Bootloader.efi和kernel文件夹编译后的内核文件kernel.bin。二、准备工作首先使用磁盘管理软件DiskGenius清空U盘扇区里的所有数据,然后选择磁盘->转换原创 2021-01-31 10:59:59 · 3277 阅读 · 3 评论 -
OS 13号#GP异常
运行任务切换的时候,发现如下错误,发现出现了#GP13号异常,段选择子是0,对应了将NULL(0)段选择子载入CS/SS导致#GP异常的原因:根据RIP的值以及反汇编文件发现出现异常的调用函数为__switch_to的最后一句。(省去一些中间程序。。)查看gdt表(物理地址0x10a240处),发现第39位置1,这一位应该是段基地址(16-39位为段基地址),此处发生了异常:默认的gdt表初始化如下:可以看到kernel code和data两者的第39位是都有区别的。..原创 2020-12-15 21:53:55 · 1246 阅读 · 1 评论 -
SYSFUNC_DEF
占个坑原创 2020-12-12 11:06:07 · 226 阅读 · 0 评论 -
编译内核时出现对undefined reference to‘XXXX’
在Makefile出错文件的gcc那一行加上-fno-stack-protector选项,如:gcc -mcmodel=large -fno-builtin -fno-stack-protector -m64 -c printk.c原创 2020-12-11 22:25:01 · 1093 阅读 · 0 评论