搭建安装服务器
此附录为之前有过Linux经验的人而准备。如果你是一个新用户,那么你也许想要使用最小启动媒体或者发行版DVD,而不是这个来进行安装。 |
PXE安装概览
预先启动安装环境或PXE,是一种允许电脑直接从网络上的资源来启动的技术。通过网络安装Fedora意味着你不需要创建媒体,并且你可以同时将操作系统安装到多台电脑或虚拟机上。这个过程包含了大量的组件和特性共同提供需要的资源。
大多数现代的电脑拥有网络启动的能力。典型的做法是在启动时按下一个功能键即可进入一个启动选择菜单。在非人工值守的环境中,系统通常被配置为首次尝试从网络启动,然后才从本地存储中启动,然后安装服务器就被配置为只在安装时才被需要。你的电脑的手册将提供在设置启动顺序上的、专业的信息。
当一个操作系统在网络启动时需要一个地址时,DHCP服务器也将提供用于启动的文件的地址。一个网络需要有且仅有一个DHCP服务器。
由于预启动环境非常简单,所以文件必须以一种非常简单的方式被提供。普通文件传输协议,或TFTP,将系统提供给要求继续安装过程的bootloader。
由于启动一个操作系统的工作对于预启动环境而言太过于复杂,所以需要一个bootloader来加载内核和相关的文件。它还为安装器提供配置信息,还能提供一个用于选择不同配置的菜单。
内核是任意Linux操作系统的核心,然后initramfs为内核提供需要的工具和资源。这些文件也被TFTP所提供。
A Fedora repository must be available for the installation. The example in this section uses the public Fedora mirrors as the repository source, but you can also use a repo on the local network provided by NFS, FTP, or HTTP. Repositories can be configured using the inst.repo= boot option; see Specifying the Installation Source for details.
DHCP服务器配置
-
安装dhcp服务器软件包。
# dnf install dhcp
-
为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; }
-
测试你的配置并且标出你发现的问题的位置。
systemctl start dhcpd journalctl --unit dhcpd --since -2m --follow
-
向点客户端的bootloader 中增加在`/etc/dhcp/dhcpd.conf`中的、提供的你的子网的地址。因为DHCP客户端提供服务器身份验证信息和地址请求,BIOS客户端和UEFI客户端均可被连接到正确的bootloader上。
# refer to RFC4578 for possible arch option values 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; ...
-
重启dhcp服务来检查配置,并且如果需要的话就更改配置。
systemctl restart dhcpd journalctl --unit dhcpd --since -2m --follow
安装tftp服务器
-
安装tftp服务器软件包。
# dnf install tftp-server
-
开始并启用`tftp socket`。当需要时,`systemd`将自动启动`tftpd`服务。
# systemctl start tftp.socket # systemctl enable tftp.socket
提供并配置用于PXE服务器的bootloader
-
为BIOS客户端获取[package]syslinux bootloader。
-
安装[package]*syslinux*软件包。
# dnf install syslinux
-
为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/
-
-
获取UEFI系统的bootloader文件
-
安装[package]shim*和[package]*grub2-efi*软件包。如果你的服务器是一个BIOS的系统,那么你*必须安装软件包到一个临时的根目录下。 在BIOS之下直接安装它们将尝试配置UEFI启动然后出现问题。
# dnf install shim grub2-efi-x64 --installroot=/tmp/fedora --releasever 31
-
为bootloader 文件创建一个目录,并且令其中的文件可用。
# mkdir -p
/var/lib/tftpboot/uefi
# cp/tmp/fedora/boot/efi/EFI/fedora/{shim.efi,grubx64.efi}
/var/lib/tftpboot/uefi/
-
-
在`/var/lib/tftpboot/pxelinux.cfg/default`之下创建一个为BIOS准备的启动菜单。
default vesamenu.c32 prompt 1 timeout 600 label linux menu label ^Install Fedora 31 64-bit menu default kernel f31/vmlinuz append initrd=f31/initrd.img inst.stage2=https://download.fedoraproject.org/pub/fedora/linux/releases/31/Server/x86_64/os/ ip=dhcp label server menu label ^Install Fedora 31 ( Minimal Image ) menu default kernel f31/vmlinuz append initrd=f31/initrd.img inst.stage2=https://download.fedoraproject.org/pub/fedora/linux/releases/31/Server/x86_64/os/ ip=dhcp ks=https://example.com/fedora/kickstarts/minimal.ks label local menu label Boot from ^local drive localboot 0xffff
-
在`/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 f31/vmlinuz ip=dhcp inst.repo=https://download.fedoraproject.org/pub/fedora/linux/releases/31/Server/x86_64/os/ initrdefi f31/initrd.img } menuentry 'Install Fedora 31 Server' --class fedora --class gnu-linux --class gnu --class os { kernel f31/vmlinuz append initrd=f31/initrd.img inst.repo=https://download.fedoraproject.org/pub/fedora/linux/releases/31/Server/x86_64/os/ ip=dhcp ks=https://git.fedorahosted.org/cgit/spin-kickstarts.git/plain/fedora-install-server.ks?h=f21 }
获取内核和initrd
-
创建一个文件的目录。
# mkdir -p
/var/lib/tftpboot/f31
-
下载内核。
# wget https://download.fedoraproject.org/pub/fedora/linux/releases/31/Server/x86_64/os/images/pxeboot/vmlinuz -O /var/lib/tftpboot/f31/vmlinuz
-
下载initrd
# wget https://download.fedoraproject.org/pub/fedora/linux/releases/31/Server/x86_64/os/images/pxeboot/initrd.img -O /var/lib/tftpboot/f31/initrd.img
提供软件源
本小节中的例子使用Fedora镜像作为软件源。为了更快的安装或安装大量系统,或更多的隔离环境,那么你也许想要维护一个本地软件源。
Fedora Infrastructure maintains instructions for a configuring a local mirror at https://fedoraproject.org/wiki/Infrastructure/Mirroring. The preferred method for providing repositories is via HTTP, and you can refer to the Fedora System Administrator’s Guide, available at https://docs.fedoraproject.org/, to configure httpd
.
使用Cobbler进行增强的网络安装
For more complex environments, Fedora offers the cobbler installation server. Tasks like managing kickstart configurations, coordinating repositories, maintaining dns records, dhcp servers, and even puppet manifests are effectively automated by cobbler.
使用cobbler传送所有特性可以非常简单,此工具的全部的功能点太宽泛而不能在此文档中列出。Cobbler社区在https://cobbler.github.io/提供了文档,并伴随Fedora软件源分发。
另外,比也许对Foreman感兴趣。你可以在https://www.theforeman.org/项目网页上找到官方文档并下载。
Want to help? Learn how to contribute to Fedora Docs ›