Linux

软件移植

如果一个操作系统适应了一套硬件,但是当新的硬件产品出现之后,这个操作系统就不适用了,所以我们又得去修改操作系统,这种概念就叫做软件移植。

可移植性

由于Linux是开源的操作系统,所有他的程序码可以被修改成适合在各种机器上面运行的,也就是Linux是具有“可移植性”。

Linux文件系统的重要概念

  1. 所有程序或系统设备都是文件
  2. 不管构建编辑器还是附属文件,所写的程序只有一个目的,且要有效的完成目标

linux distribution = kernel + softwares + Tools + 可完整安装的程序

distribution主要分为两大系统套件管理系统:

1.RPM方式安装软件的系统

2.Debian的dpkg方式安装软件的系统

RPM 软件管理DPKG 软件管理其他未分类
商业公司RHEL (Red Hat 公司) SuSE (Micro Focus)Ubuntu (Canonical Ltd.)
社群单位Fedora CentOS OpenSuSEDebian B2DGentoo

我们知道操作系统的主要目的是用来控制硬件的,那么主要控制硬件哪些功能呢:

  1. 输入输出控制
  2. 设备控制
  3. 进程管理
  4. 文件管理

所谓的多用户多任务是什么意思:

多用户:多个用户共同连接到同一个服务器,他们所处的环境不同但是可以共用服务器中的资源

多任务:在Linux环境下多个任务时,cpu可以同时进行多项工作,

主机规划与磁盘分区

Linux系统中所有的硬件设备文件都在 /dev 这个目录内

设备设备在Linux内的文件名
SCSI/SATA/USB硬盘机/dev/sd[a-p]
USB闪存盘/dev/sd[a-p] (与SATA相同)
VirtI/O界面/dev/vd[a-p] (用于虚拟机内)
软盘机/dev/fd[0-7]
打印机/dev/lp[0-2] (25针打印机) /dev/usb/lp[0-15] (USB 接口)
鼠标/dev/input/mouse[0-15] (通用) /dev/psaux (PS/2界面) /dev/mouse (当前鼠标)
CDROM/DVDROM/dev/scd[0-1] (通用) /dev/sr[0-1] (通用,CentOS 较常见) /dev/cdrom (当前 CDROM)
磁带机/dev/ht0 (IDE 界面) /dev/st0 (SATA/SCSI界面) /dev/tape (当前磁带)
IDE硬盘机/dev/hd[a-d] (旧式系统才有)

其中[]是指括号里的任意一个

windows是以磁盘进行分区,而Linux设备都是以文件的形式存在,

那分区的文件名是什么?

不同的设备有着不同的文件名,这是由于Linux内部所决定的,但是当两个相同设备同时接入时,是如何做到区分的呢,答案就是根据Linux内部扫描到的顺序然后按照顺序排列即可。

如何进行磁盘分区?

早期的分区格式时MBR格式,也就是第一个扇区保留着重要的信息

后面的GPT(磁盘分区表)格式,是新版的硬盘存储格式,为了解决硬盘内存扩大数据量多的问题

磁盘分区有哪些限制? MSDOS(分区表格式与限制)与GPT(磁盘分区表)又是什么?

MSDOS

过去:由于磁道加上Z轴组成的柱面,作为磁盘分区的最小单位,也是文件系统的最小单位。

现在:可以使用一个扇区作为分区单位,通过扇区的号码来区分,达到最小64bit。

MSDOS:第一个扇区共有512bytes大小,其中包含着446bytes的MBR(主要开机记录区 main boot record)和64bytes的分区表(partition table)。

其中分区表又记录着每个区域该区域段的起始和结束地址,通过分区表可以快速定位柱面位置,一共有4个区域段也就是有4个记录区(记录区就相当于柱面)

在windows系统中通常将这种分区分为C盘 D盘 F盘等

在Linux中通常使用文件名后面加一个数字:/dev/sda1、/dev/sda2…/dev/sda4

利用分区,可以让数据更加安全,例如第一个区域的数据不会影响第二数据
数据的快速查找和利用,磁盘只会搜索该区域中的内容

请添加图片描述

主要分区和延申分区最多只能分为4份

开机管理程序存放位置:MBR

延伸分区:

延申分区的含义就是用其他扇区(不在使用第一扇区)去记录硬盘分区的起始和结束地址。

例如,我用第二扇区分区表记录其余分区

L1:101~160
L2:161~220
L3:221~400

请添加图片描述

  • P1:/dev/sda1

  • L1:/dev/sda5

  • L2:/dev/sda6

  • L3:/dev/sda7

    为什么延申分区的设备号从5开始呢,因为前面的设备都被保留给主分区和延申分区

