由于超出我理解水平的原因,我似乎无法通过 pxe 启动 fedora 25 的救援实例。经过无数次尝试使用工作站版本后,我恢复到服务器 DVD,因为最后,我唯一需要的就是启动 pxe fedora 来在我的本地磁盘分区上工作。唉,运气不好。
目前正在寻找附加行中不同关键字的确切含义。 (pxe,grub,...)希望找到正确的魔法公式,但我的 googlefu 似乎也让我失望。
与其他发行版没有问题,但我想了解为什么 Fedora 如此痛苦。
即:在 centos7 pxe (nfs) 上启动救援非常简单:
LABEL c7r
kernel centos/7/vmlinuz
append initrd=centos/7/initrd.img method=nfs:192.168.16.252:/pxedev/centos/7 rescue
Fedora 25 上的一些尝试:
LABEL f25r
kernel fedora/25s/vmlinuz
append initrd=fedora/25s/initrd.img ip=dhcp root=nfs:192.168.16.252:/pxedev/fedora25s/ rescue
从 PXE (nfs) 安装并不困难:
LABEL f25ws
kernel fedora/25/vmlinuz
append initrd=fedora/25/initrd.img ip=dhcp inst.stage2=nfs:192.168.16.252:/pxedev/fedora25/
所以我缺少 Fedora 25 的 pxe 救援所需的信息。对于服务器版本,我下载了 DVD:“Fedora-Server-dvd-x86_64-25-1.3.iso”,然后将其完全提取到文件夹中并获取“images/pxeboot”目录中的内核和 initramfs。
答案1
TL;DR 是您忘记为其提供救援映像的 inst.stage2 参数。 initrd 和内核是不是足以将 Fedora 引导到救援模式,它需要 Anaconda 的第二阶段加载器。把你的root=nfs
东西换成inst.stage2=nfs:192.168.16.252:/pxedev/fedora25/
,你就应该去参加比赛了。
更长的答案:
PXE 启动有点困难,因为它需要很多活动部件:
- 能够分发下一个服务器参数的 DHCP 服务器。
- 正常工作的 TFTP 服务器
- 内核映像和初始 ramdisk 的副本
- 提供已安装 ISO 映像内容的功能性 HTTP 服务器(可以使用 NFS 作为替代方案)
接下来是我如何让它发挥作用。
软件安装
dnf -y install dhcp-server tftp-server httpd syslinux-tftpboot
ISC DHCPd 部分
注:与其他 DHCP 服务器的 YMMV。
该next-server
参数是您的 TFTP 服务器的 IP。
Subnet 192.168.0.0 netmask 255.255.255.0 {
range 192.168.0.100 192.168.0.200;
option routers 192.168.0.1;
class "pxeclients" {
match if substring (option vendor-class-identifier, 0, 9) = "PXEClient";
next-server 192.168.0.2;
filename "pxelinux.0";
}
}
TFTPd部分
Fedora 将 TFTP 根目录放在 中/var/lib/tftpboot
,您需要在其中创建几个目录来包含启动映像和 pxe 配置。
我通常将我的子目录设置为如下所示:
$OSVER/$ARCH
这样我就可以在任何给定时间启动多个版本的 Fedora PXE。
然后,像您一样,我将ISO 映像目录中的initrd
和vmlinuz
文件复制images/pxelinux
到 tftpboot 的相应子目录中。
接下来,在 tftpboot 目录中创建一个名为pxelinux.cfg
.在此目录中,您将创建名为default
.在此文件中,您将生成类似于以下内容的条目:
default vesamenu.c32
prompt 0
timeout 100
label local
menu label Boot from ^local drive
localboot 0xffff
label f25_x86_64
menu label Fedora 25 x86_64 (Generic)
kernel f25/x86_64/vmlinuz
append initrd=f25/x86_64/initrd.img repo=http://192.168.0.2/os/fedora/25/x86_64/ ks=http://192.168.0.2/ks/f25-x86_64-ks.cfg
label f25_rescue
menu label Fedora 25 ^Rescue Mode
kernel f25/x86_64/vmlinuz
append initrd=f25/x86_64/initrd.img inst.stage2=http://192.168.0.2/os/fedora/25/x86_64 rescue
第 2 阶段映像足够大,通过 PXE 传送它们有时会出现问题,因此我通过 HTTP 传送它们。
接下来,您需要将所有*.c32
文件从/tftpboot/
移至/var/lib/tftpboot
,因为 syslinux-tftpboot 由于某种原因不知道 tftp-server 的不同根目录。
HTTPD部分
通过 HTTPD 获取可用的 ISO 映像:
最简单的方法是mkdir /var/www/html/os/fedora/$FEDORAVERSION/$ARCH
然后mount -o loop,uid=48,gid=48,mode=0755 /path/to/fedora-server.iso /var/www/html/os/fedora/$FEDORAVERSION/$ARCH
一旦所有守护进程都配置并启用,繁荣,它就可以工作了。
如果你想启动 Fedora 27,你基本上可以sed -r -e s/25/27/g
使用上述所有配置,并且它会起作用。