Documentation for a newer release is available. View Latest

搭建安装服务器

此附录为之前有过Linux经验的人而准备。如果你是一个新用户,那么你也许想要使用最小启动媒体或者发行版DVD,而不是这个来进行安装。

PXE安装概览

预先启动安装环境或PXE,是一种允许电脑直接从网络上的资源来启动的技术。通过网络安装Fedora意味着你不需要创建媒体,并且你可以同时将操作系统安装到多台电脑或虚拟机上。这个过程包含了大量的组件和特性共同提供需要的资源。

PXE兼容的电脑

大多数现代的电脑拥有网络启动的能力。典型的做法是在启动时按下一个功能键即可进入一个启动选择菜单。在非人工值守的环境中,系统通常被配置为首次尝试从网络启动,然后才从本地存储中启动,然后安装服务器就被配置为只在安装时才被需要。你的电脑的手册将提供在设置启动顺序上的、专业的信息。

DHCP服务器

当一个操作系统在网络启动时需要一个地址时,DHCP服务器也将提供用于启动的文件的地址。一个网络需要有且仅有一个DHCP服务器。

TFTP服务器

由于预启动环境非常简单,所以文件必须以一种非常简单的方式被提供。普通文件传输协议,或TFTP,将系统提供给要求继续安装过程的bootloader。

Bootloader

由于启动一个操作系统的工作对于预启动环境而言太过于复杂,所以需要一个bootloader来加载内核和相关的文件。它还为安装器提供配置信息,还能提供一个用于选择不同配置的菜单。

内核和Initramfs

内核是任意Linux操作系统的核心,然后initramfs为内核提供需要的工具和资源。这些文件也被TFTP所提供。

软件源

一个Fedora软件源必须在安装过程中可用。本小节中的例子使用了Fedora官方软件源作为软件源,但你还可以用本地的、NFS、FTP或HTTP提供的软件源。软件源可以用[option]#inst.repo=#启动选项所配置,详见指定安装资源

DHCP服务器配置

