导航:首页 > 操作系统 > linux扇区大小

linux扇区大小

发布时间:2022-09-08 12:30:39

⑴ 磁盘扇区、IO块、inode、文件、目录、硬链接与软链接到底是什么

磁盘扇区、IO块、inode、文件、目录、硬链接与软链接到底是什么?
自己理解了一下,记录一下备忘。

1、扇区
扇区是磁盘盘片上的一个物理划分,是真真实实存在看得见摸得着的东西。
我们先来看看如何查看一个磁盘的一些信息,可以使用fdisk -l命令查看。我这里有多块盘,但我只截图了一个在这里展示,如图所示,我截取的这块盘为/dev/sda。

看红框所示,Unit是单元的意思,sector是扇区的意思。即磁盘的存储单元是扇区。
从图中第一行还可以看到这块盘的大小为599.6G,总共有1171062784个扇区。
从第二行可以看到每个扇区的大小为512bytes。
从第三行可以看到扇区的逻辑大小为512bytes,物理大小为512bytes。

从上图的帮助文档来看,扇区的逻辑大小可以修改,最小为512bytes,最大为4096bytes。(不同的系统,扇区的大小不一样)

除了扇区,磁盘还有哪些物理部件?

2、IO块(磁盘块)
我们平时常说磁盘块,可能会以为它是磁盘的一个物理分区,其实不是的。
扇区是磁盘存储的最小单元。往大了说,还有磁道、盘片等。
那既然磁盘块不是磁盘的物理分区,那么它是啥呀?
我们或许都有这样一个常识认知,就是磁盘的IO速率是非常慢的,如果在读取数据的时候,先读取了一个扇区的数据,发送给上层应用后,又返回来读下一个扇区,再发送给上层应用,如此循环反复,上层应用需要与磁盘进行多次交互,这就很浪费时间了;
所以就引入了磁盘块这么一个概念,它在逻辑层面将多个连续的扇区当作一个整体,然后在读取数据的时候以逻辑层面上的磁盘块为单位,将磁盘块所包含的扇区的数据都一次性读出来发给上层应用。
所以我们要区分开扇区、磁盘块这些概念所对应的对象是不同的:
扇区对应的是硬件层面,它是磁盘面的区域划分,是一个真真实实存在的物理部件;
而磁盘块对应的是软件层面,它在逻辑层面将多个连续的扇区当作一个整体。

比如磁盘扇区大小一般为512字节,而块大小一般为4096字节,那么每一个块就记录着连续的8个扇区;数据不是存在块里的,而是存储在扇区,而块记录哪些扇区是属于自己的。

如何查看一个IO块的大小:
1)在root用户下,执行tune2fs -l /dev/sda | grep "Block Size"

3、inode
每个文件都有数据以及元数据,数据就是文件内容了,它存储在磁盘的数据区;
而文件元数据包括下图这些项:
文件大小、文件块信息、一个块的大小、文件类型(普通文件、目录还是符号链接)、设备号、索引节点编号、硬链接数、文件的访问时间、文件内容的修改时间、文件属性的修改时间

每个文件都会对应一个inode,而每个inode都有唯一一个编号,如何查看文件的inode编号呢?
1)可以使用stat filename来查看
2)或者切换到文件所在目录后,使用ll -i命令来查看,得到的结果中第一列即为文件的inode编号。

我们刚才说到每个索引节点(inode)都有一个唯一的编号,这个编号在每个磁盘上都是有限的,当inode编号分配完了之后,就不能再创建新文件了;
因为文件都需要对应一个唯一的inode,而每个inode又需要对应唯一的编号,而编号又是有限的,所以当分配完了之后,就没法创建inode了,也就没法创建文件了。

有时候可能会发现这样的现象:就是我们想要创建一个新文件,但是发现创建不了了。
于是我们需要排查问题,怎么排查呢?
首先我们先看下是不是磁盘写满了,使用df -hl查看磁盘的使用率,如果达到了100%,那说明盘写满了,我们需要删除些东西以释放存储空间;
但是如果我们查看了磁盘使用率之后,发现不是磁盘满了,磁盘还有很多空闲的空间,那该怎么办?
可以联想到我们上面说过的,看下inode编号是不是用完了,即看下inode编号的使用率?
可以使用df -i来看下磁盘inode编号的使用率,如果发现是inode编号的使用率达到了100%了,那还是得删除些文件以释放占用的inode编号。

