Questions tagged «initramfs»

“初始RAM文件系统”是initrd的后继。它是一个根文件系统,已嵌入内核并在引导过程的早期加载。

3
如何解决引导进入initramfs提示符和“装载:无法读取'/ etc / fstab':无此文件或目录”和“找不到init”的问题?
使用专用于单个分区的GPT分区磁盘安装新系统,该分区为ext4格式,extlinux(版本4.05)作为引导加载程序,Ubuntu Core版本13.10 amd64作为rootfs,而Ubuntu linux-image-3.11.0-18-generic作为内核,和extlinux-update生成引导加载程序配置。 重新引导后(仍在基于KVM的虚拟机中)的结果是(initramfs)提示和以下消息: mount: can't read '/etc/fstab': No such file or directory mount: mounting /dev on /root/dev failed: No such file or directory mount: mounting /sys on /root/sys failed: No such file or directory mount: mounting /proc on /root/proc failed: No such file or directory The filesystem doesn't …

3
initramfs是否使用/ etc / fstab?
据我了解,initramfs负责加载“真实的”根文件系统。 现在,在两个地方定义了根。首先,我们在中输入一个条目/etc/fstab。其次,我们将设备放在内核引导命令上,例如root=/dev/sda1。 initramfs使用哪一个来确定根文件系统在哪里?如果它使用root内核参数,为什么我们要在其中输入一个/etc/fstab?第二个选项(读取为/etc/fstab)非常不合逻辑,因为该/etc/fstab文件位于initramfs首先尝试安装的根设备上。 非常令人困惑的东西。
20 boot  fstab  initramfs 

1
您何时会在switch_root上使用ivot_root?
我想更好地了解Linux初始化过程,以便通过ceph而不是nfs网络引导系统。 在此过程中,我遇到了两种切换根的形式。一个称为switch_root,另一个称为pivot_root。这些脚本是通过使用pxe引导过程通过tftp获取的内存文件系统(initramfs)运行的。 您什么时候可以使用另一个?我已经看到两者都用在放置在根目录下的一些init脚本中。

6
为什么需要initramfs?
我发现,如果选择jffs或sd作为文件系统(而非initramfs),内核大小将非常小(1.4 MB,而initramfs3.4MB)。这意味着initramfs占用相当大的空间。因此,如果可以的话,我将其完全删除,因此将具有非常小的内核,这正是我想要的。 我想到的基本问题是:为什么需要initramfs?没有任何初始文件系统,Linux内核不能启动吗? 我的最终应用程序将只进行计算和通信-根本没有存储。因此,没有文件系统的操作系统很有意义-至少对于我的应用程序而言。

4
从initramfs挂载根文件系统
这是常见的情况。无论出于何种原因,initramfs(如果需要的话,OpenSUSE)都无法找到根文件系统,因此它将您带入了应急外壳。我完全清楚需要安装什么设备。我的问题: 挂载根文件系统并继续启动顺序的正确步骤是什么? 据推测,这是整个点抢救控制台。但是,似乎没有人记录您如何实际执行此操作。 显然,我可以将根文件系统挂载到某个地方。但是,如何使它成为文件系统树的根呢?现在,在那之后我是否继续正常的启动过程?(我以为只退出外壳就可以了...但是没有。)在继续之前,您到底需要安装什么,以及如何继续?

1
在debian上相当于mkinitcpio.conf?
我想回顾一下,用于构建initrd.imgDebian 的钩子在我的debian中是正确的,但是我找不到与/etc/mkinitcpio.confArchlinux中的文件类似的文件,在debian中该文件的等效性是什么,一旦完成,如何重新构建initrd.img我已经编辑过该文件了吗?
15 initramfs  initrd 

