Geek 02 学习记录 (实现一个最简单内核)

02 实现一个最简单内核的学习记录

1. 分区表 GPT 和 DBR 的区别

  1. 主引导扇区:硬盘的0柱面、0磁头、1扇区(也叫主引导记录MBR),大小为512Byte。

  2. 分区表(DPT):位于主引导分区,从偏移01BEH开始到偏移01FDH结束的64字节。

  3. 活动分区DBR:DBR(DOS BOOT RECORD,原意为DOS引导记录),位于柱面0,磁头1,扇区1(操作系统可以访问的第一个扇区),即逻辑扇区0。DBR分为两部分:DOS引导程序和BPB(BIOS参数块)

    一、硬盘的0柱面、0磁头、1扇区称为主引导扇区(也叫主引导记录MBR),该记录占用512个字节,它用于硬盘启动时将系统控制权转给用户指定的、在分区表中登记了某个操作系统分区。MBR的内容是在硬盘分区时由分区软件(如FDISK)写入该扇区的,MBR不属于任何一个操作系统,不随操作系统的不同而不同,即使不同,MBR也不会夹带操作系统的性质,具有公共引导的特性。但安装某些多重引导功能的软件或LINUX的LILO时有可能改写它;它先于所有的操作系统被调入内存并发挥作用,然后才将控制权交给活动主分区内的操作系统。

    MBR由三部分构成:
    1.主引导程序代码,占446字节
    2.硬盘分区表DPT,占64字节
    3.主引导扇区结束标志AA55H

GPT和MBR 是什么 是计算机硬盘的一种分区模式

GPT(GUID Partition Table):全局唯一标识磁盘分区表,是一个实体硬盘的分区表的结构布局的标准,是可扩展固件接口(EFI)标准,被用于替代BIOS系统中的

一64bits来存储逻辑块地址和大小信息的主开机纪录(MBR)分区表,与普遍使用的主引导记录(MBR)分区方案相比,GPT提供了更加灵活的磁盘分区机制

MBR(Main Boot Record):主引导记录区,包含了硬盘的一系列参数和一段引导程序。

硬盘引导程序的主要作用:是检查分区表是否正确并且在系统硬件完成自检以后引导具有激活标志的分区上的操作系统,并将控制权交给启动程序。

MBR是由分区程序(如Fdisk.exe)所产生的,它不依赖任何操作系统,而且硬盘引导程序也是可以改变的,从而实现多系统共存。

2. sda 和 nvme 区别

在存储技术领域,当我们讨论 M.2 时,通常是指固态硬盘的外形尺寸。M.2 是与一块口香糖相似的固态硬盘外形尺寸。它外形小巧纤薄,非常适合便携式计算机、笔记本电脑、NUC 迷你电脑和超级本等轻便、便携的计算机。占用空间小于 2.5 英寸固态硬盘或机械硬盘,存储容量高达 2TB。

现在,我们已经介绍了 M.2 是什么,接下来让我们回答“M.2 比固态硬盘快吗?”

答案是否定的。M.2 是固态硬盘的一种外形尺寸,因此这个问题实际上毫无意义。不过,这个问题引起的困惑是可以理解的,毕竟相比其他外形尺寸的客户端固态硬盘,M.2 固态硬盘属于比较新的技术。M.2 固态硬盘包含 SATA 和 NVMe 两种类型。两者属于不同的存储技术,从用户需求与预算角度看,两者都有各自的优缺点。

实用提示:请记住,M.2 固态硬盘仅兼容支持 M.2 插槽的主板。检查计算机的主板,确保包含 M.2 插槽。

2.1 SATA M.2 固态硬盘

在这里插入图片描述

SATA M.2 固态硬盘采用 SATA 接口,数据传输速率最大 6Gbps,比新接口速度慢(详见下文)。SATA 固态硬盘是性能最低的固态硬盘,采用的接口与机械硬盘相同。尽管如此,SATA 固态硬盘的带宽是旋转式机械硬盘的三到四倍。SATA 固态硬盘比 NVMe 固态硬盘更加普及、更加便宜。如果计算机没有空间安装 2.5 英寸固态硬盘,SATA M.2 固态硬盘可能是 2.5 英寸固态硬盘的出色替代选项。