会不会有人有疑问?为什么磁盘空间还有这么多,inode编号就用完了?
这大概率是创建的小文件太多了,你想啊,每个文件都要对应一个inode编号,inode编号是有限的,虽然磁盘空间也有限,但是如果文件系统中是以小文件居多,每个文件就占那么点空间,inode编号的消耗速率大于磁盘空间的消耗速率,这就极有可能出现上述inode编号用完了,但是磁盘空间还剩余很多的情况。

4、文件与目录
linux系统中,一切皆文件。
在linux中怎么判断是文件还是目录呢?
1)通过ll命令判断:
如果开头是d,那就是目录(d即directory的缩写),如果开头是-,那就是普通文件。

2)通过stat命令判断:

5、硬链接与软链接
当我们创建一个文件时,该文件的文件名其实就是一个硬链接,一个文件至少有一个硬链接,但是一个硬链接不可以指向多个文件。
硬链接有什么作用:文件系统通过硬链接可以找到inode编号,进而找到inode,通过获取inode里存储的文件元数据可以读取到磁盘中存储的文件数据。
怎么查看文件的硬链接数呢?
1)通过ll查看:
第二列即为硬链接数

有没有注意到,普通文件的硬链接数与目录的硬链接数是不一样的,普通文件只有一个硬链接,而目录则有两个,这是为什么?
因为对于目录文件而言,除了可以通过目录名获取到文件的inode之外,还可以通过.(点号)获取,因为点号表示当前目录。
所以我们看到目录的硬链接数是2个。
2)还可以通过stat查看文件的硬链接数:

软链接是什么?软链接其实是一个独立的文件(分类为符号链接),它有自己的inode,它的inode里存储的是它所指向的文件的信息;由于软链接与它指向的文件是两个独立的文件,所以删除软链接并不会影响它指向的文件。
通过ln -s 123 softlink123建立一个软链接指向文件123

通过stat softlink123可以看到该文件是一个符号链接,即软链接,它有自己的inode,所以它是一个独立的文件,由于它的inode里存储的是它指向的文件的信息,所以通过软链接softlink123也可以读取到文件123的数据

可以看到通过硬链接和软链接读取到的文件内容是一样的

⑵ Linux blockdev命令设置文件预读大小介绍

在命令行调用设备的ioctl函数。在Linux系统中,似乎对设备的直接操作只有ioctl函数了。他接受的参数不是太多,而且都是一一对应的。
blockdev
-
从命令行调用区块设备控制程序
blockdev
[options]
commands
devices
blockdev
工具允许从命令行调用区块设备控制程序。
–setro
设置设备为只读
–getro
读取设备是否为只读(成功为1,0则为可读写)
–setrw
设置设别为可读写
–getss
打印设备的扇区大小,通常是512
–getsize
打印设别的容量,按照一个扇区512个字节计算
–setra
N
设置预读扇区(512字节)为N个.Set
readahead
to
N
512-byte
sectors.
–getra
打印readahead(预读扇区)
–flushbufs
刷新缓冲
–rereadpt
重读分区表。
觉得–setro,setrw比较有用,这个mount
-o
ro(rw)是有区别的,mount是在文件系统这个级别上对某个分区挂载为只读或可读写。而blockdev则是在设别这个级别上设置为只读和可读写。
看下面的命令输出结果就一目了然了。
代码如下:
[root@lancy
~]#
blockdev
–setro
/dev/hda4
[root@lancy
~]#
blockdev
–getro
/dev/hda4
1
[root@lancy
~]#
mount
/dev/hda4
/misc
-o
rw
mount:
block
device
/dev/hda4
is
write-protected,
mounting
read-only
[root@lancy
~]#
umount
/dev/hda4
[root@lancy
~]#
blockdev
–setrw
/dev/hda4
[root@lancy
~]#
blockdev
–getro
/dev/hda4
0
[root@lancy
~]#
mount
/dev/hda4
/misc
-o
rw
[root@lancy
~]#
touch
/misc/one
[root@lancy
~]#
umount
/dev/hda4
[root@lancy
~]#
mount
/dev/hda4
/misc
-o
ro
[root@lancy
~]#
rm
-f
/misc/one
rm:
无法删除‘/misc/one’:
只读文件系统

⑶ Unix文件系统的Blocksize究竟多大

