跳至內容跳至頁面導覽:上一頁 [access key p]/下一頁 [access key n]
documentation.suse.com / SUSE Linux Enterprise Server 文件 / 部署指南  / 設定安裝伺服器 / 準備網路開機環境
適用範圍 SUSE Linux Enterprise Server 15 SP2

17 準備網路開機環境

本章介紹如何設定 DHCP 和 TFTP 伺服器,以提供所需的基礎架構來透過 PXE 開機。

可以透過開機前執行環境 (PXE) 安裝 SUSE® Linux Enterprise Server。用戶端硬體需支援透過 PXE 開機。網路需要提供 DHCP 伺服器和 TFTP 伺服器,以向用戶端提供所需的資料。本章將會引導您設定所需的伺服器。

PXE 只會將核心和 initrd 開機。可以使用此方法開機至安裝環境或線上系統。若要設定安裝來源,請參閱第 16 章 「設定網路安裝來源

本節內容會介紹各種複雜開機方式的組態任務。其中包含 DHCP、PXE 啟動、TFTP 和網路喚醒等現成的組態。

這些範例假設 DHCP、TFTP 和 NFS 伺服器位於 IP 為 192.168.1.1 的同一部機器上。所有服務都可以位於不同的機器上,不會產生任何問題。請務必視需要變更 IP 位址。

17.1 設定 DHCP 伺服器

DHCP 伺服器為網路用戶端提供動態 (第 17.1.1 節 「動態位址指定」) 和靜態 IP 位址指定 (第 17.1.2 節 「指定靜態 IP 位址」)。它會通告伺服器、路由和網域。對於 TFTP 伺服器,DHCP 還提供核心和 initrd 檔案。需要載入哪些檔案取決於目標機器的架構,以及使用的是傳統 BIOS 還是 UEFI 開機方式。用戶端會在其 DHCP 要求中傳輸其架構類型。DHCP 伺服器根據此資訊確定必須下載哪些檔案用於開機。

警告
警告:PXE 和 AutoYaST 安裝失敗

從 SUSE Linux Enterprise 15.0 開始,某些特殊情況會導致 PXE 開機失敗以及 AutoYaST 安裝失敗。如需詳細資訊和解決方法,請參閱第 17.1.3 節 「PXE 和 AutoYaST 安裝失敗」

17.1.1 動態位址指定

以下範例顯示如何設定一個向用戶端動態指定 IP 位址,以及通告伺服器、路由器、網域和開機檔案的 DHCP 伺服器。

  1. root 身分登入代管 DHCP 伺服器的機器。

  2. 透過執行 systemctl enable dhcpd 啟用 DHCP 伺服器。

  3. 將以下幾行附加到 /etc/dhcpd.conf 下之 DHCP 伺服器組態檔案的子網路組態:

    # The following lines are optional
    option domain-name "my.lab";
    option domain-name-servers 192.168.1.1;
    option routers 192.168.1.1;
    option ntp-servers 192.168.1.1;
    ddns-update-style none;
    default-lease-time 3600;
    
    # The following lines are required
    option arch code 93 = unsigned integer 16; # RFC4578
    subnet 192.168.1.0 netmask 255.255.255.0 {
     next-server 192.168.1.1;
     range 192.168.1.100 192.168.1.199;
     default-lease-time 3600;
     max-lease-time 3600;
     if option arch = 00:07 or option arch = 00:09 {
       filename "/EFI/x86/grub.efi";
     }
     else if option arch = 00:0b {
       filename "/EFI/aarch64/bootaa64.efi";
     }
     else  {
       filename "/BIOS/x86/pxelinux.0";
     }
    }

    此組態範例在 IP 為 192.168.1.1 的伺服器上,使用包含 DHCP、DNS 和閘道的子網路 192.168.1.0/24。確定根據網路配置變更所有 IP 位址。如需更多 dhcpd.conf 中可用選項的詳細資訊,請參閱 dhcpd.conf man 頁面。

  4. 執行 systemctl restart dhcpd 重新啟動 DHCP 伺服器。

