linux开机流程分析

 http://blog.chinaitlab.com/user1/306457/archives/2006/42036.html

linux开机流程分析
[ 2006-1-16 11:24:00 | By: 灵气 ]
 

基本流程:
1。加载 BIOS 的硬件信息;
2。读取 MBR 的 Kernel Loader (亦即是 lilo, grub, spfdisk 等等)开机信息;
3。加载 Kernel 的操作系统核心信息;
4。Kernel 执行 init 程序并取得 run-level 信息; /etc/inittab
5。init 执行 /etc/rc.d/rc.sysinit 档案;
6。启动核心的外挂式模块 (/etc/modules.conf);
7。init 执行 run-level 的各个批次档( Scripts )/etc/rc.d/rc0.d ~ rc6.d ; 在这个目录下的档案都是连结档,均指向到 /etc/rc.d/init.d 这个目录下
8。init 执行 /etc/rc.d/rc.local 档案; 相当与dos下的对于 autoexec.bat 与 config.sys
9。执行 /bin/login 程序;
10。登入之后开始以 Shell 控管主机。

/etc/rc.d/rc.sysinit包含内容:
设定预设路径( PATH )、设定主机名称、执行 /etc/sysconfig/network 所记录的网络信息、挂载 /proc 这个保存在内存当中的主机基本讯息、以及其它几个 Linux 操作系统最基本的几个信息。


开机设定档 /etc/sysconfig

LILO
设定档 /etc/lilo.conf
# 第一部份,整体的设定部分
prompt   <==强制出现 boot 的开机讯息啰! 
Compact  <==可以整合一些读取的扇区,可以保持 map 较小,相当适合软盘开机时使用 
delay=50 <==如果有多重开机的话,可以设定这个延迟时间,单位0.1秒 
timeout=50 <==与 delay 有类似的关系!也是 0.1 秒,如果 5 秒内没有按键盘,直接以第一个 image 开机。 
default=linux-2.4.18 <==如果开机的过程中,出现了boot之后,使用者没有动作,
                          则以此设定的核心开机,与底下的label需对应 
boot=/dev/hda         <==Lilo 的开机信息写入到 /dev/hda 这颗硬盘的 MBR 当中。 
map=/boot/map         <==用来说明 local 主机的地图信息啰! 
install=/boot/boot.b <==关于开机区的讯息(boot sector),不用理他没关系! 
Linear                <==在较大容量的硬盘使用时,可以加入这一个参数试试看! 
lba32                 <==这个东西也是在大容量的硬盘使用时候会需要的参数! 
password=1234567      <==设定密码!如果为了安全起见,可以设定您的 lilo 密码哩! 
message=/boot/message <==那个 LILO 的讯息就是在里面出现的啦!
# 第二部分,个别的开机设定部分,一个 image 或 other 均代表一个开机设定!
image=/boot/vmlinuz-2.4.7-10     <==核心档案啦! 
        label=linux-2.4.7        <==请注意!label 前面以 [tab] 按键来作为分隔!
                                    这个字眼则是显示在 boot 里头挑选项目。 
        initrd=/boot/initrd-2.4.7-10.img 
        read-only              <==开机扇区挂载为只读!这是预设状况,实际在
                                    挂加载 Linux 系统时,会重新挂载成可写! 
        root=/dev/hda1           <==挂载成 / 这个 root 目录的磁盘! 
other=/dev/hdb1                  <==如果是『非 Linux 核心』就以 other 来设定
                                    开机的磁盘扇区! 
    label=Windows2k          <==同样的要有 label 来表示这个开机扇区的名称!

就给他新增加一个 label
image=/boot/vmlinuz
        label=linux-test
        root=/dev/hda1
        initrd=/boot/initrd.img
        append="devfs=mount"
        read-only

安装 lilo
既然设定好了,自然就是要安装他啰!安装的方式很简单,直接输入 lilo 即可!

