2021-05-12 14:32:11
基於AutoYaST 自動化安裝 SUSE 實踐
前言
在金融行業中我所接觸的作業系統主要是AIX
和SLES(SUSE Linux Enterprise Server)
,也許大家平時用得更多是CentOS
,雖然有部分差異但原理都是相通的,SMIT
和YaST
也是灰常實用的功能,推薦大家有機會嘗試體驗下。因為網上關於SuSE自動化部署的參考文章較少,這套自動化部署方案已經被驗證並在生產系統使用了1年半,設定相對成熟和穩定。遵循Don't Repeat Yourself
原則,本文主要介紹基於AutoYaST實現半自動化SuSE客製化光碟和PXE網路全自動化安裝SuSE的實踐過程,如需瞭解更加詳細的引數說明可以參考擴充套件閱讀中的SuSE官網。
AutoYaST是自動化部署SuSE的黃金搭檔
SuSE自動安裝光碟
客製化版本
SUSE Linux Enterprise Server 11 (x86_64) VERSION = 11 PATCHLEVEL = 2
下載地址 - https://www.suse.com/zh-cn/download-linux/
AutoYast簡介
AutoYast是SuSE Linux的自動安裝工具。通過AutoYast,在DHCP、TFTP、PXE服務的支援下,通過FTP、NFS等網路安裝源可以實現SuSE Linux的完全無人值守自動安裝。但是,這種方式必須建立獨立的伺服器且用戶端支援PXE網路啟動,在現場沒有網路或者系統不支援用戶端網絡卡的場景下不適合,通過AutoYast製作的SuSE Linux一鍵安裝光碟可以滿足上述場景。本文主要介紹SuSE Linux Enterprise Server 11(簡稱SLES11)一鍵安裝光碟的製作, 其他SuSE Linux僅供參考。
生成AutoYaST組態檔
AutoYast設定成功後,生成一個名為autoinst.xml的XML組態檔,SuSE Linux通過這個檔案控制作業系統的安裝。
AutoYast生成組態檔有3種方式:
- 系統安裝時自動生成
- 系統安裝後通過執行命令生成
- 直接編輯生成(
偷懶最佳姿勢
)
系統安裝時生成組態檔
按照正常步驟安裝SLES11,把必須的軟體全部安裝。執行到最後一步“安裝已完成”,勾選“為AutoYast複製此系統”,系統開始克隆系統生成組態檔,並彈出提示視窗。生成組態檔用時約2分鐘左右,生成的組態檔位於/root目錄下。
執行命令生成或者修改組態檔
如果在系統安裝時沒有生成組態檔,可以執行命令生成。在系統中開啟終端,以root使用者執行命令yast2 autoyast
,開啟AutoYast設定視窗,選擇“工具”->“建立參考組態檔”,彈出“建立參考控制檔案”視窗。勾選需要設定的專案,如軟體包選擇、語言、分割區、鍵盤佈局、防火牆、網路設定等,AutoYast根據選擇的專案從系統獲取相關設定資訊。選擇“檔案”->“儲存”,彈出“另存為”視窗,輸入檔名“autoinst.xml",選擇“儲存”,系統提示檔案儲存到指定目錄下。
有時我們需要對模組做些調整,比如磁碟分割區、軟體包等。以調整磁碟分割區為例介紹組態檔的修改。 以root使用者執行yast2 autoyast
,開啟AutoYast視窗,選擇“檔案”->“開啟”,選擇autoinst.xml檔案,等系統讀取設定後,在AutoYast視窗顯示設定配件名稱,修改後儲存即可。
製作安裝光碟
AutoYast組態檔生成後,可以開始製作一鍵安裝光碟了。製作一鍵安裝光碟需要用到SLES11的原安裝光碟的資料。
#首先複製SLES11原安裝光碟的資料到指定目錄
mkdir /tmp/sles11
cp -R /media/S*/* /tmp/sles11
#複製autoinst.xml
cp /root/autoinst.xml /tmp/sles11
#編輯isolinux.cfg檔案,找到# install所在位置
cd boot/x86_64/loader/
vi isolinux.cfg
# install
append initrd=initrd autoyast=file:///autoinst.xml splash=silent showopts
:x!
#執行mkisofs命令生成自動安裝光碟
cd /tmp/sles11
mkisofs -R -o /tmp/SLES11-SP2-64-AUTO.iso -b boot/x86_64/loader/isolinux.bin -c boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table .
我的組態檔
預設分割區
名稱 | 格式 | 大小 |
---|---|---|
swap | swap | 16G |
boot | ext3 | 120M |
LVM | ||
root | ext3 | 5G |
usr | ext3 | 10G |
var | ext3 | 5G |
opt | ext3 | 10G |
home | ext3 | 15G |
tmp | ext3 | 10G |
總計 | 71G |
預裝軟體包
KDE Desktop Environment
Oracle Server
Base C/C++ Compiler and Tools
nmap
java-1_6_0 libstdc++43-devel-32bit
預設語言
主要:英語
新增:中文
預設使用者名稱/密碼
root/如果你直接複用我的組態檔請私信我獲取密碼 :D
預設網路設定
禁用服務:防火牆,IPv6
SuSE自動化PXE網路安裝
PXE基本原理
什麼是PXE?
PXE(Pre-boot Execution Environment)是由Intel設計的協定,它可以使計算機通過網路啟動。協定分為client和server兩端,PXE client在網絡卡的ROM中,當計算機引導時,BIOS把PXE client調入記憶體執行,並顯示出命令選單,經使用者選擇後,PXE client將放置在遠端的作業系統通過網路下載到本地執行。 PXE協定的成功執行需要解決以下兩個問題: 1. 既然是通過網路傳輸,那麼計算機在啟動時,它的IP地址由誰來設定; 2. 通過什麼協定下載Linux核心和根檔案系統。
對於第一個問題,可以通過DHCP Server解決,由DHCP server來給PXE client分配一個IP地址,DHCP Server是用來給DHCP Client動態分配IP地址的協定,不過由於這裡是給PXE Client分配IP地址,所以在設定DHCP Server時,需要增加相應的PXE特有設定。 至於第二個問題,在PXE client所在的ROM中,已經存在了TFTP Client。PXE Client使用TFTP Client,通過TFTP協定到TFTP Server上下載所需的檔案。 這樣,PXE協定執行的條件就具備了,下面我們就來看看PXE協定的工作過程。
工作過程
在下圖中,PXE client是需要安裝Linux的計算機,TFTP Server和DHCP Server執行在另外一台Linux Server上。Bootstrap檔案、組態檔、Linux核心以及Linux根檔案系統都放置在Linux Server上TFTP伺服器的根目錄下。 PXE client在工作過程中,需要三個二進位制檔案:bootstrap、Linux 核心和Linux根檔案系統。Bootstrap檔案是可執行程式,它向使用者提供簡單的控制介面,並根據使用者的選擇,下載合適的Linux核心以及Linux根檔案系統。
方案介紹
這種方案需要首先設定一個啟動伺服器和一個安裝伺服器(可以設定在同一台物理機上),然後通過網路啟動存放在啟動伺服器上的安裝程式。安裝程式會自動存取存放在安裝伺服器上的安裝組態檔和安裝媒介來完成安裝。
涉及到的技術
該方案主要應用了三種技術: 1. 在PC上從網路啟動SLES安裝程式的PXE協定 2. SLES安裝程式提供的網路安裝功能(即指通過網路存取安裝媒介) 3. SLES安裝程式提供的無人值守安裝功能(SuSE稱為AutoYast)
軟硬體需求
要按本文介紹的方法完成自動化安裝,你需要如下軟硬體資源:
- 一台PC機器作為啟動和安裝伺服器(其它架構機器也可以)
- 一台待安裝的PC機器,它的網絡卡必須帶有PXE支援
- 一個建好的區域網,上述兩台機器已經連線入同一子網
- 待安裝的SLES安裝媒介
設定tftpd
為了簡化步驟,我們在XP虛擬機器下搭建DHCP和TFTP伺服器端,用tftpd工具來整合實現PXE網路引導,注意伺服器端與用戶端要在同一區域網內。在Linux下設定服務的原理???似,具體方法可參考網際網路。
(1)下載tftpd http://tftpd32.jounin.net/
(2)啟動tftpd32程式,選擇【Settings】
(3)按需勾選,這裡我們僅選擇【TFTP】和【DHCP】
(4)TFTP設定如下 Base Directory:對應存放Linux的引導檔案 PXE Compatibility:增強對不同型號網絡卡的網路啟動支援 Show Progress bar:在網路引導過程中顯示進度 Translate Unix file names:轉化Unix檔名 Allow "" As virtual root:允許虛擬路徑 其它高階選項:設定包括相容性以及一些細節
(5)DHCP設定 重點注意Boot File引導檔案的設定和DHCP系結地址
(6)tftpboot目錄結構
file://D:tftpboot (2 folders, 3 files, 35.86 MB, 36.46 MB in total.)
│ INITRD 32.20 MB
│ LINUX 3.64 MB
│ pxelinux.016.04 KB
├─pxelinux.cfg (0 folders,1 files,193 bytes,193 bytes in total.)
│default193 bytes
└─tftpd32 (0 folders,4 files,620.33 KB,620.33 KB in total.)
EUPL-EN.pdf 33.51 KB
tftpd32.chm 346.96 KB
tftpd32.exe 200.50 KB
tftpd32.ini 39.36 KB
INITRD和LINUX提取自Linux啟動引導映象 pxelinux.0是pxe啟動引導映象 pxelinux.cfg資料夾下的default檔案為啟動選單設定項 編輯tftpbootpxelinux.cfg
,可以自定義autoinst.xml檔案的存取方式和路徑
default linux
# Install Linux
label linux
kernel linux
append initrd=initrd autoyast=ftp://198.15.0.106/suse/autoinst.xml install=ftp://198.15.0.106/suse splash=silent showopts
設定FTP
(1)下載Filezilla Server http://filezilla-project.org/
(2)設定ftp 允許匿名存取帳戶即可,設定好ftp路徑 提取SLES映象內的安裝目錄至ftp目錄下
設定AutoYaST
使用SuSE中的AutoYaST工具生成autoinst.xml,複製到ftp任意目錄下,注意檔案路徑與default設定相吻合
網路啟動機器
前面的設定工作完成後,下面我們就在待安裝機器上通過網路以無人值守的方式來安裝
(1)啟動待安裝機器,選擇從網絡卡啟動。具體方法因BIOS版本不同而異。下圖是從VMWare虛擬機器上得到的選擇網路啟動的螢幕截圖。
(2)網絡卡中的PXE程式碼會聯絡DHCP伺服器來獲取IP地址以及啟動映象,然後啟動映象被載入並執行。
(3)開始全自動安裝
安裝後新增自定義模組
我這裡以新增Kernel核心修補程式為例
<scripts>
<init-scriptsconfig:type="list">
<script>
<filename>instkernel.sh</filename>
<debug config:type="boolean">true</debug>
<location></location>
<interpreter>shell</interpreter>
<source><![CDATA[
#!/bin/bash
#
#After installation, the logfile from this script can be found in
#/var/adm/autoinstall/logs
#
echo "========================================="
echo "... Starting AutoYAST included script ..."
echo "========================================="
rpm -ivh --root=/ ftp://144.131.254.206/update/3.0...-0.6.8.1.x86_64.rpm
rpm -ivh --root=/ ftp://144.131.254.206/update/3.0...-0.6.8.1.x86_64.rpm
rpm -ivh --root=/ ftp://144.131.254.206/update/3.0...-0.6.8.1.x86_64.rpm
rpm -ivh --root=/ ftp://144.131.254.206/update/3.0...-0.6.8.1.x86_64.rpm
]]>
</source>
</script>
</init-scripts>
</scripts>
小結
其實在研究自動化部署的過程中我們會遇到各種坑,只有踩過的人才能夠體會其中的不容易,如果大家在測試和使用SuSE自動化安裝時遇到任何問題,歡迎直接在原文下方留言,我們一起學習和成長_。
更新歷史
2015年05月28日 - 初稿
閱讀原文 - http://wsgzao.github.io/post/autoyast/
擴充套件閱讀
- SuSE - https://www.suse.com/zh-cn/
- AutoYaST - http://doc.opensuse.org/projects/autoyast/
相關文章