本文主要是介绍《鸟哥的Linux私房菜》chapter3 20190118,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
文章目录
- 主机规划与磁盘分区
- 各硬件装置在linux中的文件名
- 磁盘连接方式和文件名的关系
- 磁盘的组成
- 磁盘分区表
- 开机流程和MBR
主机规划与磁盘分区
各硬件装置在linux中的文件名
硬件装置 | 文件名 |
---|---|
IDE接口硬盘 | /dev/hd[a-d] |
SCSI/SATA/USB接口硬盘 | /dev/sd[a-p] |
软盘 | /dev/fd[0-1] |
打印机 | 25针:/dev/lp[0-2] USB:/dev/usb/lp[0-15] |
鼠标 | USB:/dev/usb/mouse[0-15] PS2:/dev/psaux |
当前DVDROM/CDROM | /dev/cdrom |
当前鼠标 | /dev/mouse |
磁带 | IDE:/dev/ht0 SCSI:/dev/st0 |
磁盘连接方式和文件名的关系
拿IDE接口装置来举例,一根IDE电缆可以连接2个IDE接口磁盘,其中一个为master,另一个为slave。而通常主机上有2个IDE接口,可以连接2条IDE电缆,所以一个主机一般可以连接4个磁盘,其中2个master磁盘,2个slave磁盘。此时磁盘和文件名的关系如下表
IDE(jump) | master | slave |
---|---|---|
IDE1(primary) | /dev/hda | /dev/hdb |
IDE2(secondary) | /dev/hdc | /dev/hdd |
那么假设我有一台主机,一个磁盘连接在第二个IDE接口的master上,该磁盘设备在linux中对应的文件名就应该是/dev/hdc
而SATA接口磁盘在linux中的命名是以被系统侦测到的顺序来命名的。
假如我有2个SATA接口磁盘,1个USB接口磁盘,分别插在主机的SATA1,SATA5和USB插槽中,那么这三个磁盘的文件名应该是:
SATA1插槽上的磁盘:/dev/sda
SATA5插槽上的磁盘:/dev/sdb
USB(开机完成后才被系统侦测到):/dev/sdc
磁盘的组成
磁盘的组成如图所示
磁盘由磁盘盘碟,主轴马达,机械手臂,磁头组成。磁盘盘碟上有无数个扇区和磁柱。每个扇区为512bytes。磁柱是磁盘的最小组成单位。
一个磁盘的第一个扇区最重要。第一扇区中存储了MBR和分割表
- MBR(Master boot record):存储开机管理程序的地方,446bytes
- 分割表(partation table):存储磁盘的分区信息,64bytes
疑问:第一扇区中剩下的2bytes去哪了
开机时,系统会主动去读取MBR中的内容,以确定如何开机
注意:MBR中存储的是开机管理程序,并不是操作系统,而是操作系统启动前的引导程序
磁盘分区表
磁盘为什么要分区?
数据安全性:分区之后,当我们需要重整某个分区时,只需要将该分区的数据转移到其他分区,不会发生数据丢失的情况
操作数据效率高
数据存储在特定分区中,系统查找该数据时,就会在该分区的开始磁柱和结束磁柱之间找,大大缩减了查找的范围,提高效率
磁盘分区表在磁盘的第一扇区中,只占有64bytes的容量,对磁盘分区的过程,其实就是在磁盘分区表中设置一下。
开始磁柱和结束磁柱是文件系统的最小单位,也是分区槽的最小单位。磁盘分区表分成4组记录区,每组记录区记录了该区段开始磁柱和结束磁柱号码,作为一个分区。如图所示
如果该磁盘装置文件名为/dev/sda,那么磁盘上的4个分区文件名应该为
/dev/sda1
/dev/sda2
/dev/sda3
/dev/sda4
我们在磁盘文件名后加上数字来表示该磁盘上的第几分区。假如该磁盘的第一分区起始磁柱为1-100,那么写入第一分区的数据将会被记录在磁盘磁柱号码为1-100的磁柱之间。
分区表只能记录4笔分区记录,分区可以是主分区(primary partition),也可以是扩展分区(extended partition)。扩展分区指向其他扇区,可以使系统读取到存储在其他扇区的分区信息(换句话说扩展分区就像一个指针,有了扩展分区,我们就可以在额外的扇区存储分区信息)。
- 主分区+扩展分区的数量不能超过4个。
- 扩展分区最多只能有1个。
- 扩展分区无法被格式化。
- 逻辑分区是在扩展分区内进行分区的。
- 所有逻辑分区容量之和应小于等于扩展分区容量,但逻辑分区的数量不受限制。
在linux系统中,逻辑分区的设备文件号从5开始,IDE硬盘最多有59个逻辑分区(hda5~hda63),SATA硬盘最多有11个逻辑分区(sda5~sda15)
逻辑分区和逻辑分区可以互相整合,但逻辑分区和主分区不能互相整合。
开机流程和MBR
补充说明:
1.BIOS,这里的BIOS不是主板的意思,而是一个嵌入到主板的软件程序,被称为韧体
2.CMOS,记录各项硬件参数且嵌入在主板上的存储器
(这里我有疑问:CMOS如何知道主机的硬件参数,如果是组装机呢)
BIOS是开机时系统会去主动执行的第一个程序,开机时,BIOS会去分析主机的存储设备,然后根据用户的设定去访问能开机的那个硬盘,读取该硬盘第一个扇区的MBR。MBR中存储了基本的开机管理程序,该程序会去硬盘内寻找操作系统的核心档案,找到核心档案后,核心档案开始运行,操作系统启动。
这里要注意两个概念
MBR:用来放置开机管理程序(boot loader)的区块
开机管理程序(boot loader):寻找核心档案的程序
开机管理程序(boot loader)主要有以下功能
- 提供选单:用户可以选择不同的开机项目(这是多重引导的功能)
- 载入核心档案:载入操作系统的核心档案,启动系统
- 转交给其他开机管理程序:将开机管理功能转交给其他开机管理程序负责
一个系统中可以有多个开机管理程序,开机管理程序不一定要放在第一扇区的MBR中,也可以安装在每个分区的启动扇区。
每个分区都有自己的启动扇区。假如第一第二分区分别安装了Windows和linux系统,而MBR中安装的开机管理程序两个操作系统都能识别,那么开机的时候系统是怎样一个运行流程呢?
解:MBR位于磁盘的第一个扇区,当我们开机的时候,MBR内的开机管理程序运行,直接访问位于第一分区的Windows操作系统核心档案,同时访问位于第二分区的启动扇区,而第二分区的启动扇区可以直接访问第二分区的Linux系统
如图所示
MBR提供两个选单
选项一:加载Windows系统核心档案
选项二:将开机管理程序移交给第二分区的启动扇区
注意以下几点:
- 每个分区都有自己的启动扇区
- 系统核心档案是放置在分区内的
- 每个开机管理程序只能认识自己分区内的核心档案和其他开机管理程序
- 开机管理程序可以直接指向或间接把管理权移交给另一个开机管理程序
question:如果要安装多重引导,最好先装windows,再装linux,为什么?
Linux在安装的时候,可以选择将开机管理程序安装在MBR或者分区的第一扇区,我们可以手动设置开机选单,在linux的开机管理程序中加入Windows开机的选项。
Windows在安装的时候,会主动覆盖掉MBR和自己分区的启动扇区,我们没有选择的机会,而且它没有给我们自己选单的功能。
文件系统和目录树的挂载关系
文件系统是挂载在目录树下的。什么是挂载?我们把磁盘分区设备,比如说/dev/sda1挂载在/home目录下,也就是说进入/home目录就可以读取到磁盘/dev/sda1这个分区的内容了。而我们在/home目录下存储的所有档案,其数据都被存储在/dev/sda1这个分区内,在磁盘中位于该分区开始磁柱和结束磁柱之间。
如何看档案A在哪个分区中
假如A的完整档案名为/home/huyan/test/A,/目录下挂在了磁盘的第一分区/dev/sda1,/home目录下挂在了磁盘的第三分区/dev/sda3,我们使用反向追踪法,最接近A的挂在点是/home,而不是/,所以档案A是被存储在磁盘的第三分区中的。
主机的服务规划与硬件的关系
工作中可能会需要同时用到Windows系统和Linux系统,因此我们需要在一台主机上安装两个操作系统,这样就会用到之前提到的开机流程和多重引导了。
这篇关于《鸟哥的Linux私房菜》chapter3 20190118的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!