17.1.2 指定靜態 IP 位址

DHCP 伺服器還可以向網路用戶端指定靜態 IP 位址和主機名稱。一個使用案例是向伺服器指定靜態位址。另一個使用案例是僅限指定有靜態 IP 位址且不提供動態位址池的用戶端加入網路。

根據以下範例修改上述 DHCP 組態:

group {
 host test {
   hardware ethernet MAC_ADDRESS;
   fixed-address IP_ADDRESS;
   }
}

host 陳述式指定安裝目標的主機名稱。若要結合特定主機的主機名稱和 IP 位址,必須指定用戶端的硬體 (MAC) 位址。請以符合您環境的實際值取代此範例中使用的所有變數,然後儲存變更並重新啟動 DHCP 伺服器。

17.1.3 PXE 和 AutoYaST 安裝失敗

從 SUSE Linux Enterprise 15.0 和 ISC DHCP 4.3.x 開始,某些特殊情況會導致 PXE 開機失敗以及 AutoYaST 安裝失敗。如果您的 DHCP 伺服器沒有可用的動態 IP 位址池,只允許在每個用戶端上使用預先定義的靜態位址,並且用戶端傳送 RFC 4361 用戶端識別碼,那麼,PXE/AutoYaST 安裝將無法正常進行。(僅允許指定給特定網路用戶端的位址且不提供動態位址池,會防止隨機機器加入網路。)

當某個新系統在 PXE 中啟動時,它會使用依據硬體類型以及網路介面 MAC 位址建構的用戶端識別碼,將一個要求傳送至 DHCP 伺服器和識別碼本身。這是一個 RFC 2132 用戶端 ID。然後,DHCP 伺服器提供指定的 IP 位址。接下來載入安裝核心,並傳送另一個 DHCP 要求,但此用戶端 ID 不同,它是以 RFC 4361 格式傳送。DHCP 伺服器不會將此 ID 識別為相同用戶端,而是尋找一個可用的動態 IP 位址,但此位址不可用,因此安裝停止。

解決方法是將用戶端設定為傳送 RFC 2132 用戶端 ID。若要在安裝期間傳送 RFC 2132 用戶端 ID,請使用 linuxrc 傳遞以下 ifcfg 指令:

ifcfg=eth0=dhcp,DHCLIENT_CLIENT_ID=01:03:52:54:00:02:c2:67,
DHCLIENT6_CLIENT_ID=00:03:52:54:00:02:c2:67

傳統上在乙太網路中使用的 RFC 2132 DHCPv4 用戶端 ID 是依據硬體類型 (01 表示乙太網路) 後接硬體位址 (MAC 位址) 建構的,例如:

01:52:54:00:02:c2:67

在識別到某部機器包含多個網路介面時,RFC 4361 DHCPv4 用戶端 ID 會嘗試糾正問題。新 DHCPv4 用戶端 ID 的格式與 DHCPv6 用戶端 ID 相同。此 ID 以 0xff 字首 (而不是硬體類型) 開頭,後接 DHCPv6 IAID (描述機器上介面的介面位址關聯 ID),再後接用於唯一識別該機器的 DHCPv6 DHCP 唯一識別碼 (DUID)。

如果使用上述以硬體類型和硬體位址為基礎的 DUID,新的 RFC 4361 DHCPv4 用戶端 ID 將是:

  • 將 MAC 位址的最後幾個位元組用做 IAID:ff:00:02:c2:67:00:01:xx:xx:xx:xx:52:54:00:02:c2:67

  • 當 IAID 是簡單的遞增編號時:ff:00:00:00:01:00:01:xx:xx:xx:xx:52:54:00:02:c2:67

DUID 連結層時間戳記 (DUID-LLT) 中的 xx:xx:xx:xx 是建立時間戳記。DUID 連結層 (DUID-LL) (00:03:00:01:$MAC) 沒有時間戳記。

