Fedora 26: NFSを使ったシンクライアントのPXE Bootサーバをインストールする


Table of Contents

1 PXE Bootサーバをインストールする

以下のスクリプトでPXE Bootサーバをインストールします。環境に合わせて変数を変更してください。

  • SERVER_IPADDRはPXE BootサーバのIPアドレスです。
  • DHCP_SERVER_INTERFACESv4はPXE Bootサーバのネットワークインターフェース名です。DHCPはこのネットワークインターフェースで配布されます。
  • DHCP_SUBNETはDHCPで配布するネットワークアドレスです。
  • DHCP_NETMASKはDHCPで配布するサブネットです。
  • DHCP_DNSはDHCPで配布するDNSです。
  • DHCP_ROUTERはDHCPで配布するゲートウェイです。
  • DHCP_CLIENT_HOSTNAMEはクライアントのホスト名です。
  • DHCP_CLIENT_IPADDRはクライアントに配布するIPアドレスです。
  • DHCP_CLIENT_MACADDRはクライアントのMACアドレスです。

変数とは無関係にNFSのルートファイルシステムに以下の設定を実行します。

  • rootユーザのパスワードはfedoraです。
  • ユーザ名がfedora、パスワードがfedoraのユーザを作成します。

#!/bin/shset -e# Change the following variable to yours.[ -z “${SERVER_IPADDR}” ] && SERVER_IPADDR=$(hostname -I | awk ‘{ print $1 }’)[ -z “${DHCP_SUBNET}” ] && DHCP_SUBNET=192.168.11.0[ -z “${DHCP_NETMASK}” ] && DHCP_NETMASK=255.255.255.0[ -z “${DHCP_DOMAIN}” ] && DHCP_DOMAIN=hiroom2.com[ -z “${DHCP_DNS}” ] && DHCP_DNS=”192.168.11.2, 192.168.11.1″[ -z “${DHCP_ROUTER}” ] && DHCP_ROUTER=192.168.11.1[ -z “${DHCP_CLIENT_HOSTNAME}” ] && DHCP_CLIENT_HOSTNAME=fedora-26-pxeboot-client[ -z “${DHCP_CLIENT_IPADDR}” ] && DHCP_CLIENT_IPADDR=192.168.11.254[ -z “${DHCP_CLIENT_MACADDR}” ] && DHCP_CLIENT_MACADDR=52:54:00:5e:7a:a4if [ -z “${MIRROR_URL}” ]; then F26=https://dl.fedoraproject.org/pub/fedora/linux/releases/26 MIRROR_URL=${F26}/Everything/x86_64/os/fitftp_server_install(){ sudo dnf install -y tftp-server sudo firewall-cmd –add-service=tftp –permanent sudo firewall-cmd –reload sudo systemctl enable tftp sudo systemctl restart tftp}dhcp_install(){ sudo dnf install -y dhcp cat <<EOF | sudo tee /etc/dhcp/dhcpd.confsubnet ${DHCP_SUBNET} netmask ${DHCP_NETMASK} { option domain-name “${DHCP_DOMAIN}”; option domain-name-servers ${DHCP_DNS}; option routers ${DHCP_ROUTER}; next-server ${SERVER_IPADDR}; filename “pxelinux.0”;}host ${DHCP_CLIENT_HOSTNAME} { hardware ethernet ${DHCP_CLIENT_MACADDR}; fixed-address ${DHCP_CLIENT_IPADDR};}EOF sudo firewall-cmd –add-service=dhcp –permanent sudo firewall-cmd –reload sudo systemctl enable dhcpd sudo systemctl restart dhcpd}nfs_utils_install(){ sudo dnf install -y nfs-utils sudo firewall-cmd –add-service=nfs –permanent sudo firewall-cmd –reload sudo systemctl enable nfs sudo systemctl restart nfs sudo mkdir /var/lib/nfsroot cat <<EOF | sudo tee /etc/exports/var/lib/nfsroot *(rw,sync,no_root_squash,no_subtree_check)EOF sudo exportfs -ra sudo mkdir /var/lib/nfsroot/proc sudo mount -o bind /proc /var/lib/nfsroot/proc # shellcheck disable=SC2086 sudo dnf group install -y –releasever=25 –installroot=/var/lib/nfsroot “Fedora Workstation” # https://bugzilla.redhat.com/show_bug.cgi?id=1374427 sudo restorecon /var/lib/nfsroot/etc/passwd* /var/lib/nfsroot/usr/bin/passwd sudo systemd-nspawn -D /var/lib/nfsroot sh -c “# Set root password and create user.yes fedora | passwduseradd -m -s /bin/bash fedorayes fedora | passwd fedora# Locale setting.echo LANG=”en_US.UTF-8″ | tee /etc/locale.conf”}syslinux_install(){ sudo dnf install -y syslinux cd /var/lib/tftpboot sudo cp /usr/share/syslinux/pxelinux.0 . sudo cp -a /usr/share/syslinux . sudo wget -q ${MIRROR_URL}/isolinux/initrd.img sudo wget -q ${MIRROR_URL}/isolinux/vmlinuz sudo mkdir pxelinux.cfg cat <<EOF | sudo tee pxelinux.cfg/defaultpath syslinuxinclude menu.cfgdefault syslinux/vesamenu.c32prompt 0timeout 10EOF cat <<EOF | sudo tee menu.cfgmenu hshift 13menu width 49menu margin 8menu tabmsgmenu title Thin client boot menulabel fedora-26-thin-client menu label ^Fedora 26 thin client kernel vmlinuz append vga=788 initrd=initrd.img ip=dhcp root=/dev/nfs nfsroot=${SERVER_IPADDR}:/var/lib/nfsroot rw selinux=0menu endEOF}pxeboot_main(){ tftp_server_install dhcp_install nfs_utils_install syslinux_install}pxeboot_main

2 NFSを使ったFedora 26シンクライアントを起動する

この記事ではKVMの仮想マシンにFedora 26シンクライアントを起動します。KVM以外の環境でもPXE Boot(あるいはBOOTP)を有効にすることでFedora 26シンクライアントを起動できます。BIOSの設定等をご確認ください。

virt-managerのBoot device orderでNICを有効にし、一番上にします。

0001_BootDeviceOrder.png

iPXEが立ち上がり、DHCPリクエストを送信します。PXE Bootサーバから応答があり、TFTPでブートイメージをダウンロードして起動します。

0002_iPXE.png

syslinuxのメニュー画面が立ち上がります。1秒後に”Fedora 26 thin client”が自動選択されます。

0003_syslinux.png

Fedora 26シンクライアントが起動します。

0004_BootFedora.png

ログイン画面が表示されます。

0005_Login.png

Android | Linux | SDL - Narrow Escape