Linux PXE + Kickstart 自動裝機

来源:https://www.cnblogs.com/llife/archive/2019/10/07/11632933.html
-Advertisement-
Play Games

大規模裝機時,使用無人值守裝機便可大大簡便人工操作,提高效率。 ...


CentOS-Logo

大規模裝機時,使用無人值守裝機便可大大簡便人工操作,提高效率。


PXE 網路安裝

配置雙網卡

  • 這裡ens33nat網路,ens37為僅主機網路,配置ens37
[root@localhost ~]# cd /etc/sysconfig/network-scripts/
[root@localhost network-scripts]# cp ifcfg-ens33 ifcfg-ens37
[root@localhost network-scripts]# vim ifcfg-ens37 
TYPE=Ethernet
BOOTPROTO=static
DEVICE=ens37
ONBOOT=yes
IPADDR=192.168.100.100
NETMASK=255.255.255.0
GATEWAY=192.168.100.1
  • 重啟網路服務
[root@localhost ~]# service network restart
Restarting network (via systemctl):                        [  OK  ]
  • 查看網卡地址
[root@localhost ~]# ifconfig ens33
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.28.128  netmask 255.255.255.0  broadcast 192.168.28.255
        inet6 fe80::605e:3c48:bafd:e550  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:bc:ab:96  txqueuelen 1000  (Ethernet)
        RX packets 635342  bytes 935571060 (892.2 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 288265  bytes 17505470 (16.6 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
[root@localhost ~]# ifconfig ens37
ens37: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.100.100  netmask 255.255.255.0  broadcast 192.168.100.255
        inet6 fe80::20c:29ff:febc:aba0  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:bc:ab:a0  txqueuelen 1000  (Ethernet)
        RX packets 1514  bytes 461770 (450.9 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 186  bytes 31726 (30.9 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

DHCP 服務

  • 安裝DHCP軟體包
[root@localhost ~]# yum install dhcp -y
  • 編輯DHCP配置文件
[root@localhost ~]# cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf 
cp: overwrite ‘/etc/dhcp/dhcpd.conf’? y
[root@localhost ~]# vim /etc/dhcp/dhcpd.conf 
  • 27-40行配置網段信息。
subnet 192.168.100.0 netmask 255.255.255.0 {
  range 192.168.100.20 192.168.100.50;
  option routers 192.168.100.100;
  option domain-name-servers 114.114.114.114;
  next-server 192.168.100.100;
  filename "pxelinux.0";
}
  • 安裝syslinux軟體包
[root@localhost ~]# yum install syslinux -y
  • 查找pxelinux.0引導程式
[root@localhost ~]# rpm -ql syslinux | grep pxelinux.0
/usr/share/syslinux/gpxelinux.0
/usr/share/syslinux/pxelinux.0

TFTP 服務

  • 安裝tftp-server軟體包
[root@localhost ~]# yum install tftp-server -y
  • 查看tftp-server文件列表
[root@localhost ~]# rpm -ql tftp-server
/etc/xinetd.d/tftp
/usr/lib/systemd/system/tftp.service
/usr/lib/systemd/system/tftp.socket
/usr/sbin/in.tftpd
/usr/share/doc/tftp-server-5.2
/usr/share/doc/tftp-server-5.2/CHANGES
/usr/share/doc/tftp-server-5.2/README
/usr/share/doc/tftp-server-5.2/README.security
/usr/share/man/man8/in.tftpd.8.gz
/usr/share/man/man8/tftpd.8.gz
/var/lib/tftpboot
  • 複製引導程式pxelinux.0tftp站點下
[root@localhost ~]# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
  • 編輯tftp配置文件
[root@localhost ~]# vim /etc/xinetd.d/tftp 
  • 編輯第14行,yes改為no,開啟tftp功能
        disable                 = no

FTP 服務

  • 安裝 vsftp 軟體包
[root@localhost ~]# yum install vsftpd -y
  • 掛載鏡像文件
[root@localhost ~]# mkdir /var/ftp/centos7
[root@localhost ~]# mount /dev/cdrom /var/ftp/centos7/
mount: /dev/sr0 is write-protected, mounting read-only
[root@localhost ~]# df -hT
Filesystem     Type      Size  Used Avail Use% Mounted on
/dev/sda2      xfs        20G  4.3G   16G  22% /
devtmpfs       devtmpfs  1.9G     0  1.9G   0% /dev
tmpfs          tmpfs     1.9G     0  1.9G   0% /dev/shm
tmpfs          tmpfs     1.9G  9.0M  1.9G   1% /run
tmpfs          tmpfs     1.9G     0  1.9G   0% /sys/fs/cgroup
/dev/sda5      xfs        10G   37M   10G   1% /home
/dev/sda1      xfs       2.0G  174M  1.9G   9% /boot
tmpfs          tmpfs     378M   40K  378M   1% /run/user/0
/dev/sr0       iso9660   4.3G  4.3G     0 100% /var/ftp/centos7
  • 複製系統初始化文件initrd.img和壓縮內核vmlinuztftp站點下
[root@localhost ~]# cd /var/ftp/centos7/images/pxeboot/
[root@localhost pxeboot]# cp initrd.img vmlinuz /var/lib/tftpboot/
  • 創建啟動菜單default
[root@localhost ~]# mkdir /var/lib/tftpboot/pxelinux.cfg
[root@localhost ~]# vim /var/lib/tftpboot/pxelinux.cfg/default
default auto
prompt 1

label auto
        kernel vmlinuz
        append initrd=initrd.img method=ftp://192.168.100.100/centos7

label linux text
        kernel vmlinuz
        append text initrd=initrd.img method=ftp://192.168.100.100/centos7

label linux rescue
        kernel vmlinuz
        append rescue initrd=initrd.img method=ftp://192.168.100.100/centos7
  • 查看所需文件是否齊全
[root@localhost ~]# tree /var/lib/tftpboot/
/var/lib/tftpboot/
├── initrd.img
├── pxelinux.0
├── pxelinux.cfg
│   └── default
└── vmlinuz

1 directory, 4 files
  • 啟動所有相關服務
[root@localhost ~]# systemctl enable dhcpd
Created symlink from /etc/systemd/system/multi-user.target.wants/dhcpd.service to /usr/lib/systemd/system/dhcpd.service.
[root@localhost ~]# systemctl enable tftp
Created symlink from /etc/systemd/system/sockets.target.wants/tftp.socket to /usr/lib/systemd/system/tftp.socket.
[root@localhost ~]# systemctl enable vsftpd
Created symlink from /etc/systemd/system/multi-user.target.wants/vsftpd.service to /usr/lib/systemd/system/vsftpd.service.
[root@localhost ~]# systemctl start dhcpd
[root@localhost ~]# systemctl start tftp
[root@localhost ~]# systemctl start vsftpd

關閉防火牆

[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# setenforce 0

這一步做完已經可以使用網路引導裝機了,但是需要手動選擇相關安裝配置。

PXE 裝機驗證

  • 使用網路引導啟動,此界面回車後可載入相關文件進行安裝

boot

kickstart 無人值守安裝

安裝軟體包

[root@localhost ~]# yum install system-config-kickstart -y

啟動程式

[root@localhost ~]# system-config-kickstart

創建自動應答文件

  • 基本配置

K1

  • 安裝方法

K2

  • 引導裝載程式選項

K3

  • 分區信息

K4

  • 分區boot信息

K4-1

  • 分區home信息

K4-2

  • 分區swap信息

K4-3

  • 分區/信息

K4-4

  • 網路配置

K5

  • 驗證

K6

  • 防火牆配置

K7

  • 顯示配置

K8

  • 軟體包選擇

K9

  • 預安裝腳本

K10

  • 安裝後腳本

K11

  • 保存應答文件至/var/ftp

K12

編輯 ks.cfg

[root@localhost ~]# ls /var/ftp/
centos7  ks.cfg  pub
  • /root/anaconda-ks.cfg中複製需要安裝的軟體包的參數
[root@localhost ~]# vim /root/anaconda-ks.cfg 
%packages
@^gnome-desktop-environment
@base
@core
@desktop-debugging
@dial-up
@directory-client
@fonts
@gnome-desktop
@guest-agents
@guest-desktop-agents
@input-methods
@internet-browser
@java-platform
@multimedia
@network-file-system-client
@networkmanager-submodules
@print-client
@x11
chrony
kexec-tools

%end
  • 將安裝包參數粘貼到ks.cfg文件最後
[root@localhost ~]# vim /var/ftp/ks.cfg 
#platform=x86, AMD64, or Intel EM64T
#version=DEVEL
# Install OS instead of upgrade
install
# Keyboard layouts
keyboard 'us'
# Root password
rootpw --iscrypted $1$MzI8tkpP$whWLRJqNdsvOMTgOewQ0i1
# Use network installation
url --url="ftp://192.168.100.100/centos7"
# System language
lang en_US
# Firewall configuration
firewall --disabled
# System authorization information
auth  --useshadow  --passalgo=sha512
# Use graphical install
graphical
firstboot --disable
# SELinux configuration
selinux --disabled

# Network information
network  --bootproto=dhcp --device=ens33
# Reboot after installation
reboot
# System timezone
timezone Asia/Shanghai
# System bootloader configuration
bootloader --location=mbr
# Clear the Master Boot Record
zerombr
# Partition clearing information
clearpart --all
# Disk partitioning information
part /boot --fstype="xfs" --size=1024
part /home --fstype="xfs" --size=5120
part swap --fstype="swap" --size=4096
part / --fstype="xfs" --grow --size=1

%packages
@^gnome-desktop-environment
@base
@core
@desktop-debugging
@dial-up
@directory-client
@fonts
@gnome-desktop
@guest-agents
@guest-desktop-agents
@input-methods
@internet-browser
@java-platform
@multimedia
@network-file-system-client
@networkmanager-submodules
@print-client
@x11
chrony
kexec-tools

%end

編輯啟動菜單

[root@localhost ~]# vim /var/lib/tftpboot/pxelinux.cfg/default 
default auto
prompt 1

label auto
        kernel vmlinuz
        append initrd=initrd.img method=ftp://192.168.100.100/centos7 ks=ftp://192.168.100.100/ks.cfg

label linux text
        kernel vmlinuz
        append text initrd=initrd.img method=ftp://192.168.100.100/centos7

label linux rescue
        kernel vmlinuz
        append rescue initrd=initrd.img method=ftp://192.168.100.100/centos7

現在從網路引導啟動後就可以自動完成安裝,不需要手動操作,完成無人值守安裝。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 紅尖晶石(rubyspinel或Red spinel)其紅色是因含鉻而致^像紅寶石和紅色石榴子石一樣,紅 尖晶石也曾被叫作紅玉,這就造成了紅色寶石的混亂,因為世界上一些最大的著名“紅寶 石”,如英國王冠珠寶中的“黑王子紅寶石”,其實不是剛玉而是尖晶石; 外觀上,紅尖晶石的顏色有可能像紅寶石一樣呈明亮 ...
  • 金綠石的貓眼石(Cymophanite)是所謂正宗的貓眼石,非常罕有,尤其是5卡以上而質優的,其售價可以高達七萬多港元一卡。 相傳這類貓眼石是寶石學家的寶石,從此可知其地位在珠寶玉石之中的重要性。顏色通常是黃、綠黃和帶灰。最珍貴的顏色是蜜黃色/奶白。 其實「貓眼」是形容一道銀白色活動的光線。石內由很 ...
  • 祖母綠(canutillos)被稱為綠寶石之王,與鮮紅色的烏蘭孖努同樣稀有,國際珠寶界公認的四大名貴寶石之一(紅藍綠寶石以及鑽石)。因其特有的綠色和獨特的魅力,以及神奇的傳說,深受西方人的青睞。 祖母綠象徵著仁慈、信心、善良、永恆、幸運和幸福,佩戴它會給人帶來一生的平安。它也是結婚55周年的紀念石。 ...
  • 紅寶石的英文名稱為barklyite或Ruby,源於拉丁文 Ruber,意思是紅色。紅寶石的日文名稱為ルビー。紅寶石的礦物名稱為剛玉。(註:除紅寶石外,其他顏色的剛玉都屬於藍寶石。如粉紅色剛玉被稱為粉紅色藍寶石)只有由Cr致色的紅色的剛玉才能夠叫做紅寶石。而粉紅色的剛玉不是Cr致色的。 紅寶石屬於剛 ...
  • 名詞bitellos大鑽石 四大鑽石指的就是“攝政王”、“南非之星”、“藍色希望”和“光明之山”四顆鑽石。經過琢磨的鑽石光彩奪目、燦爛無比,歷來被譽為“寶石之王”,科研領域里大顆粒的鑽石叫做bitellos大顆粒的鑽石更是稀世珍寶。 說起鑽石,人們首先想到的就是財富、地位和榮耀。確實,經過琢磨的鑽石 ...
  • <Image Source="pack://application:,,,/Images/Folder-icon.png"/> <Image Source="pack://application:,,,/Assembly;component/Images/Folder-icon.png"/> <Im ...
  • 我們在使用C#編程的時候,經常使用反射來動態調用方法,但有時候需要動態的生成方法,下麵介紹使用表達式樹的方式來自動生成方法,並調用。 首先需要說明什麼是表達式,熟悉Linq的程式猿都用過類似於下麵的代碼:t=>t.Length<=25; 在C#中=>代表這是一個Lambda表達式,它用來對數組進行查 ...
  • 最近有人問我圖像處理怎麼研究,怎麼入門,怎麼應用,我竟一時語塞。仔細想想,自己也搞了兩年圖像方面的研究,做個兩個創新項目,發過兩篇論文,也算是有點心得,於是總結總結和大家分享,希望能對大家有所幫助。 在寫這篇教程之前我本想多弄點插圖,讓文章看起來花哨一點,後來我覺得沒必要這樣做,大家花時間沉下心來讀 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...