如何在启动时、从 GRUB 启动或在 GRUB 之前启动 Busybox?

如何在启动时、从 GRUB 启动或在 GRUB 之前启动 Busybox?

大多数 Busybox 问题都与用户在启动时由于某些未知问题而进入 Busybox shell 有关。这必定使 Busybox 成为最令人讨厌的软件之一。

我的问题恰恰相反。我想在启动时故意从 GRUB 启动 Busybox,甚至在 GRUB 之前启动。这可能吗?我该怎么做?目的是在重新启动启动顺序之前执行一些命令。所以基本上我想执行一些命令以使一些硬件可供引导加载程序使用。

答案1

您将需要制作一个自定义的 initrd。

提取 initrd,注意我将其~/initrd用作工作目录

cp /boot/initrd_your_version ~
cd ~/initrd
gzip -dc ../initrd_your_version | cpio -imvd --no-absolute-filenames

您没有提到您想做什么,所以我只能在这里提供一般性建议。

现在,将您需要的任何库和/或二进制文件添加到 中~/initrd。使用 ldd 来识别依赖项。

编辑 ~/initrd/init ,它是一个 shell 脚本,因此添加您需要的内容。

打包

cd ~/initrd
find . | cpio --quiet --dereference -o -H newc | gzip -9 > ../initrd-custom.img.your_version

也可以看看:http://en.gentoo-wiki.com/wiki/Initramfs

确定该链接是 gentoo,但我不知道 Ubuntu 是否有如此详细的文档。

也可以看看 :http://www.busybox.net/about.html

答案2

我曾使用这种方式远程解锁加密分区,所以我想它可以满足您的需要。

  • 嵌入dropbearinitramfs。

apt-get install openssh-server dropbear busybox

  • 复制已自动生成的 SSH 密钥。

scp [email protected]:/etc/initramfs-tools/root/.ssh/id_rsa ~/id_rsa.initramfs

  • 如果您没有使用 DHCP,请编辑/etc/default/grub并在您的配置中添加类似的行:

GRUB_CMDLINE_LINUX="ip=<client-ip>:<server-ip>:<gw-ip>:<netmask>:<hostname>:<device>:<autoconf>"

  • 重新加载 grub 配置update-grub

  • reboot

请小心,因为不同的 grub 版本有不同的配置选项。

现在您应该能够通过 SSH 密钥进行远程连接并在启动过程中传递一些命令。

您可以找到更多信息这里

相关内容