长期以来,SATA 一直是用于存储技术的主要连接方式。使用 SATA 线缆的 SATA 硬盘需要两根线缆才能工作。一根用于将数据传输到主板,另一根用于连接 PSU(电源)。当使用多个 SATA 存储硬盘时,杂乱无章的线缆是可能影响 PC 机箱性能的问题之一。包括超级本在内的纤薄笔记本电脑和便携式计算机甚至没有空间来安放 SATA 线缆,因此会采用 M.2 外形尺寸。SATA M.2 外形尺寸的固态硬盘解决了这个问题,它没有其他 SATA 存储硬盘所使用的两个线缆连接。

当然,仅仅因为是 M.2 固态硬盘无法改变它是 SATA 固态硬盘的事实。SATA 固态硬盘与 NVMe M.2 固态硬盘之间的主要区别在于接口技术和性能水平。SATA M.2 固态硬盘仍然采用 SATA 接口设计,这无法改进速度与性能,毕竟这不是 NVMe M.2 固态硬盘。

2.2 NVMe M.2 固态硬盘

NVMe M.2 固态硬盘采用了专为固态硬盘设计的 NVMe 协议。与 PCIe 总线配合,NVMe 固态硬盘可以提供市面上最新水平的性能和速度。NVMe 固态硬盘利用 PCIe 插槽直接与系统 CPU 进行通信。基本上,它让闪存可以作为固态硬盘通过 PCIe 插槽进行运行,而不必使用速度比 NVMe 慢得多的 SATA 通信驱动程序。

在这里插入图片描述

NVMe M.2 固态硬盘的性能比 SATA M.2 固态硬盘高得多。通过利用 PCIe 总线,NVMe M.2 固态硬盘拥有高达 20Gbps 的理论传输速度,比 SATA M.2 固态硬盘的 6Gbps 快。PCIe 总线支持 1x、4x、8x 和 16x 通道。PCIe 3.0 的有效传输速度高达每通道 985 MB/秒,这意味着潜在传输速度高达 16GB/秒。不过,当使用 M.2 外形尺寸与 PCIe 总线时,只能访问 x2 和 x4 通道,这使得最大传输速度为 4GB/秒。

NVMe 速度比 SATA 快吗?从技术上看是肯定的。新式主板采用最大吞吐率为 600MB/秒的 SATA III,而 NVMe 硬盘提供提高 3,500MB/秒的速度。性能远高于各种外形尺寸的 SATA 固态硬盘。只有采用 NVMe 技术的固态硬盘会超越 SATA 固态硬盘的传输速度极限。

在确定是使用 SATA M.2 固态硬盘还是 NVMe M.2 固态硬盘时,应考虑以下因素:

系统支持 - 较旧的设备可能不兼容 NVMe,因为缺少利用 NVMe PCIe 插槽所需的连接。
快速启动 – 要让计算机系统快速启动,最简单的方法是将操作系统 (OS) 安装到固态硬盘上。使用 NVMe 固态硬盘,您将实现最大的速度提升。
划分存储优先级 – 您可以将 NVMe 固态硬盘与另一个 SATA 固态硬盘结合使用。这是一种经济实惠的选择,不会掏空您的钱包。您可以将操作系统和资源密集型程序和应用安装到 NVMe 固态硬盘上,并使用 SATA 固态硬盘存储所有其他内容,例如资源利用较少的小型文件、文档等。
游戏优势 – 使用 M.2 NVMe 固态硬盘,您会看到游戏加载速度大幅提升。NVMe 上安装的游戏整体性能将大幅改善,得益于从存储加载游戏时传输速度的提升。
PCIe 代次 – PCIe 总线存在不同的代次,性能水平各不相同。每一代的带宽会较上一代增加一倍,固态硬盘使用不同代次的 PCIe。最新一代是 PCIe 4.0,PCIe 5.0 仍在开发之中。
共享连接 – 部分主板甚至没有足够的 PCIe 连接来支持多个 NVMe 硬盘。您需要决定是将可用的连接用于显卡还是 NVMe 固态硬盘。在其他情况下,可能存在可用的 PCIe 通道,但仅特定类型的连接能全速使用 NVMe 设备,例如 M.2 连接。

3. UEFI 与 Legacy 模式区别

UEFI:全称“统一的可扩展固件接口”(Unified Extensible Firmware Interface),一种详细描述类型接口的标准。这种接口用于操作系统自动从预启动的操作环境,加载到一种操作系统上。

BIOS : 主要就是负责 在开机时做硬件启动和检测等工作,并且担任操作系统控制硬件时的中介角色

为啥会出现 UEFI :

因为硬件发展迅速,传统式(Legacy)BIOS 成为进步的包袱,现在已发展出最新的UEFI可扩展固件接口,相比传统 BIOS 的来说,未来将是一个“没有特定 BIOS”的电脑时代。

