Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學
您现在的位置: Windows教程網 >> Windows教程 >  >> Linux 系統教學 >> 關於 Linux

Linux 利用 PXE + Kickstart + Preseed 全自動安裝虛擬機/實體機

編輯:關於 Linux

PXE (Preboot Execution Environment) 讓機器透過網路啟動安裝程式,配合 Kickstart (RHEL/CentOS) 或 Preseed (Debian/Ubuntu) 實現零人工干預的全自動部署。本文記錄基於 dnsmasq (DHCP+TFTP+DNS 一體) 的 PXE 伺服器建置流程,適用於 KVM 虛擬機批量佈署與實體機裸金屬安裝。

PXE 啟動流程架構圖

一、部署 dnsmasq (整合 DHCP + TFTP + DNS)

apt-get install dnsmasq   # Debian/Ubuntu
# yum install dnsmasq     # CentOS/RHEL

vim /etc/dnsmasq.conf
# 關鍵配置:
bogus-priv
filterwin2k
interface=eth0
dhcp-range=192.168.100.172,192.168.100.180,12h
dhcp-host=52:54:00:ed:00:f7,192.168.100.178  # 固定 IP 給特定 MAC (避免 IP 衝突)
dhcp-boot=pxelinux.0
enable-tftp
tftp-root=/var/ftpd
dhcp-authoritative

systemctl restart dnsmasq

二、準備 PXE 啟動檔案 (以 Ubuntu 11.10 Server 為例)

mkdir -p /var/www/ubuntu
mount -o loop /bak/kvmimages/ubuntu-11.10-server-amd64.iso /mnt
cp /mnt/preseed/ubuntu-server.seed /var/www/ubuntu/
cp -a /mnt/* /var/www/ubuntu/
cp -r /mnt/install/netboot/* /var/ftpd/

# 編輯 PXE 預設選單
vim /var/ftpd/pxelinux.cfg/default
default linux
label linux
kernel ubuntu-installer/amd64/linux
append ks=https://192.168.100.171/ubuntu/ks.cfg \
     preseed/url=https://192.168.100.171/ubuntu/ubuntu-server.seed \
     vga=normal initrd=ubuntu-installer/amd64/initrd.gz --

關鍵點

  • ks.cfg (Kickstart) 與 ubuntu-server.seed (Preseed) 需由 Web 服務 (Nginx/Apache) 提供,指向 /var/www/ubuntu。
  • dhcp-host 綁定 MAC 固定 IP,避免測試時干擾現網 DHCP。
  • 每次測試建議**新建虛擬機** (全新 MAC),避免殘留狀態干擾。

三、Kickstart / Preseed 自動應答檔案重點

功能Kickstart (ks.cfg)Preseed (ubuntu-server.seed)
語言/鍵盤/時區lang en_US
keyboard us
timezone Asia/Taipei
d-i debian-installer/language string en
d-i keymap/select us
d-i time/zone string Asia/Taipei
分區clearpart --all --initlabel
autopart
d-i partman-auto/method string lvm
d-i partman-lvm/confirm boolean true
網路network --bootproto=dhcpd-i netcfg/get_hostname string auto
Root 密碼rootpw --plaintext passwordd-i passwd/root-password password password
套件選擇%packages
@core
openssh-server
tasksel tasksel/first multiselect standard, openssh-server
安裝後腳本%post
systemctl enable sshd
d-i preseed/late_command string ...

四、Web 服務配置 (提供 ks.cfg 與 preseed)

# Nginx 範例
server {
    listen 80;
    server_name 192.168.100.171;
    location /ubuntu/ {
        alias /var/www/ubuntu/;
        autoindex on;
    }
}
systemctl reload nginx

五、驗證 PXE 安裝

  1. 新建 KVM 虛擬機,網路模式選 Bridge 或 Host-Only (與 PXE 伺服器同網段)。
  2. 啟動虛擬機,BIOS 選擇「Network Boot (PXE)」。
  3. 觀察:獲取 IP → 下載 pxelinux.0 → 顯示選單 → 自動載入核心/initrd → 讀取 ks/preseed → 全自動安裝 → 重開機完成。

擴展:多發行版共存

/var/ftpd/
├── pxelinux.0
├── pxelinux.cfg/
│   └── default (menu 選單)
├── centos7/
│   ├── vmlinuz
│   └── initrd.img
└── ubuntu20/
    ├── vmlinuz
    └── initrd.img

pxelinux.cfg/default 使用 MENU 指令建立多發行版選單,滿足異構環境批量佈署需求。

PXE + 自動應答 = 基礎設施即代碼 的雛形,掌握此技能即可實現百台機器單日交付。

Copyright © Windows教程網 All Rights Reserved