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 、算法与数据结构等课程在内的各种入门教程、视频录像、编程经验、编译器教程及…...
基于大模型的 UI 自动化系统
基于大模型的 UI 自动化系统 下面是一个完整的 Python 系统,利用大模型实现智能 UI 自动化,结合计算机视觉和自然语言处理技术,实现"看屏操作"的能力。 系统架构设计 #mermaid-svg-2gn2GRvh5WCP2ktF {font-family:"trebuchet ms",verdana,arial,sans-…...

调用支付宝接口响应40004 SYSTEM_ERROR问题排查
在对接支付宝API的时候,遇到了一些问题,记录一下排查过程。 Body:{"datadigital_fincloud_generalsaas_face_certify_initialize_response":{"msg":"Business Failed","code":"40004","sub_msg…...

Docker 运行 Kafka 带 SASL 认证教程
Docker 运行 Kafka 带 SASL 认证教程 Docker 运行 Kafka 带 SASL 认证教程一、说明二、环境准备三、编写 Docker Compose 和 jaas文件docker-compose.yml代码说明:server_jaas.conf 四、启动服务五、验证服务六、连接kafka服务七、总结 Docker 运行 Kafka 带 SASL 认…...

聊聊 Pulsar:Producer 源码解析
一、前言 Apache Pulsar 是一个企业级的开源分布式消息传递平台,以其高性能、可扩展性和存储计算分离架构在消息队列和流处理领域独树一帜。在 Pulsar 的核心架构中,Producer(生产者) 是连接客户端应用与消息队列的第一步。生产者…...
解锁数据库简洁之道:FastAPI与SQLModel实战指南
在构建现代Web应用程序时,与数据库的交互无疑是核心环节。虽然传统的数据库操作方式(如直接编写SQL语句与psycopg2交互)赋予了我们精细的控制权,但在面对日益复杂的业务逻辑和快速迭代的需求时,这种方式的开发效率和可…...
鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个医院挂号小程序
一、开发准备 环境搭建: 安装DevEco Studio 3.0或更高版本配置HarmonyOS SDK申请开发者账号 项目创建: File > New > Create Project > Application (选择"Empty Ability") 二、核心功能实现 1. 医院科室展示 /…...

MMaDA: Multimodal Large Diffusion Language Models
CODE : https://github.com/Gen-Verse/MMaDA Abstract 我们介绍了一种新型的多模态扩散基础模型MMaDA,它被设计用于在文本推理、多模态理解和文本到图像生成等不同领域实现卓越的性能。该方法的特点是三个关键创新:(i) MMaDA采用统一的扩散架构…...

srs linux
下载编译运行 git clone https:///ossrs/srs.git ./configure --h265on make 编译完成后即可启动SRS # 启动 ./objs/srs -c conf/srs.conf # 查看日志 tail -n 30 -f ./objs/srs.log 开放端口 默认RTMP接收推流端口是1935,SRS管理页面端口是8080,可…...
Python爬虫(二):爬虫完整流程
爬虫完整流程详解(7大核心步骤实战技巧) 一、爬虫完整工作流程 以下是爬虫开发的完整流程,我将结合具体技术点和实战经验展开说明: 1. 目标分析与前期准备 网站技术分析: 使用浏览器开发者工具(F12&…...

如何在最短时间内提升打ctf(web)的水平?
刚刚刷完2遍 bugku 的 web 题,前来答题。 每个人对刷题理解是不同,有的人是看了writeup就等于刷了,有的人是收藏了writeup就等于刷了,有的人是跟着writeup做了一遍就等于刷了,还有的人是独立思考做了一遍就等于刷了。…...