《鸟哥的Linux私房菜》chapter3 20190118

2024-05-30 05:32

本文主要是介绍《鸟哥的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)masterslave
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的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1015699

相关文章

jdk21下载、安装详细教程(Windows、Linux、macOS)

《jdk21下载、安装详细教程(Windows、Linux、macOS)》本文介绍了OpenJDK21的下载地址和安装步骤,包括Windows、Linux和macOS平台,下载后解压并设置环境变量,最... 目录1、官网2、下载openjdk3、安装4、验证1、官网官网地址:OpenJDK下载地址:Ar

linux本机进程间通信之UDS详解

《linux本机进程间通信之UDS详解》文章介绍了Unix域套接字(UDS)的使用方法,这是一种在同一台主机上不同进程间通信的方式,UDS支持三种套接字类型:SOCK_STREAM、SOCK_DGRA... 目录基础概念本机进程间通信socket实现AF_INET数据收发示意图AF_Unix数据收发流程图A

linux环境openssl、openssh升级流程

《linux环境openssl、openssh升级流程》该文章详细介绍了在Ubuntu22.04系统上升级OpenSSL和OpenSSH的方法,首先,升级OpenSSL的步骤包括下载最新版本、安装编译... 目录一.升级openssl1.官网下载最新版openssl2.安装编译环境3.下载后解压安装4.备份

linux打包解压命令方式

《linux打包解压命令方式》文章介绍了Linux系统中常用的打包和解压命令,包括tar和zip,使用tar命令可以创建和解压tar格式的归档文件,使用zip命令可以创建和解压zip格式的压缩文件,每... 目录Lijavascriptnux 打包和解压命令打包命令解压命令总结linux 打包和解压命令打

linux如何复制文件夹并重命名

《linux如何复制文件夹并重命名》在Linux系统中,复制文件夹并重命名可以通过使用“cp”和“mv”命令来实现,使用“cp-r”命令可以递归复制整个文件夹及其子文件夹和文件,而使用“mv”命令可以... 目录linux复制文件夹并重命名我们需要使用“cp”命令来复制文件夹我们还可以结合使用“mv”命令总

Linux使用cut进行文本提取的操作方法

《Linux使用cut进行文本提取的操作方法》Linux中的cut命令是一个命令行实用程序,用于从文件或标准输入中提取文本行的部分,本文给大家介绍了Linux使用cut进行文本提取的操作方法,文中有详... 目录简介基础语法常用选项范围选择示例用法-f:字段选择-d:分隔符-c:字符选择-b:字节选择--c

Linux使用nload监控网络流量的方法

《Linux使用nload监控网络流量的方法》Linux中的nload命令是一个用于实时监控网络流量的工具,它提供了传入和传出流量的可视化表示,帮助用户一目了然地了解网络活动,本文给大家介绍了Linu... 目录简介安装示例用法基础用法指定网络接口限制显示特定流量类型指定刷新率设置流量速率的显示单位监控多个

ElasticSearch+Kibana通过Docker部署到Linux服务器中操作方法

《ElasticSearch+Kibana通过Docker部署到Linux服务器中操作方法》本文介绍了Elasticsearch的基本概念,包括文档和字段、索引和映射,还详细描述了如何通过Docker... 目录1、ElasticSearch概念2、ElasticSearch、Kibana和IK分词器部署

Linux流媒体服务器部署流程

《Linux流媒体服务器部署流程》文章详细介绍了流媒体服务器的部署步骤,包括更新系统、安装依赖组件、编译安装Nginx和RTMP模块、配置Nginx和FFmpeg,以及测试流媒体服务器的搭建... 目录流媒体服务器部署部署安装1.更新系统2.安装依赖组件3.解压4.编译安装(添加RTMP和openssl模块

linux下多个硬盘划分到同一挂载点问题

《linux下多个硬盘划分到同一挂载点问题》在Linux系统中,将多个硬盘划分到同一挂载点需要通过逻辑卷管理(LVM)来实现,首先,需要将物理存储设备(如硬盘分区)创建为物理卷,然后,将这些物理卷组成... 目录linux下多个硬盘划分到同一挂载点需要明确的几个概念硬盘插上默认的是非lvm总结Linux下多