声明:本系列文章是博主根据 “兄弟连新版Linux视频教程”做的笔记和视频截图,只为学习和教学使用,不适用任何商业用途。
PS:文章基于Linux版本CentOS6.9,如果对Linux感兴趣,建议去看《细说Linux》,沈超老师和李明老师的教学风格我很喜欢:)
1.运行级别
运行级别1:单用户模式,只启动最基本的服务,主要用于系统修复;
Linux还有真正的安全模式,从光盘启动;
init 0就是关机命令,但是不同于shutdown命令,他不会保存系统正在运行的服务状态,所以比较不安全;
init 6即重启命令;
如果安装系统时选择的是Basic Server,那么不会包含图形界面,init 5命令也就没有效果;
使用runlevel 命令可看到当前运行级别和 上次系统的运行级别(分别与上次5级别和本次3级别):
启动过程:
1.MBR通过启动引导程序(grub) 进行下一步的启动;
2.相比于Windows系统安装后需要手动安装驱动,Linux在解压缩内核时会自动安装驱动,除非内核中不包含的驱动需要手动安装;
3.内核会搜索initramfs,然后创建一个仿真目录,在目录中搜索驱动进行加载
有意思的是,内核安装的驱动一般放在硬盘中,而如果硬盘是SATA接口的,由于读取硬盘的驱动也在硬盘中,就好比需要钥匙才能开门,但钥匙被锁在门内,怎么办呢?
内核会搜索initramfs,然后创建一个仿真目录,在目录中搜索驱动进行加载;
同时会发现initramfs在boot分区下,而boot分区也在硬盘中,那么是如何读取的呢?其实不是由内核读取,而是有启动引导程序grub在开始时已经加载;
initramfs建立仿真目录过程:
file 文件 命令可以查看文件类型,看到initramfs是一个gzip格式的压缩文件:
修改文件后缀为 .gz 后,进行gunzip 压缩文件 进行解压缩;
发现解压后的文件为二进制文件(ASCII)
查看、解压缩 二进制文件,使用 cpio –ivcdu < 二进制文件 命令,得到解压后的目录,即仿真目录(类似根目录下的目录结构),其中主要用到的为lib下的文件:
4.加载驱动后读取真正的硬盘根,进行init初始化
调用 /sbin/init 命令(系统启动的第一个命令)
然后调用/etc/init/rcS.conf 配置文件去加载其他的配置文件:
这个配置文件其实在/etc/inittab 中也有说明:
5.调用/etc/init/rcS.conf配置文件
6.根据/etc/init/rcS.conf配置文件调用/etc/rc.d/rc.sysinit进行系统初始化
7.根据/etc/init/rcS.conf调用/etc/inittab设定系统运行级别并加载附加的配置
8.根据运行级别调用/etc/rc[0-6]d
如上etc/rc[0-6]d/下的K开头的文件在关机时会依次执行,S开头的文件在开机时会依次执行;
9.根据/etc/rc.d/rc.local文件执行命令
1.grub中分区表示
在Linux中:
如果是IDE接口接入的硬盘,设备文件名为/dev/hd[a-d] ,
如果是SATA接口或SCSI接口接入的硬盘,设备文件名为/dev/sd[a-p] ;
但在Grub中设备文件名统一用hd(x,y)表示:
其中x代表第x块硬盘,y代表第y个分区;
2.grub配置文件
进入grub配置文件vi /boot/grub/grub.conf:
如上图,如果还有其他的系统,依次往下排;
在grub中(hd0,0)/grub/splash.xpm.gz 代表第一块硬盘第一个分区下的/grub/splash.xpm.gz文件,即/boot/grub/splash.xpm.gz
在下面一块内容:
title是启动界面显示的标题,可以自定义;
root指定根目录(只在本文件中生效)为(hd0,0) ,也就是/boot;
kernel 加载内核用到的配置,/vmli… 也就是/boot/vmli…;
initrd 指定用于创建仿真目录 的文件的位置,在/boot/initramfs-…;
1.grub加密
在Linux开机时,随便敲击键盘可进入系统选择界面,下面说明中显示点击e可进入编辑界面,进而可以修改系统的启动配置,这是很危险的,可以通过在/boot/grub/grub.conf文件中配置编辑加密来让这个过程更安全;
加入我设置密码为123456,输入grub-md5-crypt命令,得到加密后的字串:
然后在/boot/grub/grub.conf开机背景设置上添加一行,password --md5 密码:
此时,再进入开机等待界面,发现需要输入p来确认密码才能进入编辑界面:
2.纯字符界面分辨率调整
将对应的配置加在kernel最后 ,如:vga=791
某些版本不支持十进制,需要把上述表格中的数字换算成16进制,redhat和CentOS都支持十进制
1.单用户模式
在选择系统界面,e键进入编辑模式,可以看到在/boot/grub/grub.conf文件中定义的三个系统配置:
我们选择第二项内核配置,同样的e键进行编辑,在最后空格追加运行级别 1,表示单用户模式:
再enter确认配置后,b键重新启动,此时发现不需要密码可直接进入系统:
此时我们可以使用 passwd root 命令修改root用户密码,也可以防止在/etc/inittab文件中设置运行级别为0或6而开不了机,可以重新设置运行级别:
2.光盘修复模式
此模式下可以去除grub加密,也可以重新从光盘中复制丢失的系统文件:
首先,添加镜像文件:
开机F2进入BIOS界面,选择光盘启动:
选择修复模式(第一个选项是安装系统选项):
一路OK(是否连接网络可以选否):
选择shell命令行模式:
发现不需要密码就可以进入系统
根据提示,使用chroot /mnt/sysimage 命令设置根目录为硬盘目录(注意在光盘模式下需要挂载硬盘)
rpm2cpio 包全名|cpio –idv .文件绝对路径
.的作用是把文件提取到当前目录下,一般是固定格式;
例子:
假如/etc/inittab文件丢失:
执行rpm2cpio /mnt/cdrom/Packages/initscripts-8.45.3-1.i386.rpm\
|cpio -idv ./etc/inittab命令乱码:
原因是忘记输入管道符,重启再次尝试正常提取
然后可以复制 当前目录下(/root)的/etc/inittab文件到/etc/inittab文件:
cp etc/inittab /etc/inittab
当然也可以修改/etc/grub/grub.conf删除password –md5那一列来去除grub加密
3.Linux安全性
给BIOS加密: