1 开机后BIOS自检
由BIOS判断磁盘上有哪些引导程序之后加载
常见bootloader –> grub lilo syslinux/isolinux
2 由(bootloader)ISOLINUX 进行安装引导(第一阶段)
由引导程序isolinux.bin启动系统
启动时默认读取cdrom中的isolinux.cfg(配置文件)
列出认为最重要的部分
需在最后添加 inst.ks=kickstart配置文件所在位置(如果要实现自动安装)
menu label 为安装时的引导选项 kernel 要加载的内核· initrd=initrd.img是定义内核的挂在器是initrd.img(不是很懂 望高人指点) inst.stage2镜像所在位置
3 由bootloader 加载vmlinuz映像(第二阶段)
vmlinuz包含有linux内核的静态链接的可执行文件
bootloader 释放内核映像到内存 开始内核引导过程
内核加载部分硬件驱动(通过devtmpfs)
并且释放initramfs
4 由内核判断initrd.img的格式如果是cpio则释放到rootfs(加载必要的驱动)
会被bootloader加载到内存中,并且启动init程序(所有进程的父进程 PID为1)。之后它会被复制到RAM中并挂载到系统上,并作为临时根文件系统使用
并且加载相关模块驱动,从而找到真正的根文件系统。
cpio-initrd( >= 2.6 ) image-initrd( 2.4 < )
最主要区别为image-initrd的运行的第一个程序为linuxrc
在运行完毕后又重新将系统控制权交给内核
cpio-initrd运行的第一个程序为init
之后不会将系统交给内核而是完全由init程序操作
5 执行initrd.img里的init程序进行初始化
./usr/sbin/anaconda-diskroot 查找kickstart文件
以下为./usr/sbin/fetch-kickstart-disk函数输出
./usr/sbin/dmsquashfs-live-root程序挂载squashfs.img
Init程序停止initrd文件系统
并且重新remount到真实文件系统
直到init程序到达basic system
6 运行squashfs中的usr/bin/anaconda程序 启动安装
安装时anaconda读取kickstart中的内容进行安装