指针和__initramfs_end指针访问XXX.cpio.gz文件,调用函数unpack_to_rootfs函数把源文件解压到rootfs中。...那假如说initramfs的rootfs为空(CONFIG_INITRAMFS_SOURCE没有配置或者指向不存在的位置),或者initramfs的rootfs没有有效的“/init”文件。...同时,这也应证了配置Kernel的时候为什么只需要配置’CONFIG_INITRAMFS_SOURCE’一个选项足也。...l实际上rootfs不仅为INITRAMFS提供服务,它还为INITRAMDISK的加载提供中转服务,这一过程后面会讲到。...linitramfs的处理总是优先于对commandLine中启动参数的处理,因此initramfs和commandline无关。
Linux启动过程概述 这里先简单列一下 Linux 操作系统启动的全过程: 按下电脑的电源键后,电脑通电,BIOS启动; BIOS读取硬盘的MBR,运行启动扇区中的代码,旧系统往往需要自己写启动扇区,...而新系统基本上由专用的启动软件接管了,在 Linux 世界中,目前都是用的 Grub2。...; 内核进行初始化,内核的初始化过程结束后,就会把控制权交给/init程序,从此进入用户空间; 因为内核先是将 initramfs 文件挂在为根文件系统,所以刚开始运行的/init程序其实是 initramfs...文件中的,所以该文件需要的重要的初始化脚本、内核模块、配置文件等,都位于 initramfs 文件中,这也是为什么很多时候我们修改了某些配置文件后,需要先更新 initramfs 文件再重启操作系统才会生效...initramfs概述 Initramfs/Initrd 用于创建一个系统启动初期的小型用户空间,解决复杂启动流程问题,作为真实rootfs挂载前的过渡。
Linux kernel在自身初始化完成之后,需要能够找到并运行第一个用户程序(这个程序通常叫做“init”程序)。...为 解决此问题,Linux kernel提出了一个RAM disk的解决方案,把一些启动所必须的用户程序和驱动模块放在RAM disk中,这个RAM disk看上去和普通的disk一样,有文件系统,有cache...Linux 2.6 kernel提出了一种新的实现机制,即initramfs。顾名思义,initramfs只是一种RAM filesystem而不是disk。...I. initramfs 详细的initramfs的资料可以参考如下: (1) 黃敬群先生的blog:深入理解 Linux 2.6 的 initramfs 機制 (2) initramfs, a new...II. initrd 目前还是有不少Linux发行版采用initrd(即RAM disk的方式)来实现引导,所以了解一下mkinitrd这个命令也很有必要。
3. initramfs被解析处理后原始的cpio包(压缩或非压缩)所占的空间 (&__initramfs_start – &__initramfs_end) 是作为系统的一部分直接保留在系统中,不会被释放掉...现在普遍用initramfs(嵌入式linux内核)或cpio-initrd(发行版linux的grub),具体有点参见工作流程 下面我们解包一个发行版linux的initrd加载的文件系统来了解一下(...sys var 是不是很像我们的文件系统,在挂载我们实际的文件系统之前,它就相当于文件系统 注:对于通用或复杂的内核你会看到CONFIG_BLK_DEV_INITRD被配置上了(如发行版linux...,CentOS 6.4,你会在/boot/config-2.6.32-358.el6.i686 里看到 CONFIG_BLK_DEV_INITRD = y),因为发行版linux是比较通用的,要通过制作的...但对于嵌入式的linux内核,硬件比较固定,可以把需要的模块编译进内核(比如开发板常用的nand Flash),这时不需要一个 单独的initramfs镜像来干什么,这时只需要按照默认的来就行了,CONFIG_BLK_DEV_INITRD
但对于许多系统,initramfs 是强制性使用的。 了解 initramfs(或者需要)的关键概念是了解 Linux 引导过程的工作原理,即使是在高级方法中也是如此。...Linux 启动过程 一旦 Linux 内核控制了系统(内核在由启动加载引导程序加载后获得控制权),它就会准备好内存结构和驱动程序。...因为它是一个真实的、 静态的设备,它消耗 Linux 内核中的缓存内存和易于使用的文件(如分页),这使得 initrd 有更大的内存消耗。 initramfs 的诞生解决了这些的问题。...The boot loader will then offer it to the Linux kernel at boot time so the kernel knows an initramfs...另一个值得阅读的关于自定义 initramfs 的文章 外部资源 The ramfs-rootfs-initramfs.txt file within the Linux kernel documentation
Linux系统启动时使用initramfs (initram file system), initramfs可以在启动早期提供一个用户态环境,借助它可以完成一些内核在启动阶段不易完成的工作。...当然initramfs是可选的,Linux中的内核编译选项默认开启initrd。在下面的示例情况中你可能要考虑用initramfs。...Linux的initramrd img 在/boot目录下的initrd.img-xxx (Ubuntu)或者initramfs-xxx.img (CentOS) 文件即为Linux用的initramfs...qemu中启动”Hello World” initramfs 在前文“在QEMU环境中使用GDB调试Linux内核”中,已经准备了一个Linux启动环境,但是缺少initramfs。...结合前文“在QEMU环境中使用GDB调试Linux内核”,可以看到qemu虚机中运行的Linux系统已经成功挂载了initramfs, 在console日志中也能看到“Unpacking initramfs
一、initramfs是什么 在2.6版本的linux内核中,都包含一个压缩过的cpio格式的打包文件。...这个压缩过的cpio格式的打包文件就是initramfs。编译2.6版本的linux内核时,编译系统总会创建initramfs,然后把它与编译好的内核连接在一起。...如果把initramfs比作种子,那么rootfs就是它生长的土壤。大部分linux系统正常运行后都会安装另外的文件系统,然后忽略rootfs。...它把许多常用的Linux命令都集成到一个单一的可执行程序中,只用这一个可执行程序(即busybox)加上Linux内核就可以构建一个基本的Linux系统。...最后,执行make命令重新编译内核后,在QEMU试验环境中,把initrd配置框(linux配置框的下面)的内容写为 ~/initramfs-test/initramfs_data.cpio.gz,指定
initramfs概述 initramfs与initrd类似,也是初始化好了且存在于ram中的,可以压缩也可以不压缩。...但是目前initramfs只支持cpio包格式,它会被populate_rootfs->unpack_to_rootfs(&__initramfs_start, &__initramfs_end – &...initramfs与initrd区别 (1) Linux内核只认cpio格式的initramfs文件包(因为unpack_to_rootfs只能解析cpio格式文件),非cpio格式的 initramfs...单独加载到ram中内核空间外的地址,比如加载的地址为addr(是物理地址而非虚拟地址),大小为8MB,那么只要在命令行加入”initrd=addr,8M”命令,系统就可以找到 initrd(当然通过适当修改Linux...init -> bin/busybox,否则内核启动将会失败) 链接入内核的initramfs文件在linux-2.6.24/usr/initramfs_data.cpio.gz 使用initrd
第二步:当出现FILE SYSTEM WAS MODIFIED这个的时候,就表示已经成功了,然后输入reboot重启。
在制作Initramfs文件系统之前,我先简单介绍下linux各文件系统。...linux支持多种文件系统类型,包括ext2,ext3,vfat,jffs, ramfs,nfs等,为了对各类文件系统进行统一管理,linux引入了虚拟文件系统vfs(virtual file system...initramfs:基于ram的文件系统。initramfs出现在2.6内核中,它类似于tmpfs,是一种基于内存的文件系统,它的使用不需要创建内存块设备。...4、编译内核模块 进入Linux内核目录(linux-2.6.30.4) make modules 注意:最好将内核根目录下的Makefile文件中的ARCH改成arm CROSS-COMPILE...文件系统: 1、建立Initramfs文件系统启动时所需文件init(initramfs文件系统启动时会在根文件系统中执行第一个init程序,它对uboot传过来的参数init=/linuxrc不予理睬
h2m_xrj6OsLiHVVhMY2e0C7WKikw_H3dZY_b4mUiW1E7AEf_q34NUUAUK6VoqnMaCow57pxEwTefYNU8WldKMyDL9uarTNSyxKsJ-hmOpq_ 注意: 1 /lib下的 库是由 编译器下的库 复制的来 2/sbin/init是由 busybox生成 我们须要编写 initab rcd等 2initramfs...构建 http://linux.chinaunix.net/techdoc/net/2008/12/13/1052467.shtml 注意: 1 linux内核 busybox 应用都要用同一个编译器
但重启后,系统一直显示(initramfs):,导致无法正常启动。最后,在网上查找了一些解决方案,成功解决了这个开机问题。在这篇文章中,我将与大家分享解决方案的过程和经验。...开机现象 虚拟机系统是Ubuntu 22.04,开机后一直显示(initramfs):,导致无法正常启动。...分区或文件系统的信息 blkid _20231103224422.jpg 找到TYPE="EXT4"的盘,我们此处是 /dev/mapper/ubuntu--vg-ubuntu--lv,fsck命令是用于检查和修复Linux...exit 总结 在解决Ubuntu进入initramfs导致无法开机的问题时,请确保备份重要数据并谨慎操作,以免造成数据丢失或其他不可逆的损失。
这时内核终于开始替代 BIOS 接管 Linux 的启动过程了。...那么,Linux 的内核到底放在了哪里呢?当然是 /boot 的启动目录中了,我们来看看这个目录下的内容吧。...Linux 给出的解决办法是使用 initramfs 这个虚拟文件系统来处理这个问题。...也就是说,通过 initramfs 虚拟文件系统在内存中模拟出一个根目录,然后在这个模拟根目录中加载 SCSI 等硬件的驱动,就可以加载真正的根目录了,之后才能调用 Linux 的第一个进程 /sbin...initramfs 重复利用了 Linux caching 的代码,因此几乎没有増加内核尺寸,而 caching 的代码已经经过良好测试,所以 initramfs 的代码质量也有保证。
二、linux CVM脚本适用范围适用linux操作系统基础网络CVM,在切换VPC网络前,可使用脚本检查启动环境(检查cloud-init,initramfs, fstab, bin/lib软链接)是否正常...操作步骤在CVM内运行命令:1、wget http://mirrors.tencentyun.com/install/cts/linux/basenet_to_vpc_check.sh2、chmod +.../etc/fstab is ok异常处理1、cloud-init异常,需重装 cloud-init,参考文档:云服务器 Linux 系统安装 cloud-init-操作指南-文档中心-腾讯云安装绿色版...:图片2、initramfs错误,需重建initramfs, 执行如下命令:wget http://mirrors.tencentyun.com/install/cts/linux/cvmrescue_main.sh.../cvmrescue_main.sh -m rebuild_initramfs3、bin lib 软链接异常修复参考:云服务器 系统 bin 或 lib 软链接缺失-故障处理-文档中心-腾讯云4、/etc
在之前的文章中,我们了解了如何使用LUKS给自己的Linux系统全盘加密。...准备 # 添加rd.neednet=1引导参数,在initramfs中加载网络,静态ip需额外配置,见下文 sed -i 's/^GRUB_CMDLINE_LINUX="/&rd.neednet=1 /...最后再执行命令,更新initramfs镜像即可。...update-initramfs -u -v CentOS / Rocky Linux / Alma Linux / Fedora / RHEL 提供两种安装方式: 包安装 https://download.copr.fedorainfracloud.org...此处以Rocky Linux 8为例。
linux系统的启动过程 在介绍破解Linux系统root密码之前先了解一下linux系统的启动过程: 1 开机自检(POST),初始化部分硬件 2 搜素可用于引导的启动设备(如磁盘的MBR)...initramfs中的硬件驱动,作为PID=1从initramfs执行/sbin/init (在RHEL7中,为systemd,并包含udev守护进程 8 Systemd执行initrd.target...破解Linux系统root用户密码 破解root密码的大致思路为,linux系统启动时会加载Initramfs文件系统,而Initramfs文件系统其实就是压缩的仅包含开机引导所必须的一小部分系统命令,...在我们进入磁盘系统之前会有系统启动加载器grub2来加载内核和Initramfs文件系统,因为磁盘系统的root密码忘记了,所以我们必须修改步骤3的启动部分,告诉系统加载完内核后就停止,让我们进入Initramfs...3.修改linux16行中的ro以后的部分内容(就是红色线标记的部分),然后替换为rd.break ? 变更为如下所示,然后ctrl+x保存,继续下一步 ?
于是有了initramfs根文件系统,其中包含必要的设备驱动和工具,boot loader加载initramfs到内存中,内核会将其挂载到根目录/,然后运行/init脚本,挂载真正的磁盘根文件系统。...这里借助BusyBox构建极简initramfs,提供基本的用户态可执行程序。...$ mkdir initramfs $ cd initramfs $ cp .....参考: Tips for Linux Kernel Development How to Build A Custom Linux Kernel For Qemu Linux Kernel System...Debugging Debugging kernel and modules via gdb BusyBox simplifies embedded Linux systems Custom Initramfs
但利用它在测试环境中gdb调试Linux内核代码,是熟悉Linux内核代码的一个好方法。.../pub/scm/linux/kernel/git/stable/linux.git tar -xvzf linux-4.9.301.tar.gz cd linux-4.9.301 make menuconfig...➜ linux-4.9.301 ls -hl vmlinux -rwxrwxr-x 1 ubuntu ubuntu 578M Apr 15 08:14 vmlinux ➜ linux-4.9.301...[root@localhost initramfs]# vim init [root@localhost initramfs]# chmod a+x init [root@localhost initramfs.../initramfs.cpio.gz [root@localhost initramfs]# ls ../ busybox-1.29.0 busybox-1.29.0.tar.bz2 initramfs
今天在安装Nvidia驱动(NVIDIA-Linux-x86_64-418.56.run)的时候,提示需要“disable the Nouveau kernel driver”。...解决办法如下: 修改 /etc/modprobe.d/blacklist.conf 文件 blacklist nouveau 备份 initramfs $ sudo mv /boot/initramfs...-$(uname -r).img /boot/initramfs-$(uname -r).img.bak 重建 initramfs $ sudo dracut -v /boot/initramfs-$(.../NVIDIA-Linux-x86_64-418.56.run 安装完成后,使用 nvidia-smi 检查一下。
再次重启后出现黑屏,提示错误如下: initramfs unpacking failed decoding failed radeon 0000:01:00.0: failed VCE resume (...经过一通man busybox猛如虎的操作后,发现BusyBox是一个集合多种工具命令的工具箱,又或称嵌入式Linux系统的瑞士军刀。可用作急救盘。...image.png initramfs initramfs (initram file system) 用于挂载根文件系统。...initramfs是在普通根文件系统上可以找到的完整目录集, 在启动时,引导加载程序会把内核和initramfs镜像加载到内存并启动内核。 initramfs可以在启动早期提供一个用户态环境。...initramfs 与 BusyBox 是什么关系? 我理解initramfs就是一种文件系统。BusyBox是命令工具集,其中还有一个switch_root命令,可以切换root文件系统。
领取专属 10元无门槛券
手把手带您无忧上云