自从开始Linux 软件平台开发,经常遇到“Block Size”。但经常发现此block size非彼block
size。意义不一样,大小值也不一样。Open Source的东东有时候也挺烦的。下面是自己的总结。通常Linux的“block
size”指的是1024 bytes,Linux用1024-byte blocks 作为buffer
cache的基本单位。但linux的文件系统的block确不一样。例如ext3系统,block
size是4096。使用tune2fs可以查看带文件系统的磁盘分区的相关信息,包括block size。例如:tune2fs -l /dev/hda1 |grep "Block size"Block size: 4096另一个工具mpe2fs也可以。
其实本来这几个概念不是很难,主要是NND他们的名字都一样,都叫“Block Size”。1. 硬件上的 block size, 应该是"sector size",linux的扇区大小是512byte2. 有文件系统的分区的block size, 是"block size",大小不一,可以用工具查看3. 没有文件系统的分区的block size,也叫“block size”,大小指的是1024 byte4. Kernel buffer cache 的block size, 就是"block size",大部分PC是10245. 磁盘分区的"cylinder size",用fdisk 可以查看。
我们来看看fdisk显示的不同的信息,理解一下这几个概念:
Disk /dev/hda: 250.0 GB, 250059350016 bytes255 heads, 63 sectors/track, 30401 cylindersUnits = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System/dev/hda1 * 1 1305 10482381 83 Linux/dev/hda2 1306 1566 2096482+ 82 Linux swap/dev/hda3 1567 30401 231617137+ 83 Linux
8225280就是cylinder size。一共有30401个cylinder。Start和End分别标记的是各个分区的起始cylinder。

第4列显示的就是以1024为单位的block(这一列最容易把人搞晕)。为什么“2096482+”有个“+”号呢?因为啊,总size除1024除不
尽,是个约数,表示2096482强!哈哈。搞笑吧,只有opensource的人想得出来这么表示。自从开始Linux 软件平台开发,经常遇到“Block Size”。但经常发现此block size非彼block size。意义不一样,大小值也不一样。Open Source的东东有时候也挺烦的。下面是自己的总结。通常Linux的“block size”指的是1024 bytes,Linux用1024-byte blocks 作为buffer
cache的基本单位。但linux的文件系统的block确不一样。例如ext3系统,block
size是4096。使用tune2fs可以查看带文件系统的磁盘分区的相关信息,包括block size。例如:tune2fs -l /dev/hda1 |grep "Block size"Block size: 4096另一个工具mpe2fs也可以。
其实本来这几个概念不是很难,主要是NND他们的名字都一样,都叫“Block Size”。1. 硬件上的 block size, 应该是"sector size",linux的扇区大小是512byte2. 有文件系统的分区的block size, 是"block size",大小不一,可以用工具查看3. 没有文件系统的分区的block size,也叫“block size”,大小指的是1024 byte4. Kernel buffer cache 的block size, 就是"block size",大部分PC是10245. 磁盘分区的"cylinder size",用fdisk 可以查看。
我们来看看fdisk显示的不同的信息,理解一下这几个概念:
Disk /dev/hda: 250.0 GB, 250059350016 bytes255 heads, 63 sectors/track, 30401 cylindersUnits = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System/dev/hda1 * 1 1305 10482381 83 Linux/dev/hda2 1306 1566 2096482+ 82 Linux swap/dev/hda3 1567 30401 231617137+ 83 Linux
8225280就是cylinder size。一共有30401个cylinder。Start和End分别标记的是各个分区的起始cylinder。

第4列显示的就是以1024为单位的block(这一列最容易把人搞晕)。为什么“2096482+”有个“+”号呢?因为啊,总size除1024除不
尽,是个约数,表示2096482强!哈哈。搞笑吧,只有opensource的人想得出来这么表示。

⑷ Linux磁盘组成与分区

