openSUSE:Bugreport mkinitrd
报告 mkinitrd 错误
mkinitrd 脚本生成 initrd 镜像,该镜像由引导加载程序加载并在启动期间由内核执行。其主要目标是挂载根文件系统并启动 init。
Mkinitrd 包
自 11.1 / SLE11 以来,mkinitrd 由主/sbin/mkinitrd脚本和以下脚本组成/lib/mkinitrd/scripts。setup-*.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文件中提供相同的供应商和标识信息。