1、安徽新华邵春林安徽新华邵春林 安徽新华安徽新华 2009年年04月月08日日第八讲 系统启动管理难点:难点: 介绍了Linux系统引导程序GRUB的配置重点:重点: 掌握Linux系统是如何启动的,使学员在今后的系统排错中能够得以运用。关键词:关键词: 引导程序init shell 教学目的:教学目的:掌握GRUB、LILO的操作、inittab文件的设置熟悉Shell的功能、init进程的功能了解Linux启动步骤、Shell特点、熟悉GRUB的配置 Linux系统启动过程系统启动过程1 1、BIOSBIOS自检(自检(POSTPOST) 硬件检测及初始化2 2、引导启动设备、引导启动设备(
2、1)软盘(0磁道0扇区)(2)光盘(最外围存储轨道)(3)硬盘(MBR) 通常,Linux系统都从硬盘引导,其中主引导记录(MBR)中包含主引导加载程序。MBR是一个512Byte的扇区,位于磁盘的第一个扇区(0道0柱面1扇区)。当MBR被加载到RAM后,BIOS就会将控制权交给MBR。3 3、启动、启动GRUBGRUB 调用Linux引导程序至内存中4 4、加载、加载LinuxLinux内核内核 加载Linux内核映像到内存中。5 5、挂装根文件系统、挂装根文件系统6 6、启动、启动initinit进程进程 init进程是系统所有进程的起点,内核在完成核内引导后,即在本进程空间内加载init
3、程序,它的进程号是1。Init进程是所有进程的发起者和控制者,是第一个运行的进程。作用: (1)扮演终结父进程的角色。 (2) 在进入某个特定的运行级别时运行相应的程序,以次对各 运行级别进行管理。它的这个作用是由/etc/inittab文件定义的。Linux系统启动过程系统启动过程7 7、通过、通过/etc/etc/inittabinittab文件进行初始化文件进行初始化 Init的工作是根据/etc/inittab来执行相应的脚本,进行系统初始化,如设置键盘、字体、装载模块,设置网络等。(1)/etc/rc.d/rc.sysinit rc.sysinit是由init进程执行的第一个脚本,它
4、主要完成一些系统初始化工作:激动活交换分区、检查磁盘、加载硬件模块以及其它一些需要优先执行的任务。(2)/etc/rc.d/rcX.d/KS 在rc.sysinit执行后,将返回init,继续执行/etc/rc.d/rc程序,当在每个运行级别中运行完特定守护进程后,rc程序就执行完了,再返回init继续下一步。(3)/etc/rc.d/rc/local 运行级别2、3、5都把/etc/rc.d/rc/local做为初始化脚本中的最后一个。Linux系统启动过程系统启动过程8 8、执行、执行/bin/login/bin/login程序程序 login程序会提示使用者输入帐号及密码,接着编码并确认
5、密码的正确性,如果帐号和密码相符,则为使用者初始化环境,并将控制权交给shel l,即等待用户登录。 login程序成功后,会向对应的终端再输出最近一次登录的信息(在/var/log/lastlog中有记录),并检查用户是否有新邮件(在/usr/spool/mail/对应用户名目录下),然后开始设置各种环境变量。对于bash来说,系统首先寻找/etc/profile脚本文件并执行它;然后如果用户的主目录中存在.bash_profile文件,就执行它,所有的配置文件执行后,会出现命令提示符,至此整个启动过程就结束了。Linux系统启动过程系统启动过程Linux系统启动过程系统启动过程BIOSGR
6、UBkernel bootinitrc.sysinitrcmingettyshelllogin登录系统登录系统开机开机引导装载程序引导装载程序1、LILO(Linux Loader)2、GRUB (Grand Unified Boot Loader)iGRUB提供了正真基于命令行的、先于操作系统启动的环境,比LILO提供了更丰富的功能。iGRUB支持LBA(Logical Block Addressing逻辑块寻址)模式。只要系统的BIOS支持LBA模式,GRUB就能够从1024柱面以后的分区中启动操作系统。iGRUB能够访问ext3分区。在每次系统启动时GRUB访问 ext3分区中的配置文件
7、/boot/grub/grub.conf。只有当/boot分区的物理位置发生变化时才需要重新安装GRUB到MBR。引导装载程序引导装载程序3、GRUB的设置 3、GRUB的设置 GRUB的主配置文件/boot/grub/grub.conf : default=0 /设置GRUB默认引导哪个系统 timeout=30 /系统如果不作选择,在10秒后就自动引导上面所指定的默认系统;如果设为0,则不出现选择界面,直接引导到默认系统;如果设为-1,则一直等待用户选择所要启动的系统。 splashimage=(hd0,0)/grub/splash.xpm.gz /设定开机画面背景图像 hiddenmen
8、u /隐藏GRUB的启动菜单title RedHat Linux /启动菜单中显示的操作系统名字。root (hd0,0) /设置内核存放的分区kernel /vmlinuz-2.4.20-8 ro root=LABEL=/ /设置内核文件initrd /initrd-2.4.20-8.img /设置内核映像文件名title Windows Server 2003rootnoverify (hd0,1) /该操作系统在hd0的第二分区,不mount。chainloader +1 /从第一个硬盘的第二个分区引导Windows。实例:要求如下:1)hda上有两个操作系统,分别为RH 和Win2K3
9、iRH安装在/BOOT分区号为hda2,iWin2K3安装在C:下3)设置GRUB的口令为123且用MD5加密4)锁定每个菜单选项配置过程:#grub md5-cryptPassword:Retype password:$MQBa#12Q(注意大小写)# vi /etc/grub.conf default=0 timeout=30 plashimage=(hd0,0)/grub/1.jpg password -md5 $MQBa#12Q title RedHat Linuxroot (hd0,1) kernel /vmlinuz-2.4.20-8 ro root=LABEL=/ initrd
10、/initrd-2.4.20-8.img locktitle window server 2003 rootnoverify (hd0,0) Chainloader +1 lock(4)GRUB的命令行,菜单模式,编辑模式的操作 解锁GRUB启动菜单i在锁定的启动菜单中选择“p”键i输入口令编辑模式:i作用:用于修改菜单的选项i热键:e键进入命令行模式:l作用:设置GRUB的选项l热键:c键l实例:l启动Linux grubroot (hdx,y) grubkernel /vmlinuz-版本号 ro root=LABEL=/ grubinitrd /initrd-版本号.img grubbo
11、otl启动Windows grubrootnoverify (hdx,y)/让GRUB不要mount (hd0,0)的分割区 grubchainloader +1 /指定此分割区上的第一个扇区来做激活 grub makeactive /要在此分割区上设定active的标记 grubboot /开机(5)恢复GRUB的配置文件放入第一张安装启动盘,启动计算机: boot: linux rescue# cd /mnt/sysimage#vi /boot/grub/grub.conf 修改grub.conf恢复设置选项恢复恢复Grub到到Mbr 先使用第一张安装启动盘进入grub,或者利用其他lin
12、ux恢复盘进入linux系统,然后进入grub控制台:grub root (hd0,10)grub kernel /boot/vmlinuz-2.6.9 init 5 ro root=/dev/hda11 grub initrd /boot/initrd-2.6.9.imggrub boot然后开始修复过程:# grubgrub root (hd0,10)grub setup (hd0)grub quit# grub-install hd0在在GRUB的命令行模式下安装的命令行模式下安装GRUB 系统显示启动菜单时按c键,或者系统启动后在命令行执行/usr/sbin/grub程序,进入GRUB
13、的命令行模式。 #grub grubroot (hd0,0) /指定启动设备 grubfind /boot/grub/stage1 /查找stage1 grub setup (hd0) /安装GRUB到第1块硬盘的MBR grubquit 重启机器,新安装的GRUB生效grub菜单项丢失,只有字符菜单项丢失,只有字符grub时的处理方法:时的处理方法: grubcat /grub/grub.conf/ /为了看参数。 grubroot (hd0,0) grubkernel /vmlinuz-2.4.18-11 ro root=/ grubinitrd /initrd-2.4.18-11.img
14、 grubboot 系统启动管理系统启动管理 大家记一下自己的系统哈,下面我们做个实验,特别是系统版大家记一下自己的系统哈,下面我们做个实验,特别是系统版本不一样的更要记住。把后面三行删掉后保存退出。本不一样的更要记住。把后面三行删掉后保存退出。系统启动管理系统启动管理系统启动管理系统启动管理第一步:运行第一步:运行root (hd0,0) (这是/boot所在的分区)系统启动管理系统启动管理第二步:执行第二步:执行kernel /vmlinuz-2.6.18-53.el5 ro root=LABEL=/ rhgb quiet (用来指定用来指定linux内核内核)系统启动管理系统启动管理第三
15、步:执行第三步:执行initrd /initrd-2.6.18-53.el5.img(用来指定用来指定initrd文件)文件)系统启动管理系统启动管理第四步:执行第四步:执行boot系统启动管理系统启动管理 下面我们来点狠的哈,这次我们就要把下面我们来点狠的哈,这次我们就要把grub.conf删除掉删除掉然后我们然后我们重新启动我们的系统哈哈。重新启动我们的系统哈哈。系统启动管理系统启动管理 运行运行root或者或者find /vmlinuz-2.6.18-53el5(可以使用可以使用TAB补全),可以补全),可以搜索搜索vmlinuz所在分区,也就是所在分区,也就是/boot所在分区。所在分
16、区。系统启动管理系统启动管理第一步:运行第一步:运行root (hd0,0) (这是这是/boot所在的分区所在的分区,其中括号内的信息,就是其中括号内的信息,就是上面命令的回显上面命令的回显.)系统启动管理系统启动管理第二步:执行第二步:执行kernel /vmlinuz-2.6.18-53.el5 ro root=LABEL=/ rhgb quiet (用来指定用来指定linux内核内核)系统启动管理系统启动管理第三步:执行第三步:执行initrd /initrd-2.6.18-53.el5.img(用来指定用来指定initrd文件)文件)系统启动管理系统启动管理第四步:执行第四步:执行b
17、oot系统启动管理系统启动管理 把把/boot分区里的文件全部删除了掉哦,一个也不剩哈分区里的文件全部删除了掉哦,一个也不剩哈(不删(不删boot分分区哦,只删除里面文件)区哦,只删除里面文件)rm -rf /boot/*系统启动管理系统启动管理 把把/boot分区里的文件全部删除了掉哦,一个也不剩哈分区里的文件全部删除了掉哦,一个也不剩哈(不删(不删boot分分区哦,只删除里面文件)区哦,只删除里面文件)rm -rf /boot/*系统启动管理系统启动管理第一步:将第一步:将RHEL5安装放入光驱并设置从光驱启动系统安装放入光驱并设置从光驱启动系统系统启动管理系统启动管理第二步:输入第二步:
18、输入linux rescue 或按或按F5进入救援模式进入救援模式系统启动管理系统启动管理第三步:第三步:使用#chroot切换到硬盘的系统,具体命令# chroot /mnt/sysimage/系统启动管理系统启动管理第四步:第四步:安装kernel,在安装内核时会自动生成initrd。 系统启动管理系统启动管理第五步:第五步:内核和initrd已经有了,然后我们需要安装GRUB。系统启动管理系统启动管理第六步:第六步:我们发现/boot/grub/目录下没有grub.conf ,那就自己写一个。系统启动管理系统启动管理 其实BOOT分区删了都可以恢复,能够搞定的前提是,df命令里还有/de
19、v/sda1是boot分区的记录,不然就比较危险了,先分区,然后安装内核和GRUB,就可以搞定了。系统启动管理系统启动管理现在就参照上面的安装内核和GRUB就可以解决问题了。Linux 下下 grub 密码的设置密码的设置GRUB 明口令加密明口令加密 default=1timeout=10splashimage=(hd0,7)/boot/grub/splash.xpm.gzpassword=123456title Fedora Core (2.4.22-1.2061.nptl) lock root (hd0,7) kernel /boot/vmlinuz-2.4.22-1.2061.nptl
20、 ro root=LABEL=/ initrd /boot/initrd-2.4.22-1.2061.nptl.imgtitle WindowsXP rootnoverify (hd0,0) chainloader +1Linux 下下 grub 密码的设置密码的设置GRUB 的的md5加密方法加密方法 1、用grub-md5-crypt成生GRUB的md5密码 # /sbin/grub-md5-crypt Password: 在这里输入123456 Retype password: 再输入一次123456 $1$7uDL20$eSB.XRPG2A2Fv8AeH34nZ0Linux 下下 gr
21、ub 密码的设置密码的设置GRUB 的的md5加密方法加密方法2、更改 /etc/grub.conf default=1timeout=10splashimage=(hd0,7)/boot/grub/splash.xpm.gzpassword -md5 $1$7uDL20$eSB.XRPG2A2Fv8AeH34nZ0title Fedora Core (2.4.22-1.2061.nptl)lockroot (hd0,7)kernel /boot/vmlinuz-2.4.22-1.2061.nptl ro root=LABEL=/initrd /boot/initrd-2.4.22-1.206
22、1.nptl.imgtitle WindowsXProotnoverify (hd0,0)chainloader +1Linux 下下 grub 密码的设置密码的设置GRUB 的的md5加密方法加密方法3、使用password,lock命令实现几种加密方法如下: (1) 单纯对GRUB界面加密,而不对被引导的系统加密 在timeout一行下面加一行: password md5 PASSWORD (2) 对GRUB界面加密,同时对被引导的系统加密 在timeout一行下面加一行: password md5 PASSWORD 在title一行下面加一行: lock (3) 同时存在多个被引导系统,
23、针对特定的系统实例分别加密(未对GRUB操作界面加密) 在title一行下面加一行: lock 在lock一行下面紧贴着再加一行: password md5 PASSWORD 注:lock不能单独使用Linux口令恢复口令恢复1、单用户模式单用户模式: (1) 启动GRUB,选择Red Hat Linux的选项,然后键入 e 来编辑;选择以kernel开头的一行,再按e 键,在此行的末尾,按空格键后输入single,以回车键来退出编辑模式; 回到了 GRUB 屏幕后,键入 b 来引导进入单用户模式。 (2)passwd 程序来设置root的新密码# passwd root# reboot重启系
24、统后,root 密码已被更新。(3)通过修改 /etc/shadow 文件,删除root 的密码# vi /etc/shadow将以root 开头的一行中“root:”后和下一个“ :”前的内容删除,第一行将类似于“root : ”,保存后重启系统,root 密码置为空。Linux口令恢复口令恢复2、紧急修复模式紧急修复模式: 如果多系统的GRUB 被删除(如重装了Windows 系统后),只能使用Linux 系统安装盘来恢复root 的密码。 用第一张Linux 系统安装盘启动,出现boot 提示符后输入:root: linux rescue此时系统进入救援模式,然后根据提示完成:(1)选择
25、语言和键盘格式;(2)选择是否配置网卡,一般系统因网络不需要,所以可以选择否跳过网卡配置;(3) 选择是否让系统查找硬盘上的Redhat Linux 系统,选择继续;(4)系统显示硬盘上的系统已经被找到,并挂载在/mnt/sysimage 下;(5)进入拯救状态,可重新设置root 的密码:# chroot /mnt/sysimage (让系统成为根环境)# cd /mnt/sysimage# passwd root2、系统运行级别0/关机1/单用户模式2/多用户、不支持NFS3/完全多用户模式,文本模式。4/保留5/完全多用户模式,窗口模式。6/重启切换:# init 0-6 runleve
26、l 格式:#runlevel 功能: 显示系统当前和上一次的运行级别,如果上次运行级别记录不存在,则显示N,如果都不存在,则显示unknown。i注:(1)shutdown功能:重启/关机格式: #shutdown 选项 time 信息 选项: i-r/重启i-c/取消一个已经运行的shutdown动作i-h/关闭计算机i-f/重启时不使用fsck检查文件系统i-F/重启时使用fsck检查文件系统 time /设定时间 i hh:mm /某时某分i +mm /当前时间往后几分钟i now /立即实例:i# shutdown -r nowi# shutdown -r +5i# shutdown
27、-h 18:00i# shutdown -h now(2)halt 功能: 调用“shutdown h”命令。 格式: #halt 选项 选项: -c /防止sync系统调用,它在fsck修补根分区后,以阻止内核用老版本的超级块覆盖修补过的超级块。 -w /不关闭计算机,只是写wtmp(/var/log/wtmp)记录。 -f /不调用shutdown而强制关机或者重启。 -I /关机(或重启)前,关闭所有网络接口。 -p /当关机的时候,顺便做关闭电源(poweroff)的动作 。(3)reboot功能:重启系统格式:#reboot(4) exit (Ctrl+D 键) 功能:退出用户环境,
28、一次只能退出一个 格式:#exit(5) login 功能:注消用户 (单用户) 格式:#reboot(6) logout 功能:退出用户环境直接注消用户 格式:#reboot3、inittab文件的分析作用:设置init进程默认级别,设置init的动作格式:# vi /etc/inittab id:runlevels:action:process实例:iid : 3 :initdefault :iica : : ctrlaltdel : shutdown -r now 说明:i运行的级别:i动作: initdefault/启动默认级别 sysinit/sysinit类进程是init进程的第一
29、个子进程,在boot类进程之前运行。 wait/wait进程在进入指定级别后运行一次,且init进程要等待其结束 ctrlaltdel:/指按CTRL+ALT+DEL键时的动作 powerfail/用于指当UPS发来断电信号时所运行的命令 powerokwait/用于当供电恢复时运行的命令4、/etc/rc.d 目录说明 init.d目录/存放服务启动的脚本 rc 文件 /调用相应级别中运行目录的程序 rc n (16)/存放每个运行级别中要运行的程序 (k*:关闭程序,s*:启动服务) rc.sysinit /完成系统初始化 rc.local /存放系统启动时的程序 归纳与总结归纳与总结通过本节课的学习我们要掌握以下内容: 1、GRUB、inittab文件的设置2、Shell的功能、init进程的功能 3、Linux启动步骤、Shell特点、GRUB 问题交流