我正在尝试通过 PXE 自动安装 Ubuntu Server 14.04LTS。我已经设置了一个托管 DHCP、TFTP 和 HTTP 的服务器。我已经设置了一个带有 PXE 启动文件名的 DHCP 范围。我已将 Ubuntu Server CD 复制到 Web 服务器。我编写了一个 kickstart 文件并将其上传到 Web 服务器。所有这些都是按照以下说明完成的:https://help.ubuntu.com/community/PXEInstallServer。
当客户端启动时,它会收到 DHCP 请求,并进行 PXE 启动。我拥有的自定义菜单项/var/lib/tftpboot/pxelinux.cfg/default
会显示出来,我可以从菜单中选择此项。
但是,一旦选择了启动菜单选项,客户端就永远不会请求 kickstart 文件,并且客户端最终会因“无法在未知块上挂载根文件系统”错误而陷入混乱。
我的 pxelinux.cfg/default 如下所示:
# D-I config version 2.0
include ubuntu-installer/amd64/boot-screens/menu.cfg
default ubuntu-installer/amd64/boot-screens/vesamenu.c32
prompt 0
timeout 10
LABEL CustomServerInstall
MENU LABEL Automated Trusty Install
KERNEL ubuntu-installer/amd64/linux
append ks=http://10.1.1.1/ks_ubuntuserver.cfg console=tty0 console=ttyS0 ignore_loglevel
当我从菜单中选择“自动信任安装”时,我在启动文本中看到以下内容:
[ 3121.134818] Kernel command line: ks=http://10.1.1.1/ks_ubuntuserver.cfg console=tty0 console=ttyS0 ignore_loglevel BOOT_IMAGE=ubuntu-installer/amd64/linux
所以我知道我的 kickstart 文件路径已提供给内核。但是,ks_ubuntuserver.cfg
根据/var/log/apache2/access.log
curl http://10.1.1.1/ks_ubuntuserver.cfg
当我从同一子网上的另一台机器进入时,我确实得到了我编写的 kickstart 文件。
所以... kickstart 文件在 Web 服务器上,但内核从未请求它。有人能帮我找出我做错的地方吗?
答案1
您没有指定initrd
。引导加载程序会加载内核和initrd
。 包含initrd
内核用于启动的文件,包括init
,因为您没有启动到真正的安装。如果没有它,内核可能很快就会崩溃。