1.从BIOS到KERNEL
BIOS自检->MBR(GRUB)->KERNEL->KERNEL自解压->内核初始化->内核启动
2.内核启动:创建1#进程并执行,由它创建若干内核线程(kernelthread),之后放入并执行程序/sbin/init(弄成一个用户进程)。随后,init按照/etc/inittab配置文件来执行相应的脚本进行系统初始化linux系统装win7,如设置按键、字体,装载模块,设置网路等。
对于Redhat来说,执行的次序为:
/etc/rc.d/rc.sysinit#由init执行的第一脚本
/etc/rc.d/rc$RUNLEVEL#init执行指定运行级别($RUNLEVEL为缺省的运行模式)的各脚本;
/etc/rc.d/rc.local#运行模式2、3、5时会运行的脚本
/sbin/mingetty(或getty)#等待用户登入
/etc/inittab手指定了系统的运行级别(RUNLEVEL),init按照运行级别启动相关的服务(一些后台进程),实现不同的功能。
RUNLEVEL值为:0-6
0:halt,1:单用户,2:多用户,3:多用户并启动NFS服务
4:保留,5:运行xdm(Xwindow)以图形界面形式登陆
6:reboot
3./etc/inittab文件
/etc/inittab的文件内容如下:
#设定系统开机预设的RUNLEVEL:
id:3:initdefault:
#开始进行RUNLEVEL的服务启动前,使用来探测与初始化系统环境的设定文件:
si::sysinit:/etc/rc.d/rc.sysinit
#7个不同runlevel的,须要启动的服务的scripts放置路径:
l0:0:wait:/etc/rc.d/rc0
l1:1:wait:/etc/rc.d/rc1
l2:2:wait:/etc/rc.d/rc2
l3:3:wait:/etc/rc.d/rc3
l4:4:wait:/etc/rc.d/rc4
l5:5:wait:/etc/rc.d/rc5
l6:6:wait:/etc/rc.d/rc6
#是否准许按下[ctrl]+[alt]+[del]就重新开机的设定项目:
ca::ctrlaltdel:/sbin/shutdown-t3-rnow
#本机端终端机启动的个数:
1:2345:respawn:/sbin/mingettytty1
2:2345:respawn:/sbin/mingettytty2
3:2345:respawn:/sbin/mingettytty3
4:2345:respawn:/sbin/mingettytty4
5:2345:respawn:/sbin/mingettytty5
6:2345:respawn:/sbin/mingettytty6
#在XWindow(RUNLEVEL5)环境下的启动script设定项目:
x:5:once:/etc/X11/prefdm-nodaemon
这个文件的句型是这样的:
标示符:级别:init的动作行为:指令项目
1.标示符:
最多四个字符,代表init的主要工作项目嵌入式linux论坛,只是一个简单的代表说明。
2.级别:
该项目在什么runlevel下边进行的意思。假如是35则代表runlevel3与5就会执行。
3.init的动作行为:
主要可以进行的动作项目意义有:
initdefault:代表预设的runlevel设定值;
sysinit:代表系统初始化的动作项目;
ctrlaltdel:代表[ctrl]+[alt]+[del]三个按钮是否可以重新开机的设定;
wait:代表前面接的指令项目必需要执行完毕才会继续旁边的动作;
respawn:代表前面接的,init仍会主动的『重新』启动。
更多的设定项目请参考maninittab的说明。
4.指令项目:
亦称应当可以进行的指令,一般是一些script啰。
说明:如按照前面的文件,init程序执行时按照/etc/inittab文件的内容,完成以下功能
(1)获取RUNLEVEL(文件中的这一行id:3:initdefault:)为3
(2)执行rc.sysinit(文件中的这一行si::sysinit:/etc/rc.d/rc.sysinit)
(3)执行/etc/rc.d/rc3.d目录中的脚本(文件中的这一行l3:3:wait:/etc/rc.d/rc3linux内核启动流程,且由于本例RUNLEVEL为3)
(4)之后设定是否准许按下[ctrl]+[alt]+[del]就重新开机(文件中的这一行ca::ctrlaltdel:/sbin/shutdown-t3-rnow,其实若果不准许,可把此行注释掉)
(5)启动六个终端界面tty1-tty6
(6)最后假如我们使用的是runlevel5,这么不仅这六个终端机之外,init就会执行/etc/X11/prefdm-nodaemon其主要的功能就是在启动XWindow!
二、GRUB及其配置
1.GRUB(启动引导器程,低版本的为lilo,其配置文件为:/etc/lilo.conf)简介
安装Linux后GRUB坐落硬碟0柱面,0扇区,1磁道。是计算机启动过程中运行的第一个真正的软件,一般计算机启动时在通过BIOS自
检后读取并运行硬碟的主引导扇中的启动引导器程序,启动引导器再负责加载启动硬碟分区中的操作系统。
2.GRUB的配置文件—grub.conf
可通过/boot/grub/grub.conf配置GRUB,其文件内容大致如下:
default0----设置GRUB的默认启动项
splashimage(hd0,0)/boot/grub/splash.xpm.gz----用于指定某一个文件作为启动菜单的背景图像
timeout30----设置菜单的启动延时
title=BootLinuxusinginitrd----菜单项名称
root(hd0,0)----设置GRUB的根设备(root)为linux内核所在的分区
kernel/boot/bzImageroot=/dev/loop0init=/initdisk.gz----使用kernel命令后跟linux内核文件作为参数,加载。
linux的内核文件
initrd/initdisk.gz----使用initrd命令加载镜像文件
title=WindowsNT----菜单项名称
root(hd0,1)----设置WindowsNT系统所在的分区
makeactive----设置根设备为活动分区(针对windows不能从非活动分区启动)
chainloader+1----使用chainloader命令调用windows分区的启动引导器引导windows系统,+1表示第一个磁道
3.忘掉根口令时的设置
启动计算机linux内核启动流程,在显示GRUB菜单时---按e键,步入编辑---选kernel项---按e键---输入空格+single回车---按b键,重启系统步入单用户模式,输入以下命令更改口令:
#passwdroot
#reboot
4.为grub设置口令
为避免用户在显示grub菜单时步入编辑,以单用户模式启动修改root用户口令,可给grub设置口令。
更改/boot/grub/grub.conf文件,加上:password口令
(假定密码为123456)
(1)设置全局口令
password123456
default=1
timeout=10
……
(2)可使用全局口令锁定启动菜单项
紧随在title命令以后添加lock命令
password123456
default=1
timeout=10
splashimage=(hd0,7)/grub/splash.xpm.gz
titleRedHatLinux(2.4.20-8)
lock
root(hd0,7)
kernel/vmlinuz-2.4.20-8roroot=LABEL=/
initrd/initrd-2.4.20-8.img
(3)设置独立的口令锁定启动菜单项,在菜单项中使用password命令
可实现全局口令和菜单项口令的分级管理。
password123456
default=1
timeout=10
splashimage=(hd0,7)/grub/splash.xpm.gz
titleRedHatLinux(2.4.20-8)
password67890
root(hd0,7)
kernel/vmlinuz-2.4.20-8roroot=LABEL=/
initrd/initrd-2.4.20-8.img
(4)可以使用MD5L加密口令
采用#grub-md5-crypt
或#grub
grub>md5crypt
Password: