01-Linux-磁盘分区与目录配置
1. 主引导纪录和磁盘分区表
1.1 MBR分区表
启动引导程序记录区与分区表都放在磁盘的第一个扇区(512B)
由于分区表仅占 64B,因此最多能有四组记录区,每组记录区记录了该区段的起始与结束的柱面号码。
- 缺点如下:
- 操作系统无法使用 2TB 以上的磁盘容量
- MBR 仅有一个区块,若被破坏后,经常无法或很难恢复
- MBR 内的存放启动引导程序的区块仅 446B,无法存储较多的程序代码
1.2 GPT 磁盘分区表
(1)LBA0(保护MBR)
出于兼容性考虑,LBA0 存储了一份传统的 MBR 信息,用来防止不支持 GPT 的硬盘管理工具错误识别并破坏硬盘中的数据。
在支持从 GPT 启动的操作系统中,这里也用于存储第一阶段的启动代码。在这个 MBR 中,只有一个标识为 0xEE 的分区,以此来表示这块硬盘使用 GPT 分区表。不能识别 GPT 硬盘的操作系统通常会识别出一个未知类型的分区,并且拒绝对硬盘进行操作,除非用户特别要求删除这个分区。这就避免了意外删除分区的危险。另外,能够识别 GPT 分区表的操作系统会检查保护 MBR 中的分区表,如果分区类型不是 0xEE 或者 MBR 分区表中有多个项,也会拒绝对硬盘进行操作。
(2)LBA1(EFI 信息)
作用:定义分区表的位置和大小,还包含头和分区表的校验和,这样就可以及时发现错误。
(2)LBA2-33(分区表)
分区表中的每个分区项由起始地址、结束地址、类型值、名字、属性标志、GUID值组成。分区表建立后,128位(16B)的GUID对系统来说是唯一的。
从 LBA2 区块开始,每个 LBA 都可以记录 4 组分区记录,所以在默认的情况下,总共可以有 4 × 32 = 128 4\times 32=128 4×32=128 组分区纪录。因为每个 LBA 有 512B,因此每组记录用到 128B 的空间,除了每组记录所需要的标识符与相关的记录之外,GPT 在每组记录中分别提供了 64位来记载开始/结束的扇区号码,因此,GPT分区表对于单一分区来说,它的最大容量限制在 2 64 × 512 B = 8 Z B 2^{64}\times 512B=8ZB 264×512B=8ZB。
2. BIOS 与 UEFI 启动检测程序
2.1 BIOS 搭配 MBR/GPT 的启动流程
- CMOS:记录各项硬件参数且嵌入在主板上面的存储器。
- BIOS:写入到主板上的一个固件(固件就是写入到硬件上的一个软件程序),BIOS 是启动时计算机系统会主动执行的第一个程序。
- BIOS 会寻找启动盘,并到该硬盘里面去读取第一个扇区的 MBR 位置。MBR 这个仅有 446B 的硬盘容量里面会放置最基本的启动引导程序。
启动流程如下:
- BIOS:启动主动执行的固件,会认识第一个可启动的设备
- MBR:第一个可启动设备的第一个扇区内的主引导记录块,内含启动引导代码
- 启动引导程序(Boot Loader):一个可读取内核文件来执行的软件
- 提供选项:用户可以选择不同的启动选项,这也是多重引导的重要功能
- 选项一:直接加载 Windows 或 Linux 的内核文件来开机
- 选项二:将开机管理工作交给第二个分区的启动扇区
- 加载内核文件:直接指向可使用的程序区段来启动操作系统
- 转交其它启动引导程序:将启动管理功能转交给其它启动引导程序负责
- 启动引导程序除了可以安装在 MBR 之外,还可以安装在每个分区的启动扇区
- 提供选项:用户可以选择不同的启动选项,这也是多重引导的重要功能
- 内核文件:开始启动操作系统
2.2 UEFI BIOS 搭配 GPT 启动的流程
3. Linux 安装模式下,磁盘分区的选择
3.1 文件系统与目录树的关系(挂载)
- 挂载:利用一个目录当成进入点,将磁盘分区的数据放置在该目录下。
4. Linux 目录配置
4.1 Linux 目录配置的依据-FHS
- 根目录的意义与内容:根目录与启动、还原、系统修复等操作有关。根目录所在分区应该越小越好,且应用程序所安装的软件最好不要与根目录放在同一个分区内,保持根目录越小越好。如此不但性能较佳,根目录所在的文件系统也较不容易发生问题。
目录 | 应放置文件内容 |
---|---|
第一部分 | FHS要求必须存在的目录 |
/bin | 放置的是在单人维护模式下还能被使用的命令,主要有:cat、chmod、chown、date、mv、mkdir、cp、bash等常用命令 |
/boot | 放置启动会使用到的文件,包括 LInux 内核文件以及启动选项与启动所需配置文件等。Linux 内核常用文件名为:vmlinuz。若使用的是grub2启动引导程序,则还会存在/boot/grub2/这个目录。 |
/dev | 放置的是所有设备与接口设备。读写这个目录下面的某个文件就等于读写某个设备,比较重要的文件有/dev/null、/dev/zero、/dev/tty、/dev/loop*、/dev/sd*等 |
/etc | 系统主要的配置文件几乎都放在这个目录中,例如人员的账号密码文件、各种服务的启动文件等。FHS 建议不要放置可执行文件在此目录。比较重要的文件有:/etc/modprobe.d/、/etc/passwd、/etc/fstab、/etc/issue等。另外FHS还规范几个重要的目录最好要存在/etc/目录下: * /etc/opt(必要):这个目录放置第三方辅助软件 /opt 的相关配置文件 * /etc/X11(建议):与 X Window 有关的个汇总配置文件都在这里,其中xorg.conf是X Server的配置文件 * /etc/sgml/(建议):与 SGML 格式有关的各项配置文件 * /etc/xml(建议):与 XML 格式有关的各项配置文件 |
/lib | 放置的是在启动时会用到的函数库以及在/bin或/sbin下面的命令会调用的函数库。FSH要求下面的目录必须要存在: * /lib/modules/:放置可抽换式的内核相关模块(驱动程序) |
/media | 放置的是可删除的设备,包括软盘、光盘、DVD等设备都暂时挂在于此。常见的文件名有:/media/floppy、/media/cdrom等 |
/mnt | 放置的是暂时挂载某些额外的设备。早期本目录的作用同/media,现暂时用来挂载 |
/opt | 放置第三方辅助软件。 |
/run | 放置系统启动后所产生的各项信息。 |
/sbin | 放置启动过程中所需要的启动、修复、还原系统等命令。 |
/srv | 存放一些网络服务所产生的数据。 |
/tmp | 让一般用户或是正在执行的程序暂时放置文件的地方。 |
/usr | 第二层 FHS 设置。是linux系统核心所在,包含了所有的共享文件。 |
/var | 第二层 FHS 设置,主要存放变动性的数据。 |
第二部分 | FHS建议可以存在的目录 |
/home | 系统默认的用户家目录。在新增一个一般用户账号时,默认的用户家目录都会规范到这里来,比较重要的是家目录有两种代号: * ∼ \sim ∼:代表目前这个用户的家目录 * ∼ \sim ∼dmtsai:代表 dmtsai 的家目录 |
/lib | 用来存放与/lib不同格式的二进制函数库,例如支持 64 位的 /lib64 函数库等。 |
/root | 系统管理员的家目录,之所以放在这里,是因为如果进入单人维护模式而仅挂载根目录时,该目录就能拥有 root 的家目录。 |
第三部分 | 其它比较重要的目录 |
/lost+found | 使用标准的ext2、ext3、ext4文件系统格式才会产生的一个目录,目的在于当文件系统发生错误时,将一些遗失的片段放置到这个目录下;如果使用的是xfs文件系统,则不会存在这个目录。 |
/proc | 这个目录本身是一个虚拟文件系统,存放的数据都是在内存当中的,例如:系统内核、进程信息、外接设备的状态及网络状态等。因为这个目录下的数据都是在内存当中,所以本身不占任何硬盘空间。比较重要的文件如:/proc/cpuinfo、/proc/dma、/proc/interrupts、/proc/ioports、/proc/net/*等。 |
/sys | 也是一个虚拟文件系统,主要也是记录内核与系统硬件信息相关的内容。包括目前已加载的内核模块与内核检测到的硬件设备信息等,这个目录同样不占硬盘容量。 |
- /usr的意义与内容:/usr 里面存放的数据属于可分享与不可变动,主要存放操作系统软件资源。这个目录会占用最多的硬盘容量。
目录 | 应放置文件内容 |
---|---|
第一部分 | FHS要求必须存在的目录 |
/usr/bin/ | 存放所有的用户命令和/bin的链接文件。FHS要求在此目录下不应该有子目录。 |
/usr/lib/ | 基本上与/lib功能相同。 |
/usr/local/ | 存放本地安装的软件。 |
/usr/sbin/ | 非系统正常运行所需要的系统命令,最常见的就是某些网络服务器软件的服务命令(daemon)。 |
/usr/share/ | 主要放置只读的数据文件,当然也包括共享文件。常见的子目录有: * /usr/share/man:在线帮助文件 * /usr/share/doc:软件的说明文档 * /usr/share/zoneinfo:与时区有关的时区文件 |
第二部分 | FHS建议可以存在的目录 |
/usr/games/ | 存放与游戏相关的数据。 |
/usr/include/ | 存放 C/C++ 等程序语言的头文件与包含文件。当我们以Tarball方式(*.tar.gz的方式安装软件)安装某些程序时,会使用到里面的许多文件。 |
/usr/libexec/ | 存放一般用户不常用的执行文件或脚本等。例如大部分的 X Windows 下面的操作命令。 |
/usr/lib/ | 与 /lib 功能相同,因此目前 /lib 就是链接到此目录中。 |
/usr/src/ | 存放源代码。至于内核源代码建议放置到 /usr/src/Linux/ 目录下。 |
- /var 的意义与内容:/var 目录主要针对经常性变动的文件,包括缓存、日志文件以及某些软件运行所产生的文件。
目录 | 应放置文件内容 |
---|---|
第一部分 | FHS要求必须存在的目录 |
/var/cache/ | 应用程序运行过程中会产生的一些缓存。 |
/var/lib/ | 存放程序执行过程中需要用到的数据文件。在此目录下各软件应该有各自的目录。 |
/var/lock/ | 存放上锁的文件。某些设备或是文件资源一次只能被一个应用程序使用,若同时又两个程序使用该设备,就可能产生一些错误,因此就得将该设备上锁。 |
/var/log/ | 存放日志文件。比较重要的文件有:/var/log/messages、/var/log/wtmp(记录登录信息)等。 |
/var/mail/ | 存放个人电子邮箱。 |
/var/run/ | 存放某些程序或是服务启动后产生的 PID。 |
/var/spool/ | 存放一些队列数据,这些数据被使用后会被删除。举例来说:系统收到新邮件会放到/var/spool/mail/中,但用户收下该邮件后该封信原则上就会被删除,邮件如果暂时寄不出去会被放到/var/spool/mqueue/中,等到被送出后就被删除。 |
相关文章:

01-Linux-磁盘分区与目录配置
1. 主引导纪录和磁盘分区表 1.1 MBR分区表 启动引导程序记录区与分区表都放在磁盘的第一个扇区(512B) 由于分区表仅占 64B,因此最多能有四组记录区,每组记录区记录了该区段的起始与结束的柱面号码。 缺点如下: 操作…...

连接器信号完整性仿真教程 二
在连接器信号完整性仿真教程一中Step by Step演示了如何进行连接器信号完整性仿真,看完这片博文后应该可以做类似产品的仿真。如果说,看了这篇博文就学会了连接器信号完整性仿真,那就有点过了。有人也许会说信号完整性仿真难学,不…...

基于深度学习的图片上色(Opencv,Pytorch,CNN)
文章目录 1. 前言2.图像格式(RGB,HSV,Lab)2.1 RGB2.2 hsv2.3 Lab 3. 生成对抗网络(GAN)3.1 生成网络(Unet)3.2 判别网络(resnet18) 4. 数据集5. 模型训练与预…...

Python爬虫
目录 爬虫总览 准备工作 一、爬虫基础 1、爬虫前导 1.1、爬虫介绍 1.2、HTTP与HTTPS 1.3、URL 1.4、开发工具 1.5、爬虫流程 2、requests模块 2.1、简介 2.2、安装 2.3、发送请求 二、爬虫 爬虫总览 准备工作 一、爬虫基础 1、爬虫前导 1.1、爬虫介绍 概念&…...

python基础案例题:进制转换、字符串加密的实现、猜拳游戏、多种方法计算π
目录 前言1.进制转换2.字符串加密的实现3.猜拳游戏4.多种方法计算π尾语 💝 前言 嗨喽~大家好呀,这里是魔王呐 ❤ ~! 1.进制转换 功能: 获取十进制整数的二进制串,相当于内置函数bin。 算法分析: 对2辗转相除&…...

Spring Boot入门与进阶
本文将为您详细讲解Spring Boot的入门与进阶知识,包括Spring Boot的简介、环境搭建、基本功能以及高级特性,并配以丰富的代码示例,帮助大家快速掌握Spring Boot。 一、Spring Boot简介 Spring Boot是基于Spring框架的一种轻量级、快速开发的…...

servlet(1)—javaEE
文章目录 1.认识servlet2.使用servlet2.1创建项目2.2引入依赖2.3创建目录2.4编写代码2.5打包2.6部署2.7运行2.8验证 3.开发步骤4.部署方式4.1打包4.2安装插件 5.访问出错的情况5.1 4045.2 4055.3其他 6.servlet的三大生命周期方法7.servlet api7.1HttpServlet7.2HttpServletReq…...

定制 Jenkins 镜像说明
Dockerfile模板示例 FROM jenkins/jenkins:2.332.4-jdk8 MAINTAINER jason USER root RUN sed -i ‘s/deb.debian.org/mirrors.aliyun.com/g’ /etc/apt/sources.list && apt update && apt install ca-certificates tzdata -y && rm -rf /var/cach…...

【离散数学】测试五 图论
1. n层正则m叉树一共有()片树叶。 A. nm B. mn C. mn 正确答案: B 2. 下图是一棵最优二叉树 A. 对 B. 错 正确答案: B 3. 要构造权为1,4,9,16,25,36,49,64,81,100一棵最优二叉树,则必须先构造权为5,9,16,25,36,49,64,81,100一棵最优二叉树. A. 对 B. 错 …...

根据cadence设计图学习硬件知识 day03 了解 一些芯片 和 数据手册下载的地方
1. MT53D512M32D2DS 芯片(动态随机存取存储器)的技术指标 1.1 16n Prefetch (预加载) (n --芯片位宽) DDR 体系 链接:DDR扫盲—-关于Prefetch(预取)与Burst(突发)的深入讨论_ddr prefetch_qq_25814297-npl的博客-CSDN博客 1.2 每个通…...

计算机组成原理——第五章中央处理器(中)
辞别再无相见月,终是一人度春秋 文章目录 前言5.4.1 硬布线控制器的设计5.4.2 微程序控制器的基本原理5.4.3 微指令的设计5.4.4 微程序控制单元的设计 前言 本文主要写的是控制器的设计,控制器的设计分为硬部件控制器(就是用纯硬件的方式来实现的一种控…...

ImageJ 用户手册——第三部分(ImageJ扩展)
ImageJ 用户手册-第三部分 ImageJ扩展14. 宏指令(Macros)宏程序设计 15. 脚本( Scripts)JavaScript编程 16. 插件( Plugins)开发ImageJ插件 17. 用其他语言编写脚本Fiji脚本编辑器 18. 从命令行运行ImageJ …...

RK3399平台开发系列讲解(PCI/PCI-E)PCIE相关配置说明
🚀返回专栏总目录 文章目录 一、DTS 配置二、menuconfig 配置三、cmdline 配置沉淀、分享、成长,让自己和他人都能有所收获!😄 📢 本篇将介绍在使用 RK3399 平台 PCIE 时候的配置。 一、DTS 配置 ep-gpios = <&gpio3 13 GPIO_ACTIVE_HIGH>; 此项是设置 PCIe…...

NAS私有云存储 - 搭建Nextcloud私有云盘并公网远程访问
文章目录 摘要视频教程1. 环境搭建2. 测试局域网访问3. 内网穿透3.1 ubuntu本地安装cpolar3.2 创建隧道3.3 测试公网访问 4 配置固定http公网地址4.1 保留一个二级子域名4.1 配置固定二级子域名4.3 测试访问公网固定二级子域名 转载自内网穿透工具的文章:使用Nextcl…...

Revit问题:墙体被楼板剪切及材质库被锁定问题
一、Revit 墙体被楼板剪切怎么办? 建模的时候画的墙总是到楼板就停了,这是为什么?明明顶部约束到标高2了,这种情况如何解决? 首先来分析问题产生的原因是,我们在绘制楼板的时候选择了用楼板剪切重复部分的墙体。 解决…...

CPU信息查询与CPU测试方法总结
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请征得博主同意并附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/mainmaster/article/details/130267689 未经允许不能拷贝本文章内容发布到其他相关载体上。 CPU信息查询 我们知道在嵌入式系统…...

ChatGPT时代,我们可能站到了自然语言编程的大门口
ChatGPT大火,我现在有种感觉:我们可能站到了自然语言编程的门口,一脚下去,也许能把门踹开。 当然,也可能会踢到一块铁板。 回顾我们的编程之路,基本上就是一个编程门槛不断降低的历史。 最早的一批前辈们…...

深入理解AMQP协议
一.AMQP 是什么 AMQP(Advanced Message Queuing Protocol, 高级消息队列协议)是一个提供统一消息服务的 应用层标准高级 消息队列协议,是 应用层协议的一个 开放标准,为面向消息的中间件设计,是一个进程间传递 异步消息…...

大型体检管理系统源码:适用于大中型医院或独立体检中心
一套专业的体检管理系统源码,是医院、体检中心等单位开展体检业务的得力助手。它将以往人工操作的健康体检过程所得到信息转换成全信息化的电脑管理,使体检过程更为流畅、更有条理,更加便于管理,从而实现体检业务管理的自动化、信…...

ACM 1000 | 简单的a+b
文章目录 0x00 前言 0x01 题目描述 0x02 问题分析 0x03 代码设计 0x04 完整代码 0x05 运行效果 0x06 参考文献 0x07 总结 0x00 前言 C 语言网不仅提供 C 语言,还包括 C 、 java 、算法与数据结构等课程在内的各种入门教程、视频录像、编程经验、编译器教程及…...

系统分析师选择题笔记
目录 1、知识产权与标准化 1.1 保护范围与对象(★★★★) 1.2 保护期限(★) 1.3 知识产权人确定(★★★) 1.4 侵权判断(★★★) 1.5 标准的分类(★) 1.6 标准代号的识别(★) 2、系统配置与性能评价 2.1 系统性能概述 2.2 系统性能(性能指标)(★…...

MySQL隐式类型转换
当运算符与不同类型的操作数一起使用时,会发生类型转换以使操作数兼容。有些转换是隐式发生的。例如,MySQL会根据需要自动将字符串转换为数字,反之亦然。 转换规则 如果一个或两个参数都为NULL,则比较结果为NULL 。但是相等比较…...

IT知识百科:什么是SSID?
一、什么是SSID SSID(Service Set Identifier)是无线网络中的一个重要概念,它是一个用于标识无线局域网(WLAN)的名称。SSID可以看作是无线网络的名称,类似于有线网络中的网络名称或者路由器的名称。在无线…...

OpenAI-ChatGPT最新官方接口《从0到1生产最佳实例》全网最详细中英文实用指南和教程,助你零基础快速轻松掌握全新技术(十一)(附源码)
Production Best Practices 生产最佳实例 前言Introduction 导言Setting up your organization 设置您的组织Managing billing limits 管理计费限额API keys API密钥Staging accounts 演示账户 Building your prototype 构建您的原型Additional tips 其它技巧 Techniques for i…...

2023 IT市场权威榜单|美创数据库防火墙斩获“新一代信息技术创新产品”
4月20日,由赛迪顾问主办的“2023 IT市场权威榜单”评选结果正式发布,美创数据库防火墙斩获新一代信息技术创新产品! 美创数据库防火墙是一款抵御并消除由于应用程序业务逻辑漏洞或者缺陷所导致的数据库安全问题的专业级数据库安全产品&#x…...

30个超级有用的JavaScript单行代码
在这篇文章中,我列出了一个系列的 30 个 JavaScript 单行代码,它们在使用 vanilla js(≥ ES6)进行开发时非常有用。它们也是使用该语言在最新版本中为我们提供的所有功能来解决问题的优雅方式。 我将它们分为以下5大类࿱…...

【GitLab私有仓库】在Linux上用Gitlab搭建自己的私有库并配置cpolar内网穿透
前言 GitLab 是一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上搭建起来的Web服务。 Gitlab是被广泛使用的基于git的开源代码管理平台, 基于Ruby on Rails构建, 主要针对软件开发过程中产生的代码和文档进行管理, Gitlab主要针对…...

诊断CAPL自动化(1)—— CANoe自带的诊断工程分析
🍅 我是蚂蚁小兵,专注于车载诊断领域,尤其擅长于对CANoe工具的使用🍅 寻找组织 ,答疑解惑,摸鱼聊天,博客源码,点击加入👉【相亲相爱一家人】🍅 玩转CANoe,博客目录大全,点击跳转👉 📘前言 🍅 学习CANoe,官方的实例工程就是最好的学习模板,对于初学者,…...

【dp】最长递增子序列
文章目录 方法一:动态规划方法二:贪心 二分查找构造最长递增子序列 方法一:动态规划 dp[i]:末尾元素为arr[i]的最长子序列的长度 从0遍历到i - 1,若遍历到的元素小于当前值arr[i],表示当前值arr[i]可以和…...

docker容器:Docker-Compose
目录 一、Docker-Compose 1、Docker-Compose使用场景 2、Docker-Compose简介 3、Docker-Compose安装部署 4、YML文件编写注意事项 5、Compose配置常用字段 6、 Docker Compose 常用命令 7、Docker Compose 文件结构 8、docker Compose撰写nginx 镜像 9、docker Compos…...