linux生成initramfs,Linux启动过程与initramfs

linux生成initramfs,Linux启动过程与initramfsLinux启动过程概述这里先简单列一下Linux操作系统启动的全过程:按下电脑的电源键后,电脑通电,BIOS启动;BIOS读取硬盘的MBR,运行启动扇区中的代码,旧系统往往需要自己写启动扇区,而新系统基本上由专用的启动软件接管了,在Linux世界中,目前都是用的Grub2。由于启动扇区空间太小,放不下太复杂的代码逻辑,所以Grub2也使用了多阶段启动的策略;Grub2负责将操作系统…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

Linux启动过程概述

这里先简单列一下 Linux 操作系统启动的全过程:

按下电脑的电源键后,电脑通电,BIOS启动;

BIOS读取硬盘的MBR,运行启动扇区中的代码,旧系统往往需要自己写启动扇区,而新系统基本上由专用的启动软件接管了,在 Linux 世界中,目前都是用的 Grub2。由于启动扇区空间太小,放不下太复杂的代码逻辑,所以 Grub2 也使用了多阶段启动的策略;

Grub2 负责将操作系统内核加载到内存,如果有必要,也会把 initramfs 文件加载到内存,然后将控制权交给内核;

内核进行初始化,内核的初始化过程结束后,就会把控制权交给/init程序,从此进入用户空间;

因为内核先是将 initramfs 文件挂在为根文件系统,所以刚开始运行的/init程序其实是 initramfs 文件中的,所以该文件需要的重要的初始化脚本、内核模块、配置文件等,都位于 initramfs 文件中,这也是为什么很多时候我们修改了某些配置文件后,需要先更新 initramfs 文件再重启操作系统才会生效;

initramfs 文件中的/init程序负责挂载硬盘上的文件系统,然后再把根文件系统切换到硬盘上的根分区,再运行/sbin/init程序,这时所有程序、配置文件、脚本都是使用的硬盘上的了,当然,网络文件系统也是同理。可以看出 init 程序的运行也是一个分阶段的过程;

/sbin/init程序负责系统的初始化、各种服务的运行、用户的登陆等等;

如果需要运行图形界面,则/sbin/init程序会运行 Display Manager,在 Fedora 中是 gdm,在 Ubuntu 中是 lightdm。然后 Display Manager 负责启动整个图形界面。

initramfs概述

Initramfs/Initrd 用于创建一个系统启动初期的小型用户空间,解决复杂启动流程问题,作为真实rootfs挂载前的过渡。

创建一个initramfs

# dracut [–force] [/PATH/TO/new_image_name] [kernel version]

这将创建一个通用的initramfs image,包含尽可能多的当前active kernel的驱动模块和系统工具,image默认位置:/boot/initramfs-.img;–force选项用于强行覆盖已经存在的同名initramfs;可以在cmdline指名新image的路径和名称及为哪一个版本的kernel制作image;如果想制作一个更轻、更小、启动速度更快的initramfs,可以添加–hostonly选项,通常需要制作一个全功能通用型image以备不时之需。

查看initramfs包含的文件列表及某个文件的内容

# lsinitrd | less

# 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 –add bootchart initramfs-bootchart.img

查看所有可用的dracut模块

# dracut –list-modules

忽略(不添加)模块

用于精简initramfs,同样可以在配置文件(man 5 dracut.conf)或命令行操作,如下示例:去除lvm逻辑卷支持

# dracut –omit “multipath lvm” no-multipath-lvm.img

手动添加没有被dracut自动识别的kernel模块

同理,/etc/dracut.conf或/etc/dracut.conf.d/xxx.conf或cmdline

# dracut –add-drivers mymod initramfs-with-mymod.img

kernel启动参数(/boot/grub[2]/grub.cfg)

查看当前系统启动参数

# dracut –print-cmdline

root=UUID=8b8b6f91-95c7-4da2-831b-171e12179081 rootflags=rw,relatime,discard,data=ordered rootfstype=ext4

