首页 > 代码库 > 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系统启动流程