欢迎 marulin 加入本站!
 免费注册  用户登陆  汇款方式  汇款确认  产品报价  联系我们  帮助中心
加入收藏
设为首页
会员体系
申请VIP
网站首页 光盘超市 软件下载 技术文章 专题 用户中心 VIP会员 技术论坛 网站留言 娱乐中心 卓越资源
今天是:2008年11月21日 星期五  您现在位于: 首页 → 技术文章 → Linux启动流程与Gru...
   Linux启动流程与Grub的配置
作者:shaoml.cublog.cn  出处:shaoml.cublog.cn  更新时间: 2007年05月07日 

一、Linux的启动流程
1. 从BIOS到KERNEL 
   BIOS自检->MBR(GRUB)->KERNEL->KERNEL自解压->内核初始化->内核启动
2. 内核启动:创建1#进程并执行,由它创建若干内核线程(kernel thread),然后装入并执行程序/sbin/init(变成一个用户进程

)。此后,init根据/etc/inittab配置文件来执行相应的脚本进行系统初始化,如设置键盘、字体,装载模块,设置网络等 
   对于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(X window)以图形界面方式登录
   6:reboot 
3、/etc/inittab文件

/etc/inittab的文件内容如下:
   # 设定系统开机预设的RUNLEVEL:
   id:3:initdefault:

   # 开始进行RUNLEVEL的服务启动前,使用来侦测与初始化系统环境的设定文件:
   si::sysinit:/etc/rc.d/rc.sysinit

   # 7 个不同 run level 的,需要启动的服务的 scripts 放置路径:
   l0:0:wait:/etc/rc.d/rc 0
   l1:1:wait:/etc/rc.d/rc 1
   l2:2:wait:/etc/rc.d/rc 2
   l3:3:wait:/etc/rc.d/rc 3
   l4:4:wait:/etc/rc.d/rc 4
   l5:5:wait:/etc/rc.d/rc 5
   l6:6:wait:/etc/rc.d/rc 6

   # 是否允许按下 [ctrl]+[alt]+[del] 就重新开机的设定项目:
   ca::ctrlaltdel:/sbin/shutdown -t3 -r now

   # 本机端终端机启动的个数:
   1:2345:respawn:/sbin/mingetty tty1
   2:2345:respawn:/sbin/mingetty tty2
   3:2345:respawn:/sbin/mingetty tty3
   4:2345:respawn:/sbin/mingetty tty4
   5:2345:respawn:/sbin/mingetty tty5
   6:2345:respawn:/sbin/mingetty tty6

   # 在 X Window (RUNLEVEL 5) 环境下的启动 script 设定项目:
   x:5:once:/etc/X11/prefdm -nodaemon

这个文件的语法是这样的:

   标识符:级别:init 的动作行为:指令项目
1. 标识符:
   最多四个字符,代表 init 的主要工作项目,只是一个简单的代表说明。
2. 级别:
   该项目在哪些 run level 底下进行的意思。如果是 35 则代表 runlevel 3 与 5 都会执行。
3. init 的动作行为:
   主要可以进行的动作项目意义有:
   initdefault    :代表预设的 run level 设定值;
   sysinit    :代表系统初始化的动作项目;
   ctrlaltdel    :代表 [ctrl]+[alt]+[del] 三个按键是否可以重新开机的设定;
   wait        :代表后面接的指令项目必须要执行完毕才能继续后面的动作;
   respawn    :代表后面接的, init 仍会主动的『重新』启动。
   更多的设定项目请参考 man inittab 的说明。
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/rc 3,且因为本例RUNLEVEL为3)
      (4)然后设定是否允许按下 [ctrl]+[alt]+[del] 就重新开机(文件中的这一行 ca::ctrlaltdel:/sbin/shutdown -t3 -r now

,当然如果不允许,可把此行注释掉)
      (5)启动六个终端界面tty1-tty6
      (6)最后如果我们使用的是 run level 5 ,那么除了这六个终端机之外, init 还会执行 /etc/X11/prefdm -nodaemon 其主要

的功能就是在启动 X Window 啦!

二、GRUB及其配置
 1.GRUB(启动引导器程,低版本的为lilo,其配置文件为:/etc/lilo.conf)简介
   安装Linux后GRUB位于硬盘0柱面,0磁道,1扇区。是计算机启动过程中运行的第一个真正的软件,通常计算机启动时在通过BIOS自

检后读取并运行硬盘的主引导扇中的启动引导器程序,启动引导器再负责加载启动硬盘分区中的操作系统。
 2.GRUB的配置文件—grub.conf
   可通过/boot/grub/grub.conf配置GRUB,其文件内容大致如下:

default 0             ----设置GRUB的默认启动项
splashimage (hd0,0)/boot/grub/splash.xpm.gz    ----用于指定某一个文件作为启动菜单的背景图象
timeout 30            ----设置菜单的启动延时

title=Boot Linux using initrd      ----菜单项名称
    root (hd0,0)        ----设置GRUB的根设备(root)为linux内核所在的分区
    kernel /boot/bzImage root=/dev/loop0 init=/initdisk.gz    ----使用kernel命令后跟linux内核文件作为参数,加载

