首页 > 代码库 > Linux启动过程笔记

Linux启动过程笔记

Linux启动过程

1、启动流程(BIOS->MBR:Boot Code->引导GRUB->加载内核->执行init->runlevel)

2、/boot/grub/下有多个文件   其中stage1为MBR镜像(512字节) stage2为引导程序
3、/boot/grub/grub.conf为引导的配置文件
default=0#默认加载下边哪个系统
timeout=3#引导等待时间
splashimage=(hd0,1)/boot/grub/splash.xpm.gz#引导界面的背景图
hiddenmenu#隐藏菜单
title CentOS(2.6.32.279.el6.i686)#系统名称
    root(hd0,1)#系统位置
    kernel /boot/vmlimuz-2.6.32.279.el6.i686 ro root=UUID=**  LANG=en_US.UTF-8 #内核及参数
    initrd /boot/initramfs-2.6.32.279.el6.i686.img#镜像文件

4、Linux为保持kernel精简将一些不常用的驱动、功能编译为模块,在需要的时候动态加载,而这些

模块被打包保存为一个initramfs文件
早期版本Linux使用initrd文件,initramfs是initrd的替代优化版本,比以前更加节省空间、更加灵活


5、dmesg查看内核的输出信息(查看内核级故障、设备驱动不起来时需要看内核信息)、信息最终保

存在/var/log/dmesg文件中
6、init为linux系统中的第一个进程(top中PID为1的),为所有进程的父进程
系统启动时调用/etc/rc.d/rc.sysinit负责对系统进行初始化,挂载文件系统,并且根据运行基本启动相应服务
运行级别:
0:关机
1:单用户模式
2:不带网络的多用户模式
3:纯文本多用户模式
4:未使用
5:XLL图形化多用户模式
6:重新启动
通过/etc/inittab 修改默认级别
每个级别保存在/etc/rc.d下(rc0.d、rc1.d、rc2.d。。。)
/etc/init 里边的文件为系统初始化配置文件(如启动ctrl alt del组合按键)

runlevel显示当前及上一个运行级别
N 5 (N表示没有上一个,5表示图形)

init 3表示切换到3级别下

单用户修改ROOT密码

引导时为内核传递参数"1"(数字1)或"single"可系统进入单用户模式(在引导模式下按e,选择内核后再按e,追加"1"启动)
单用户模式下不启用任何服务
单用户模式直接以root用户登录,并且不需要密码
可以使用passwd修改root密码

GRUB加密

通过在grub.conf中的启动配置中加入如下参数即可对grub进行加密:
password --md5 $1$ao---这里是密码

加密后的密码可以通过grub-md5-crypt命令生成,将生成后的密码替换上边的密码


rc.local文件讲解

很多人不知道rc.local和rc?.d的区别,rc.local是在系统初始化级别脚本运行之后再执行的,因此可以安全地在里面添加你想在系统启动之后执行的脚本。常见的情况是你可以再里面添加nfs挂载/mount脚本。此外,你也可以在里面添加一些调试用的脚本命令。例如,我就碰到过这种情况:samba服务总是无法正常运行,而检查发现,samba是在系统启动过程中就该启动执行的,也就是说,samba守护程序配置保证了这种功能本应该正确执行。碰到这种类似情况,一般我也懒得花大量时间去查为什么,我只需要简单的在/etc/rc.local脚本里加上这么一行:

          /etc/init.d/samba start

这样就成功的解决了samba服务异常的问题。



Linux启动过程笔记