Linux操作系统启动流程
发布时间:2014-4-2 14:53
发布者:edu11814
关键词:
Linux
启动流程 上电开机-- BOIS实现硬件自检初始化-- 找到启动设备的编号 -- 找到MBR(主引导记录,在硬盘的0磁道的0扇区) -- 启动grub程序 -- 通过grub设置找到vmlinuz并加裁到内存里运行 -- 启动内核会加载initrd(随机内存盘,小型文件系统,作用:能够让内核认出系统所在的哪个设备上,临时驱动) -- 运行产生第一个进程init -- init进程会读取/etc/inittab根据配置文件,判断系统进去运行在哪个级别并进入相对应级别启动相应服务 -- /etc/rc.sysinit 系统环境初始化,获取主机网络环境,测试或者载入设备,设置时间... -- /etc/rc.local开机后要运行的脚本 /etc/inittab 0 关机 1 单用户模式 2 没有网络的文本模式 3 有网络的文本模式 4 保留 5 图形模式 6 重启 id:5:initdefault: 默认开机后进入的系统级别 l0:0:wait:/etc/rc.d/rc 0 ....... l6:6:wait:/etc/rc.d/rc 6 定义六个级别启动的服务脚本 ca::ctrlaltdel:/sbin/shutdown -t3 -r now 定义ctrl+alt+del三键重启功能,在tty模式有效,在图形模式下无效,这个还会受到内核参数的影响 1:2345:respawn:/sbin/mingetty tty1 ..... 6:2345:respawn:/sbin/mingetty tty6 定义了6个虚拟终端 x:5:respawn:/etc/X11/prefdm -nodaemon 启动图形 x:5nce:/bin/su root -l -c "/bin/bash --login -c startx >& /dev/null" 自动用root登录图形 respawn 代表什么时候终止都重新启动命令 once 代表运行这个命令一次 /etc/rc.local linux启动最后阶段,系统会执行/etc/rc.local脚本 /etc/X11/xinit/xinitrc.d/ 此目录里可以放置图形界面开启自动运行的脚本 =============================================================================== 三、GRUB启动加载器 cd /boot/grub stage1 MBR中的bootloader备份文件 stage2 grub的核心文件 device.map grub与linux的硬盘符号映射表 splash.xmp.gz grub的背景图片 grub.conf grub的配置 ------------------------------------------------------------------------------- vim /boot/grub/grub.conf 配置文件 default=0 默认启动的操作系统(0代表第一个title....) timeout=5 5秒后自动启动default操作系统 splashimage= 指定背景图片的路径 hiddenmenu 隐藏开机选项 password --md5 设置启动参数密码,grub-md5-crypt产生 title 操作系统名称 password --md5 设置启动操作系统密码 root 指定kernel和initrd所在的分区,(hd0,0),表示第一块硬盘,第一个分区 kernel 指定kernel路径,内核启动参数 initrd 指定initrd路径 rootnoverify 指定其它操作系统(windows) chainloader +1 链接加载到第一扇区(windows) -------------------------------------------------------------------------------- grub背景图片制作 convert 源图片 -resize 640x480! -colors 14 test.xpm 修改颜色数和分辩率 convert没有此命令: imagemagick 找此关键字安装 ------------------------------------------------------------------------------- grub命令 help 列出命令 quit 退出 root(hd0,1) 指定第一个硬盘第二个分区为grub文件所在的分区 setup(hd0) 安装grub到第一个硬盘上 把grub安装到硬盘第一扇区: grub-install /dev/sda boot 启动系统 grub.conf中title下的命令都一样 ------------------------------------------------------------------------------- kernel 启动参数 ro 以只读的方式加载内核,默认rw root=LABEL=/ 指定卷标是/的分区为根分区,也可以直接指定设备文件 rhgb 图形启动时以图形方式显示启动信息 quiet 启动时不显示检查硬件的信息 [0-6] 1启动单用户模式.... vga=792 指定终端的分辩率为1024x768 panic=n 内核崩溃n秒后重新启动 iso-scan/filename=/0.91.iso 指定根分区为iso镜像 boot=casper 启动iso默认访问的文件夹 ------------------------------------------------------------------------------- initrd作用 Kernel网启动没有任何文件系统的目录,这时会先以initrd提供的目录当作kernel的暂时目录,该文件系统主要提供内核启动时需要的驱动,ext3文件系统驱动,如果没有该驱动就不能挂载根分区,没有挂载根分区就不能读取根分区中的ext3驱动,所以要有一个临时的initrd提供驱动 ------------------------------------------------------------------------------- 打开initrd file initrd-* 检查到该文件为gzip文件,不要相信扩展名 mv initrd initrd.gz 改变扩展名 gzip -d initrd.gz 解压gz文件 file initrd 检查到该文件为cpio文件 cpio -im < initrd 解压cpio文件 打包initrd find | cpio -co | gzip -9 > initrd-new.img ------------------------------------------------------------------------------- grub 排错引导例子 如果grub丢失,或者grub写的有错误等情况,进系统时有可能会直接到一个grub>的界面(也就是黑屏幕上就一个grub >的提示符) grub> root (hd0,0) --进入到/boot分区 grub> kernel /vmlinuz-xxxxxx ro root=LABEL=/ --根分区可以用label,也可以用/dev/sdax来代替 grub> initrd /initrd-xxxxxx grub> boot --boot代表启动 如果能启动,就修改好你的grub 如果启动出现kernel panic 的错误,表示是上面写错了,再试试,不行就用linux rescue去修复 |
网友评论