搭建安装服务器
此附录为之前有过Linux经验的人而准备。如果你是一个新用户,那么你也许想要使用最小启动媒体或者发行版DVD,而不是这个来进行安装。 |
PXE安装概览
预先启动安装环境或PXE,是一种允许电脑直接从网络上的资源来启动的技术。通过网络安装Fedora意味着你不需要创建媒体,并且你可以同时将操作系统安装到多台电脑或虚拟机上。这个过程包含了大量的组件和特性共同提供需要的资源。
大多数现代的电脑拥有网络启动的能力。典型的做法是在启动时按下一个功能键即可进入一个启动选择菜单。在非人工值守的环境中,系统通常被配置为首次尝试从网络启动,然后才从本地存储中启动,然后安装服务器就被配置为只在安装时才被需要。你的电脑的手册将提供在设置启动顺序上的、专业的信息。
当一个操作系统在网络启动时需要一个地址时,DHCP服务器也将提供用于启动的文件的地址。一个网络需要有且仅有一个DHCP服务器。
由于预启动环境非常简单,所以文件必须以一种非常简单的方式被提供。普通文件传输协议,或TFTP,将系统提供给要求继续安装过程的bootloader。
由于启动一个操作系统的工作对于预启动环境而言太过于复杂,所以需要一个bootloader来加载内核和相关的文件。它还为安装器提供配置信息,还能提供一个用于选择不同配置的菜单。
内核是任意Linux操作系统的核心,然后initramfs为内核提供需要的工具和资源。这些文件也被TFTP所提供。
一个Fedora软件源必须在安装过程中可用。本小节中的例子使用了Fedora官方软件源作为软件源,但你还可以用本地的、NFS、FTP或HTTP提供的软件源。软件源可以用[option]#inst.repo=#启动选项所配置,详见指定安装资源。
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上。
# 查阅 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; ...
-
重启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 --installroot=/tmp/fedora --releasever 26
-
为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 26 64-bit menu default kernel f26/vmlinuz append initrd=f26/initrd.img inst.stage2=http://download.fedoraproject.org/pub/fedora/linux/releases/26/Server/x86_64/os/ ip=dhcp label server menu label ^Install Fedora 26 ( Minimal Image ) menu default kernel f26/vmlinuz append initrd=f26/initrd.img inst.stage2=http://download.fedoraproject.org/pub/fedora/linux/releases/26/Server/x86_64/os/ ip=dhcp ks=https://example.com/fedora/kickstarts/minimal.ks label rescue menu label ^Rescue installed system kernel f26/vmlinuz append initrd=f26initrd.img ip=dhcp root=live:http://download.fedoraproject.org/pub/fedora/linux/releases/26/Server/x86_64/os/LiveOS/squashfs.img rescue 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 f26/vmlinuz ip=dhcp inst.repo=http://download.fedoraproject.org/pub/fedora/linux/releases/26/Server/x86_64/os/ initrdefi f26/initrd.img } menuentry 'Install Fedora 26 Server' --class fedora --class gnu-linux --class gnu --class os { kernel f26/vmlinuz append initrd=f26/initrd.img inst.repo=http://download.fedoraproject.org/pub/fedora/linux/releases/26/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 f26/vmlinuz append f26/initrd=initrd.img root=live:http://download.fedoraproject.org/pub/fedora/linux/releases/26/Server/x86_64/os/LiveOS/squashfs.img rescue }
获取内核和initrd
-
创建一个文件的目录。
# mkdir -p
/var/lib/tftpboot/f26
-
下载内核。
# wget http://download.fedoraproject.org/pub/fedora/linux/releases/26/Server/x86_64/os/images/pxeboot/vmlinuz -O /var/lib/tftpboot/f26/vmlinuz
-
下载initrd
# wget http://download.fedoraproject.org/pub/fedora/linux/releases/26/Server/x86_64/os/images/pxeboot/initrd.img -O /var/lib/tftpboot/f26/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/项目网页上找到官方文档并下载。
Want to help? Learn how to contribute to Fedora Docs ›