补充:
(1)驱动可以模块形式装入内核,驱动就是也可以称为模块
模块文件名与核心文件名后缀名字相同,里面存放各种模块和驱动程序
(2)系统启动时需要加载模块,然而模块在文件系统里,读取文件系统需要模块,所以
要ramdisk(centos5是模拟磁盘、centos6以上是模拟文件系统)在内存中找一个位置做为一个迷你文件系统用来存放读取文件系统所需要的的模块,加载文模块再进行根切换
(3)ramdisk:内核都有缓存机制,认为磁盘效率慢会拷贝一份到内存中,然而ramdisk本来就在内存中,所以centos5的模拟磁盘(initrd)改进到centos6的文件系统(initramfs)就不会出现拷贝问题
(4)
4. 启动加载内核
GRUB第一步先找到设定的内核位置,(第一点五步 加载驱动(文件系统驱动))第二步加载内核
注释:硬件本身或bootloader能识别硬盘本身而不能识别文件系统,MBR剩余空间会有能找到当前文件系统的驱动的设定
MBR组成:一共512B
446B:主引导程序(引导程序有很多,linux中的引导程序是GRUB)
grub配置文件 /boot/grub/grub.conf
64B:分区表 每个分区需要14B所以主分区最多4个
2B:magic numbe 标记MBR是否有效
5.
补充:
SysV:启动服务起非常慢,串行进行,一个启动完另一个才能启动
Upstart:兼容SysV,可以串行启动
Systemd:自身就有解释器功能,启动进行不需要借助其他解释器
如果进行不用就不会启动,但是会发出一个假信号让服务器以为进行已经启动,直到此进
程第一次被用到时才会加载初始化
以上总结:
6.系统启动流程概述
(1)BIOS读取到内存中进行硬件自检
(2)如果没问题就根据BIOS设置先找移动U盘(如果坏了就不会再找下一个设备)没有再找硬盘的MBR,然后会把
MBR 的主引导程序grub加载到内存BIOS退出
(3) 然后grub通过配置根据分区表找到内核并加载
(4)内核装在驱动 加载第一个程序/sbin/init
(5)init OS初始化,执行runlevel(运行级别)相关程序
(6)runlevel 启动指定级别分服务
7.
init进程管理的服务都在 /etc/rc.d/init.d目录下有服务执行脚本,在 /etc/rc.d/下的rc[0-6]份别对应相应的运行级别中需要关闭和开启的服务脚本(都是/etc/rc.d/init.d的软连接,按照一定的排序方式命名)
/etc/rc.d/init.d中配置有软连接命名数字
第一个数字“-” 表示在那些级别下为start,- 表示默认所有级别下都为K(stop)
第二个数字 表示设置成S(start)文件时文件开头命名
第三个数字 表示设置成K(stop)文件时文件开头命名
8.
例:
添加开机启动:
先编辑启动脚本
vim /etc/rc.d/init.d/文件名
chkconfig --add 后就会自动把执行文件根据文件容创建软连接到相应级别下的目录
例
9.
10.
centos6
11
补充:若果不适用逻辑卷等复杂文件系统结构,boot可以不用单独分区(新磁盘)的
1.grub版本:
grub 0.x:grub legacy (centos5和centos6)
grub 1.x :grub 2 (centos7 完全重写)
2 步骤
3.stage2的功能:
4. grub的命令行接口 c
help:获取帮助列表
help KEYWORD :详细帮助信息
find (hd#,#)/PATH/TO/SOMEFILE: 查找文件是否存在
root (hd#,#) 设置grub的根
kernel /PATH/TO/kernel_FILE :指明内核文件(先root 设置根)、额外许多参数
initrd / PATH/TO/INITRAMFS_FILE 设置为选定内核提供额外文件ramdisk(假根)
boot:引导启动选定的内核
例
5.
6.安装grub 和相关配置并启动(攒一个简单系统)
补充:安装grub命令 : grub-install --root-directory=根的具体路径 具体磁盘
(1)添加一块新盘 分区格式化挂在
(2)安装grub
(3)编写grub配置文件
vim /mnt/boot/grub/grub.conf
(4)把根文件系统必要的目录进行创建
(5)可以吧bash当init来用启动第一个进程。拷贝bash配置文件、执行文件,查看相关库文件并拷贝,并切换根测试
补充:ldd本身不是一个程序,而仅是一个shell脚本:ldd可以列出一个程序所需要得动态链接库(so)
chroot 切换根
(6)创建一个用Vm虚拟机,首先查看新加盘的位置,并选定这个新加磁盘,其他默认
(7)启动不了还需要给内核传递个selinux参数,或者早grub配置文件里指明(敲e键)
补充:
1.MBR被破坏,但未损坏分区表,系统未关机
修复方法
(1)重新安装grub:
grub-install --root-directory=/ /dev/sda
(2)进入grub命令恢复(前提必须有grub目录,相关包都有的情况下才能恢复)
1.root密码找回:
(1)进入单用户模式
系统启动三秒内摁上下键
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190212214114371.png)
回进入下图,然后e键
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190212214239738.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MzgxMjE5OA==,size_16,color_FFFFFF,t_70)
选择第二项继续e键
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190212214308808.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MzgxMjE5OA==,size_16,color_FFFFFF,t_70)
然后直接空格然后输入1
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190212214359937.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MzgxMjE5OA==,size_16,color_FFFFFF,t_70)
回车
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190212214428181.png)
然后按下b进入单用户模式
然后直接passwd root 修改密码
2 /dev/sda 中的整个MBR(512)模拟损坏修复:注意这个需要做备份才能恢复
备份到另一个磁盘
dd if=/dev/sda of=/bakup/mbr.bak bs=512 count=1
模拟损坏
dd if=/dev/zero of=/dev/sda bs=512 count=1
重启会出现
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190212215943639.png)
(1)挂在启动光盘进入救援模式第三行rescue(救援)回车
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190212220051873.png)
(2)或者挂载光盘后桥ESC键盘 输入命令进入
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200420172846497.png)
其他都选yes 设置网络选择no
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190212220207984.png)
选择continue:扫描根分区如果找到就把根分区自动挂载到 /mnt/sysimage
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190212221228519.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MzgxMjE5OA==,size_16,color_FFFFFF,t_70)
下图是没有找到根分区
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190212221306256.png)
然后选择启动一个shell,选第一个回车
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190212221349623.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MzgxMjE5OA==,size_16,color_FFFFFF,t_70)
然后出现下图内容,所看到的东西是光盘的东西
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190212221521721.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MzgxMjE5OA==,size_16,color_FFFFFF,t_70)
然后查看磁盘分区,可以看到因为MBR分区表破坏掉了所以sda没有分区,而sdb有一个分区,我们把MBR备份了sdb一份所以可以直接复制回来完成恢复
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190212221709168.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MzgxMjE5OA==,size_16,color_FFFFFF,t_70)
先建一个子目录挂在sdb 备份还原
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190212221906894.png)
然后exit退出找到Reboot重启就回复了
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190212222020431.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MzgxMjE5OA==,size_16,color_FFFFFF,t_70)
3 MBR中分区表没有破坏但是grub损坏:这个没有做备份也可以恢复
模拟破坏grub
dd if=/dev/zero of=/dev/sba bs=446 count=1
现象跟MBR损坏一样
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190212222551268.png)
步骤跟MBR一样挂在启动光盘进入救援模式,但是在点击continue扫描的时候就能够找到根分区并自动挂载
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190212222808352.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MzgxMjE5OA==,size_16,color_FFFFFF,t_70)
然后会提示发现界面
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190212222832414.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MzgxMjE5OA==,size_16,color_FFFFFF,t_70)
回车 选择shell项 然后出现命令行,根据提示执行 chroot /mnt/sysimage 挂在真正的根分区而不是光盘模拟的根了
然后grub-install /dev/sda 通过命令进行重装grub启动程序 然后exit退出重启
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200420173925151.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MzgxMjE5OA==,size_16,color_FFFFFF,t_70)
4 MBR中grub程序中的配置文件出现故障
模拟移除grub.conf配置文件
mv /boot/grub/grub.conf /tmp
现象
因为硬盘的grub在所以不会再去找光盘所以需要进入bois设置光盘启动顺序
虚拟机进入的话下图按钮然后选择最后一项,服务器的话根据提示按F2进入bois
开关按钮→打开电源室进入固件
选择CD-ROM启动然后按+号上移
F10退出保存
然后重启光盘引导进入救援模式
然后chroot /mnt/sysimage 挂在根分区
然后或者备份恢复或者手动重写grub.conf 配置文件
也可以直接敲命令安装grub
exit退出重启
4.1 补充:
UEFI:UEFI启动可以看作是Bios的升级版,功能更强大。被看作是有近20多年历史的BIOS的继任者,其优势在于可以提高电脑开机后,进入操作系统的启动速度。
更安全
启动灵活
支持容量更大:
由于传统BIOS的MBR限制他的分区数量与大小都是由限的,随着硬盘价格的不断走低和普及UEFI支持更大容量会越来越成为主流
GPT:
1.内核由核心和模块组成,模块有三类:不启用、集成到内核、作为模块单独存放
模块相关命令
3.
4.
5.
6.生成的依赖关系文件在/boot/下的一个 *.map的的文件
7.与modprobe区别在于不能解决依赖关系,装在模块是必须要指明绝对路径需结合modinfo来用 ,卸载命令时可以不用指定路径
8.修改/proc临时有效
例:
9.永久有效可以再配置文件 /etc/sysctl.conf 配置
补充:路由转发功能 :同一个机器不同网卡可以互相转发
查看方法
sysctl -a 查看所有内核参数
或者以下两种方法
然后 sysctl -p 立即生效
补充:回收缓存
补充:
10.
11.
12.内核编译
过程:
(1)下载解压内核到制定目录
(2)做内核软连接
(3)复制模板到内核文件目录(现有模板包含所有本机识别的硬件驱动模块)
(4)编译
【5】编译内核时间很长,为了关闭中断而不会中断进程可以介质screen(倭终端工具)
(6)安装模块
(7)安装
make install 可以实现:
补充:screen:
创建:直接screen 回车 会开启一个新的虚拟中端
剥离: ctrl +a,d
退出并关闭:exit
查看(创建的所有screen):screen -ls
切换: screen -r #
13.内核编译的步骤
例:
make ARCH=arm help
补充:常见系统对比
7.1
7.2 查看现在系统所支持的文件类型(没标注 nodev 的说明是正在使用的文件系统)
7.3 查看内核中已经装在的模块
8.1 分区管理工具
创建分区
l = L作用相同都是查看支持的类型
8.2 查看内核能识别的分区表、重读分区表(partprobe)
8.2.1 partx -a 分区名字 :重新检测分区表(注意:centos6与7这个命令用法不同)
8.2.2 kpartx -a 分区名字:同partx -a
8.2.3 centos5 上没有这两个工具 可以用 partprobe
ext2非日志文件系统
exi3 日志文件系统,保存时先把文件保存在一个日志空间中,就算断电也能很快检索出损坏文件位置
创建文件系统
-f 强制创建
Filesystem label= 卷名
OS type 系统类型
Block size=4096 块大小
inodes 数量 blocks 块数量
5.00% 预留大小
8 block groups 8个组
每个组的块数量、偏移量、inodes数量
Creating inode 日志
mke2fs -t {exit2|exit3|exit4 }
11.1.1 检查文件系统相关命令
11.1.2
-y:自动回答为yes
例:
13. fuser
14. 交换分区
(1)物理内存被分成好多片,每个进程运行时都会被虚拟出例如4G内存,存放数据时映射到物理内存中的一片区域(不连 续的)所以可以多个进程同时运行
(2)交换分区作用: 物理内存资源用完,会把物理内存中其中不经常用到的数据存放在硬盘所创建的交换分区中,等到用到时在读取到内存再把其他频率少的数据存放在交换分区中,这样就可以透支内存使用,提高服务器性能
(3)free -m 查看内存
其中buffers/chached 为缓冲区是为了提高服务器性能:安装读取效率由高到低 cpu计算器、cpu缓存、内存、交换分区,缓冲区是为了更好地衔接缓冲不同读取速率差异的,即使他们里面的数据删除也不会丢失数据,所以真正的使用的内存要 - 缓冲区大小 空闲内存是 + 缓冲区大小
(4)新建交换分区
fdisk /dev/sda
n 新建
t 调整分区类型
8 第八个分区
L 查看分区类型
82 swap分区类型
partprobe 通知内核重新读取
mkswap /dev/sda8
[-L] 设置卷标
swapon /dev/sda8 启用交换分区
-a 启用所有的定义在/etc/fstab文件中的交换分区设备
swapoff
15.
16. dd命令(复制)
(1)与cp的区别:
cp:是要把文件读到内存中复制这一整个文件
dd:直接复制文件的二进制,可以设定复制的字节数,可以不完整复制文件
(2)相关参数
if=数据来源
of=数据存储目标
bs=1 单位(以多大为一个单位)
count=2 复制几个单位
例:备份MBR
例模拟创建一个交换分区设备:
(3)其他参数
seek 跳过假的,但查看的话还是包含跳过去的空间大小,实际没有
17. /etc/fstab文件
如何让一个文件系统自动挂载的同时启动acl
(1)
(2)格式化的时候tune2fs
18.df
-h 单位换算
-i 查看inode使用情况
-P 不换行显示
1.核心特性
2.文件系统创建:(其中-m为元数据存放方式 -d为数据存放方式)
例:
3.查看
可以用 blkid
也可以 btrfs filesystem
show 显示
–all-devices (显示所有,包括未挂载的)
sync 内存中的缓存数据保存到磁盘
df 查看已挂在的磁盘空间使用率
defagment 碎片整理
label 指明或显示卷标
resize 修改磁盘大小
例:
或调整为最大
然后查看
4.管理设备
btrfs device
add:添加设备
delete:移除设备(移除设备时会自动转存数据到别的盘上,所以可以直接移除)
scan :扫描设备
stats :显示IO统计数据
例:
添加:
s
5.透明压缩机制(DEVICE:挂载的设备 MOUNT_POINT:挂载点)
6.数据均衡操作、修改raid级别 (如果新加入的盘,可以把已满磁盘数据均衡到其他磁盘上)
btrfs balance
start 启用此功能(注意数据太多的话时间会很长)
-d:修改数据的组织机制
-m:修改元数据的组织机制
-s:修改系统的组织机制
在-d/-m 后面可以加
convert 修改成哪种组织机制
常见组织机制:
例:
cancel 停用此功能
pause 暂停此功能
resume 继续此功能
status 显示此功能状态
7.创建子卷、快照
btrfs subvolume
create 创建子卷
delete 删除子卷
list 列出
snapshot 快照
show 查看子卷的详细信息
例:
创建并查看子卷
7.1 单独挂在子卷(单独挂在子卷时,其他子卷无法使用)
例
查看
删除
创建快照
对一个文件创建快照
8.ext与btrfs文件系统之间的转换
先强制监测一下
fsck -f 如果没问题
btrfs-convert /dev/sd1
然后 btrfs filesystem show 查看
还原成ext系统
btrfs-convert -r /dev/sd1
blkid 查看