第一节:Linux引导流程
-
固件 firmware(CMOS/BIOS) ——> POST加电自检,并读取主引导记录MBR
-
自举程序 BootLoader(GRUB) ——> 载入内核 配置文件:/etc/grub.conf
-
载入内核 Kernel ——> 驱动硬件
-
启动进程 init
-
读取执行配置文件 /etc/inittab
-
后续:initdefault //系统缺省运行级别
-
/etc/rc.d/rc.sysinit //所有级别,基本服务的加载
-
/etc/rc.d/rc //判断 initdefault,执行相应的脚本
-
/etc/rc.d/rc[0123456].d //
-
username password
显示当前终端号:
# tty
A typical Linux system will run one graphical console and five virtual consoles
If graphical console is inactive, it may be started manually: # startx
Switch among virtual consoles by typing:--- Ctrl-Alt-F[2-6]
Access the graphical console by typing:--- Ctrl-Alt-F1
Ctrl+Alt+F[1-6] //本地字符终端
Ctrl+Alt+F7 //X-Window
1.固件
固件与硬件平台相关,与操作系统无关
常用固件设置:
安全设置
可引导介质列表
可引导介质搜索顺序
电源管理
启动细节显示
# hwclock //BIOS时钟/CMOS时钟/Shardware clock
-s | --hctosys //set the system time from the hardware clock
-w | --systohc //set the hardware clock to current system time
--set --date="4/19/16 12:06:06"
# date //软件时钟
2.Bootloader(GRUB)
MBR(Master Boot Record) :主引导记录, 0柱面、0磁头、第1扇区
MBR:
1、Bootloader 446bytes
2、Partition table 64bytes
3、Magic Number 2bytes
GRUB作用:载入内核Kernel
3.Kernel
在引导过程中的作用:
1、驱动硬件
2、启动进程 init
4.init的工作
init启动后,读取配置文件/etc/inittab,执行缺省运行级别,从而继续引导过程。
init是第一个可以存在的进程,它的PID恒为1 //# ps -le | more
init向内核调度器(Kernel scheduler,PID为0)负责,从而获得CPU时间
第二节:Linux运行级别
/etc/inittab
#runlevel //查看当前运行级别
# init [0123456Ss] 或者 telinit [0123456Ss] //切换运行级别
grep -v "^#" /etc/inittab | more //浏览非注释内容
/etc/rc.d/rc.sysinit //System initialization
/etc/rc.d/rc
/etc/rc.d/rc[0123456].d{ //根据 id:5:initdefault: 默认运行级别5,执行相应的脚本 //与 /etc/rc[0123456].d 内容一样
S-start
K-kill
第三节:Linux启动服务管理
系统服务存放路径:
/etc/rc.d/init.d
手动管理服务
service
service --status-all
service iptables status/start/stop/restart/reload/force-reload
设置自启动服务
{
vim /etc/rc.d/init.d/msg.script
chmod u+x /etc/rc.d/init.d/msg.script
ln -s /etc/rc.d/init.d/msg.script /etc/rd.d/rc5.d/S100msg.script
修改目录/etc/rd.d/rc[0123456].d下软链接名称
}
chkconfig:
# chkconfig --list
# chkconfig --list network
# chkconfig --levels 2345 network off
# chkconfig --level 5 network off
# chkconfig ricci on/off
# chkconfig luci on
# chkconfig cman on
# chkconfig rgmanager on
ntsysv
#ntsysv //对当前运行级别,自启动程序进行设置
#ntsysv --level 3 //改运行级别为3的自启动设置
//查看引导期间的信息
#dmesg | more
#dmesg | grep sda
//查看系统日志/var/log/messages,查找可能被dmesg忽略的应用程序错误
#grep sshd /var/log/messages
第四节:GRUB配置与应用(自举程序 BootLoader(GRUB))
配置文件:
/boot/grub/grub.conf
软链接:
/etc/grub.conf
grub.conf{
default //定义缺省启动系统
timeout //定义缺省等待时间
splashimage //定义GURB界面图片,分辨率640*480,色深14
hiddenmenu //隐藏菜单
title //定义菜单项名称
root //设置GRUB的根设备所在的分区
kernel //定义内核所在的位置
initrd //命令加载镜像文件
}
Esc,进入GRUB菜单设置界面{
功能键:
e //*编辑当前的启动菜单项
c //*进入GRUB的命令行方式
b //*启动当前的菜单项
d //删除当前行
Esc //返回GRUB启动菜单界面,取消对当前单项所做的任何修改
eg: Esc-e-(e+" 1")+b //进入单用户模式
}
设置GRUB密码{
# grub-md5-crypt //得到md5密文
或者
#grub
grub>md5crypt
将密文加到:/etc/grub.conf hiddenmenu下面
password --md5 $1$xtJ0l$vpk6fNBzYtofqHThLjalY/
GRUB修复
当开机后进入grub界面但没有菜单,只剩下一个grub>提示符,解决方法:
c //进入GRUB的命令行方式
grub>cat /grub/grub.conf //查看参数
grub>root (hd0,0)
grub>kernel /vmlinuz-2.6.32-431.el6.x86_64 ro root=UUID=9b19ef83-b7d2-430f-b29b-13c658da0968 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
grub>initrd /initramfs-2.6.32-431.el6.x86_64.img
grub>boot
Linux修复模式
1、光盘
2、F5
3、linux rescue
/mnt/sysimage
#chroot /mnt/sysimage
#cat /etc/inittab
#cp /etc/inittab.bak /etc/inittab
注:可以修改 /etc/grub.conf 哦。破解 root、grub密码; 修复系统初始化init故障。
第五节:启动故障分析与解决
修复方案顺序:单用户模式修复(可以进入系统)——>grub修复(grub错误)——>光盘修复(init初始化失败)
参见 4、GRUB配置与应用