linux-鸟哥私房菜学习笔记

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也希望至少有链接档存在。

猜你喜欢

转载自blog.csdn.net/qq_28657577/article/details/81478444