指定启动设备

root=/dev/sdX

– OR –

root=UUID=19e9dda3-5a38-484d-a9b0-fa6b067d0331

– OR –

root=LABEL=XXX

查看磁盘id及label

blkid

– OR –

ls -l /dev/disk/by-uuid && ls -l /dev/disk/by-label

屏蔽kernel模块(即:使其不能自动加载)

rd.driver.blacklist=mptsas rd.driver.blacklist=nouveau

在kernel command line上指明initramfs的启动参数,可以加快启动速度;如果不指明,dracut将在最大的范围内查找

#This turns off every automatic assembly of LVM, MD raids, DM raids and crypto LUKS

rd.luks=0 rd.lvm=0 rd.md=0 rd.dm=0

综上所述,加快initramfs启动速的途径有两种,一是在生成initramfs image之前直接精简其内容,二是通地操作grub.cfg的启动参数实现

Like this:

Like Loading…

Related

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/169691.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • python3、sqlmap下载与安装教程

    一、前提需要安装python3,可以参考其他教程二、下载官网下载http://sqlmap.org/三、安装将下载的sqlmap.zip解压到文件夹sqlmap中,并拷贝到Python安装路径下四、配置在桌面上创建一个cmd进入python的快捷方式(这步可以不做,只是比较方便启动),右键新建快捷方式输入cmd快捷方式命名可随意,不作要求,这里用sqlmap右键–属性修改起始位置为sqlmap文件夹路径测试启动sqlmap,双击刚才创建的快捷方式,

    2022年4月7日
    237
  • 云存储要发展安全性和可用性问题需解决

    云存储要发展安全性和可用性问题需解决

    2022年3月6日
    47
  • PyCharm激活码永久有效PyCharm2019.2.6激活码教程-持续更新,一步到位「建议收藏」

    PyCharm激活码永久有效PyCharm2019.2.6激活码教程-持续更新,一步到位「建议收藏」PyCharm激活码永久有效2019.2.6激活码教程-Windows版永久激活-持续更新,Idea激活码2019.2.6成功激活

    2022年6月19日
    28
  • 想入行3D游戏建模,看完这个你还敢想吗?

    想入行3D游戏建模,看完这个你还敢想吗?所有行业都是一样的,没有什么容易的,只不过这一行是偏向于技术的,一个有好的建模师月薪10k+是很常见的,这个需要有自己刻苦学习的成果。游戏建模前景在游戏模型行业,你基本不用担心找不到工作,因为游戏模型师人才缺口非常大。举个例子:游戏制作公司的人员配比大多数是这样的:比如100人的三维制作组,可能有60人在做模型贴图,10个人在K动画。只要你保证技能在手,一定是抢手的人才。在几年前游戏建模这个行业不仅仅缺人才,甚至连新手都非常稀缺,那个时候公司愿意招聘实习生,培养他们然后给公司干活,但是工资一定不会给开.

    2022年5月12日
    39
  • 国密算法「建议收藏」

    国密算法「建议收藏」算法分类国密即国家密码局认定的国产密码算法。主要有SM1,SM2,SM3,SM4。密钥长度和分组长度均为128位。SM1为对称加密。其加密强度与AES相当。该算法不公开,调用该算法时,需要通过加

    2022年8月1日
    17
  • Java-反射机制(超详解)「建议收藏」

    Java-反射机制(超详解)「建议收藏」Java反射机制概述一、Java反射机制概述1.JavaReflection2.动态语言vs静态语言二、理解Class类并获取Class的实例1.概述2.方法3.哪些类型可以有Class对象?4.获取Class类的实例(四种方法)三、类的加载与ClassLoader的理解1.类的加载过程2.什么时候会发生类初始化?3.类加载器的作用4.JVM中不同类型的类的加载器5.6.Properties:用来读取配置文件。四、创建运行时类的对象五、获取运行时类的完整结构1.获取当前

    2022年9月14日
    0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号