Linux组成
由 kernel 和 rootfs 组成
单内核:(进程管理,内存管理,网络管理, 驱动程序,文件系统, 安全功能)
/boot/vmlinuz-VERSION-release
辅助的伪根系统
/boot/initramfs-VERSION-release.img 这是一个cpio格式的归档文件,存放的是各种驱动模块
md5sum vmlinuz /boot/vmlinuz 查看两个文件中的内容是否完全一致,只要有一个字符不一样,两个文件的md5值就会不同
伪根系统的操作
解压查看包含文件
1 mv initramfs-3.10.0-693.el7.x86_64.img initramfs-3.10.0-693.el7.x86_64.img.gz 2 3 gunzip initramfs-3.10.0-693.el7.x86_64.img.gz 4 5 cpio -tv < initramfs-3.10.0-693.el7.x86_64.img
生成伪文件系统(ramdisk或者initramfs文件的制作):
(1) mkinitrd命令 为当前正在使用的内核重新制作ramdisk文件 mkinitrd /boot/initramfs-$(uname -r).img $(uname -r)
(2) dracut命令 为当前正在使用的内核重新制作ramdisk文件 dracut /boot/initramfs-$(uname -r).img $(uname -r)
系统启动流程
post 加电自检
BIOS + MBR
MBR中前446个字节存放的是GRUB软件中的bootloader程序
UEFI + GPT
MBR引导
寻找MBR扇区中前446个字节的数据
GRUB
GRUB是一个复杂的软件,它安装在磁盘的不同位置
一部分安装在MBR中的前446个字节 MBR不属于任何分区 是以二进制的方式进行读写
另外一部分安装在 /boot/grub 中
如果需要访问boot分区下的文件,就必须首先识别boot分区的文件系统,如果需要识别文件系统,就必须首先加载对应文件系统的驱动.
GRUB启动被分为3个stage
1 stage 执行 bootloader中的446个字节的程序
1.5 stage MBR存在第一个扇区,把boot分区的文件系统驱动存储在MBR后面的几个扇区
2 stage 读取boot分区下的文件
加载内核文件
/boot/vmlinuz-VERSION-release 加载内核后开始访问硬盘上的根分区,找到根以后启动系统中的第一个进程
内核文件是随着操作系统的发行一起发布的,存储在光盘中
根分区是在grub的配置文件中作为内核启动参数传递给内核的
/boot/initramfs-VERSION-release.img 就是用来加载根分区所属的文件系统的驱动,进而读取根分区下面的文件
伪文件系统文件是在安装操作系统的时候临时生成的,因为只有在装操作系统的时候才知道根分区采用的是什么文件系统类型
bootloader引导加载器
Windows: ntloader 仅是启动os 不支持Linux
Linux: GRUB 功能丰富,同时支持Linux和windows
安装Windows的时候就会默认安装windows的bootloader,安装Linux的时候就会安装Linux的bootloader
后安装的操作系统的bootloader会覆盖掉前面安装的bootloader
一个主机只能安装一个bootloader.如果要在一台主机上安装双系统,最好先安装Windows然后再安装Linux.
原文地址:https://www.cnblogs.com/yxh168/p/9004992.html