先说明一下磁盘的物理组成,整颗磁盘的组成主要有:
圆形的盘片(主要记录数据的部分);
机械手臂,与在机械手臂上的磁头(可读写盘片上的数据);
主轴马达,可以转动盘片,让机械手臂的磁头在盘片上读写数据。
从上面我们知道数据储存与读取的重点在于盘片,而盘片上的物理组成则为:
扇区(Sector)为最小的物理储存单位,且依据磁盘设计的不同,目前主要有 512Bytes
与 4K 两种格式;
将扇区组成一个圆,那就是柱面(Cylinder);
早期的分区主要以柱面为最小分区单位,现在的分区通常使用扇区为最小分区单位(每
个扇区都有其号码喔,就好像座位一样);
磁盘分区表主要有两种格式,一种是限制较多的 MBR 分区表,一种是较新且限制较少的
GPT 分区表。
MBR 分区表中,第一个扇区最重要,里面有:(1)主要开机区(Master boot record,
MBR)及分区表(partition table), 其中 MBR 占有 446 Bytes,而 partition table 则占
有 64 Bytes。
GPT 分区表除了分区数量扩充较多之外,支持的磁盘容量也可以超过 2TB。
至于磁盘的文件名部份,基本上,所有实体磁盘的文件名都已经被仿真成 /dev/sd[a-p] 的格
式,第一颗磁盘文件名为 /dev/sda。 而分区的文件名若以第一颗磁盘为例,则为 /dev/sda[1-
128] 。除了实体磁盘之外,虚拟机的磁盘通常为 /dev/vd[a-p] 的格式。 若有使用到软件磁盘
阵列的话,那还有 /dev/md[0-128] 的磁盘文件名。使用的是 LVM 时,文件名则为
/dev/VGNAME/LVNAME 等格式。

⑸ linux 如何看系统扇区大小

blockdev --getss xxx
xxx表示你的分区或者物理盘,比如 /dev/sda

⑹ linux为什么只有4个主分区

MBR(Master Boot Recorder)主要开机扇区,放置硬盘的信息。MBR 可以说是整个硬盘最重要的地方了,因为在 MBR 里面记录了两个重要的东西,分别是:开机管理程序,与磁盘分区表 ( partition table )。所以我们所做的硬盘分区,也就是在修改partition table。
由于这个 MBR 区块的容量有限,所以,当初设计的时候,就只有设计成 4 个分区纪录(这个说法不太准确,下文有详细说明),这些分区记录就被称为 Primary ( 主分区 ) 及 Extended ( 扩展分区 ) ,也就是说,一颗硬盘最多可以有 4 个 Primary + Extended 的扇区,其中,Extended 只能有一个,因此,你如果要分区成四块磁盘分区的话,那么最多就是可以:
P + P + P + P
P + P + P + E
的情况来分区了。需要特别留意的是,如果上面的情况中, 3P +E 只有三个‘可用’的磁盘,如果要四个都‘可用’,就得分区成 4P 了!( 因为 Extended 不能直接被使用,还需要分区成 Logical 才行)
思考一:如果我要将我的大硬盘暂时分区成四个 partition ,同时,还有其它的空间可以让我在未来的时候进行规划,那么该如何分区?
由刚刚的说明,我们可以知道, Primary + Extended 最多只能有四个 partition,而如果要超过 5 个 partition 的话,那么就需要 Extended 的帮忙。因此,在这个例子中,我们千万不能分区成四个 Primary 为什么呢?假如您是一个 20 GB 的硬盘,而 4 个 primary 共用去了 15 GB ,您心想还有 5 GB 可以利用对吧?错!剩下的 5 GB 完全不能使用,这是因为已经没有多余的 partition table 纪录区可以记录了,因此也就无法进行额外的分区,当然啰,空间也就被浪费掉了!因此,请千万注意,如果您要分区超过 4 槽以上时,请记得一定要有 Extended 分区区,而且必须将所有剩下的空间都分配给 Extended ,然后再以 logical 的分区区来规划 Extended 的空间。
思考二:我可不可以仅分区 1 个 Primary 与 1 个 Extended 呢?
当然可以!基本上, Logical 可以有 64 个,因此,你可以仅分区一个主分区,并且将所有其它的分区都给 Extended ,利用 Logical 分区来进行其它的 partition 规划即可!
思考三:假如我的硬盘安装在 IDE 1 的 Master ,并且我想要分区成 6 个可以使用的硬盘扇区,那么每个磁盘在 Linux 底下的代号为何?
说明:
由于硬盘在 Primary + Extended 最多可以有四个,因此,在 Linux 底下,已经将 partition table 1 ~ 4 先留下来了,如果只用了 2 个 P + E 的话,那么将会空出两个 partition number 呦!再详细的说明一下,假设我将四个 P + E 都用完了。其中Extended /dev/hda4包括三个逻辑分区。
实际可以使用的是 /dev/hda1, /dev/hda2, /dev/hda3, /dev/hda5, /dev/hda6, /dev/hda7 这六个 partition!至于 /dev/hda4 这个 Extended 扇区本身仅是用来规划出让 Logical 可以利用的磁盘空间而已!
那么万一我只想要分区 1 个 Primary 与 1 个 Extended 呢?
因为 1~4 号已经被预留下来了,所以第一个 Logical 的代号由 5 号开始计算起来,而后面在被规划的,就以累加的方式增加磁盘代号啰!而其中 /dev/hda3, /dev/hda4 则是空的,被保留下来的代号。
这个问题,结合历史来说会说得比较准确。为什么最多只可以分四个主要分区,并不是单由操作系统所决定的。
第一,为什么一个扇区只有512字节,为什么不是1024字节呢?
首先,我想说一个扇区是多少字节是可以自己(硬盘生产厂家)定义的,可以是1024字节的。所以说,一个扇区是512字节并不是理论值,而是习惯值。也就是一个扇区的大小为512字节对于硬盘的生产厂家来说都是习惯的这样定义了,谁也不想更改这种习惯。
第二,硬盘的第一扇区可以分成三个部分:第一部分MBR,需要占用446字节,第二部分DPT,需要占用64字节,这是因为一个分区表需要占用16字节,64/16=4,所以刚好能存放四个分区的表,这就是为什么只能分四个分区。还有两个字节就用来存放结束标志。这样
446+64+2=512字节。
对硬盘加密其实就是改写最后两个字节的结束标志。
试想如果当初硬盘厂家将一个扇区设置成1024字节,还是只能分四个分区吗?逻辑驱动器也需要分区表,它存放在扩展分区的第一扇区,所以逻辑驱动器也不是随便想分多少就分多少的。

