web-dev-qa-db-ja.com

PXEブートによるFedoraネットワークインストール

PXEブートを使用してネットワーク経由でFedoraをインストールするにはどうすればよいですか?

動機:ターゲットシステムのBIOSがUSB大容量ストレージデバイスから起動できない。もう1つの動機は、ネットワーク経由のブートの方が便利だということです。

課題:LANには、変更できないDHCPサーバーがあります。つまり、PXE関連オプションの構成をサポートしていないDHCPサーバーです(フリッツボックスルーターの一部です)。

6
maxschlepzig

[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

DHCPセットアップ

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

TFTPディレクトリのセットアップ

必要なファイルをすべてコピーします。

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/

HTTPサーバーのセットアップ

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

Firewalldを構成する

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を介して完全に保護されていない構成といくつかのイメージを取得するため、この方法は信頼できるイントラネットでのみ実行する必要があります。

6
maxschlepzig