《鸟哥的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 rm命令误操作的多场景防护方案与实践

《防止Linuxrm命令误操作的多场景防护方案与实践》在Linux系统中,rm命令是删除文件和目录的高效工具,但一旦误操作,如执行rm-rf/或rm-rf/*,极易导致系统数据灾难,本文针对不同场景... 目录引言理解 rm 命令及误操作风险rm 命令基础常见误操作案例防护方案使用 rm编程 别名及安全删除

Linux下MySQL数据库定时备份脚本与Crontab配置教学

《Linux下MySQL数据库定时备份脚本与Crontab配置教学》在生产环境中,数据库是核心资产之一,定期备份数据库可以有效防止意外数据丢失,本文将分享一份MySQL定时备份脚本,并讲解如何通过cr... 目录备份脚本详解脚本功能说明授权与可执行权限使用 Crontab 定时执行编辑 Crontab添加定

使用docker搭建嵌入式Linux开发环境

《使用docker搭建嵌入式Linux开发环境》本文主要介绍了使用docker搭建嵌入式Linux开发环境,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面... 目录1、前言2、安装docker3、编写容器管理脚本4、创建容器1、前言在日常开发全志、rk等不同

linux系统上安装JDK8全过程

《linux系统上安装JDK8全过程》文章介绍安装JDK的必要性及Linux下JDK8的安装步骤,包括卸载旧版本、下载解压、配置环境变量等,强调开发需JDK,运行可选JRE,现JDK已集成JRE... 目录为什么要安装jdk?1.查看linux系统是否有自带的jdk:2.下载jdk压缩包2.解压3.配置环境

Linux搭建ftp服务器的步骤

《Linux搭建ftp服务器的步骤》本文给大家分享Linux搭建ftp服务器的步骤,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录ftp搭建1:下载vsftpd工具2:下载客户端工具3:进入配置文件目录vsftpd.conf配置文件4:

Linux实现查看某一端口是否开放

《Linux实现查看某一端口是否开放》文章介绍了三种检查端口6379是否开放的方法:通过lsof查看进程占用,用netstat区分TCP/UDP监听状态,以及用telnet测试远程连接可达性... 目录1、使用lsof 命令来查看端口是否开放2、使用netstat 命令来查看端口是否开放3、使用telnet

Linux系统管理与进程任务管理方式

《Linux系统管理与进程任务管理方式》本文系统讲解Linux管理核心技能,涵盖引导流程、服务控制(Systemd与GRUB2)、进程管理(前台/后台运行、工具使用)、计划任务(at/cron)及常用... 目录引言一、linux系统引导过程与服务控制1.1 系统引导的五个关键阶段1.2 GRUB2的进化优

Linux查询服务器 IP 地址的命令详解

《Linux查询服务器IP地址的命令详解》在服务器管理和网络运维中,快速准确地获取服务器的IP地址是一项基本但至关重要的技能,下面我们来看看Linux中查询服务器IP的相关命令使用吧... 目录一、hostname 命令:简单高效的 IP 查询工具命令详解实际应用技巧注意事项二、ip 命令:新一代网络配置全

linux安装、更新、卸载anaconda实践

《linux安装、更新、卸载anaconda实践》Anaconda是基于conda的科学计算环境,集成1400+包及依赖,安装需下载脚本、接受协议、设置路径、配置环境变量,更新与卸载通过conda命令... 目录随意找一个目录下载安装脚本检查许可证协议,ENTER就可以安装完毕之后激活anaconda安装更

Linux查询服务器系统版本号的多种方法

《Linux查询服务器系统版本号的多种方法》在Linux系统管理和维护工作中,了解当前操作系统的版本信息是最基础也是最重要的操作之一,系统版本不仅关系到软件兼容性、安全更新策略,还直接影响到故障排查和... 目录一、引言:系统版本查询的重要性二、基础命令解析:cat /etc/Centos-release详