linux的内核文件
    initrd /initdisk.gz       ----使用initrd命令加载镜像文件
title=Windows NT                  ----菜单项名称
    root (hd0,1)        ----设置Windows NT系统所在的分区
    makeactive        ----设置根设备为活动分区(针对windows不能从非活动分区启动)
    chainloader +1        ----使用chainloader命令调用windows分区的启动引导器引导windows系统,+1表示第一个扇区
  3.忘记根口令时的设置
  启动计算机,在显示GRUB菜单时---按e键,进入编辑---选kernel项---按e键---输入空格+single 回车---按b键,重启系统进入单用

户模式,输入以下命令更改口令: 
   #passwd root
   #reboot
  4.为grub设置口令
   为防止用户在显示grub菜单时进入编辑,以单用户模式启动更改root用户口令,可给grub设置口令。
   修改/boot/grub/grub.conf文件,加上:password 口令
  (假设密码为123456)
  (1)设置全局口令
  password 123456
  default=1
  timeout=10
  ……
  (2)可使用全局口令锁定启动菜单项
   紧跟在title命令之后添加lock命令
   password 123456
   default=1
   timeout=10
   splashimage=(hd0,7)/grub/splash.xpm.gz
   title Red Hat Linux (2.4.20-8)
   lock            
   root (hd0,7)
   kernel /vmlinuz-2.4.20-8 ro root=LABEL=/
   initrd /initrd-2.4.20-8.img

  (3)设置独立的口令锁定启动菜单项,在菜单项中使用password命令
  可实现全局口令和菜单项口令的分级管理。
  password 123456
  default=1
  timeout=10
  splashimage=(hd0,7)/grub/splash.xpm.gz
  title Red Hat Linux (2.4.20-8)
  password 67890
  root (hd0,7)
  kernel /vmlinuz-2.4.20-8 ro root=LABEL=/
  initrd /initrd-2.4.20-8.img
  (4)可以使用MD5L加密口令
  采用#grub-md5-crypt
  或 #grub
  grub>md5crypt
  Password:
 (本文已被浏览 5961 次)
 发布人:sdccf
 → 推荐给我的好友
上篇文章:Linux 系统管理员模拟试卷
下篇文章:RPM的使用--详细演示安装,删除和查询
 相关文章:
Windows和Linux系统共存 完美解决方案 硬盘安装Linux和从Grub命令行启动操作系统
GRUB故障 --- 满屏显示GRUB字符 修改OpenSuse 10.2 grub背景图
SUSE 10.2 GRUB 修复手记 ubuntu7.04硬盘安装简明步骤
Ubuntu6.06中GRUB的修复 Linux系统管理之/etc/inittab
grub详解 Linux系统服务器网络安全管理小技巧
Linux操作系统内核启动参数详细解析 Red Flag 桌面 5.0 如何制作启动软盘
Linux启动加速优化 通过GRUB引导硬盘安装Fedora Core 6 Linux的方法
用chkconfig轻松管理启动程序 Linux操作系统安全防护技巧详细介绍
使用grub引导第二块硬盘上的Windows Fedora Core 6硬盘安装手记
制作在软盘上跑的Linux引导器详细过程 勿需额外安装引导程序实现多Linux共存

相关搜索
查看百度中关于Linux启动流程与Grub的配置的更多内容
查看google中关于Linux启动流程与Grub的配置的更多内容
   文章分类
操作系统 |
SCO_UNIX  Sun_Solaris  IBM_AIX  HP_UX  Linux  BSD  Tru64_UNIX 
通用UNIX知识  Windows  Minix 
程序设计 |
Shell编程  C/C++  汇编  PHP  JAVA  Perl  Python 
ASP/HTML  XML  中间件 
数据库 |
Oracle  Informix  Sybase  Fox  DB2  SQL  MySQL 
PostgreSQL 
网络应用 |
网络应用 
计算机硬件 |
计算机主机  打印机  路由器  交换机  终端  磁带机  MO 
刻录机  终端服务器  调制解调器 
   文章评论
  → 评论内容 (点击查看)   共0条评论,每页显示5条评论   浏览所有评论
(没有相关评论)
  → 发表我的评论
您的姓名: 您的Email:
评论内容:
250字内
发表评论:      发表评论须知 →
  • 尊重网上道德,遵守《全国人大常委会关于维护互联网安全的决定》及中华人民共和国其他各项有关法律法;
  • 本站有权保留或删除您发表的任何评论内容;
  • 关于我们 ┋  网站留言 ┋  网站地图 ┋  友情链接 ┋  与我在线 ┋  汇款确认 ┋  管理 ┋  TOP
    Linux.Unix爱好者家园  http://www.unix-cd.com/
    联系我们:sdccf@163.com
    腾讯QQ: 7644599
    备案序号:鲁ICP备05000455号
    Copyright (c) 2001-2008 Unix-cd.com. All Rights Reserved.