Linux 的启动过程
一、 常见的三种 Linux 引导方式
① lilo/grub 引导,可实现多重系统引导,应用较普遍;
② loadlin 引导,可在 dos 下引导 linux;
例:将 loadlin.exe 和 vmlinuz 拷贝到一张 DOS 启动软盘上,
启动后执行:loadlin vmlinuz root=/dev/hda8
则可从软盘启动硬盘上根目录为/dev/hda8 的 Linux 系统。
(vmlinuz 是 Linux 的压缩内核文件,在/boot 目录下可找到)
③ linux 内核自带的 bootsect-loader,代码短小,但只能实现
linux 的引导,在普通的应用场合很少使用。
二、 启动过程简述⑴加电后执行 BIOS 自检,读取并执行 MBR 中的引导代码;
⑵由 mbr 中 lilo/grub 或其它引导器解压内核 vmlinuz 到内存;
⑶内核检测硬件设备,以只读方式挂装根目录以检测文件系
统,若无误则该用读写方式挂装文件系统;
⑷内核启动 init 进程,该进程 PID=1,是内核启动的唯一进程;
⑸init 进程读/etc/inittab 配置文件,获取默认的运行级。对于
安装了 x window 的系统通常是 id:5:initdefault;否则通常
是 id:3:initdefault;
⑹init 进程运行/etc/rc.d/rc.sysinit 脚本,完成激活交换分区,
检查磁盘,加载硬件模块、配置网络等一些系统初始化的工
作,以及其它一些需要优先执行任务;
⑺init 进程以运行级别为参数运行/etc/rc.d/rc 脚本,该脚本进
入与运行级别对应的目录(如/etc/rc5.d),先以 stop 为参数
顺序运行所有以 K 打头的脚本,停止相应服务,再以 start
为参数顺序运行所有以 S 打头的脚本文件,启动相应服务;
⑻运行/etc/rc.d/rc.local 脚本,该脚本缺省的情况下只有一条语
句:touch /var/lock/subsys/local。即修改该文件的时间属性;
⑼init 进程为每个终端运行一个/sbin/mingetty 的程序,该程序
在终端初显示提示符,等待用户登录;
⑽用户登录后,/sbin/mingetty 交控制权给 login 程序。Login
程序负责建立用户环境,并启动一个 shell,首先寻找执行
/etc/profile 和用户的主目录中的.bash_profile 脚本文件;
⑾ shell 负责解释执行用户命令。三、 自动运行程序
①开机启动时自动运行程序
修改放置在/etc/rc.d 或 /etc/rc?.d 目录下的脚本文件,可以
使 init 自动启动其它程序。例如:编辑 /etc/rc.d/rc.local 文
件,在文件最末加上一行“xinit”或“startx”,可以在开机
启动后直接进入 X-Window。
②登录时自动运行程序
用户登录时,bash 首先自动执行系统管理员建立的全局登
录 script :/ect/profile。然后 bash 在用户起始目录下按顺
序查找三个特殊文件中的一个:/.bash_profile、/.bash_login、
/.profile,但只执行最先找到的一个。因此,只需根据实际
需要在上述文件中加入命令就可以实现用户登录时自动运
行某些程序(类似于 DOS 下的 Autoexec.bat)。
③退出登录时自动运行程序
退出登录时, bash 自动执行个人的退出登录脚本
/.bash_logout。例如,在/.bash_logout 中加入命令“tar -
cvzf c.source.tgz *.c”,则在每次退出登录时自动执行
“tar” 命令备份 *.c 文件。
④定期自动运行程序
Linux 有一个称为 crond 的守护程序,主要功能是周期性地
检查 /var/spool/cron 目录下的一组命令文件的内容,并在
设定的时间执行这些文件中的命令。用户可以通过 crontab
命令来建立、修改、删除这些命令文件。 例如,建立文件 crondFile,内容为“00 9 23 Jan *
HappyBirthday”,运行“crontab cronFile”命令后,每当
元月 23 日上午 9:00 系统自动执行“HappyBirthday”的程
序(“*”表示不管当天是星期几)。
⑤定时自动运行程序一次
定时执行命令 at 与 crond 类似(但它只执行一次):命令
在给定的时间执行,但不自动重复。at 命令的一般格式为:
at [ -f file ] time ,在指定的时间执行 file 文件中所给出的
所有命令。也可直接从键盘输入命令:
$ at 12:00
at>mailto Roger -s ″Have a lunch″ < plan.txt
at>Ctr-D
Job 1 at 2000-11-09 12:00
2000-11-09 12:00 时候自动发一标题为“Have a lunch”,
内容为 plan.txt 文件内容的邮件给 Roger。