启动顺序
- bootloader(引导程序)
- Linux内核
- inittab
/etc/inittab - rc脚本文件(各发行版各有不同)
- 登录(图形模式和文本模式各不同)
详细说明:
bootloader(引导程序)
Grub(
Grand Unified Bootloader)和lilo(Linux loader)都是流行的引导程序,它们可以从引导盘或者分区中加载任意操作系统,并且能传递参数给linux内核。配置文件是/boot/grub/grub.conf,有些发行版这个文件为grub.cfg。
Kernel(内核)
linux内核使用bootloader传过来的参数来启动。如果进行其它的配置则需要在编译时候进行配置。
inittab
当内核装载之后启动的一个脚本文件就是inittab文件,每个运行级初始化时运行的命令; 开机、关机、重启对应的命令;各运行级登陆时所运行的命令;文件位置在/etc/inittab。
rc脚本文件
rc(run command)脚本文件在不同linux发行版有所不同。但是它们所做的事情基本是相同的。它们载入需要的内核模块,并根据runlevel运行init脚本。init脚本加载需要后台进程,通常是init进程。
main rc script(主rc脚本),以下列出一些常见发行版本的
redhat: /etc/rc.d/rc.sysinit
gentoo:/sbin/rc sysinit(这个东西我具体是什么我还不清楚,因为我没安装过gentoo)
ubuntu:/etc/init/rc-sysinit.conf
init script(初始化脚本)
init脚本启动一些基础后台进程或者程序,它们一般在sysinit启动之后运行,不管怎样他们能被启动、停止、重启。
init脚本的位置:
/etc/rc.d/init.d/或者/etc/init.d【ubuntu】
ps:redhat系中这两个目录都有,其实/etc/init.d是链接到/etc/rc.d/init.d/目录之上了。
另外有几个目录/etc/rc.d/rc[0-6].d/【ubuntu(/etc/rc[0-6].d)】对应相应启动等级(runlevel),其实这下面的文件全部都链接到init.d下面,这下面的文件一般都是程序进行配置,当然也可以进行人工配置,但不推荐这样做。
ps:rcS.d 目录为单用户模式
配置程序
redhat:chkconfig
gentoo:rc-update
ubuntu:update-rc.d
登录
也就是登录之后会执行的东东,这里主要指的文本模式,登录之后执行的脚本和默认的shell有关,这些脚本都是标准的shell脚本
Bash
shell脚本在终端登录之后自动执行,下面是它们执行顺序:
1./etc/profile 然后是/etc/profile.d/*.sh
2./etc/bash/bashrc 或者/etc/bashrc
3.~/.bash_profile,如果不存在就是执行~/.bash_login,如果还不存在就执行~/.profile
4.~/.bashrc
ps:~/.bash_logout在终端登出的时候执行
非终端登录(如:xterm,aterm都是
X Window System上的终端模拟器),执行顺序
1./etc/bash/bashrc
2.~/.bashrc
其它的shell我就不翻译了
csh
Shell scripts automatically loaded for a login terminal. Listed in the order they are executed.
/etc/csh.cshrc
/etc/csh.login
~/.tcshrc
if ~/.tcshrc is not found
~/.cshrc,
~/.history
~/.login
~/.cshdirs
For a non-login terminal(i.e. xterm, aterm) Listed in the order they are executed.
/etc/csh.cshrc
~/.tcshrc
~/.cshrc
Howto configure csh or tcsh startup scripts
tcshEdit
Same as csh.
sh
login shells
/etc/profile
~/.profile
logout: command or script specified using the *trap "command" 0
ksh
same as sh
zsh
Login shells
~/.zshenv
~/.zprofile
~/.zlogin
Logout
~/.zlogout
Interactive shell
~/.zshenv
~/.zshrc
rc
Login shells
~/.rcrc
sash
Seems not to have any.
ubuntu启动顺序比较特别
(1)init读取/etc/init/rc-sysinit.conf文件来确定启动等级
(2)传递参数给/etc/init.d/rc
(3)根据参数执行/etc/rcN.d/下面的链接文件,这点跟其他的是相同的。注意,根据运行级别来裁剪服务在ubuntu中可能会失效,但是可以改写/etc/rcN.d/下面的脚本来实现。