在金融行業中我所接觸的操作系統主要是AIX
和SLES(SUSE Linux Enterprise Server)
,也許大家平時用得更多是CentOS
,雖然有部分差異但原理都是相通的,SMIT
和YaST
也是灰常實用的功能,推薦大家有機會嘗試體驗下。因為網上關於SuSE自動化部署的參考文章較少,這套自動化部署方案已經被驗證並在生產系統使用了1年半,配置相對成熟和穩定。遵循Don't Repeat Yourself
原則,本文主要介紹基於AutoYaST實現半自動化SuSE定制光盤和PXE網絡全自動化安裝SuSE的實踐過程,如需了解更加詳細的參數說明可以參考擴展閱讀中的SuSE官網。
AutoYaST是自動化部署SuSE的黃金搭檔
SUSE Linux Enterprise Server 11 (x86_64) VERSION = 11 PATCHLEVEL = 2
下載地址 - https://www.suse.com/zh-cn/download-linux/
AutoYast是SuSE Linux的自動安裝工具。通過AutoYast,在DHCP、TFTP、PXE服務的支持下,通過FTP、NFS等網絡安裝源可以實現SuSE Linux的完全無人值守自動安裝。但是,這種方式必須建立獨立的服務器且客戶端支持PXE網絡啟動,在現場沒有網絡或者系統不支持客戶端網卡的場景下不適合,通過AutoYast制作的SuSE Linux一鍵安裝光盤可以滿足上述場景。本文主要介紹SuSE Linux Enterprise Server 11(簡稱SLES11)一鍵安裝光盤的制作, 其他SuSE Linux僅供參考。
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 .
預裝軟件包
KDE Desktop Environment
Oracle Server
Base C/C++ Compiler and Tools
nmap
java-1_6_0 libstdc++43-devel-32bit
預設語言
主要:英語
添加:中文
預設用戶名/密碼
root/如果你直接復用我的配置文件請私信我獲取密碼 :D
預設網絡配置
禁用服務:防火牆,IPv6
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)
軟硬件需求
要按本文介紹的方法完成自動化安裝,你需要如下軟硬件資源:
為了簡化步驟,我們在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文件為啟動菜單配置項 編輯tftpboot\pxelinux.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
(1)下載Filezilla Server http://filezilla-project.org/
(2)設置ftp 允許匿名訪問帳戶即可,配置好ftp路徑 提取SLES鏡像內的安裝目錄至ftp目錄下
使用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相關信息見SUSE 專題頁面 http://www.linuxidc.com/topicnews.aspx?tid=3