Linux启动过程概述
本节简要介绍了启动Linux操作系统的所有过程。
按下电脑电源按钮,电脑通电,BIOS启动;
BIOS读取硬盘的MBR并执行引导扇区代码。 旧系统通常需要自己写引导扇区,但新系统基本上由专用引导软件继承。 在Linux的世界里,现在正在使用Grub2。 Grub2也使用多阶段引导策略,因为引导扇区空间太小,无法包含太复杂的代码逻辑
Grub2将操作系统内核加载到内存中,如果需要,还将initramfs文件加载到内存中,并将控制权传递给内核
内核初始化后,内核初始化过程结束后,控制权将传递给/init程序,然后进入用户空间
因为内核首先将initramfs文件放在根文件系统中,所以最初运行的/init程序实际上位于initramfs文件中,所以该文件所需的重要初始化脚本、内核模块、配置文件等都是因此,在修改某些配置文件后,必须更新initramfs文件,然后重新启动操作系统
initramfs文件中的/init程序装载硬盘上的文件系统,将根文件系统切换到硬盘上的根分区,然后运行/sbin/init程序。 此时,所有程序、配置文件和脚本都位于您的硬盘上。 当然,网络文件系统也是如此。 可见,init计划的执行也是一个逐步的过程
/sbin/init程序负责系统初始化、各种服务的执行、用户的登录等;
如果需要运行图形界面,/sbin/init程序将运行显示管理器。 在Fedora中为gdm,在Ubuntu中为lightdm。 然后,Display Manager负责启动整个图形界面。
initramfs概述
作为实际的rootfs装载前迁移,Initramfs/Initrd用于创建系统启动初期的小用户空间,以解决复杂的启动过程问题。
创建init射频
# dracut [-- force ] [/path/to/new _ image _ name ] [ kernel版本]
这将创建一个通用的initramfs image,其中包含尽可能多的当前活动密钥驱动程序模块和系统工具。 image的默认位置为/boot/initramfs-.img; force选项用于强制覆盖已存在的同名initramfs; 您可以指定cmdline将新image的路径和名称,以及要创建的kernel image版本; 如果要创建更轻、更小、启动速度更快的initramfs,请添加host only选项。 通常,需要根据需要创建全功能的通用image。
显示initramfs中包含的文件列表和文件内容
# lsinitrd
# lsinitrd -f /etc/ld.so.conf
include ld.so.conf.d/*.conf注: ld.so.conf文件的所有内容
添加模块
默认情况下,某些dracut内置模块不会添加到initramfs中,而是添加到/etc/dracut.conf或/etc/dracut.conf.d/xxx.xonf中,或add选项
# dracut-- addbootchartinitramfs-bootchart.img
显示所有可用的dracut模块
# dracut --list-modules
忽略(不添加)模块
在精简initramfs中使用,可以在配置文件(man 5 dracut.conf )或命令行中操作,如下例所示。 删除对lvm逻辑卷的支持
# dracutomit“多路径LVM”no-multipath-LVM.img
手动添加dracut无法自动识别的kernel模块
同样,/etc/dracut.conf或/etc/dracut.conf.d/xxx.conf或cmdline
# dracut-- add-driversmymodinitramfs-with-mymod.img
kernel启动参数(/boot/grub[2]/grub.cfg ) ) )。
显示当前系统启动参数
# dracut --print-cmdline
root=uuid=8b 8b 6f 91-95c7- 4d a2-831 B- 171 e 12179081 root flags=rw,relatime,discard,data=有序路由类型=ext 4
指定启动设备
root=/dev/sdX
-或-
root=uuid=19e9DD a3-5a 38-484 d-a9b0- fa 6b 067 d 0331
-或-
root=LABEL=XXX
查看磁盘id和标签
blkid
-或-
ls-l/dev/disk/by-uuid ls-l/dev/disk/by-label
阻止kernel模块(即,阻止自动加载) )。
rd.driver.black list=mptsasrd.driver.black list=nouveau
通过在kernel command line中指定initramfs的启动参数,可以缩短启动时间。 如果未指定,dracut将在最大范围内搜索
# thisturnsoffeveryautomaticassemblyoflvm,MD raids,DM raids and crypto LUKS
rd.luks=0rd.LVM=0rd.MD=0rd.DM=0
综上所述,加快initramfs启动速度的方法有两种,一种是在生成initramfs image之前直接简化其内容,另一种是操作grub.cfg的启动参数来实现
Like this:
Like Loading .
相关的