如需有關使用 linuxrc 的詳細資訊,請參閱《AutoYaST Guide》(AutoYaST 指南)。另請參閱 man 4 initrd,以及 man 5 wicked-configwicked duid --helpwicked iaid --help 中有關選項 dhcp4 "create-cid"dhcp6 "default-duid" 的文件。

17.2 設定 TFTP 伺服器

以下程序描述如何準備伺服器,以便能夠使用透過 TFTP 輸出的檔案,將採用 UEFI 和 BIOS 的用戶端機器遠端開機。

17.2.1 安裝 TFTP 伺服器

若要安裝 TFTP 伺服器,請執行以下程序:

  1. 安裝 tftp 套件。

    tux > sudo zypper in tftp
  2. 檢查 /etc/sysconfig/tftp 中的 tftpd 組態,並視需要新增或變更選項。如需更多詳細資料,請參閱 man 8 tftpd。不需要變更組態,TFTP 精靈也可正常運作。檔案的預設根目錄為 /srv/tftpboot

  3. 確定 tftpd 在開機時已啟動,並重新啟動它以讀取新組態。

    tux > sudo systemctl enable tftp.socket
    tux > sudo systemctl restart tftp.socket

17.2.2 安裝開機檔案

SUSE Linux Enterprise Server 提供在 BIOS 或 UEFI 機器上透過 PXE 開機所需的檔案。支援以下硬體架構:

  • AMD64/Intel 64

  • AArch64

  • POWER

  • IBM Z

從特定硬體架構開機所需的檔案已包含在某個 RPM 套件中。請在執行 TFTP 伺服器的機器上安裝此套件:

tux > sudo zypper in tftpboot-installation-SLE-OS_VERSION-ARCHITECTURE

請以 SUSE Linux Enterprise Server 安裝版本號碼 (例如 SLE-15-SP2-x86_64) 取代 OS_VERSION,並以系統架構 (例如 x86_64) 取代 ARCHITECTURE。因此,生成的文字如下所示: tftpboot-installation-SLE-15-SP2-x86_64 執行 zypper se tftpboot 來搜尋所有可用版本和架構。

檔案將安裝在 /srv/tftpboot/SLE-OS_VERSION-ARCHITECTURE 中。您也可以將 SUSE Linux Enterprise Server 的其他版本和架構的相應檔案複製到 /srv/tftpboot 目錄。

提示
提示:為不同的架構提供服務

用戶端和伺服器硬體架構可能不同。例如,您可以透過安裝以下套件,執行 AMD64/Intel 64 TFTP 伺服器並為 AArch64 用戶端機器提供可開機環境: tftpboot-installation-SLE-15-SP2-aarch64 套件。

注意
注意:現有的 /srv/tftpboot/ 目錄

如果您的機器上已存在目錄 /srv/tftpboot/,則所有檔案將會安裝到 /usr/share/tftpboot-installation/。如果您正在從舊版 SLES 升級 PXE 伺服器,則會採用這種安裝方式。

若要修復此問題,請將 /usr/share/tftpboot-installation/ 中的檔案手動複製到 /srv/tftpboot/。或者,移除 /srv/tftpboot/ 並重新安裝 tftpboot-installation-SLE-OS_VERSION-ARCHITECTURE 套件。

17.2.3 設定 PXELINUX

在編輯器中開啟檔案 /srv/tftpboot/SLE-OS_VERSION-ARCHITECTURE/net/pxelinux.cfg/default。依據第 16 章 「設定網路安裝來源中所述的設定取代 install 參數的路徑。另外,請以 TFTP 伺服器的 IP 位址取代 TFTP_SERVER。如需 PXELINUX 組態選項的綜覽,請參閱第 17.3 節 「PXELINUX 組態選項」

default linux

