如何 pxe 启动 Fedora 25 救援

如何 pxe 启动 Fedora 25 救援

由于超出我理解水平的原因,我似乎无法通过 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 启动有点困难,因为它需要很多活动部件:

  1. 能够分发下一个服务器参数的 DHCP 服务器。
  2. 正常工作的 TFTP 服务器
  3. 内核映像和初始 ramdisk 的副本
  4. 提供已安装 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 映像目录中的initrdvmlinuz文件复制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使用上述所有配置,并且它会起作用。

相关内容