预置的 debian netinstall 无法通过 http 获取预置文件

预置的 debian netinstall 无法通过 http 获取预置文件

我正在尝试使用预置功能对 debian 6 进行预配置的网络安装。我已经设置了一个 tftp 服务器,它为内核和 initrd 提供服务,但是指定预置文件的参数似乎不起作用。这是我的 pxelinux.cfg 的一部分:

LABEL mydebian6_amd64_install
    menu label ^Install Debian 6 amd64
    kernel install/mydebian/linux
    append vga=normal  initrd=install/mydebian/initrd.gz auto=true url=http://10.0.3.20/preseeds/debian6-preseed.cfg  --

kernel 和 initrd.gz 已加载,但 debian6-preseed.cfg 从未从我的网络服务器中拉出。上面给出的 URL 是有效的,我可以使用同一网络内的 wget 将其拉出,并且请求显示在 apache 日志中。但是,网络启动因有关默认路由的问题而停止,并且 apache 日志未显示已获取预置文件的痕迹。

网络配置似乎没问题,使用 dhcp 的自动配置成功。然后安装程序询问我是否要继续使用默认路由。我希望能够在预置文件中配置它,但由于我还没有做到那一步,所以它不起作用 :/。现在我尝试添加

netcfg/get_gateway=10.0.3.20

到附加行,但这没有帮助。

tftp、dhcp 和 apache 都在同一台服务器上运行,即 ubuntu 12.04 服务器。所有内容都在 virtualbox 虚拟网络中。

有什么提示吗?

答案1

在尝试检索预置配置文件之前,您的网络似乎尚未启动。尝试添加以下命令:

priority=critical interface=auto netcfg/dhcp_timeout=120 console-setup/layoutcode=us
  • 该命令interface=auto将自动使用它找到的第一个以太网。

  • 该命令netcfg/dhcp_timeout=120将允许 dhcp 客户端尝试查找 ip 地址等,时间比默认时间更长,因为默认时间通常不够长。

  • priority=critical我使用这些命令console-setup/layoutcode=us来防止安装过程要求任何用户输入。

虽然这似乎不适用于您的情况,但网络无法出现的另一个原因是所需的以太网驱动程序是非免费存储库的一部分,在安装时未启用。在这种情况下,尝试使用 USB 以太网接口(例如,仅在安装过程中使用)。然后启用非免费存储库并安装以太网卡所需的固件包。

答案2

呵呵。我遇到了类似的问题。我的解决方法是使用 ftp。据我现在所知,只需输入 preseed/url 而不是 url: 预置/url=http://10.0.3.20/preseeds/debian6-preseed.cfg

答案3

dhcp 配置中的规范filename将覆盖引导字符串中指定的预置配置文件。

如果您使用filename指定 pxeboot 配置文件,debian 安装程序将尝试将该文件作为预置配置文件加载。

Debian preseed 附录 B.2 第 B.2.6 节 了解详情

使用 isc-dhcp-server 时,链接中给出的示例可以反转为

if substring (option vendor-class-identifier, 0, 3) != "d-i" {
    filename "http://host/preseed.cfg";
}

以防止安装程序使用文件名选项。

答案4

事实证明我的 dhcp 配置不完整...在我添加之后

option routers 10.0.3.20;

预置文件已被提取到我的 /etc/dhcp/dhcpd.conf 中。

相关内容