Linux系统启动和内核管理

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
View Code

  生成伪文件系统(ramdisk或者initramfs文件的制作):   

     (1) mkinitrd命令     为当前正在使用的内核重新制作ramdisk文件         mkinitrd   /boot/initramfs-$(uname -r).img $(uname -r) 

     (2) dracut命令        为当前正在使用的内核重新制作ramdisk文件         dracut     /boot/initramfs-$(uname -r).img $(uname -r)  

扫描二维码关注公众号,回复: 421478 查看本文章

系统启动流程

   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.

猜你喜欢

转载自www.cnblogs.com/yxh168/p/9004992.html