【鸟哥】Linux笔记-硬件搭配

在Linux这个系统当中,几乎所有的硬件设备文件都在/dev这个目录内。打印机与软盘呢?分别是/dev/lp0, /dev/fd0。

几个常见的设备与其在Linux当中的文件名:

如果你的机器使用的是跟网际网络供应商 (ISP) 申请使用的云端机器,这时可能会得到的是虚拟机。为了加速,虚拟机内的磁盘是使用仿真器产生, 该仿真器产生的磁盘文件名为 /dev/vd[a-p] 系列的文件名。

更多Linux核心支持的硬件设备与文件名,可以参考如下网页: https://www.kernel.org/doc/Documentation/devices.txt

使用虚拟机学习:

普通的中阶个人计算机的 CPU 微指令集中,就已经整合了硬件虚拟化指令集了! 所以,随便一台计算机就能够虚拟化出好几台逻辑独立的系统。

由于虚拟化的软件非常之多,网络上也有一堆朋友的教学在。如果你的系统是 windows 系列的话,鸟哥推荐使用 virtualbox 这个软件! 至于如果你原本就用 Linux 系统,例如 Fedora/Ubuntu 等系列的话,那么建议你使用原本系统内就有的虚拟机管理员来处理即可。目前 Linux 系统大多使用 KVM 这个虚拟化软件就是了。

磁盘和分区

Linux系统是安装在计算机元件的磁盘。

正常的实体机器大概使用的都是 /dev/sd[a-] 的磁盘文件名,至于虚拟机环境下面,为了加速,可能就会使用 /dev/vd[a-p] 这种设备文件名。

磁盘的组成主要有盘片、机械手臂、磁头与主轴马达所组成, 而数据的写入其实是在盘片上面。盘片上面又可细分出扇区(Sector)与磁道(Track)两种单位, 其中扇区的物理量设计有两种大小,分别是 512Bytes 与 4KBytes。假设磁盘只有一个盘片,那么盘片有点像下面这样:

  • MSDOS (MBR) 分区表格式与限制
  • 开机管理程序纪录区与分区表则通通放在磁盘的第一个扇区, 这个扇区通常是 512Bytes 的大小 (旧的磁盘扇区都是 512Bytes 喔!),所以说,第一个扇区 512Bytes 会有这两个数据:

  • 主要开机记录区(Master Boot Record, MBR):可以安装开机管理程序的地方,有446 Bytes
  • 分区表(partition table):记录整颗硬盘分区的状态,有64 Bytes。由于分区表就只有64 Bytes而已,最多只能容纳四笔分区的记录, 这四个分区的记录被称为主要(Primary)或延伸(Extended)分区。
  • 其实所谓的“分区”只是针对那个64 Bytes的分区表进行设置而已!
  • 硬盘默认的分区表仅能写入四组分区信息
  • 这四组分区信息我们称为主要(Primary)或延伸(Extended)分区
  • 分区的最小单位“通常”为柱面(cylinder)
  • 当系统要写入磁盘时,一定会参考磁盘分区表,才能针对某个分区进行数据的处理

分区的好处:

数据安全:例如你要将计算机中Windows的C 盘重新安装一次系统时, 可以将其他重要数据移动到其他分区,例如将邮件、桌面数据移动到D 盘去,那么C 盘重灌系统并不会影响到D 盘! 

系统的性能: 由于分区将数据集中在某个柱面的区段,例如上图当中第一个分区位于柱面号码1~100号,如此一来当有数据要读取自该分区时, 磁盘只会搜寻前面1~100的柱面范围,由于数据集中了,将有助于数据读取的速度与性能!

在上图当中,我们知道硬盘的四个分区记录区仅使用到两个,P1为主要分区,而P2则为延伸分区。请注意, 延伸分区的目的是使用额外的扇区来记录分区信息,延伸分区本身并不能被拿来格式化。 然后我们可以通过延伸分区所指向的那个区块继续作分区的记录。

由于第一个扇区所记录的分区表与MBR是这么的重要,几乎只要读取硬盘都会先由这个扇区先读起。 因此,如果整颗硬盘的第一个扇区(就是MBR与partition table所在的扇区)物理实体坏掉了,那这个硬盘大概就没有用了! 因为系统如果找不到分区表,怎么知道如何读取柱面区间呢?

不过,在磁盘管理工具上面, fdisk 这个老牌的软件并不认识 GPT 喔!要使用 GPT 的话,得要操作类似 gdisk 或者是 parted 指令才行!

另外,开机管理程序方面, grub 第一版并不认识 GPT 喔!得要 grub2 以后才会认识的!

并不是所有的操作系统都可以读取到 GPT 的磁盘分区格式喔!同时,也不是所有的硬件都可以支持 GPT 格式喔!是否能够读写 GPT 格式又与开机的检测程序有关! 那开机的检测程序又分成啥鬼东西呢?就是 BIOS 与 UEFI 啦!

开机流程中的 BIOS 与 UEFI 开机检测程序

