我尝试使用 Cobbler 安装 SLES 11 SP3,但下载 NBP 文件后失败。屏幕上的错误是“无法获取 TFTP 映像”。
我有一个类似的 SLES 11 SP2 设置,它运行良好。此设置的不同之处在于,我在 IBM x3500 M5 服务器上安装 SLES 11 SP3,这需要在安装操作系统本身之前安装可启动驱动程序套件 (BDK)。
我的设置如下:
/var/lib/tftpboot> tree uefisp3
uefisp3
├── biostest
├── bootx64.efi
├── elilo.conf
├── initrd
├── linux
├── memtest
├── message
└── pxelinux.0
initrd 和 linux 不是来自 SLES DVD,而是来自 BDK 映像。
引自https://drivers.suse.com/doc/Usage/Driver_Kits.html:将驱动程序套件 iso 映像中的内核和 initrd 映像复制到 tftp 启动服务器上的相应位置。initrd 和内核映像位于 /boot/x86_64/loader 目录下。
我曾尝试通过将文件名指向 uefisp3/bootx64.efi、pxelinux.0 和 uefisp3/pxelinux.0 来更改 /etc/cobbler/dhcp.template,但它们都不起作用。
我的 cobbler 发行版报告:
Name : sles11sp3
Architecture : x86_64
Breed : suse
Comment :
Initrd : /driverkit/boot/x86_64/loader/initrd
Kernel : /driverkit/boot/x86_64/loader/linux
Kernel Options : {'install': 'http://192.168.0.10/sles/sles11sp3', 'addon': 'http://192.168.0.10/sles/driverkit'}
Kernel Options (Post Install) : {}
Kickstart Metadata : {}
Management Classes : []
OS Version : sles10
Owners : ['admin']
Red Hat Management Key : <<inherit>>
Red Hat Management Server : <<inherit>>
Template Files : {}
我的 elilo.conf(说实话我甚至不确定我是否需要这个文件,但这是我使用 SLES 11 SP2 的方法):
/var/lib/tftpboot> cat uefisp3/elilo.conf
prompt
timeout=100
default=linux
image=linux
label=linux
description = "Installation"
initrd=initrd
append="/images/sles11sp3/initrd textmode=1 install=http://192.168.0.10/sles/sles11sp3 autoyast=http://192.168.0.10/cblr/svc/op/ks/profile/raid1drbd_sp3i addon=http://192.168.0.10/sles/driverkit"
摘自 pxelinux.cfg/default 文件:
LABEL raid1drbd_sp3
kernel /images/sles11sp3/linux
MENU LABEL raid1drbd_sp3
append initrd=/images/sles11sp3/initrd textmode=1 install=http://192.168.0.10/sles/sles11sp3 addon=http://192.168.0.10/sles/driverkit autoyast=http://192.168.0.10/cblr/svc/op/ks/profile/raid1drbd_sp3
ipappend 2
TFTP 服务器可以工作,因为我尝试手动从 TFTP 服务器获取一些文件。/var/log/messages 中有一个错误“tftp:客户端不接受选项”,从我读到的内容来看,这很可能与我现在面临的问题无关。
有人使用驱动程序套件成功安装了 SLES 11 SP3 吗?
更新:
在 PXE 启动尝试期间捕获以下内容:
SLES 11 SP3 上的 PXE 启动
2015-05-21 16:30:52.830169 IP 192.168.0.50.fj-hdnet > spacewalk.tftp: 49 RRQ "uefisp3/bootx64.efi" octet tsize 0 blksize 1468
2015-05-21 16:30:52.839093 IP 192.168.0.50.h323gatedisc > spacewalk.tftp: 41 RRQ "uefisp3/bootx64.efi" octet blksize 1468
2015-05-21 16:30:53.360209 IP 192.168.0.50.h323gatestat > spacewalk.tftp: 41 RRQ "uefisp3/bootx64.efi" octet blksize 1468
2015-05-21 16:30:53.872046 IP 192.168.0.50.h323hostcall > spacewalk.tftp: 30 RRQ "/grub.efi" octet blksize 512
2015-05-21 16:30:53.875762 IP 192.168.0.50.caicci > spacewalk.tftp: 30 RRQ "/grub.efi" octet blksize 512
时间不多了,明天再做进一步测试。谢谢你的想法。太棒了!
第二次更新:
目前 PXE 和自动安装一样好用。但是由于 elilo.conf 错误,服务器无法启动。安装时我不在场,所以不知道哪里出了问题。没有机会再进行一轮安装。
谢谢。
答案1
抱歉回复迟了,这就是我让它工作的方法。
1 - 将 SLES 11 SP3 挂载到 /sles11sp3
2 - 将可启动驱动程序套件挂载到 /bdk
3 – 将 grub.efi 文件复制到 /var/lib/tftpboot/ 目录。
# cp /bdk/EFI/BOOT/grub.efi /var/lib/tftpboot/
4 - 将 bootx64.efi、kernel 和 initrd 以及 grub.cfg 复制到 /var/lib/tftpboot/uefisp3/ 目录中。
# cp /bdk/EFI/BOOT/bootx6.efi /var/lib/tftpboot/uefisp3/
# cp /bdk/boot/x86_64/loader/linux /var/lib/tftpboot/uefisp3/
# cp /bdk/boot/x86_64/loader/initrd /var/lib/tftpboot/uefisp3/
# cp /sles11sp3/EFI/BOOT/grub.cfg /var/lib/tftpboot/uefisp3/
除了 initrd 文件外,所有文件都可以从 SLES DVD 或驱动程序工具包中复制。initrd 文件必须从驱动程序工具包中复制。
5 - 修改 grub.cfg 文件。对我来说唯一重要的菜单项是安装,所以我删除了其余的菜单项。
menuentry 'Auto Installation' {
set gfxpayload=keep
echo 'Loading kernel ...'
linuxefi /images/sles11sp3/linux splash=silent textmode=1 showopts install=http://192.168.0.10/sles/sles11sp3 autoyast=http://192.168.0.10/sles/autoyast/sles11sp3towerbdk.ks
echo 'Loading initial ramdisk ...'
initrdefi /images/sles11sp3/initrd
}
6 – 在 autoyast 文件中添加以下内容:
<add-on>
<add_on_products config:type="list">
<listentry>
<media_url><![CDATA[http://192.168.0.10:80/sles/bdk]]></media_url>
<product>driver-kit</product>
<product_dir>/</product_dir>
</listentry>
</add_on_products>
</add-on>
7 – 在 dhcpd.conf 文件中添加 uefisp3 组。
group {
filename "uefisp3/bootx64.efi";
next-server 192.168.0.10;
host test { hardware ethernet 40:F2:H9:A6:49:C7; fixed-address 192.168.0.50; option host-name test; }
}
8——重新启动 dhcp 和 tftp 服务。
@Pat 感谢 tcpdump 的想法,它促成了一些发现。