一、 CentOS 6启动过程
通常,默认级别为3或5,服务器通常默认使用级别3。您可以在不同级别之间切换。切换方法是:init [0-6],可以使用-r或run_leave命令来检查运行级别。
二、 GRUB程序的三个阶段
grup配置文件的路径为:/ boot / grub /,内容如下:
三、关于GRUB调试
1、破解root用户密码
如上图所示,您可以使用向上和向下键选择要启动的操作系统(此处仅使用一个);

按“ e”编辑所选项目;
按“ a”修改所选项目的内核参数;
按“ c”进入命令行模式;
2、为GRUB菜单设置保护密码
默认情况下,进入GRUB菜单后,您可以在没有任何密码的情况下进行编辑,这是相对危险的,因此,您可以修改配置文件以设置GRUB菜单的密码保护,并在标题栏上方添加一行pwssword。文件PASSWD,密码支持命令密码和加密密码,具体设置如下图所示:
生成md5加密密码的命令为:grub-md5-crypt
将密码添加到文件后,如果要在再次进入GRUB菜单时进行编辑,则必须按“ p”键,然后在通过密码验证后才能对其进行编辑,如下所示图:

类似地,在配置文件的标题中添加密码可以保护内核,也就是说,您需要输入密码来验证系统,然后才能启动。
3、取消图形界面的启动,并使用文本界面启动
系统的默认启动方法是图形界面启动,因此您看不到系统的启动过程。您可以修改配置文件以将其设置为文本界面启动。还建议在生产环境中使用文本界面启动,因为可以在整个过程中看到这种启动方法,如果在启动过程中有任何服务出错,则可以及时发现它。修改方法是删除内核参数中的rhgb和quiet。
4、 / boot下的文件已损坏或丢失的恢复方法
在加载救援模式的过程中,将提示已找到硬盘上的系统并将其安装在/ mnt / sysimage下,因此进入救援模式后,可以使用chroot / mnt / sysimage命令进行切换到硬盘上操作系统的根目录。由于救援模式下提供的命令受到限制,因此不支持许多命令。
如果进入救援模式后未在硬盘上找到根文件系统,则需要使用相关命令查找并分析根文件系统所在硬盘分区的位置。如果硬盘使用普通分区,则可以使用blkid命令和fdisk -l命令分析根文件系统的分区位置;如果硬盘使用LVM分区,则可以使用lvscan命令查看分区,则需要使用vgchange -ay命令激活VG卷组。
分析根文件系统所在的分区后,挂载根文件系统,然后检查并修改fstab文件。如果缺少该文件,请手动创建一个副本,并添加用于以相应格式安装根文件系统的条目,然后重新启动系统,直到可以自动检测到硬盘上的系统并将其安装在/ mnt / sysimage下。
vmlinuz --_ 64和initramfs --_是系统启动时的两个必需文件,而其中一个是必不可少的。
vmlinuz --_ 64:内核文件,如果仅缺少该文件,则可以从CD或相同版本的操作系统中复制它。
initramfs --_:一个虚拟文件系统,可以通过Boot Loader程序将其加载到内存中,然后对该文件进行解压缩并模拟内存中的跟随文件系统,该跟随文件系统可以提供可运行的程序,通过该程序可以加载引导过程中所需的核心模块(RAID,LVM,SCSI以及其他文件系统和磁盘驱动程序)。加载完成后,它将协助内核重新调用/ sbin / init以执行后续的Normal启动。如果仅缺少文件,则可以使用mkinitrd / boot / initramfs-uname -r`.img`uname -r`来重新生成它。
5、文件损坏修复
如果文件已损坏,则操作系统将无法正常启动。如果您手中有安装CD,则可以在应急模式下重新创建文件,但是如果您没有安装CD,则可以通过以下方式对其进行修复:
四、在U盘上创建自己的Linux系统
根据CentOS 6的启动过程,您可以在U盘上制作定制版本的Linux系统。首先,您需要划分/ boot分区和根(/)分区,然后需要安装grub,然后复制内核文件和initramfs将文件放入U盘的/ boot目录,最后创建必要的配置文件。具体步骤如下:
[root@localhost ~]# cat
#!/bin/bash
ch_root="/mnt/sysroot"
[ ! -d $ch_root ] && mkdir $ch_root
bincopy() {
if which $1 &>/dev/null; then
local cmd_path=`which --skip-alias $1`
local bin_dir=`dirname $cmd_path`
[ -d ${ch_root}${bin_dir} ] || mkdir -p ${ch_root}${bin_dir}
[ -f ${ch_root}${cmd_path} ] || cp -n $cmd_path ${ch_root}${bin_dir}
return 0
else
echo "Command not found."
return 1
fi
}
libcopy() {
local lib_list=$(ldd `which --skip-alias $1` | grep -Eo /[^[:space:]]+)
for loop in $lib_list;do
local lib_dir=`dirname $loop`
[ -d ${ch_root}${lib_dir} ] || mkdir -p ${ch_root}${lib_dir}
[ -f ${ch_root}${loop} ] || cp -n $loop ${ch_root}${lib_dir}
done
}
read -p "Please input a command: " command
while [ "$command" != "quit" ];do
if bincopy $command ;then
libcopy $command
fi
read -p "Please input a command or quit: " command
done
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/sanxing/article-356064-1.html
不要有丝毫留情
中国品牌严重低估