而如果您还要看看更多的讯息,那么就需要这样:
lilo -v
如果你需要更多的讯息,那么就使用lilo –v –v –v 多一些v就可以了。

我不要玩 Linux 了,如何移除 lilo ?
只要以 Windows 的开机片开机,然后以 Windows 系统的 fdisk 下达:
fdisk /mbr


Grub
设定档 /boot/grub/menu.lst
硬盘代号:
装置             Lilo            Grub
IDE1 master hda, hda1, hda2 (hd0), (hd0,0), (hd0,1)
IDE1 slave hdb, hdb1, hdb2 (hd1), (hd1,0), (hd1,1)
IDE2 master  hdc, hdc1, hdc2 (hd2), (hd2,0), (hd2,1)
IDE2 slave  hdd, hdd1, hdd2  (hd3), (hd3,0), (hd3,1)


[root @test root]# vi /boot/grub/menu.lst
timeout 10        <==多久之后键盘没有动静,就直接以 default 的设定开机,这里是秒数!
Color black/cyan yellow/cyan     <==设定颜色的参数
i18n (hd0,0)/boot/grub/messages  <==设定 i18n 多国语系的讯息提示
keytable (hd0,0)/boot/us.klt   <==设定键盘形式,通常使用美规的键盘即可!
Default 0                        <==预设的开机选项,依照底下的排序,第一个为 0 !
title linux                      <==这是第一个开机设定档,亦即排序为 0 号!
     kernel (hd0,0)/boot/vmlinuz root=/dev/hda1 devfs=mount
     initrd (hd0,0)/boot/initrd.img
                                 <==上面两个则是开机设定档的基本内容,分别是
                                    核心档案所在地与 Ramdisk 的设定内容!

title failsafe                   <==这是第二个开机设定档,亦即排序为 1 号!
     kernel (hd0,0)/boot/vmlinuz root=/dev/hda1 devfs=nomount failsafe
     initrd (hd0,0)/boot/initrd.img

title windows
     chainloader (hd1,0) +1


title 内容的设定方式:
基本上,如果是一般的硬盘环境中,我们仅需要两行就可以设定好 title 的内容了,分别是:
  root   [开机根目录 / 所在的磁盘代号]
kernel [开机档案的所在地完整档名] [root=/dev/硬盘代号]
范例:
root   (hd0,0)
kernel /boot/vmlinuz-2.4.19-16mdk root=/dev/hda1

设定上面就是这样而已!所以,开机完毕之后,请将您的 kernel 文件名称(完整档名)与开机的根目录所在的磁盘代号记忆一下,那么下次就可以手动设定开机设定项目呢!但如果是 windows 方面的设定时,那就直接使用 chainloader 这个项目即可,有点像这样:
chainloader  [硬盘代号] +1

范例:
chainloader (hd1,0) +1
 
安装 grub 在系统中
使用 root [磁盘代号] 选择开机根目录 / 所在磁盘代号;
使用 setup [磁盘代号] 选择 MBR 或 Super block 直接安装进去!
使用 quit 就可以离开 grub 了!

在 grub 画面下进行手动加入的动作:
在这个画面中,您可以输入 e 或 c 来选择『编辑』或『进入指令列模式』,无论如何,这两个选项将使您进入指令列模式当中啦!所以您就可以看到一个大大的 grub> 提示字符,然后就可以修改或者是自订一些项目啦!而这些修改或者设定的项目,并不会主动的去覆盖您的 /boot/grub/menu.lst ,而是这次登入所做的修改而已呢!通常我都是选择 e 进入编辑的画面,然后选择 kernel 与 root 那两项内容进行编辑即可!例如我们上面提过的,我的 root 与 kernel 已经知道了正确的讯息,所以我就可以按下 c 来输入底下的字样:
 
grub> root (hd0,0)
grub> kernel /boot/vmlinuz-2.4.19-16mdk root=/dev/hda1

这样就可以进入我们的主机了呢!很厉害吧!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值