安装并配置dhcpd
  1. 安装dhcp服务器软件包。

    # dnf install dhcp
  2. 为dhcp服务器在`/etc/dhcp/dhcpd.conf`创建一个简单地配置

    subnet 192.168.1.0 netmask 255.255.255.0 {
    authoritative;
    default-lease-time 600;
    max-lease-time 7200;
    ddns-update-style none;
    
    option domain-name-servers 192.168.1.1;
    option routers 192.168.1.1;
    
    }
  3. 测试你的配置并且标出你发现的问题的位置。

    systemctl start dhcpd
    journalctl --unit dhcpd --since -2m --follow
  4. 向点客户端的bootloader 中增加在`/etc/dhcp/dhcpd.conf`中的、提供的你的子网的地址。因为DHCP客户端提供服务器身份验证信息和地址请求,BIOS客户端和UEFI客户端均可被连接到正确的bootloader上。

    # 查阅 RFC4758 以获取可能的选项和值
    option arch code 93 = unsigned integer 16;
    
    subnet 192.168.1.0 netmask 255.255.255.0 {
    if option arch = 00:07 {
    filename "uefi/shim.efi";
    } else {
    filename "pxelinux.0";
    }
    
    next-server 192.168.1.2;
    
    ...
  5. 重启dhcp服务来检查配置,并且如果需要的话就更改配置。

    systemctl restart dhcpd
    journalctl --unit dhcpd --since -2m --follow

安装tftp服务器

安装tftp服务器
  1. 安装tftp服务器软件包。

    # dnf install tftp-server
  2. 开始并启用`tftp socket`。当需要时,`systemd`将自动启动`tftpd`服务。

    # systemctl start tftp.socket
    # systemctl enable tftp.socket

提供并配置用于PXE服务器的bootloader

获取bootloader文件
  1. 为BIOS客户端获取[package]syslinux bootloader。

    1. 安装[package]*syslinux*软件包。

      # dnf install syslinux
    2. 为bootloader 文件创建一个目录,并且令其中的文件可用。

      # mkdir -p /var/lib/tftpboot/pxelinux.cfg
      # cp /usr/share/syslinux/{pxelinux.0,vesamenu.c32,ldlinux.c32,libcom32.c32,libutil.c32} /var/lib/tftpboot/
  2. 获取UEFI系统的bootloader文件

    1. 安装[package]shim*和[package]*grub2-efi*软件包。如果你的服务器是一个BIOS的系统,那么你*必须安装软件包到一个临时的根目录下。 在BIOS之下直接安装它们将尝试配置UEFI启动然后出现问题。

      # dnf install shim grub2-efi --installroot=/tmp/fedora --releasever 27
    2. 为bootloader 文件创建一个目录,并且令其中的文件可用。

      # mkdir -p /var/lib/tftpboot/uefi
      # cp /tmp/fedora/boot/efi/EFI/fedora/{shim.efi,grubx64.efi} /var/lib/tftpboot/uefi/
配置客户端bootloader
  1. 在`/var/lib/tftpboot/pxelinux.cfg/default`之下创建一个为BIOS准备的启动菜单。

    default vesamenu.c32
    prompt 1
    timeout 600
    
    label linux
    menu label ^Install Fedora 27 64-bit
    menu default
    kernel f27/vmlinuz
    append initrd=f27/initrd.img inst.stage2=http://download.fedoraproject.org/pub/fedora/linux/releases/27/Server/x86_64/os/ ip=dhcp
    
    label server
    menu label ^Install Fedora 27 ( Minimal Image )
    menu default
    kernel f27/vmlinuz
    append initrd=f27/initrd.img inst.stage2=http://download.fedoraproject.org/pub/fedora/linux/releases/27/Server/x86_64/os/ ip=dhcp ks=https://example.com/fedora/kickstarts/minimal.ks
    
    label rescue
    menu label ^Rescue installed system
    kernel f27/vmlinuz
    append initrd=f27initrd.img ip=dhcp root=live:http://download.fedoraproject.org/pub/fedora/linux/releases/27/Server/x86_64/os/LiveOS/squashfs.img rescue
    
    label local
    menu label Boot from ^local drive
    localboot 0xffff
  2. 在`/var/lib/tftpboot/pxelinux/uefi`之下创建一个为UEFI准备的启动菜单。

    function load_video {
    	insmod efi_gop
    	insmod efi_uga
    	insmod video_bochs
    	insmod video_cirrus
    	insmod all_video
    }
    
    load_video
    set gfxpayload=keep
    insmod gzio
    
    menuentry 'Install Fedora 64-bit'  --class fedora --class gnu-linux --class gnu --class os {
    	linuxefi f27/vmlinuz ip=dhcp inst.repo=http://download.fedoraproject.org/pub/fedora/linux/releases/27/Server/x86_64/os/
    	initrdefi f27/initrd.img
    }
    
    menuentry 'Install Fedora 27 Server'  --class fedora --class gnu-linux --class gnu --class os {
    	kernel f27/vmlinuz
    	append initrd=f27/initrd.img inst.repo=http://download.fedoraproject.org/pub/fedora/linux/releases/27/Server/x86_64/os/ ip=dhcp ks=https://git.fedorahosted.org/cgit/spin-kickstarts.git/plain/fedora-install-server.ks?h=f21
    }
    
    menuentry 'Rescue installed system'  --class fedora --class gnu-linux --class gnu --class os {
    	kernel f27/vmlinuz
    	append f27/initrd=initrd.img root=live:http://download.fedoraproject.org/pub/fedora/linux/releases/27/Server/x86_64/os/LiveOS/squashfs.img rescue
    }

获取内核和initrd

下载内核和initrd
  1. 创建一个文件的目录。

    # mkdir -p /var/lib/tftpboot/f27
  2. 下载内核。

    # wget http://download.fedoraproject.org/pub/fedora/linux/releases/27/Server/x86_64/os/images/pxeboot/vmlinuz -O /var/lib/tftpboot/f27/vmlinuz
  3. 下载initrd

    # wget http://download.fedoraproject.org/pub/fedora/linux/releases/27/Server/x86_64/os/images/pxeboot/initrd.img -O /var/lib/tftpboot/f27/initrd.img

提供软件源

本小节中的例子使用Fedora镜像作为软件源。为了更快的安装或安装大量系统,或更多的隔离环境,那么你也许想要维护一个本地软件源。

Fedora设备的配置维护的方法详见https://fedoraproject.org/wiki/Infrastructure/Mirroring。推荐的方法是通过HTTP来提供软件源,详见[citetitle]Fedora 系统管理员指南, 配置`httpd`详见http://docs.fedoraproject.org/

使用Cobbler进行增强的网络安装

对于更为复杂的环境而言,Fedora提供了[package]*cobbler*安装服务器。任务类似于Kickstart配置、联系配置、管理dns记录、dhcp服务器甚至是puppet元数据也会被[package]*cobbler*所自动化地、高效地处理。

使用cobbler传送所有特性可以非常简单,此工具的全部的功能点太宽泛而不能在此文档中列出。Cobbler社区在https://cobbler.github.io/提供了文档,并伴随Fedora软件源分发。

另外,比也许对Foreman感兴趣。你可以在https://www.theforeman.org/项目网页上找到官方文档并下载。