《鸟哥的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

相关文章

Linux内核参数配置与验证详细指南

《Linux内核参数配置与验证详细指南》在Linux系统运维和性能优化中,内核参数(sysctl)的配置至关重要,本文主要来聊聊如何配置与验证这些Linux内核参数,希望对大家有一定的帮助... 目录1. 引言2. 内核参数的作用3. 如何设置内核参数3.1 临时设置(重启失效)3.2 永久设置(重启仍生效

kali linux 无法登录root的问题及解决方法

《kalilinux无法登录root的问题及解决方法》:本文主要介绍kalilinux无法登录root的问题及解决方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,... 目录kali linux 无法登录root1、问题描述1.1、本地登录root1.2、ssh远程登录root2、

Linux ls命令操作详解

《Linuxls命令操作详解》通过ls命令,我们可以查看指定目录下的文件和子目录,并结合不同的选项获取详细的文件信息,如权限、大小、修改时间等,:本文主要介绍Linuxls命令详解,需要的朋友可... 目录1. 命令简介2. 命令的基本语法和用法2.1 语法格式2.2 使用示例2.2.1 列出当前目录下的文

Linux中的计划任务(crontab)使用方式

《Linux中的计划任务(crontab)使用方式》:本文主要介绍Linux中的计划任务(crontab)使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、前言1、linux的起源与发展2、什么是计划任务(crontab)二、crontab基础1、cro

Linux换行符的使用方法详解

《Linux换行符的使用方法详解》本文介绍了Linux中常用的换行符LF及其在文件中的表示,展示了如何使用sed命令替换换行符,并列举了与换行符处理相关的Linux命令,通过代码讲解的非常详细,需要的... 目录简介检测文件中的换行符使用 cat -A 查看换行符使用 od -c 检查字符换行符格式转换将

Linux系统配置NAT网络模式的详细步骤(附图文)

《Linux系统配置NAT网络模式的详细步骤(附图文)》本文详细指导如何在VMware环境下配置NAT网络模式,包括设置主机和虚拟机的IP地址、网关,以及针对Linux和Windows系统的具体步骤,... 目录一、配置NAT网络模式二、设置虚拟机交换机网关2.1 打开虚拟机2.2 管理员授权2.3 设置子

Linux系统中卸载与安装JDK的详细教程

《Linux系统中卸载与安装JDK的详细教程》本文详细介绍了如何在Linux系统中通过Xshell和Xftp工具连接与传输文件,然后进行JDK的安装与卸载,安装步骤包括连接Linux、传输JDK安装包... 目录1、卸载1.1 linux删除自带的JDK1.2 Linux上卸载自己安装的JDK2、安装2.1

Linux卸载自带jdk并安装新jdk版本的图文教程

《Linux卸载自带jdk并安装新jdk版本的图文教程》在Linux系统中,有时需要卸载预装的OpenJDK并安装特定版本的JDK,例如JDK1.8,所以本文给大家详细介绍了Linux卸载自带jdk并... 目录Ⅰ、卸载自带jdkⅡ、安装新版jdkⅠ、卸载自带jdk1、输入命令查看旧jdkrpm -qa

Linux samba共享慢的原因及解决方案

《Linuxsamba共享慢的原因及解决方案》:本文主要介绍Linuxsamba共享慢的原因及解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录linux samba共享慢原因及解决问题表现原因解决办法总结Linandroidux samba共享慢原因及解决

新特性抢先看! Ubuntu 25.04 Beta 发布:Linux 6.14 内核

《新特性抢先看!Ubuntu25.04Beta发布:Linux6.14内核》Canonical公司近日发布了Ubuntu25.04Beta版,这一版本被赋予了一个活泼的代号——“Plu... Canonical 昨日(3 月 27 日)放出了 Beta 版 Ubuntu 25.04 系统镜像,代号“Pluc