从本地镜像预置 Debian 安装:未检测到磁盘

从本地镜像预置 Debian 安装:未检测到磁盘

作为后续这个问题,我正在尝试完全自动化 Debian(挤压)安装过程。到目前为止,我已经成功挂载了主 Debian DVD 的 ISO 映像,并通过 FTP 将其提供给客户端。问题是,客户端在尝试检测硬盘驱动器时冻结了。经过一定的超时间隔后,它会向我显示它检测到的分区的(空白)列表,并让我选择编辑分区或继续。这两种选择当然都会失败,因为没有检测到任何分区。

为了尝试调试,我从 Debian DVD 本身启动主机,并选择具有低 debconf 优先级的专家安装。安装过程中完成的步骤之一似乎很神奇:它被称为“从 CD 下载安装组件”。这似乎比我预先尝试的检索更多的模块,最终导致成功的磁盘检测。特别是,这一步似乎扫描了 DVD 上 Debian 镜像的“pool”目录,而预置则不会。

我已经尝试过手动完成整个安装并检索d-i选择

 debconf-get-selections --installer > installer_sels.txt

但我发现没有什么特别有帮助的。 VT 4 ( ) 中的消息/var/log/syslog也没有太大帮助,因为在两种情况下(实际 DVD 和 FTP ISO 安装),有关丢失模块的消息和投诉是相同的。

我在这里缺少什么?我可以在预置文件中添加一些内容以使其从 DVD 加载其他模块吗?以前尝试过这个的人有什么建议吗?

我的预置文件中的相关行:

d-i mirror/protocol string ftp
d-i mirror/ftp/hostname <FTP server IP>
d-i mirror/ftp/directory /<FTP dir>/debian

编辑:其他详细信息

  • 我跟着本指南
  • 我通过 FTP 提供 Debian 压缩 DVD。我执行了以下操作来制作它的 ISO 映像:

    dd if=/dev/cdrom of=/path/to/debian_amd64.iso

  • 我从 amd64 启动netboot/netboot.tar.gz图像。
  • 我的启动参数是

... linux26

append ... auto=true priority=critical preseed/url=ftp://path to preseed

linux26根据我在其他地方读到的答案(目前不记得在哪里)故意添加了克服旧内核问题的方法。

答案1

我真傻,如果我知道去哪里找的话,答案就在 Debian 论坛上。正如你所猜测的,Guardian,这与 initrd 有关。问题是,DVD 映像 initrd 包含的模块比网络启动的模块多。这里相关的是 SATA 驱动程序。所以我遵循了第9篇文章中的建议线程,它就像一个魅力。

我在这里完整引用解决方案,以防链接失效:

我试图得到这个精确的设置,我一直在抓狂,结果发现解决方案非常简单:

网络启动映像的 initrd 不包含任何 ide 或 sata 驱动程序,它们应该在常规安装期间检索,我不确定它们是否不存在于 DVD 上,或者安装程序没有检测到或期望它们如果您使用的是 DVD 镜像(或任何安装 CD)。不过,有一个解决方案,那就是使用现有的驱动程序制作您自己的 initrd.gz。

我在这里改编自

http://wiki.openvz.org/Modifying_initrd_image

http://ubuntuforums.org/archive/index.php/t-423963.html

首先我得到了网络启动的 initrd.gz 和网络启动安装 CD,但我认为 DVD initrd.gz 应该没问题:

mkdir netboot-initrd-dir mkdir cd-initrd-dirgunzip netboot-initrdgunzip cd-initrd cd netboot-initrd-dir cpio -i < ../netboot-initrd cd ../cd-initrd-dir cpio -i < . ./cd-initrd

现在您将有两个目录,其中包含两个 inird.gz 文件的内容,您可以通过以下方式查看每个目录中的驱动程序文件:

查找 ./netboot-initrd-dir -iname *.ko 查找 ./cd-initrd-dir -iname *.ko

您应该注意到 CD 上还有很多内容,特别是 ide 和 sata 驱动程序。你可能可以更精确地理解这一点,因为你需要有一个较小的图像,但我设法逃脱了:

cp -nr cd-initrd-dir/lib/modules/2.6.32-5-486/kernel/* netboot-initrd->dir/lib/modules/2.6.32-5-486/kernel/

现在你只需要把它放回原处:

cd netboot-initrd-dir 查找 . | cpio -H newc -o > ../new-netboot-initrd cd ../ gzip ./new-netboot-initrd

现在您应该能够获取该文件并将其粘贴到 initrd.gz 或类似文件下的 tftp 目录中,它现在将检测您的磁盘!

希望对您有所帮助。

梅尼姆

答案2

您能否直接链接您设置 PXE 时遵循的操作方法?提到的错误似乎是一个过时的内核,但我需要更多详细信息来帮助。

更新:

来自如何由您在最后一步中提供(提供启动镜像),使用 Debian 镜像的直接链接(例如稳定发布)下载最新内核(Linux的)和初始化内存盘(初始化文件gz)。

相关内容