openSUSE:Bugreport mkinitrd

跳转到:导航搜索

报告 mkinitrd 错误

mkinitrd 脚本生成 initrd 镜像,该镜像由引导加载程序加载并在启动期间由内核执行。其主要目标是挂载根文件系统并启动 init。

Mkinitrd 包

自 11.1 / SLE11 以来,mkinitrd 由主/sbin/mkinitrd脚本和以下脚本组成/lib/mkinitrd/scriptssetup-*.sh脚本在创建镜像时在正在运行的系统中执行,boot-*.sh被复制到镜像并在启动期间执行。重要的是,并非所有这些脚本都由 mkinitrd 包安装。使用

rpm -qf /lib/mkinitrd/scripts/<scriptname>

来确定报告错误的包。 另外请注意,安装期间使用的 initrd(称为 inst-sys 或 linuxrc)是完全独立的东西,与 mkinitrd 无关。它作为installation-images包的一部分构建。 重要提示:以上还意味着,为了检查维护更新或新的 Factory 包是否修复了错误,重要的是更新安装文件到/lib/mkinitrd/scripts的所有包。 以下命令将输出一个在报告错误之前更新到最新版本的包列表

rpm -qf --qf '%{n}\n'  /lib/mkinitrd/scripts/* | sort -u

简而言之,并非每个 mkinitrd 错误都是 mkinitrd 包中的错误。

日志

我们始终需要由

bash -vx /sbin/mkinitrd &>mkinitrd-log.txt

生成的 mkinitrd 运行日志。 如果您的系统无法启动,请从 DVD 启动救援系统并运行(从RECOVERY部分复制的man mkinitrd):

mount --bind /dev /mnt/dev
chroot /mnt
mount /proc
mount /sys
bash -vx /sbin/mkinitrd &>/root/mkinitrd-log.txt
exit

在这种情况下,日志将位于 /mnt/root/mkinitrd-log.txt 中。 有时,我们还需要由linuxrc=trace生成的引导日志。 捕获它的最简单方法是使用 空调制 连接另一台计算机,运行

screen -L /dev/ttyS0 115200

在第二台计算机上,并使用以下命令启动出现错误的计算机:

console=ttyS0 console=tty0 linuxrc=trace

启动机器后,键入Ctrl-A, Ctrl-\在屏幕窗口中,并附加screenlog.0文件中提供相同的供应商和标识信息。