linux系统启动流程

问题导入:为什么要熟悉Linux系统启动流程? 答:1、当系统出现故障无法启动时,可以根据启动流程去排除问题(简称排错)。 2、通过rescue救援模式修复系统故障。 3、通过single单用户模式来重新设置root密码。 4、熟悉grub控制台的应用 POST加电自检: 检测主板电路和BIOS是否正常―――>CPU是否正常―――>内存条是否正常―――>显卡是否正常―――>硬盘是否正常―――>MBR(引导程序和分区表)是否正常。 BIOS: 基本输入输出系统Basic Input Output System。是存储在主板上一块芯片(CMOS芯片)中的程序,作用是管理CPU、内存、主板、显卡、硬盘设置参数的,并完成这些设备开机自检。BIOS自检通过后就会去读取硬盘的MBR中的bootloader信息和硬盘分区表,然后引导并启动操作系统。 BIOS及硬件故障症状: 会出现开机后黑屏(屏幕上不显示任何中英文提示)。 解决方案1:如果只是BIOS设置问题,只需要恢复BIOS的出厂设置(就是默认设置)。把电脑的电源断掉,然后将主机内主板上的电池拆下,并短接电池槽的两个触点5秒,然后把电池装上。 MBR: 主引导记录,用来存放MBR类型的bootloader(446字节)和分区表(DPT占64字节)信息。 MBR的引导信息损坏 如果是MBR的引导信息(bootloader,占用446字节)损坏,只需要用Linux的系统安装光盘、U盘启动进入救援模式(rescue),用grub-install重写MBR的bootloader引导程序。 解决方案: 备份硬盘sda中的MBR引导信息: mkdir /bak df -hT 查看磁盘空间的使用情况,我们的目标是查看系统安装在哪个硬盘上 dd if=/dev/sda of=/bak/mbr446 bs=446 count=1 备份硬盘sda的前446字节到mbr446文件中 ls –lh /bak 破坏sda硬盘的MBR引导信息的方法: dd if=/dev/zero of=/dev/sda bs=446 count=1 reboot 重启后,无法启动系统 解决方法:用光盘、U盘启动到Linux的救援(rescue)模式,执行如下操作。 df -hT 验证/boot目录在哪个分区 ls / chroot /mnt/sysimage 切根(即修改根目录的路径change root) ls / grub-install /dev/sda 或者执行下一条命令来恢复mbr备份 dd if=/bak/mbr446 of=/dev/sda bs=446 count=1 exit 退出当前的chroot设置的根目录 exit 退出rescue修复模式 reboot 重启系统 GRUB GRUB:是一套用来管理多个系统启动的软件。它的启动菜单信息记录在/boot/grub/grub.conf、/etc/grub.conf文件中。 GRUB损坏的症状:如果删除了此文件,系统将无法启动,会出现"grub>"这个提示。 自己人为破坏grub.conf文件,执行如下操作: df –hT cd /boot/grub ls cat grub.conf 查看grub.conf配置文件内容 mv grub.conf grub.conf0 修改文件名 reboot 重启系统 启动时提示grub> 解决方法: 在grub>提示符下依次输入如下命令,注意灵活应用tab来自动补全。 root (hd0,0) 说明:hd0表示第一块硬盘,第二个0表示/boot所在的分区 kernel /vm(tab键) ro root=/dev/sda2 警告:此行不能错,root=是指定/根所在的分区 initrd /initram(tab键) boot 等待正常启动系统 (此时只是通过手动临时指定grub要加载的信息) 最后一步:将grub.conf文件恢复正常,执行如下操作。 方法一: cd /boot/grub ls mv grub.conf0 grub.conf 方法二:手动创建grub.conf文件。 cd /boot/grub vim grub.conf 输入如下内容 : default=0 timeout=5 password=12 编辑grub菜单的密码(一定要设置此密码,否则别人很容易想办法去清除你的root用户密码) [说明:可以用grub-md5-crypt命令生成密码,在grub.conf中添加 password --md5 粘贴加密后的密码] splashimage=(hd0,0)/grub/splash.xpm.gz hiddenmenu 隐藏启动菜单的内容 title Red Hat Enterprise Linux (2.6.32-431.el6.x86_64) password=ab (启动系统的密码,服务器上千万不要用此项,否则电脑等着你输入密码之后才能启动) root (hd0,0) kernel /vmlinuz-2.6.32-431.el6.x86_64 ro root=/dev/sda2 initrd /initramfs-2.6.32-431.el6.x86_64.img grub.conf 配置文件注解: default=0 表示默认启动第一个title的系统,如果有多个系统,可以根据需要指定0~9等数字 timeout=5 等待5秒后自动进入系统 password=123456 进入grub编辑界面的明文密码。还可以用加密密码。 splashimage 指定grub界面的背景图片,图片格式必须是*.xpm.gz title 指定系统在菜单中的标题 password=abcde 系统启动的明文密码。还可以用md5加密密码。(通常不设置,因为要输入密码才能启动系统) root (hd0,0) 指定/boot所在的分区 kernel /vmlinuz-* ro root=/dev/sda2 指定linux的内核文件,ro表示只读 initrd /initramfs-*.img 指定initrd 指定启动映像文件 小结 小结: 0x83:表示linux标准分区 0x82 : 表示swap交换分区 此处的分区号0、1、2依次对应sda1、sda2、sda3 思考:没有设置grub控制台的密码,如果忘记了root用户密码,该如何处理? 解决方案: 1、重启系统进入grub控制台。 2、选择Linux系统的主菜单,然后按e进行编辑。 3、选中kernel这一行,再按e编辑,在此行最后面输入 “空格 1” (表示single单用户模式),回车。 4、按b启动Linux系统的单用户模式。 5、在命令行中输入passwd root来设置新的登录密码。 6、reboot重启系统,用root用户和新密码来登录到系统。 grub新问题:忘掉了grub密码和系统启动密码,无法进入系统,该怎么办? 答:用Linux系统安装光盘、U盘、PXE网络启动,进入Linux救援模式(Linux rescue)执行如下操作。 df –hT chroot /mnt/sysimage vi /boot/grub/grub.conf 将文件中password的行删除或者用#注释掉此行。 passwd root 为root用户设置新密码 exit exit reboot 此实验到此完毕。 ---------------------------------------------------------------------------- 通过grub.conf配置文件启动系统,启动init进程(PID为1) ↓ ↓ ↓ 系统继续读取/etc/inittab,读取init运行级别编号(可以是0~6) 系统的7种运行等级: 0 关机 1 单用户模式(用于系统维护,不需要登录密码) 2 不带网络的多用户模式(命令行界面) 3 完全多用户模式,带网络功能(字符界面)。网络服务器首选此模式。 4 未使用 5 桌面图形界面(Linux初学者用这种环境,方便学习) 6 重启 ↓ ↓ ↓ 加载/etc/rc.d/rc.sysinit,它是控制Linux系统启动流程的文件。用nl命令可以查看文件内容。 ↓(rc是running control运行控制的缩写),sysinit是system init系统加载的缩写。 ↓ ↓ 加载/etc/rc.d/rc.local,运行控制文件。可以将系统启动时要运行命令写入到此文中。 ↓ ↓ ↓ /etc/rc.d/rc?.d/ 目录中的系统服务启动脚本文件的软链接, 其中rc后面的?可以是数字0~6 例如:ls -l /etc/rc.d/rc0.d/ ls -l /etc/rc.d/rc5.d/ ls -l /etc/rc.d/rc3.d 说明:目录中以s开头的软链接文件(即快捷方式),表示开机"会启动"的程序,以k开头的表示开机时“不会启动”的程序 。 问题:如何将某个服务设置成开机自动启动? ls /etc/rc.d/rc5.d | grep http chkconfig httpd on 设置httpd开机时自动启动 ls /etc/rc.d/rc5.d | grep http chkconfig httpd off 设置httpd开机时不启动 ls /etc/rc.d/rc5.d | grep http ↓ ↓ 启动6个文本操作终端(init 3) 或者 1个图形桌面环境和5个文本操作终端(init 5) ↓ ↓ 等待登录,通过/etc/passwd和/etc/shadow文件来验证用户是否合法 ↓ ↓ 加载系统和用户的环境配置文件: 系统环境(公共):/etc/profile /etc/bashrc 用户环境(私用):~/.bash_profile ~/.bashrc ↓ ↓ 进入shell界面,查看可用的shell: cat /etc/shells 总结:当系统从mbr之后的任意步骤出现故障,最直接的解决办法:就是从其他Linux计算机中复制对应的文件到本机对应的目录中。

posted @ 2017-03-28 10:21  蓝莓酱丶  阅读(154)  评论(0编辑  收藏  举报