特点: 将不支持X86实模式,只支持64位操作系统

编码99%都是由C语言完成,一改之前的中断、硬件端口操作的方法,而采用了Driver/protocol的新方式

UEFI采用模块化设计:在逻辑上可分为硬件控制和OS软件管理两部分:操作系统—可扩展固件接口—固件—硬件。

UEFI模式下的系统会有两个很小的分区,一个叫ESP(EFI系统分区),另一个MSR(微软保留分区,通常为128MB),MSR是窗口要求的分区。

ESP对UEFI启动模式很重要,UEFI的引导程序是后缀名为.efi的文件存放在ESP分区中的,ESP分区采用fat32文件系统。

优点:纠错特性,兼容性,鼠标操作,可扩展性,图形界面

为什么兼容性好

与BIOS不同的是,UEFI体系的驱动并不是由直接运行在CPU上的代码组成的,而是用EFI Byte Code(EFI字节码)编写而成的。

Java是以“Byte Code”形式存在的,正是这种没有一步到位的中间性机制,使Java可以在多种平台上运行。UEFI也借鉴了类似的做法。EFI Byte Code是一

组用于UEFI驱动的虚拟机器指令,必须在UEFI驱动运行环境下被解释运行,由此保证了充分的向下兼容性。

在安装系统的时候经常需要设置为UEFI 进行启动系统盘,在bois 模式下的;

UEFI与Legacy

执行启动顺序:

UEFI: 新模式启动顺序:开机→UEFI初始化→引导操作系统→进入操作系统启动。速度相对lagacy模式要更快。

Legacy:传统BIOS传输模式启动顺序:开机→BIOS初始化→BIOS自检→引导操作系统→进入系统。

UEFI、Legacy、MBR和GPT之间的关系

Legacy就是以传统BIOS启动,可以进行MBR分区的系统安装,但是GPT分区必须UEFI启动

使用BIOS + MBR或UEFI + GPT对应模式,可以让你的硬件与软件的工作效率更加高些,运行速度也会变得更快,避免安装和运行系统的时候出问题

注意:

MBR硬盘模式不能管理容量超过2TB的大硬盘,而GPT硬盘模式却无此限制,所以你的硬盘要是大于2TB,就直接使用GPT吧。

电脑买来的时候是使用传统BIOS主板,还是建议继续使用MBR硬盘模式,电脑买来的时候是使用UEFI主板的话,则建议继续使用GPT。

在这里插入图片描述

3.1 自己系统的启动项

提供給大家參考我的配置 (可以成功看到 Hello OS!):

$ df -h /boot/
Filesystem      Size  Used Avail Use% Mounted on
/dev/nvme0n1p1  468G  211G  234G  48% /

在 /boot/grub/grub.cfg 的配置如下:
     ...
    menuentry 'HelloOS' {
        insmod part_msdos
        insmod ext2
        set root='hd0,msdos1'
        multiboot2 /boot/HelloOS.bin
        boot
    }
    ....

最後在開機時,按住 Esc ,進入到開機選單,
應可以看到 HelloOS 選項,點下去後,
畫面就會出現 "Hello OS!" 的字樣。

sudo update-grub

3.2 windows系统的启动项

grub2启动项里面找不到Windows的情况,这时候就需要自己去配置grub.cfg

在grub.cfg中加入如下代码:

复制代码

menuentry 'Windows Boot Manager (on /dev/nvme0n1p1)' --class windows --class os $menuentry_id_option 'osprober-efi-68AD-EBF2' {
    insmod part_gpt
    insmod fat
    if [ x$feature_platform_search_hint = xy ]; then
      search --no-floppy --fs-uuid --set=root 68AD-EBF2
    else
      search --no-floppy --fs-uuid --set=root 68AD-EBF2
    fi
    chainloader /EFI/Microsoft/Boot/bootmgfw.efi
}
set timeout_style=menu
if [ "${timeout}" = 0 ]; then
  set timeout=10
fi

复制代码
"68AD-EBF2"指的是windows启动管理器所在分区的uuid,至于UUID是什么,你可以大概理解为分区的标识符,像条形码那样。在终端中输入下面的命令就可心查看到分区UUID了。
命令:

sudo blkid

如果grub.cfg不能写只能读,那麽你需要设置其权限,在grub.cfg所在目录下打开终端输入:sudo chmod 777 grub.cfg,再打开文件即可编辑

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值