标签:单用户模式 exe boa src 执行 centos7 参数 启动 too
解析:
CentOs6启动流程:
1、POST:加电自检,硬件环境(.加载BIOS的硬件信息,获取第一个启动设备)
2、grub 1 前446个字节(读取第一个启动设备MBR的引导加载程序(grub)的启动信息)
3、grub 1.5 加载/boot 分区文件系统(加载核心操作系统的核心信息,核心开始解压缩,并尝试驱动所有的硬件设备)
4、grub 2 /boot/grub/grub.conf定义了内核文件(核心执行init程序,并获取默认的运行信息)
5、vmlinuz 加载/ /boot/initramfs.xxx(版本号).img(init程序执行/etc/rc.d/rc.sysinit文件)
6、/sbin/init /etc/inittab id:3:(.启动核心的外挂模块)
7、rc.sysinit(init执行运行的各个批处理文件(scripts))
8、/etc/rc3.d/S,Kxxx --> /etc/init.d/xxx(init执行/etc/rc.d/rc.local )
chkconfig --level N service on off
9、/etc/rc/locl(执行/bin/login程序,等待用户登录)
10、login(登录之后开始以Shell控制主机)
Power-On-Self-Test:加电自检,是BIOS功能的一个主要部分。负责完成对CPU、主板、内存、硬盘子系统、显示子系统等硬件情况的检测。
BIOS:Basic Input and Output System,保存着有关计算机系统最重要的基本输入输出程序,系统信息设置、开机加电自检程序和系统启动自举程序等。
CMOS:保存主板的设置时间等参数,依靠主板上的CMOS纽扣电池。
引导加载器,Windows使用的bootLoader是ntloader,只可以引导Windows系统;Linux使用的bootloader早期有LILO(LInux LOader),现在6系列用的GRUB0.97版,7系列使用的是GRUB2。
grub总共分为三个阶段:
功用:
grub的配置文件(/boot/grub/grub.cfg)
default=0 #默认title timeout=5 #grub菜单选择超时时间 splashimage=(hd0,0)/grub/splash.xpm.gz #grub菜单背景图片 hiddenmenu #隐藏grub选择菜单 password --md5 | ----encrypted 口令 #加密方式和口令,为grub加密防止进如单用户模式修改密码,口令使用下面的命令生成
# grub-md5-crypt 生成MD5的密码 # grub-crypt 生成sha12的密码
title Red Hat Enterprise Linux 6 (2.6.32-642.el6.x86_64) root (hd0,0) #指定的是/boot所在磁盘的分区"hd0,0"表示第一块磁盘的第一个分区 kernel /vmlinuz-2.6.32-642.el6.x86_64 ro root=UUID=e1d36be7-5027-4847-9d80-135ac9fb798e rd_NO_LUKS rd_NO_LVM LANG=en_US.UTF-8 rd_NO_MD SYSFONT=latarcyrheb-sun16 crashkernel=auto KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet #向内核传递的cmdline参数 initrd /initramfs-2.6.32-642.el6.x86_64.img #指定initramfs文件的所在路径,注意:(这里的"/"相对的是/boot分区)
如果grub损坏我们可以用下面命令修复
grub-install --root-directory=DIR /dev/DISK --root-directory=DIR:根目录
如果grub配置丢失了怎么办:
在开机的时候会进入grub的命令行接口,但是无法找到内核和ramdisk,所以我们手动指定参数和路径就可以启动系统了。
help: 获取帮助列表 help KEYWORD: 详细帮助信息 find (hd#,#)/PATH/TO/SOMEFILE: root (hd#,#) kernel /PATH/TO/KERNEL_FILE: 设定本次启动时用到的内核文件;额外还可添加许多内核支持使用的cmdline参数 initrd /PATH/TO/INITRAMFS_FILE: 设定为选定的内核提供额外文件的ramdisk boot: 引导启动选定的内核
分别指定root(指的是/boot分区),kernel指定内核,initrd指定ramdisk文件,然后boot就可以启动系统了,进入系统后重新编辑/boot/grub.cfg文件来修复问题
在grub第2阶段的时候只能识别到/boot分区,这个时候内核开始初始化,探测完硬件后开始需要去找根,但是这时还没有驱动程序,所以这个时候需要借助ramdisk来驱动硬件。在CentOS5系列中文件名为/boot/inird,6和7已经改成initramfs。
initramfs中也提供了一个根文件系统,其中包括了硬件必须的驱动,到了这步内核借助这个虚根文件系统来挂载真正的根文件系统。
initramfs文件是在安装系统时按当前的环境来生成的。
如果这个文件损坏了我们也可以使用工具来修复:
# mkinitrd /boot/initramfs-`uname -r`.img `uname -r` 为当前正在使用的内核重新制作ramdisk文件
init程序启动系统的第一个进程init,它负责创建系统启动后的所有服务进程
init程序的类型:
初始化的相关文件:
id:3:initdefault:
start on control-alt-delete exec /sbin/shutdown -r now "Control-Alt-Delete pressed"
init #:切换至#级别
runlevel:查看当前的运行级别和上一运行级别
示例:进入单用户模式
1)在启动过程中看到Booting 。。。的倒计时字样按下esc键
2)按a键修改启动参数,在quiet后加1(单用户模式)
3)按回车键启动,进入单用户模式,可以直接修改root的密码,或者可以修改一些其他服务配置文件错误导致的系统无法进入正常模式的操作。
SysV: init, CentOS 5之前
配置文件:/etc/inittab
Upstart: init,CentOS 6
配置文件:/etc/inittab, /etc/init/*.conf
Systemd:systemd, CentOS 7
配置文件:/usr/lib/systemd/system /etc/systemd/system
默认级别: 3, 5
切换级别:init #
查看级别:runlevel ; who -r
查看服务在所有级别的启动或关闭设定情形: chkconfig [--list] [name]
添加:
SysV的服务脚本放置于/etc/rc.d/init.d (/etc/init.d) chkconfig --add name
#!/bin/bash
#LLLL 表示初始在哪个级别下启动,-表示都不启动
# chkconfig: LLLL nn nn
删除: chkconfig --del name
注意:正常级别下,最后启动一个服务S99local没有链接至/etc/rc.d/init.d一个 服务脚本,而是指向了/etc/rc.d/rc.local脚本
不便或不需写为服务脚本放置于/etc/rc.d/init.d/目录,且又想开机时自动运行 的命令,可直接放置于/etc/rc.d/rc.local文件中
/etc/rc.d/rc.local在指定运行级别脚本后运行
可以根据情况,进行自定义修改
(1) grub-install
安装grub stage1和stage1_5到/dev/DISK磁盘上,并复制GRUB相关文件 到 DIR/boot目录下
grub-install --root-directory=DIR /dev/DISK
(2) grub grub> root (hd#,#) grub> setup (hd#)
cat /proc/cmdline 内核参数
(hd#,#)
hd#: 磁盘编号,用数字表示;从0开始编号
#:分区编号,用数字表示;从0开始编号
(hd0,0) 第一块硬盘,第一个分区
标签:单用户模式 exe boa src 执行 centos7 参数 启动 too
原文地址:https://www.cnblogs.com/yaun1498078591/p/9029353.html