Linux系统启动过程:(不包括kernel内核具体实现)
时间:2007-01-20 来源:junglegq
1)BIOS加电自检
2)读硬盘第一扇区,加载grub
3)grub支持ext3,加载/boot/grub/grub.conf,显示启动画面
4)grub加载kernel和initrd到内存
5)kernel释放initrd为/dev/ram0,并执行initrd中的小系统
6)initrd加载必要的驱动
7)kernel查找出系统硬件配置并安装驱动
8)kernel搜索/sbin/init文件并执行
9)/sbin/init搜索/etc/inittab文件中的initdefault项
10)/sbin/init执行相应的level级服务
11)/sbin/init执行/etc/rc.sysinit
12)/sbin/init加载minigetty,等待用户登录
详细的/etc/rc.sysinit运行过程
-
check network
-
mount /proc /sys
-
check selinux status
-
set text banner (“Welcome to ...”)
-
start-udev
-
initialize hardware
-
config kernel param
-
set system clock
-
set hostname
-
initialize ACPI
-
RAID
-
LVM
-
unmount initrd
-
update quotas
-
remount root filesystem rw
-
clean up selinux
-
clear /etc/mtab
-
remove stale backups
-
mount specific filesystem to /etc/mtab (/proc /sys /dev/pts /proc/bus/usb)
-
mount other filesystems to /etc/mtab
-
check for relabel
-
start the graphical boot (check rhgb)
-
pseudo-random number
-
hardware RNG ????
-
configure machine if first login (keyboard, time zone .etc)
-
clean up /var/<somedir>
-
reset pam-console permission
-
clean up utmp
-
start up swap
-
setup binfmt_misc ????
-
initialize serial ports
-
load ide-scsi if needed
-
dmesg > /var/log/dmesg
对kernel内部实现,请看understanding the linux kernel(3rd Edition)