分类: LINUX
2008-10-31 22:46:35
在 Intel i386 体系结构下,不同发行版本的 Linux 的启动过程有很多相似之处。
如果从硬盘启动 Linux,内核加载器(Intel 兼容体系结构)主要使用的是 Lilo 或 Grub。如果从光盘引导 Linux,比如:Live CD 或安装盘,则常选择 Syslinux 作为内核加载器。
在配置文件 /etc/lilo.conf 和 /boot/grub/grub.conf 中你可以设置:
你可以配置启动不同的操作系统(Linux 或是其它的操作系统)和不同版本的内核。
每一个发行版本的 Linux 内核都源自 Linus Torvalds 内核,但是可能会具有不同的版本机制,或由版本的维护者加入的非 Linus 补丁。
你可以重新并编译安装官方的内核代码或不同发行版本的内核源码包。
Unix 系统启动的第一个进程总是 Init 进程,它的配置文件总是 /etc/inittab。分析 /etc/inittab 和所有被它 source 的脚本,你就可以完全地了解系统的启动过程。
Linux/Unix 的主要区别大多是 shell(初始化)脚本的不同。
很多的 Linux 发行版使用 Unix System V 的启动方法。基于 rc 脚本,根据不同的运行级别启动 /etc/init.d/ 下相应的脚本。
RedHat
/etc/rc.d/rc.sysinit
由 init 进程调用,它设置和执行所有的系统初始化函数,并 source /etc/sysconfig/* 目录下的配置文件。
/etc/rc.d/functions
被其它系统脚本使用的通用函数。
/etc/rc.d/*
所有系统服务的启动和关闭脚本。系统启动时根据用户指定的运行级别执行 /etc/rc#runlevel.d/(“#runlevel”为运行级别,一般为 1,3,5)目录下的脚本文件。
注意:/etc/rc#runlevel.d/ 目录下的脚本只是到 /etc/rc.d/ 目录下的脚本的一个链接。
Fedora - 启动过程
Fedora 采用 RedHat 的方式来启动系统。
Boot Loader
Fedora 使用 Grub 作为启动加载器,所有的配置文件和二进制文件都在 /boot/grub/ 目录下,grub.conf 包含所有的配置信息(/boot/grub/menu.lst 和 /etc/grub.conf 都是指向它的链接),/boot/grub/splash.xpm.gz 是 grub 启动时的默认背景图片。
Kernel
主要的二进制文件为 /boot/vmlinuz-version,系统符号(System Map)文件为 /boot/System.map-version,启动时初始化内存的文件为 /boot/initrd-version。当前内核的完整配置文件为 /boot/config-version。
内核模块位于 /lib/modules/version 目录下。
Init
/etc/inittab 有一个规定,mingetty 优先于运行级别 1 启动(所以单用户模式下不需要密码就可以直接使用 root shell)。不论什么运行级别,系统执行的第一个初始化脚本都是 /etc/rc.d/rc.sysinit,然后执行 /etc/rc#runlevel.d 目录下的脚本启动各种系统服务。
系统配置文件大多放在 /etc/sysconfig/ 下,在启动阶段被加载(sourced)。
/etc/rc.d/rc.sysinit 负责各种各样的启动工作,顺序如下
完成上述步骤后,系统进入默认的运行级别并激活 /etc/rc#runlevel.d/ 目录下的服务。
最后,系统将执行 /etc/rc.local 脚本。在这里,用户可以方便地添加希望在系统启动时运行的命令。