由于操作系统会控制所有的硬件并且提供核心功能, 因此我们的计算机就能够认识硬盘内的文件系统,并且进一步的读取硬盘内的软件文件与执行该软件来达成各项软件的执行目的。基本上,目前的主机系统在载入硬件驱动方面的程序,主要有早期的 BIOS 与新的 UEFI 两种机制。

  • BIOS 搭配 MBR/GPT 的开机流程

  • BIOS与CMOS两个东西, CMOS是记录各项硬件参数且嵌入在主板上面的储存器,BIOS则是一个写入到主板上的一个固件(再次说明, 固件就是写入到硬件上的一个软件程序)。这个BIOS就是在开机的时候,计算机系统会主动执行的第一个程序了!
  • 以硬盘为例,BIOS会依据使用者的设置去取得能够开机的硬盘, 并且到该硬盘里面去读取第一个扇区的MBR位置。 MBR这个仅有446 Bytes的硬盘容量里面会放置最基本的开机管理程序, 此时BIOS就功成圆满,而接下来就是MBR内的开机管理程序的工作了。

简单的说,整个开机流到操作系统之前的动作应该是这样的:

  1. BIOS:开机主动执行的固件,会认识第一个可开机的设备;
  2. MBR:第一个可开机设备的第一个扇区内的主要开机记录区块,内含开机管理程序;
  3. 开机管理程序(boot loader):一支可读取核心文件来执行的软件;
  4. 核心文件:开始操作系统的功能...

-----------------------------😱🤧🥹☠️好难啊。。。复杂。。。处处是重点啊   继续------------------------

Tips 由于 LBA0 仅提供第一阶段的开机管理程序码,因此如果你使用类似 grub 的开机管理程序的话,那么就得要额外分区出一个“ BIOS boot ”的分区, 这个分区才能够放置其他开机过程所需的程序码!在 CentOS 当中,这个分区通常占用 2MB 左右而已。

由上面的说明我们会知道,BIOS与MBR都是硬件本身会支持的功能,至于Boot loader则是操作系统安装在MBR上面的一套软件了。由于MBR仅有446 Bytes而已,因此这个开机管理程序是非常小而美的。 这个boot loader的主要任务有下面这些项目:

  • 提供菜单:使用者可以选择不同的开机项目,这也是多重开机的重要功能!
  • 载入核心文件:直接指向可开机的程序区段来开始操作系统;
  • 转交其他loader:将开机管理功能转交给其他loader负责。

总结:

  • 每个分区都拥有自己的开机扇区(boot sector)
  • 图中的系统盘为第一及第二分区,
  • 实际可开机的核心文件是放置到各分区内的!
  • loader只会认识自己的系统盘内的可开机核心文件,以及其他loader而已;
  • loader可直接指向或者是间接将管理权转交给另一个管理程序。

有道理啊!

看到这我就放心了,鸟哥贴心,知道我真的记不下来这么多。。。

UEFI BIOS 搭配 GPT 开机的流程 

-----------------------5.31的磁盘分区先学到这------------------------------------------------------

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/667141.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Unity【入门】脚本基础

Unity脚本基础 文章目录 1、脚本基本规则1、创建规则2、MonoBehavior基类3、不继承MonoBehavior的类4、执行的先后顺序5、默认脚本内容 2、生命周期函数1、概念2、生命周期函数有哪些3、生命周期函数支持继承多态 3、Inspector窗口可编辑的变量4、Mono中的重要内容1、重要成员2…

thinkphp6 queue队列的maxTries自定义

前景需求:在我们用队列的时候发现maxtries的个数时255次,这个太影响其他队列任务 我目前使用的thinkphp版本是6.1 第一部定义一个新的类 CustomDataBase(我用的mysql数据库存放的队列) 重写__make 和createPlainPayload方法 …

第10周 企业认证、分布式事务,分布式锁方案落地

第10周 企业认证、分布式事务,分布式锁方案落地 ********************************************************************************************** 本周我们将对企业入驻认证的流程进行落地,并且结合分布式缓存中间件Redis与Redisson进行相关的技术方…

Easy RoCE:在SONiC交换机上一键启用无损以太网

RDMA(远程直接内存访问)技术是一种绕过 CPU 或操作系统,在计算机之间直接传输内存数据的技术。它释放了内存带宽和 CPU,使节点之间的通信具有更低的延迟和更高的吞吐量。目前,RDMA 技术已广泛应用于高性能计算、人工智…

web项目规范配置(husky、eslint、lint-staged、commit)

背景: 团队开发为了保证提交代码格式统一,通常在进行代码提交的时候对暂存区代码进行校验,如没有通过eslint(本例使用eslint)校验,则不能提交到远端。 安装依赖 husky 、eslint 、prettier 、lint-staged npm install husky e…

【Uniapp小程序】自定义导航栏uni-nav-bar滚动渐变色

