三、磁盘分区
磁盘分区
在Linux中,设备就是文件。SATA等磁盘设备显示的是/dev/sd[a-p]。
1.1 MSDOS(MBR)分区表格式与限制
-
这种分区方法是使用的windows的分区方法,开机管理程序和分区表通常放到第一个扇区,一个扇区通常是512Bytes:
- 主要开机记录区(Master Boot Record,MBR):安装开机管理程序的地方,有446 Bytes。
- 分区表:记录整个硬盘的分区状态,有64 Bytes。
-
因为分区表仅有64 Bytes的容量,所以仅能记录4组数据。(假设硬盘文件名/dev/sda,分区名为/dev/sda1、/dev/sda2、...)
-
这64 Bytes的分区被称为组要分区或延展分区,且最多有4笔。
-
延展分区最多只能有一个(操作系统现在),延展分区所指向的第一个柱面设置逻辑分区,所以逻辑分区是由延展分区分割来的分区。
-
逻辑分区与主分区不能整合成一个新分区。
-
-
因为MBR分区表只有64 Bytes,所以存在很多问题
-
大容量(超过T2.2)硬盘无法抓取。
-
MBR区域被破坏后很难救援
-
MBR存放的开机管理程序无法容纳太多功能。
-
1.2 GUID partition table,GPT 磁盘分区表
-
GPT采用逻辑块位址(Logic Block Address,LBA)来处理,LBA默认为512 Bytes,采用头34个LBA来记录分区信息,尾33个LBA作为备份。
-
LBA0(MBR相容块区):分为2部份一个是446 Bytes的开机管理程序,另一个放入特殊标志位表示磁盘为GPT。
-
LBA1(GPT标头记录):记录分区表的位置和大小,记录备份用的GPT存放位置,还存放了CRC32判断分区表信息是否准确。
-
LBA2-33(实际记录分区信息):每个LBA可以记录4笔分区。因为记录每个分区的地址容量更大了,所以一个分区可以达到很大。
-
1.3开机检测程序
-
BIOS搭配MBR/GPT
-
计算机开机流程
- BIOS:上电第一个执行的程序,读取CMOS上参数,读取硬盘MBR上的程序。
- boot loader:它是操作系统安装在MBR上的程序,他会读取操作系统的核心文件。
- 核心文件:开始操作系统的功能。
-
boot loader的主要任务
- 提供菜单:使用者可以选择不同的开机项。
- 载入核心文件:直接指向操作系统开始的程序段。
- 转交其他的loader:将开机管理功能转交给其他的loader负责。
-
多重开机
- 每个分区都拥有自己的扇区。
- loader只认识自己系统盘内的核心文件,或其他的loader。
- loader可以直接或者间接将管理权交给另一个管理程序。
-
-
UEFI BIOS(Unified Extensible Firmware Interface)搭配GPT
- UEFI 和 传统BIOS区别
比较项目 UEFI 传统BIOS 使用语言 C语言 组合语言 硬件资源控制 使用驱动程序与协定 使用中断(IRQ)管理,不可变的内存存取,不可变的输入输出 处理器运行环境 CPU保护模式 16位 扩充方式 直接载入驱动程序 通过中断连接 第三方厂商支持 较佳且支持多平台 较差 图形化能力 较佳 较差 内置简化操作系统环境 支持 不支持 - UEFI加入了一个安全启动(secure boot)的机制,开机的操作系统必须被UEFI认证才能正常启动
- 向下兼容BIOS boot的分区支持。
- 为了与windwos相容,并提供其他三方厂商所使用的UEFI应用程序储存空间,必须要格式化一个512MB~1GB左右fat文件系统的容量,让其他UEFI方便执行。
1.4磁盘使用
- 磁盘要挂载到某一个目录才能使用。
原文地址:https://www.cnblogs.com/StringSir/p/15014762.html
- android多线程下载3
- android多线程下载2
- android多线程下载1
- ASP获取微信小程序的OpenID服务器端代码
- 手把手教你用python抢票回家过年 !(附代码)
- 技术总结:自动扩张WPF树型表格列宽
- 部署Microsoft .NET Framework 3.0[翻译]
- 性能优化总结(六):预加载、聚合SQL应用实例
- 性能优化总结(五):CSLA服务端如何使用多线程的解决方案
- 编辑-发布-开发分离:git作为NoSQL数据库
- 性能优化总结(四):预加载的设计
- 在Expression Blend中使用XAML建立3D应用程序
- 使用 Asp.net Future May 2007 开发Silverlight应用
- Rafy 领域实体框架设计 - 重构 ORM 中的 Sql 生成
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- [mongodb] mongo常用字段类型
- 无意间发现一个好用的视频转换gif图片的开源框架
- 解读闭包,这次从ECMAScript词法环境,执行上下文说起
- 额度模型(一)
- GitHub Actions使用入门
- freeswitch笔记(9)-esl outbound中如何放音采集按键?
- react childern添加事件
- Spring事务的传播行为案例分析
- ThreadLocal与Java引用类型(文末含福利)
- GitLab 12 跨版本 13 升级
- 打破你的认知!Java空指针居然还能这样玩,90%人不知道…
- Android 原生 SQLite 数据库的一次封装实践
- Window常用账号密码修改(Git)
- 高通AI研究院|高效网络设计|结构化卷积分解
- tomcat调优 tomcat配置优化