3
整个内核在启动时是否已加载到内存中?
我通读了这份流行的IBM文档(我在网络上经常看到该文档),解释了初始RAM磁盘的功能。 我在构想这是如何工作的过程中碰壁了。 在文档中说 引导加载程序(例如GRUB)标识要加载的内核,并将该内核映像和任何相关的initrd复制到内存中 我已经很困惑:它将整个内核复制到内存中还是仅复制其中一部分?如果整个内核都在内存中,那为什么我们还需要初始的RAM磁盘? 我认为initrd的目的是为了拥有一个小的通用内核映像,并且initrd会在加载内核映像之前在其中安装正确的模块。但是,如果整个内核已经在内存中,为什么我们需要initrd? 这也引起了另一件事,使我感到困惑-装入内核的模块在哪里?是否所有内核模块都存储在initrd中?

3
为什么initramfs以只读方式挂载根文件系统
将根文件系统挂载ro到initramfs(和initrd)中的原因是什么? 例如,Gentoo initramfs指南使用以下命令挂载根文件系统: mount -o ro /dev/sda1 /mnt/root 为什么不以下? mount -o rw /dev/sda1 /mnt/root 我可以看到,可能有一个很好的理由(可能涉及switchroot),但是似乎没有任何地方对此进行记录。

3
为什么要对initramfs使用cpio?
我正在按照Gentoo Wiki制作自己的initramfs 。取而代之的是熟悉的tar和gzip,页面告诉我使用cpio和gzip。Wikipedia表示cpio2.6内核的initramfs使用了它,但没有解释原因。 这仅仅是约定还是cpio对initramfs更好?我仍然可以使用tar和gzip?

2
与嵌入式和外部initramfs一起执行init的区别?
我正在构建一个非常小的Linux系统,它仅由内核(v4.1-rc5)和一个填充有busybox(v1.23.2)的initramfs组成。它在大多数情况下都能正常工作,但是无论我使用的是嵌入式initramfs还是外部的initramfs,我都在/ init中观察到命令执行行为的差异。 / init脚本是: #!/bin/sh dmesg -n 1 mount -t devtmpfs none /dev mount -t sysfs none /sys mount -t proc none /proc echo "Welcome" while true do setsid cttyhack /bin/sh done 然后,我将内核.config中的CONFIG_INITRAMFS_SOURCE选项设置为包含initramfs所有文件夹的目录,或者运行 find . | cpio -H newc -o | gzip > ../rootfs.cpio.gz 建立它。 然后,无论是否设置CONFIG_INITRAMFS_SOURCE,编译内核时,最终都会遇到系统的两个变体: 嵌入了initramfs的bzImage bzImage + rootfs.cpio.gz(外部initramfs) …
10 linux  kernel  boot  initramfs 


1
如何在不使用/etc/mdadm.conf的情况下组装特定的RAID阵列
是否可以使用mdadm及其扫描功能来组装特定的RAID阵列,而无需配置文件? 背景: 我正在使用定制的initramfs来设置系统(dm-crypt和其他内容)。一切都在init脚本中完成并配置,这就是我想要保留的方式,即无需任何其他配置文件。 我的目标: 在初始化脚本中,我只想使用命令行组装一个特定的RAID阵列。通过其UUID标识阵列,给出md设备名称,并应扫描阵列成员(因为例如,连接的USB记忆棒或发生故障的设备会弄乱/ dev / sdX名称)。所有其他设备和潜在的RAID阵列都将被忽略,因为在引导过程中,只有一个阵列是感兴趣的(带有根文件系统)。 仔细阅读mdadm的手册页并进行一些测试,我想到了: mdadm --assemble --uuid <uuid> /dev/md0 这似乎可行,但这是正确的方法吗? 在手册页中: 如果仅列出了一个设备,但未指定--scan,则mdadm的行为就好像已给出--scan一样,并且从配置文件中提取了身份信息。
9 raid  mdadm  initramfs 