效果图 新建activityScrollTop.js作为mixins export default {data() {return {navBgColor: "rgba(0,0,0,0)", // 初始背景颜色为完全透明navTextColor: "rgba(0,0,0,1)", // 初始文字颜色};},onPageScroll(e) {// 设置背景const newAlpha Math.min((e.s…

手机耳机哪个品牌音质好

在寻找音质出色的手机耳机时,品牌选择显得尤为重要。市场上众多知名品牌提供了各式各样的耳机产品,它们在音质、降噪功能、设计等方面各有千秋。以下是一些在音质上表现优异的手机耳机品牌的分析: 索尼:索尼的耳机以其卓越的降噪技…

Django企业招聘后台管理系统开发实战四

前言 首先我们看一下产品的需求背景,这个产品为了解决招聘面试的过程中,线下面试管理效率低,面试过程和结果不方便跟踪的痛点 招聘管理的系统几乎是每一家中小公司都需要的产品 我们以校园招聘的面试为例子来做 MVP 产品迭代 首先我们来看一下…

【网络安全的神秘世界】在win11搭建pikachu靶场

🌝博客主页:泥菩萨 💖专栏:Linux探索之旅 | 网络安全的神秘世界 | 专接本 下载pikachu压缩包 https://github.com/zhuifengshaonianhanlu/pikachu 下载好的pikachu放在phpstudy_pro/www目录下 创建pikachu数据库 打开phpstudy软件…

容量为0多线程操作的SynchronousQueue(FIFO)

一:简介 SynchronousQueue是一个没有数据缓冲的BlockingQueue,生产者线程对其的插入操作put必须等待消费者的移除操作take。SynchronousQueue的优点在于其直接性和高效性,它实现了线程间的即时数据交换,无需中间缓存,确保了数据传输的实时性和准确性,同时,其灵活的阻塞机…

恒压频比开环控制系统Matlab/Simulink仿真分析(SVPWM控制方式)

一、SVPWM 交流电机需要输入三相正弦电流的最终目的就是在电机空间形成圆形磁场,从而产生恒定的电磁转矩。把逆变器和交流电机视为一个整体,以圆形旋转磁场为目标来控制逆变器的工作,这种控制方法称为“磁链跟踪控制”,磁链轨迹的…

洛谷P1035 级数求和 题解

#题外话(第42篇题解) #先看题目 题目链接https://www.luogu.com.cn/problem/P1035#思路 没啥思路,这其实偏向模拟一点,按照题目说的做就行了。 #代码 原来是这个熊样的(都能AC,优化的问题) …

九阳股份的“而立危机”:业绩三连降,押注清洁赛道迷雾重重?

“致敬伟大的小问题”,这是步入而立之年的九阳股份(SZ:002242,下同“九阳”)新品发布会的主题,也是九阳过去30年发展历程的缩影。 在经历“宅经济”催生的流量井喷期后,厨房小家电市场受困于热度退潮的浅滩…

【spring】Spring Boot3.3.0发布啦

spring最新版本 springboot官网:Spring Boot :: Spring Boot Spring Boot 3.3 发行说明:https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-3.3-Release-Notes 开发环境的要求对比表 Spring BootJDKSpringMavenGradle3.3.017 ~ 226.1…

《Ai企业级知识库》rasa-action编写顺序+实体拿取+rasa-X替代品+使用mysql作为知识库存储,根据知识库中数据回答

rasa-X替代-(预留坑位) GitHub - nesterapp/rasa-admin: An open-source alternative for Rasa-X 识别意图 小鸭子:ner_duckling(组件) 查找表:lookup tables ner_crf (可以是那种可列举的列表类型) 定…

C# 类型系统

1. 隐式类型 c#允许使用 var 声明变量,编译期会通过初始化语句右侧的表达式推断出变量的类型。 // i is compiled as an int var i 5;// s is compiled as a string var s "Hello";// a is compiled as int[] var a new[] { 0, 1, 2 };// expr is co…

TLS 协议流程

TLS 协议流程 背景简介TLS-RSATLS-DH总结 背景 随着年龄的增长,很多曾经烂熟于心的技术原理已被岁月摩擦得愈发模糊起来,技术出身的人总是很难放下一些执念,遂将这些知识整理成文,以纪念曾经努力学习奋斗的日子。本文内容并非完全…

某咨询公司的大数据解决方案介绍(32页PPT)

方案介绍: 本咨询公司的大数据平台解决方案以企业实际需求为出发点,结合先进的大数据技术和行业经验,为企业提供一站式的大数据服务。通过实时数据收集与处理、深度数据分析与挖掘、可视化数据展示以及灵活的数据应用与扩展,帮助…

探索Web3工具:正确使用区块链平台工具的秘诀

在当今日新月异的数字时代,区块链技术正以惊人的速度改变着我们的生活和工作方式。尤其对于那些想要踏入区块链世界的人来说,正确使用区块链平台工具至关重要。本文将向您介绍一些关键的Web3工具,并以TestnetX.com为例,展示如何利…

输入输出安全防护指南

输入输出安全防护指南 在现代网络应用程序中,输入输出的安全性是至关重要的。未经验证的输入和未编码的输出可能导致严重的安全漏洞,如SQL注入、跨站脚本攻击(XSS)等。本文将详细讨论如何通过输入验证和输出编码来确保应用程序的…