linux-开机流程中的BIOS与UEFI开机自检程序
操作系统会控制所有的硬件,并提供核心功能。
但是,操作系统也是软件,我们的计算机是如何识别这个操作系统软件,并执行它的呢?
明明开机时我的计算机还有没任何软件,它是如何识别操作系统的呢?
基本上,目前的主机系统在加载硬件驱动方面的程序,主要有早起的BIOS与新的UEFI两种机制。
BIOS就是在开机时,计算机会区执行的第一个程序。BIOS去找到计算机里能够开机的硬盘,并且到该硬盘里去读取第一个扇区的MBR位置。这个MBR仅有446bytes的硬盘容量,里面存放了最基本的开机管理程序。此时,BIOS工作完成,接下来。就是MBR里的开机管理程序的工作了。
这个开机管理程序的目的是加载(load)核心文件。开机管理程序是安装的操作系统自带的,当加载完核心文件时,开机管理程序的任务也完成了。之后的工作就由操作系统来负责了!
简单的说,整个开机流程为:
1. BIOS:开机主动执行的程序,会找到第一个可开机的装置;
2. MBR:主要启动记录模块,位于第一个可开机装置的第一个扇区内的,内含开机管理程序boot loader;
3. 开机管理程序(boot loader):一个可读取核心文件来执行的软件;
4. 核心文件:开始操作系统的功能...
boot loader 的几个主要任务:
1. 提供选单:用户可以选择不同的开机项目,这也是多重引导的重要功能!
2.载入核心文件:直接指向可开机的程序区段,来开始操作系统;
3.转交其他loader:将开机管理功能转交给其他loader负责。
分析第3点,也即是说,每个系统槽内都有一个loader,loader只认识本槽内的开即核心文件和其他loader。
假设你的个人计算机只有一个硬盘,里面切成了四个分区槽。其中第一、第二分区槽分别安装了Windowns和Linux系统,你要如何在开机的时候选择用Windows还是用Linux开机呢?
MBR的开机管理程序,会提供几个选项,比如,
选项1:加载Windows核心文件来开机
选项2:将开机管理权交给另一个分区槽的启动扇区(boot sector)
当使用者在开机时选择选项2时,整个开机管理工作就交给第二分区槽的开机管理程序了!当第二个开机管理程序启动后,该开机程序只有一个开机选项,因此,就会加载Linux的核心文件开机了!
简言之,记住两点:
1:开机需要开机管理程序
2:开机管理程序可以安装在MBR及Boot Sector两个位置
UEFI
UEFI用来取代BIOS,常称为UEFI BIOS。
但是UEFI好像也有好多不足。。。
文件系统与目录树的关系(挂载)
所谓挂载,就是利用一个目录作为进入点,将磁盘分区槽的数据存放在该目录下;也就是说,进入该目录就可以读取该分区槽。这个动作,我们称为挂载。那个进入点的目录我们称为挂载点。由于整个Linux最重要是根目录,因此根目录一定需要挂载到某个分区槽。其他目录,可以根据用户需求,挂载到不同的分区槽。
上图中,假设我们的硬盘分为两个槽,partition1是挂载到根目录的,partition2是挂载到/home这个目录。也就是说,当我的数据存放在/home内的各次目录时,数据是存放在partition2的。如果数据放在根目录/下的次目录,数据就会被存放到partition1.
文件拥有者
Linux的任何文件都有owner、group、others三种身份的权限
ls [list]的意思,显示文件的文件名与相关属性。
-al 表示累出所有的文件详细的权限与属性,包括隐藏文件(第一个字符为[. ]的文件)
第一个字符,代表这个文件是[目录、文件、链接]等
d 表示目录文件
- 表示一般文件
l 表示链接档(link file)
b 表示为装置文件里面的可供储存的接口设备
c 表示装置文件里面的串行端口设备,例如键盘、鼠标
接下来,第一组为owner权限,第二组为group权限,第三组为others权限
如何改变文件的权限与属性
chgrp : 改变文件所属组 change group
chown : 改变文件拥有者
chmod : 改变文件的权限,SUID,SGID,SBIT等特性
改变所属群组:chgrp (change group)
注意:要被改变的组名必须要在/etc/group 文件内才行,否则就会报错。也就是说,组名都是放在/etc/group文件里的,要是这个文件没组名x,那组名x是不会被找到的,所以会报错。
改变文件拥有者,chown (change owner)
注意:用户必须是已经存在系统中的账号,也就是在/etc/passwd这个文件中有记录的用户名才能改变。
-R 是进行递归的持续变换成变更,即连同次目录下的所有文件都变更。
那,什么时候要用到chgrp和chown呢?
举个例子:假如你要将mytext拷贝成text给Tim。
由于cp这个命令,会复制文件的权限和属性,即文件的所有者和群组还是你的。这时候,就要用chgrp和chownlai来改变文件属性了!
改变权限,chmod
数字类型改变权限
规定的权限分数:
r:4
w:2
x:1
例如:owner=rwx=4+2+1=7
group=rwx=4+2+1=7
other=- - -=0+0+0=0
变更语法:
-R是递归,xyz是对应的owner、group、other的权限得分
将.bashrc的所有权限都设为启用,命令为:
符号类型改变文件权限
u,g,o分别表示:user,group,others;
a表示全部all
表示所有人,用写的权限!
目录的权限:如果你在某目录下不具备x的权限,那么你就无法切换到该目录下,也就无法执行该目录下的任何指令,及时你具有该目录的r或w的权限。记住,对于目录的权限,x才是关键!
指令 cat 文件名 表示将某文件内容读出来
文件种类
正规文件 -
纯文本文件:ASCII
二进制文件:binary
数据格式文件:data 这种文件使用cat读时,会乱码
目录文件 d
链接档 l (类似Windows的快捷方式)
设备与装置文件 (通常在/dev目录下)
区块(block)设备档: 第一个属性为 b 硬盘、软盘等
字符设备文件:第一个属性为 c 一些串行端口的接口设备,如鼠标、键盘等。
资料接口文件(sockets):第一个属性为 s
数据输送文件(FIFO,pipe):第一个属性为 p
文件扩展名:只是让你了解该文件可能的用途,而已!
linux文件虽然不需要扩展名。但有时候,我们也用适当的扩展名来表示该文件的意义:
*.sh : 脚本或批处理文件,因为批处理文件是使用shell写的,所以,扩展名就写成 .sh
*Z, *.tar ,*.tar.gz , *.zip, *.tgz :经过打包的压缩文件。
*.html ,*.php :网页相关的文件 , .html可以用浏览器直接打开
Linux目录配置--FHS
/根目录的意义与内容
/(root,根目录):与开机系统有关。由于根目录很重要,所以FHS希望根目录不要放在太大的分区槽,因为越大的分区槽,你会放入越多的数据,导致根目录所在的分区槽就可能有较多发生错误的机会。
因此FHS标注建议是:根目录(/)分区槽应该越小越好,且应用程序所安装的软件最好不要与根目录放在同一个分区槽内,保持根目录越小越好。这样,不但效能交佳,根目录所在的文件系统也不容易发生问题。
鉴于上述说明,FHS定义出根目录(/)底下应该要有以下这些此目录,即使没有实体目录,FHS也希望至少有链接档存在。