PXEブートを使用してネットワーク経由でFedoraをインストールするにはどうすればよいですか?
動機:ターゲットシステムのBIOSがUSB大容量ストレージデバイスから起動できない。もう1つの動機は、ネットワーク経由のブートの方が便利だということです。
課題:LANには、変更できないDHCPサーバーがあります。つまり、PXE関連オプションの構成をサポートしていないDHCPサーバーです(フリッツボックスルーターの一部です)。
[Proxy DHCP service for [〜#〜] pxe [〜#〜] を設定することもできます。したがって、既存のDHCPサーバーを変更する必要はありません。その後、通常のLinuxシステム(ワークステーションなど)を使用して、プリブート実行環境(PXE)をホストできます。
次の手順は、PXEをネットブート用にセットアップするために必要です Fedoraネットワークインストールイメージ (Fedoraホストも想定):
$ gpg --verify Fedora-Server-21-x86_64-CHECKSUM
$ sha256sum --check Fedora-Server-21-x86_64-CHECKSUM
Fedora-Server-netinst-x86_64-21.iso: OK
mkdir /mnt/iso
mount -o loop Fedora-Server-netinst-x86_64-21.iso /mnt/iso
yum install dnsmasq tftp-server syslinux-tftpboot
tftp-server
パッケージはディレクトリを作成するためのものです/var/lib/tftpboot
、dnsmasqにはすでにtftpサーバーが統合されています。
設定:
cat > /etc/dnsmasq.conf
interface=enp0s25
# and don't bind to 0.0.0.0
bind-interfaces
# extra logging
log-dhcp
dhcp-range=192.168.178.0,proxy
# first IP address is the one of the Host
dhcp-boot=pxelinux.0,192.168.178.34,192.168.178.0
pxe-service=x86PC,"Automatic Network Boot",pxelinux
# Specify the IP address of another tftp server
enable-tftp
# default location of tftp-server on Fedora
tftp-root=/var/lib/tftpboot
# disable DNS
port=0
始めよう:
systemctl start dnsmasq.service
必要なファイルをすべてコピーします。
cp /mnt/iso/images/pxeboot/initrd.img /var/lib/tftpboot
cp /mnt/iso/images/pxeboot/vmlinuz /var/lib/tftpboot
cp /tftpboot/pxelinux.0 /var/lib/tftpboot
cp /tftpboot/vesamenu.c32 /var/lib/tftpboot
cp /tftpboot/ldlinux.c32 /var/lib/tftpboot
cp /tftpboot/libcom32.c32 /var/lib/tftpboot
cp /tftpboot/libutil.c32 /var/lib/tftpboot
設定を追加:
mkdir /var/lib/tftpboot/pxelinux.cfg
cat > /var/lib/tftpboot/pxelinux.cfg/default
default vesamenu.c32
Prompt 0
# disable timeout
timeout 0
#timeout 600
# if file is missing, this is ignored
display boot.msg
label linux
menu label Install Fedora 21 Server x86-64
kernel vmlinuz
append initrd=initrd.img inst.stage2=http://workstation.example.org/
yum install nginx
インスタンスを構成します。
cat > /etc/nginx/conf.d/iso.conf
server {
listen 80 default_server;
server_name localhost;
root /mnt/iso ;
include /etc/nginx/default.d/*.conf;
}
デフォルトのインスタンスを無効にするか、別のポートに移動します。
--- a/nginx/nginx.conf
+++ b/nginx/nginx.conf
@@ -43,7 +43,7 @@ http {
include /etc/nginx/conf.d/*.conf;
server {
- listen 80 default_server;
+ listen 8080 default_server;
server_name localhost;
root /usr/share/nginx/html;
サーバーを起動します。
systemctl start nginx.service
Fedoraインストーラー(dracut)は基本的に、そのhttpサーバーから1つのファイルを取得する必要があるだけです。
LiveOS/squashfs.img
firewall-cmd --add-service=http
firewall-cmd --add-service=dhcp
firewall-cmd --add-service=tftp
firewall-cmd --add-service=http --permanent
firewall-cmd --add-service=dhcp --permanent
firewall-cmd --add-service=tftp --permanent
それでおしまい。クライアントはPXE経由でネットワークブートし、Fedora netinstallイメージを取得できることがわかっています。
バリエーションとしては、完全自動ネットワークインストール用のキックスタートファイルの追加(およびタイムアウトの設定)、さまざまなクライアントのさまざまなPXE設定(MACアドレスに基づく)などがあります。
デーモンを停止して、ループバックイメージをマウント解除できます。
systemctl stop nginx.service
systemctl stop dnsmasq.service
umount /mnt/iso
Netbootクライアントは、TFTPとHTTPを介して完全に保護されていない構成といくつかのイメージを取得するため、この方法は信頼できるイントラネットでのみ実行する必要があります。