7
休眠恢复在Linux内核4.9.0,Debian 9上失败
我最近将内核从3.16.4(Debian jessie)升级到4.9.0(Debian Stretch)。一切都很好,直到我尝试“休眠”(挂到磁盘)。 当我在LXDE中使用休眠选项时,它似乎处于休眠状态。我可以听到磁盘主轴的滴答声和写入数据。但是从休眠状态恢复时出现问题。内核成功地从交换中恢复了映像,但随后冻结并重新启动,所有工作都丢失了。我在互联网上的任何地方都找不到答案。人们只是在解决一些错误,包括不设置/etc/initramfs-tools/conf.d/resume或设置内核参数,或在/ etc / fstab中输入错误。我说的对。在/etc/initramfs-tools/conf.d/resume中更正UUID,更正fstab且未设置恢复内核参数。 我将交换分区从扩展分区的外部移到了主分区。UUID已保存并应用于新的交换。 系统到达“还原映像100%”,然后到达“挂起的控制台”,然后关闭电源并正常启动,而所有工作都将丢失。 尝试全新安装,但没有运气。 仅在i386(32位x86)上发生,而amd64(64位x86)不受影响。 磁盘分区表布局: NAME FSTYPE LABEL UUID MOUNTPOINT sda ├─sda1 ext4 HDD <ROOT-UUID> / └─sda2 swap HDD-SWAP <SW-UUID> [SWAP] sr0 升级之前,sda2是逻辑的(在内部扩展)。 Fstab: UUID=<ROOT-UUID> / ext4 errors=remount-ro 0 1 UUID=<SW-UUID> none swap sw 0 0 /etc/initramfs-tools/conf.d/resume RESUME=UUID=<SW-UUID> 内核cmdline BOOT_IMAGE=/boot/vmlinuz-4.9.0-3-686-pae root=UUID=<ROOT-UUID> ro quiet …

3
GRUB混淆了Ubuntu和Arch Linux安装的内核/ initramfs
我有一台用于双引导Ubuntu(当前为16.04)和Windows 7的计算机,其中Ubuntu的GRUB为引导加载程序。 现在,按照官方安装说明,我刚刚将Arch Linux添加为第三个操作系统。我没有从Arch安装GRUB,因为我想使用Ubuntu所控制的GRUB。指令中包含一个命令mkinitcpio -p linux,该命令可能会生成一些我所描述的启动文件。 现在,当我尝试通过GRUB的默认条目从Ubuntu启动时,我得到了这个不愉快的错误(对不起,屏幕截图): 如uname -a显示的输出所示,它正在尝试引导Arch内核,但/dev/sda6它是Ubuntu根分区。 我必须导航Advanced options for Ubuntu并选择一个Ubuntu, with Linux 4.4.0-*条目才能加载Ubuntu,但是我找不到能够正确加载Arch的条目。 sudo update-grub从Ubuntu 运行(“ update-grub用于grub-mkconfig -o /boot/grub/grub.cfg生成grub2配置文件的存根。”)不会改变任何内容。grub-customizer到目前为止,该工具也无济于事。 是什么引起GRUB的混乱,我如何解决它,以便每个Linux版本都使用正确的内核和正确的分区启动? 看起来我愚蠢地安装了Ubuntu的/ boot来安装Arch,因此它可能将其启动文件放在了那里。 我可以清除所有与Arch相关的内容,以再次获得Ubuntu的引导加载程序,并稍后重新安装Arch。 更新(感谢@terdon在Ask Ubuntu聊天中的支持): 这是我的/boot/grub/grub.cfg。 所有Linux条目似乎都指向我的/ dev / sda6分区,这是Ubuntu的根目录: $ grep ' linux /' /boot/grub/grub.cfg linux /vmlinuz-linux root=UUID=eee18451-b607-4875-8a88-c9cb6c6544c8 ro linux /vmlinuz-linux root=UUID=eee18451-b607-4875-8a88-c9cb6c6544c8 ro linux /vmlinuz-linux root=UUID=eee18451-b607-4875-8a88-c9cb6c6544c8 …

2
提取嵌入式initramfs
我有一个嵌入了一个initramfs的内核。我要提取它。 我做的x86 boot sector时候得到了输出file bzImage 我有此内核映像的System.map文件。 是否有任何方法可以通过System.map文件的帮助来从此内核中提取嵌入式initramfs图像? 在系统映射文件中找到的有趣字符串是:(以防万一) 57312:c17fd8cc T __initramfs_start 57316:c19d7b90 T __initramfs_size

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.