# install
label linux
  ipappend 2
  kernel boot/ARCHITECTURE/loader/linux
  append initrd=boot/ARCHITECTURE/loader/initrd instsys=tftp://TFTP_SERVER/SLE-OS_VERSION-ARCHITECTURE/boot/ARCHITECTURE/root install=PROTOCOL://SERVER_IP:/PATH

display  message
implicit 1
prompt  1
timeout  50

如需 append 行中所用開機參數的詳細資料,請參閱第 7.3 節 「重要開機參數清單」

如有需要,請編輯 /srv/tftpboot/SLE-OS_VERSION-ARCHITECTURE/net/pxelinux.cfg/message,以在開機功能表中顯示訊息。

17.2.4 使用 GRUB2 為 EFI 準備 PXE 開機

您無需變更 GRUB2 組態檔案。但是,預設設定中未提供安裝系統的網路來源。若要完全透過網路來安裝 SUSE Linux Enterprise Server,請將 install 參數新增至 /srv/tftpboot/SLE-OS_VERSION-ARCHITECTURE/EFI/BOOT/grub.cfg 檔案中的 linuxefi 行。依據第 16 章 「設定網路安裝來源中所述的設定來設定 install 參數。如需 efilinux 行中所用其他開機參數的詳細資料,請參閱第 7.3 節 「重要開機參數清單」

17.3 PXELINUX 組態選項

此處列出的選項為 PXELINUX 組態檔案中所有可用選項的子集合。

APPEND OPTIONS

將一或多個選項新增至核心指令行。這些新增選項是用於自動和手動開機。新增選項會加在每個核心指令行的開頭位置,通常您只要明確輸入核心選項,便可覆寫這些選項。

APPEND -

不附加任何選項。在 LABEL 區段中做為引數且包含單一連字號的 APPEND,可以用來覆寫全域的 APPEND

DEFAULT KERNEL_OPTIONS...

設定預設的核心指令行。當 PXELINUX 是自動啟動,則該選項的作用相當於在啟動提示處輸入了在 DEFAULT 後輸入的所有內容 (表示自動啟動的 auto 選項除外,它是自動新增的)。

如果組態檔案不存在或其中未定義 DEFAULT 項目,則預設使用不帶任何選項的核心名稱linux

IFAPPEND 旗標

根據旗標值將特定選項新增至核心指令行。IFAPPEND 選項僅適用於 PXELINUX。旗標需要一個值,如表格 17.1 「從 IFAPPEND 產生和新增的核心指令行選項」 中所述。

表 17.1︰ IFAPPEND 產生和新增的核心指令行選項

引數

產生的核心指令行/描述

1

ip=CLIENT_IP:BOOT_SERVER_IP:GW_IP:NETMASK

預留位置根據 DHCP/BOOTP 或 PXE 開機伺服器中的輸入加以取代。

請注意,此選項並非在已開機系統中執行 DHCP 用戶端的替代項。如果不進行定期更新,PXE BIOS 取得的租用將會過期,使得該 IP 位址可供 DHCP 伺服器重複使用。

2

BOOTIF=MAC_ADDRESS_OF_BOOT_INTERFACE

當安裝伺服器在收到 DHCP 伺服器的回覆前逐個查探 LAN 介面時,此選項可用於避免逾時。使用此選項可讓 initrd 程式決定系統是從哪個介面開機的。linuxrc 會讀取此選項並使用此網路介面。

4

SYSUUID=SYSTEM_UUID

新增採用小寫十六進位的 UUID,請參閱 /usr/share/doc/packages/syslinux/pxelinux.txt

LABEL LABEL KERNEL IMAGE APPEND OPTIONS...

指示如果輸入了 LABEL 做為要開機的核心,則 PXELINUX 應改為將 IMAGE 開機,並且應使用指定的 APPEND 選項。這些值會取代檔案的 global 區段中第一條 LABEL 指令前面指定的值。IMAGE 的預設值與 LABEL 的相同,如果未指定 APPEND,則預設會使用 global 項目 (如果有)。您最多可輸入 128 個 LABEL 項目。

