如果一个操作系统适应了一套硬件,但是当新的硬件产品出现之后,这个操作系统就不适用了,所以我们又得去修改操作系统,这种概念就叫做软件移植。
由于Linux是开源的操作系统,所有他的程序码可以被修改成适合在各种机器上面运行的,也就是Linux是具有“可移植性”。
Linux文件系统的重要概念
linux distribution = kernel + softwares + Tools + 可完整安装的程序
distribution主要分为两大系统套件管理系统:
1.RPM方式安装软件的系统
2.Debian的dpkg方式安装软件的系统
RPM 软件管理 | DPKG 软件管理 | 其他未分类 | |
---|---|---|---|
商业公司 | RHEL (Red Hat 公司) SuSE (Micro Focus) | Ubuntu (Canonical Ltd.) | |
社群单位 | Fedora CentOS OpenSuSE | Debian B2D | Gentoo |
我们知道操作系统的主要目的是用来控制硬件的,那么主要控制硬件哪些功能呢:
所谓的多用户多任务是什么意思:
多用户:多个用户共同连接到同一个服务器,他们所处的环境不同但是可以共用服务器中的资源
多任务:在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(磁盘分区表)又是什么?
过去:由于磁道加上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
目前的BIOS与UEFI分别是啥?
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中设置一个菜单,让用户去选择启动那个操作系统。
没见过,只了解一下即可
比较项目 | 传统 BIOS | UEFI |
---|---|---|
使用程序语言 | 组合语言 | C 语言 |
硬件资源控制 | 使用中断 (IRQ) 管理 不可变的内存存取 不可变得输入/输出存取 | 使用驱动程序与协定 |
处理器运行环境 | 16 位 | CPU 保护模式 |
扩充方式 | 通过 IRQ 链接 | 直接载入驱动程序 |
第三方厂商支持 | 较差 | 较佳且可支持多平台 |
图形化能力 | 较差 | 较佳 |
内置简化操作系统前环境 | 不支持 | 支持 |
一般来说,使用 UEFI 接口的主机,在开机的速度上要比 BIOS 来的快上许多
UEFI硬件资源的管理使用轮询 (polling) 的方式来管理,与 BIOS 直接了解 CPU 以中断的方式来管理比较, 这种 polling 的效率是稍微慢一些的
方框代表文件夹,波浪代表文件
Linux的所有数据都是以文件的形式存在,所以Linux最重要的机制就是目录树(directory tree)机制,要寻找mydata这个地址,我们需要从根目录开始(/),层层递进:
/home/dmtsai/mydata
将文件放在目录之下,这一操作我们称之为挂载
而被操作的目录我们称为挂载点
当我想要知道/home/vbird/test这个文件在哪个partition时,倒着推导发现是在/home这个进入点,而不是/。
windows中的光驱有着单独的代号(例如E盘)
Linux下的光驱的中的文件在 /media/cdrom下
撰写不易,留下您的关注和点赞,我们一起进步!