RHCE课程-RH131Linux管理笔记二-Linux系统启动流程2008-12-1419:52:31标签:LinuxgrubRHCE系统启动流程rescue[推送到技术圈]版权声明:原创作品,谢绝转载!否则将追究法律责任。这节课程是相当重要的。也是RHCE考试上午的考的主要内容,系统排错。只要你看懂了系统的启动流程,排错就基本没有多大问题了。计算机启动,上电自检检查BIOS就不说了,所有系统都那样。下面就是LINUX的启动流程:1、硬件读取引导扇区2、加载LILO或者Grub(一般我们使用的是GRUB,这个是重点)3、加载内核(以只读方式挂载)4、挂载根文件系统5、启动init,一切进程的“祖父”6、读取/etc/inittab文件7、读取rc.sysinit文件8、运行rcX.d下的文件(文件都是init.d下的符号链接)其中有一个xinetd的超级进程,调用/etc/xinetd.conf配置文件,从配置文件中知道读/etc/xinetd.d文件,结束后调用Miggetty9、读取/etc/rc.d/rc.local文件具体步骤在启动的时候大家都能看见滴哈~~~BIOS初始化检查外围设备检查启动设备读区MBR启动引导工具引导并运行核心,分为两个独立的阶段:第一阶段:存放在启动扇区第二阶段;/boot目录下的文件第一阶段即BIOS从启动扇区中读入IPL(初始化程序引导工具)这一过程。因为MBR的空间太小,所以启动引导工具往往还需要从其他地方进一步读入数据,即所谓第二阶段。这通常是一个可以做选择的交互界面。在Linux中常用的启动引导工具:grub和lilo在某些时候,WINDOWS支持多系统就需要安装GRUB哈GRUB:GrandUnifiedBootloader被广泛地用于替代lilo支持在启动时使用命令行模式支持md5加密保护可以从ext2/ext3、ReiseFS、JFS、FAT、minix及FFS文件系统上启动其配置文件为/boot/grub/grub.conf,更改grub.conf即可立时生效如果硬盘上的MBR被更动过,可以用/sbin/grub-install/dev/hda来重安装grub现在我们打开/boot/grub/grub.conf查看一下哈:vim/boot/grub/grub.conf这就是grub.conf的精华我们分析一下这个文件哈:#grub.confgeneratedbyanaconda##Notethatyoudonothavetorerungrubaftermakingchangestothisfile#NOTICE:Youhavea/bootpartition.Thismeansthat#allkernelandinitrdpathsarerelativeto/boot/,eg.#root(hd0,0)#kernel/vmlinuz-versionroroot=/dev/sda2#initrd/initrd-version.img#boot=/dev/sdadefault=0#default=0表示默认启动第一个系统,如果系统有两个系统是用什么做为分隔符的呢?title就是系统的分隔符,第一个title后面就是第一个系统,用0表示。timeout=5#timout=5,就是默认在启动选择界面停留的时间,单位是秒。等待5秒自动进入默认操作系统splashimage=(hd0,0)/grub/splash.xpm.gz#splashimage是grub启动背景画面,如果是自己写grub.conf文件,这个可以不用写。hiddenmenutitleRedHatEnterpriseLinuxServer(2.6.18-53.el5)#title后面就是系统在启动时候显示的名字root(hd0,0)#root启动文件所在位置kernel/vmlinuz-2.6.18-53.el5roroot=LABEL=/rhgbquiet#kernel内核所在位置和名字initrd/initrd-2.6.18-53.el5.img#initrd内核镜象的名字grub.conf的范例:timeout=10#等待10秒自动进入默认操作系统splashimage=(hd0,0)/grub/splash.xpm.gz#grub启动背景画面default=0#默认进入第一个标题titleRedHatLinux(2.4.20-18)#RedHatLinux标题root(hd0,0)#根文件系统位置kernel/vmlinuz-2.4.20-18roroot=LABEL=/#核心位置与核心加载参数initrd/initrd-2.4.20-18.img#启动initrdram盘titlewindows#另一个操作系统的标题rootnoverify(hd0,1)#操作系统存放在hd0,1上,不要在grub里mountchainloader+1#从hd0,1的第一个扇面启动大家记一下自己的系统哈,下面我们做个实验,特别是系统版本不一样的更要记住。把后面三行删掉后保存退出。OK后我们重新启动系统。我们重启后系统停在这里了哈~~~出现刚才的图是正常的,因为我们修改了grub.conf文件,GRUB找不到启动文件了,所以我们就要手动敲进去第一步:运行root(hd0,0)(这是/boot所在的分区)第二步:执行kernel/vmlinuz-2.6.18-53.el5roroot=LABEL=/rhgbquiet(用来指定linux内核)第三步:执行initrd/initrd-2.6.18-53.el5.img(用来指定initrd文件)第四步:执行boot看见红色的REDHAT就证明你的内核加载成功了这就是在启动rc.d的服务了启动正常下面我们来点狠的哈,这次我们就要把grub.conf删除掉~~~然后我们重新启动我们的系统哈。好了,和刚才一样的,小问题,大家自己动手吧,主要想强迫你们记忆下grub.conf的内容注意:运行root或者find/vmlinuz-2.6.18-53el5(可以使用TAB补全),可以搜索vmlinuz所在分区,也就是/boot所在分区第一步:运行root(hd0,0)(这是/boot所在的分区,其中括号内的信息,就是上面命令的回显.)第二步:执行kernel/vmlinuz-2.6.18-53.el5roroot=LABEL=/rhgbquiet(用来指定linux内核)第三步:执行initrd/initrd-2.6.18-53.el5.img(用来指定initrd文件)第四步:执行boot同样,看见红色的REDHAT就证明你的内核加载成功了OK了哈通过刚才2次小试牛刀,这次我们来点更狠的哈~我们要来点狂暴滴动作哈~~~o(∩_∩)o来狠滴哈,我们把/boot分区里的文件全部删除了掉哦,一个也不剩哈~~(不删boot分区哦,只删除里面文件)rm-rf/boot/*又跑这来了哈~~~好吧,现在我们把RHEL5的ISO镜像放进去,然后设置从光驱启动,我们要进救援模式了。第一步:将RHEL5安装放入光驱并设置从光驱启动系统第二步:输入linuxrescue或按F5进入救援模式如果上一步是按的F5,那我们在这一步输入linuxrescue哈第三步:这里选择语言哈这里选择美式键盘这里我们不启用网络接口哈~~第四步:这步注意,要让系统帮你自动挂载以前的系统,也就是硬盘里的系统好了,现在就正式进入救援模式了。下面我们使用#chroot切换到硬盘的系统具体命令#chroot/mnt/sysimage/然后我们去boot查看缺少了什么文件哈:#cd/boot&&ls查看故障原因,我们发现/boot目录下一个文件也没有了哈.......由于boot下面主要是内核和GRUB,所以我们安装这两个东西哈安装就要先挂载cd,mount就是挂载,这个以后会讲mkdir/mnt/cdmount/dev/hdc/mnt/cd然后就是安装kernel,在安装内核时会自动生成initrdcd/mnt/cd/Server/rpm-Uvh--forcekernel-2.6.18-53.el5.i686.rpm安装好内核后,我们去/boot目录看看内核和initrd已经有了,然后我们需要安装GRUB然而刚安装的GRUB是没有配置文件的,我们可以自己写一个哈,如果你boot分区的grub目录里的grub.conf配置文件丢失或者错误,回出现什么情况呢?系统启动会进入GRUB模式。但是这个不严重,我们只需要给系统提供系统启动的参数就能正常进入系统。我们发现/boot/grub/目录下确实没有grub.conf哈~~那我们就自己写一个哈~cd/boot/grub/touchgrub.confvimgrub.confOK,grub.conf写完后,就保存退出,然后就可以启动系统了用exit退出,连续两次启动后就进入这个界面了,这就是因为没有我们刚才说的那个环境图片那个文件的原因。注意哈:kernel/vmlinuz-2.6.18-53.el5roroot=LABEL=/rhgbquietrhgb:表示redhatgraphicsboot,就是会看到图片来代替启动过程中显示的文本信息,这些信息在启动后用dmesg也可以看到quiet:表示在启动过程中只有重要信息显示,类似硬件自检的消息不回显示看见这步了,基本就是成功了OK了,我们去看看grub.conf的配置文件是不是刚才我写的是这样的吧其实BOOT分区删了都可以恢复,只是复杂一点点能够搞定的前提是,df命令里还有/dev/sda1是boot分区的记录,不然就比较危险了我们先分区,然后安装内核和GRUB,就可以搞定了。现在就参照上面的安装内核和GRUB就可以解决问题了。关于boot分区排错全解析,救援模式,内核安装。################################################################还有一个superlogin模式,大家没见过,我们来看下这个模式什么样子大家编辑/etc/fstab,然后记住这个文件。很重要滴哦~~在LINUX系统中,大部分系统配置信息都以各种文件的形式保存在/etc目录中。而/etc/fstab就是专门用来配置本地文件系统。我们在LINUX中常常用mount命令把一硬盘分区或者一张光盘挂装到文件系统中。/etc/fstab就是在开机引导的时候自动挂载LINUX的文件系统。事实上通过修改这个配置文件我们可以挂载所有的凡是LINUX所支持的文件系统。在LINUX中/etc/fstab的数据项如下所示:/dev/devicemountpointtyperules0orderfstab文件是开机后系统在第4步读取滴~第一列:设备或者卷标名称第二列:mountpoint挂载点,如果你要挂载一个新设备,你就要好好想想了,因为这个新设备将作为文件系统永久的一部分,需要根据FSSTND(文件系统标准),以及它的作用,用户需求来决定。比如你想把它做为一个共享资源,放在/home下面就是一个不错选择。第三列:文件系统,LINUX支持N多种文件类型,如果你想知道具体点滴话可以在LINUX下用fdisk查看。第四列:挂载参数rules是指挂载时的规则。下面列举几个常用的:auto:开机自动挂载default:按照大多数永久文件系统的缺省值设置挂载定义noauto:开机不自动挂载nouser:只有超级用户可以挂载ro:按只读权限挂载rw:按可读可写权限挂载user:任何用户都可以挂载noexec:不允许可执行文件执行,但千万不要把根分区挂载为noexec,那就无法使用系统了,连mount命令都无法使用了,这时只有重新做系统了!nodev:不允许挂载设备文件nosuid,nosgid:不允许有suid和sgid属性请注意光驱和软驱只有在装有介质时才可以进行挂载,因此它是noauto.如果你的LINUX没法显示中文,先装一个中文字库(例