首页 > 代码库 > linux系统启动流程
linux系统启动流程
POST(加电自检)-->BIOS(Boot Sequence)-->MBR(bootloader,446)-->Kernel-->initrd-->(ROOTFS)/sbin/init(/etc/inittab)
内核设计风格:
RedHat,SUSE 核心:动态加载 内核模块 内核:/lib/modules/"内核版本号命令的目录"/
vmlinuz-2.6.32 /lib/modules/2.6.32/
单内核:Linux(LWP) 核心:ko(kernel object) so 微内核:Windows,Solaris
chroot: chroot /path/to/temproot [command...] chroot /test/virroot /bin/bash
ldd /path/to/binary_file:显示二进制文件所依赖的共享库
启动的服务不同: 运行级别:0-6 0:halt关机 1:single user mode,直接登陆管理员 2:multi user mode,no NFS 3:multi user model:text mode 4:resered 5:multi user mode,graphic mode 6:reboot
bootloader(MBR) 两种启动方式 LILO GRUB:GRand Unified Bootloader Stage1:MBR Stage2:/boot/grub/
grub.conf
default=0 #设定默认启动的title的编号,从0开始 timeout=5 #等待用户选择的超时时长,单位是秒 splashimage= #grub的背景图片 hiddenmenu #隐藏菜单 password redhat(直接写明文密码) 或者 password --md5 ********(md5加密后的密码)
title # 内核标题或操作系统名称 可自由修改 root(hd0,0) #内核文件所在的设备:对grub而言,所有类型的硬盘一律hd:hd#,#标识第几个磁盘,最后的0表示对应磁盘的分区 kernel #内核文件路径,及传递给内核的参数 initrd #ramdisk文件路径
查看运行级别 runlevel 运行级别 who -r 运行级别
查看内核: uname -r
安装grub stage1: # grub grub> root (hd0,0) grub> set (hd0)
安装grub第二种方式: # grub-install --root-directory=/
grub>find grub>root (hd#,N) grub>kernel /path/to/kernel_file grub>initrd /path/to/initrd_file grub>boot
Kernel初始的过程: 1,设备探测 2,驱动初始化 (可能会重initrd(initramfs)文件中转载驱动模块) 3,以只读挂载根文件系统 4,装载第一个进程(PID:1)
/sbin/init: (/etc/inittab) upstart:ubuntu,d-bus,event-driven systemd:
id:runlevels:action:process id:标识符 runlevels:在哪个级别运行此行
si::sysinit:/etc/rc.d/rc.sysinit
ACTION: initdefault:设定默认运行级别 sysinit:系统初始化 wait:等待级别切换至此级别时执行 respawn:一旦程序终止,会重新启动
/etc/rc.d/rc.sysinit完成的任务 1,激活udev和selinux; 2,根据/etc/sysct1.conf文件,来设定内核参数 3,设定时钟时钟 4,装载键盘映射 5,启用交换分区 6,设置主机名 7,根文件系统检测,并以读写方式重新挂载 8,激活RAID和LVM设备 9,启用磁盘配额 10,根据/etc/fstab,检查并挂载其他文件系统 11,清理过期的锁和PID文件
linux系统启动流程