⑺ linux系统中block size最大为多少

1、默认创建表空间时BLOCKSIZE 是8k,文件最大是32G2、可以把BLOCKSIZE设置为16k,SQL〉alter system set db_16k_cache_size=34603008;这样一个表空间datafile最大可以到64G3、可以把BLOCKSIZE设置为32k,这样一个表空间datafile最大可以到128G

⑻ Linux系统启动及定制过程

CentOS的启动流程总体顺序如下:

POST --> Boot Sequence --> bootloader(MBR) --> Kernel --> 加载rootfs --> switchroot --> /sbin /init --> (配置文件:/etc/inittab, /etc/init/*.conf) --> 根据init配置文件设置默认运行级别 --> 运行系统初始化脚本/etc/rc.d/rc.sysinit,完成系统初始化 --> 开启或关闭用户选定的对应运行级别下所对应的服务 --> 启动终端,打印登录提示符。

注:前面加粗部分代表内核空间的系统启动流程,后面未加粗部分代表用户空间的系统启动流程。

第一步:硬件启动过程

POST加电自检

主要实现的功能是检测各个外围硬件设备是否存在而且能够正常运行起来,实现这一自检功能的是固化在主板上的ROM(主要代表为CMOS)芯片上的BIOS(Basic Input/Output System)程序;例如BIOS会检测CPU、Memory以及I/O设备是否能够正常运行,如果是个人计算机的话可能还会检测一下显示器。只要一通电,CPU就会自动去加载ROM芯片上的BIOS程序,是这样来实现的。而检测完成之后就进行硬件设备的初始化。

选择启动设备以加载MBR

主要实现的功能是选择要启动的硬件设备,选择了之后就可以读取这个设备上位于MBR里头的bootloader了。这一步的实现是这样的:根据BIOS中对启动顺序的设定,BIOS自己会依次扫描各个引导设备,然后第一个被扫描到具有引导程序(bootloader)的设备就被作为要启动的引导设备。

MBR(Main Boot Record),是硬盘的0柱面,0磁道、1扇区(第一个扇区),称为主引导扇区,也称为主引导记录。它由三部分组 成:主引导程序(BootLoader)、硬盘分区表DPT(Disk Partition table)和硬盘有效标志(55AA)。
注:硬盘默认一个扇区大小为512字节。
第一部分,主引导程序(BootLoader)占446个字节,负责从活动分区中装载,并运行系统引导程序。
第二部分,硬盘分区表DPT占64个字节,有4个分区表项,每个分区表项占16个字节,硬盘中分区有多少以及每一个分区的大小都记 录在其中。
第三部分,硬盘有效标志,占2个字节,固定为55AA。如果这个标志位0xAA55,就认为这个是MB

第二步:GRUB引导阶段

不同的系统有不同的主引导程序(BootLoader)。Windows使用的是NTLDR(NT Loader,Windows NT系列操作系统)、Bootmgr(Boot Manager,Windows Vista,7,8,10),Linux一般使用的是grub(也叫grub legacy)和grub2。GRUB程序加载执行并引导kernel(内核)程序,其中有三个阶段,Grub引导阶段的文件都在/boot/grub/目录下。

stage1: 这一阶段执行的就是系统安装时预先写入到MBR的Bootloader程序,即是存放在MBR的前446字节里的程序。它的任务仅是读取(加载)硬盘的0柱面,0磁道,2扇区的内容(/boot/grub/stage1)并执行。

stage1.5: 这一阶段是Stage1阶段和Stage2阶段的桥梁,功能是加载stage2所在分区的文件系统驱动,让stage1中的bootloader能识别stage2所在分区的文件系统,此后grub程序便有能力去访问/boot/grub/stage2。

stage2: 这一阶段读取并解析grub的配置文件/boot/grub/grub.cnf,根据配置文件加载内核镜像到内存中,通过initrd程序建立虚拟根文件系统,最后调用(转交)内核。

第三步:内部引导阶段

加载内核,核心开始解压,启动一些最核心的程序。为了让内核足够的轻小,硬件驱动并没放在内核文件里面。系统仅探测可识别到的所有硬件设备,加载硬件驱动程序,即加载真正的根文件系统所在设备的驱动程序(有可能会借助于ramdisk加载驱动),以只读方式挂载根文件系统,运行用户空间的第一个应用程序:/sbin/init。

第四步:init初始化阶段(系统初始化阶段)

虽然CentOS 5、CentOS 6以及CentOS 7的/etc/init配置文件内容各不相同,但总体的启动流程相同:/sbin/init --> 根据/etc/inittab配置文件设置默认运行级别 --> 运行系统初始化脚本/etc/rc.d/rc.sysinit,完成系统初始化 --> 关闭或启动用户选定的默认运行级别所对应的服务 。

对于CentOS 5来说,初始化程序init是SysV init,其配置文件为:/etc/inittab; 对于CentOS 6来说,初始化程序init是upstart,其配置文件为:/etc/inittab, /etc/init/ .conf,也就是upstart将配置文件拆分成多个,在/etc/init/目录下以conf结尾的都是upstart风格的配置文件,而/etc/inittab仅用于设置默认运行级别; 对于CentOS 7来说,初始化程序init是systemd,其配置文件:/usr/lib/system/systemd/, /etc/systemd/system/

具体执行过程:/sbin/init程序会读取/etc/inittab文件确认运行级别,然后执行/etc/rc.d/rc脚本,根据确认的运行级别启动对应/etc/rc.d/rc#.d/目录下的服务(#为0~6),与此同时执行系统初始化脚本/etc/rc.sysinit(软链接,指向/etc/rc.d/rc.sysinit),还会加载/etc/rc.local(软链接,指向/etc/rc.d/rc.local文件)用户自定义服务(脚本)。

CentOS7中初始化进程变为了systemd,systemd即为system daemon,是Linux下的一种init软件,开发目标是提供更优秀的框架以表示系统服务间的依赖关系,并依此实现系统初始化时服务的并行启动,同时达到降低Shell系统开销的效果,最终代替现在常用的System V与BSD风格的init程序。与多数发行版使用的System V风格的init相比,systemd采用了以下的新技术:A.采用Socket激活式与总线激活式服务,以提高相互依赖的各服务的并行运行性能;B.用Cgroup代替PID来追踪进程,即使是两次fork之后生成的守护进程也不会脱离systemd的控制。

第五步:启动终端

根据前面获取的运行级别来启动终端,mingetty程序是用于启动终端的,它会调用登录程序login,这样就能显示出登录提示符了,类似mingetty这种用于打开终端的程序还有getty等。而如果默认运行级别为5,则会打开图形界面。

第一步:硬件启动过程

这一步和CentOS6差不多,详细请看1.1内容。

第二步:GRUB引导阶段

从这一步开始,CentOS6和CentOS7的启动流程区别开始展现出来了。CentOS7的主引导程序使用的是grub2,执行过程是先加载boot.img、core.img两个镜像,再加载MOD模块文件,把grub2程序加载执行,接着解析配置文件/boot/grub/grub.cfg,根据配置文件加载内核镜像到内存,之后构建虚拟根文件系统,最后转到内核。

CentOS7中使用命令进行配置,而不直接去修改配置文件了。grub.cfg配置文件开头注释部分说明了由/etc/grub.d/目录下文件和/etc/default/grub文件组成。改好配置后都需要使用命令grub2-mkconfig -o /boot/grub2/grub.cfg,将配置文件重新生成。

第三步:内部引导阶段

这一步与CentOS6也差不多,加载驱动,切换到真正的根文件系统,唯一不同的是执行的初始化程序变成了/usr/lib/systemd/systemd。

第四步:init初始化阶段(系统初始化阶段)

CentOS7中我们的初始化进程变为了systemd。执行默认target配置文件/etc/systemd/system/default.target(这是一个软链接,与默认运行级别有关)。然后执行sysinit.target来初始化系统和basic.target来准备操作系统。接着启动multi-user.target下的本机与服务器服务,并检查/etc/rc.d/rc.local文件是否有用户自定义脚本需要启动。最后执行multi-user下的getty.target及登录服务,检查default.target是否有其他的服务需要启动。

注意:/etc/systemd/system/default.target指向了/lib/systemd/system/目录下的graphical.target或multiuser.target。而graphical.target依赖multiuser.target,multiuser.target依赖basic.target,basic.target依赖sysinit.target,所以倒过来执行。

unit对象:unit表示不同类型的systemd对象,通过配置文件进行标识和配置;文件中主要包含了系统服务、监听socket、保存的系统快照以及其他与init相关的信息。(也就是CentOS6中的服务器启动脚本)

第五步:启动终端

systemd执行sysinit.target
systemd启动multi-user.target下的本机与服务器服务
systemd执行multi-user.target下面的/etc/rc.d/rc.local
Systemd执行multi-user.target下的getty.target及登录服务
getty.target是启动终端的systemd对象。如果到此步骤,系统没有指定启动图形桌面,到此就可以结束了,如果需要启动图形界面,要在此基础上启动桌面程序。

从 CentOS 7 版本之后,系统开始用 systemd 实现init进程,系统启动和服务器守护进程管理器功能,负责在系统启动或运行时,激活系统资源,服务器进程和其它进程。

unit表示不同类型的systemd对象,通过配置文件进行标识和配置;文件中主要包含了系统服务、监听socket、保存的系统快照以及其它与init相关的信息。

3.2 system unit文件格式

/usr/lib/systemd/system:发行版打包者使用,每个服务最主要的启动脚本设置,类似于之前的/etc/init.d/

/etc/systemd/system:系统管理员和用户使用,管理员建立的执行脚本,类似于/etc/rcN.d/Sxx的功能,比上面目录优先运行

/lib/systemd/system::ubutun的对应目录

/run/systemd/system:系统执行过程中所产生的服务脚本,比上面目录优先运行

unit 格式说明:

service unit file文件通常由三部分组成:

Unit段的常用选项:

Service段的常用选项:

Install段的常用选项:

注意:对于新创建的unit文件,或者修改了的unit文件,要通知systemd重载此配置文件,而后可以选择重启。

首先在启动界面按e编辑启动参数,

将ro参数更改为rw init=/sysroot/bin/sh,按ctr + x启动系统

按下图执行命令更改root密码

阅读全文

与linux扇区大小相关的资料

热点内容
机器软件用什么编程 浏览:841
java虚拟机指令 浏览:655
shell编程入门书籍 浏览:941
大连桶装水溯源码售价 浏览:302
php怎么跳转到电脑 浏览:414
如何在电脑上创建新网络连接服务器 浏览:61
c语言编译之后如何运行 浏览:568
mfc多线程编程视频 浏览:411
c编译的中文怎么写 浏览:91
单片机连接蜂鸣器电路 浏览:845
程序员买房前后对比照 浏览:990
cmdjava中文乱码 浏览:948
窗口app哪个好 浏览:732
xzforandroid 浏览:578
程序员那么可爱歌曲完整版 浏览:907
为什么购买pdf 浏览:48
操作系统代码编译 浏览:483
程序员东北大学 浏览:429
编译忽略空字符 浏览:119
多店铺阿里云服务器教程 浏览:379