PXELINUX 使用以下語法:

label MYLABEL
  kernel MYKERNEL
  append MYOPTIONS

系統會將標籤當成檔案名稱一樣截斷,截斷後,它們必須是唯一的。舉例來說,v2.6.30v2.6.31 這兩個標籤在 PXELINUX 中將無法區分,因為它們都會截斷成相同的 DOS 檔案名稱。

該核心不必是 Linux 核心。它也可以是開機磁區或 COMBOOT 檔案。

LOCALBOOT TYPE

在 PXELINUX 上,指定 LOCALBOOT 0 而不指定 KERNEL 選項,表示要呼叫此特定標籤;而且最後要使用本地磁碟開機,而不使用核心開機。

引數

描述

0

執行正常開機

4

使用仍常駐在記憶體中的「通用網路驅動程式介面」(Universal Network Driver Interface, UNDI) 執行本地開機。

5

使用仍常駐在記憶體中完整的 PXE 堆疊 (包括 UNDI 驅動程式) 執行本地開機。

其他所有值都未定義。如果您對 UNDI 或 PXE 堆疊不甚瞭解,請指定 0

TIMEOUT TIME-OUT

指示在開機提示等待自動開機的時間長度,單位為 1/10 秒。若使用者在鍵盤上按下任何一個鍵,就會取消逾時,前提是假設使用者會完成已開始的指令。如果逾時時間設為 0,則會完全停用逾時功能 (此設定值亦為預設值)。可能的最大逾時值為 35996 (小於一小時)。

PROMPT flag_val

如果 flag_val 為 0,只有在按下 ShiftAlt,或者已設定 Caps LockScroll Lock 時才會顯示開機提示 (此設定值為預設值)。如果 flag_val 為 1,則永遠會顯示開機提示。

F2  FILENAME
F1  FILENAME
..etc...
F9  FILENAME
F10 FILENAME

可在開機提示下按下功能鍵時,於螢幕畫面上顯示指定的檔案。這可用來執行開機前線上說明 (可能是針對核心指令行選項)。如果是使用較早版本的反向相容,F10 也可以當作 F0 輸入。請注意,目前還無法將檔案名稱繫結至 F11F12

17.4 準備用於 PXE 啟動的目標系統

請在 BIOS 開機順序中包含 PXE 選項,以便準備 PXE 開機的系統 BIOS。

警告
警告:BIOS 開機順序

在 BIOS 中,請勿將 PXE 選項置於硬碟開機參數之前。否則,此系統會在您每次開機時嘗試重新安裝系統。

17.5 準備用於網路喚醒功能的目標系統

您需要使用適當的 BIOS 選項才可在安裝前啟用網路喚醒 (WOL) 功能。另外,請記下目標系統的 MAC 位址。啟動網路喚醒功能時將會用到此資料。

17.6 區域網路喚醒

「網路喚醒功能」可藉由包含機器 MAC 位址的特定網路封包來開機。因為世界上的每台機器都有一個獨一無二的 MAC 識別碼,所以您不必擔心會不小心開啟錯誤的機器。

重要
重要:跨越不同網路區段的網路喚醒功能

如果控制機器與 WOL 指令的目標不在同一網路區段,您可以採用兩種做法。將 WOL 要求設定為以多路廣播形式傳送,或者從遠端控制該網路區段中的某部機器,使其充當這些要求的傳送者。

SUSE Linux Enterprise Server 的使用者可以使用名為 WOL 的 YaST 模組輕鬆設定網路喚醒功能。其他 SUSE Linux 版本作業系統的使用者則可以使用指令行工具。

17.7 使用 YaST 設定網路喚醒功能

執行以下程序以透過 YaST 設定遠端喚醒。

  1. root 身分登入。

  2. 啟動YaST ›  網路服務 ›  WOL

  3. 按一下新增,並輸入目標系統的主機名稱和 MAC 位址。

  4. 若要開啟此機器,請選取適當的項目,並按一下喚醒