拓展下:主分区1~100

​ 延申分区101~400

而L1、L2、L3属于逻辑分区但占用的还是延申分区空间大小,是将延申分区切割之后的分区,就被称为逻辑分区

所以如果某个单一延申分区被破坏之后,所有的逻辑分区都将会破坏。

提问

假如我的PC有两颗SATA硬盘,我想在第二颗硬盘分区出6个可用的分区(可以被格式化来存取数据之用), 那每个分区在Linux系统下的设备文件名为何?且分区类型各为何?至少写出两种不同的分区方式。

P + E 最多为 4

E 最多为1

6个可用的分区,所以P 6个或者E 6个就会被 P+E所排除

6个可用的分区,所以P2,E2就会被 E 最多为1排除

只剩下P1,E3

P1:/dev/sda1
L1:/dev/sda5
L2:/dev/sda6
L3:/dev/sda7
L4:/dev/sda8
L5:/dev/sda9

或者P3,E1

P1:/dev/sda1
P2:/dev/sda2
P3:/dev/sda3
L1:/dev/sda5
L2:/dev/sda6
L3:/dev/sda7

GUID

请添加图片描述

  1. 每个LBA具有512bytes大小
  2. 下面的LBA34-1相当于上面LBA0-33的备份
  3. LBA0 和MBR格式类似,都含有446bytes大小的开机管理程序,但是剩下的空间装有特殊标识,用来区别硬盘分区格式是GUID
  4. LBA1存放着分区表的大小和地址,同时记录着最后34个LBA块的地址
  5. 从LBA2开始每个空间被分为218bytes大小,也就是和分区表一样分为4个空间
  6. 每个被分的空间都可以被格式化,都被视为主区

开机检测程序

目前的BIOS与UEFI分别是啥?

BIOS

请添加图片描述

CMOS中存储着基本的硬件信息并且嵌入到主板上的存储器,可以给BIOS程序提供数据,

而BIOS是一段写在主板上的一个固件中的程序

此时BIOS程序就会寻找能够开机进入的硬盘,发现硬盘之后,就会在硬盘的第一个扇区的MBR处找到大小为446bytes大小的开机启动程序

此时BIOS不工作,开机启动程序工作,就会识别硬盘中的核心文件并读取,最后由核心文件启动操作系统完成开机。

如果硬盘格式为GPT的话,也可以从LBA0的MBR处读取到开机启动程序

所以通过上述:我们知道BIOS和MBR都会仅有硬件去提供,而真正的程序Boot loader是由开机启动程序完成

boot loader的功能:
1.可以由操作者选用不同的开机项目
2.载入核心文件开始操作系统
3.移交给其他的loader:将开机管理功能移交给其他的loader负责(??)
***
移交给其他的loader就表示你的系统中含有多个开机管理程序,有可能不只在第一扇区的MBR中存在开机管理程序,每个分区都含有一个叫做boot sector的分区,其中也可以存放开机管理程序。所以我们只需要在MBR中设置一个菜单,让用户去选择启动那个操作系统。

UEFI

没见过,只了解一下即可

比较项目传统 BIOSUEFI
使用程序语言组合语言C 语言
硬件资源控制使用中断 (IRQ) 管理 不可变的内存存取 不可变得输入/输出存取使用驱动程序与协定
处理器运行环境16 位CPU 保护模式
扩充方式通过 IRQ 链接直接载入驱动程序
第三方厂商支持较差较佳且可支持多平台
图形化能力较差较佳
内置简化操作系统前环境不支持支持

一般来说,使用 UEFI 接口的主机,在开机的速度上要比 BIOS 来的快上许多

UEFI硬件资源的管理使用轮询 (polling) 的方式来管理,与 BIOS 直接了解 CPU 以中断的方式来管理比较, 这种 polling 的效率是稍微慢一些的

Linux下的磁盘分区选择

请添加图片描述

方框代表文件夹,波浪代表文件

Linux的所有数据都是以文件的形式存在,所以Linux最重要的机制就是目录树(directory tree)机制,要寻找mydata这个地址,我们需要从根目录开始(/),层层递进:

/home/dmtsai/mydata

文件系统与目录树

将文件放在目录之下,这一操作我们称之为挂载
而被操作的目录我们称为挂载点
请添加图片描述

当我想要知道/home/vbird/test这个文件在哪个partition时,倒着推导发现是在/home这个进入点,而不是/。

windows中的光驱有着单独的代号(例如E盘)
Linux下的光驱的中的文件在 /media/cdrom下

撰写不易,留下您的关注和点赞,我们一起进步!
在这里插入图片描述

Logo

鸿蒙生态一站式服务平台。

更多推荐