王 建 何 亮 沈菊鴻
(中國人民解放軍63811部隊 海南 文昌 571339)
一種遠程自動安裝中標麒麟操作系統(tǒng)的方法
王 建 何 亮 沈菊鴻
(中國人民解放軍63811部隊 海南 文昌 571339)
隨著軟件國產(chǎn)化的逐步推進,中標麒麟操作系統(tǒng)獲得了越來越廣泛的應(yīng)用。針對目前中標麒麟無法大批量自動安裝的問題,首次提出了一種基于網(wǎng)絡(luò)的遠程安裝方法。該方法通過在局域網(wǎng)上搭建系統(tǒng)安裝服務(wù)器實現(xiàn)。系統(tǒng)安裝服務(wù)器首先利用WOL技術(shù)遠程喚醒待安裝計算機,然后利用PXE技術(shù)自動啟動安裝過程,最后利用KickStart技術(shù)實現(xiàn)安裝過程的自動交互。實際應(yīng)用結(jié)果表明,利用該方法可以在30分鐘內(nèi)實現(xiàn)100臺計算機的自動安裝。
中標麒麟 自動安裝 WOL PXE KickStart
中標麒麟操作系統(tǒng)(NeoKylin,以下簡稱麒麟)[1]是我國“核高基”項目的重要研究成果,對于“自主可控”的戰(zhàn)略目標具有重要意義。隨著國產(chǎn)化的逐步推進,麒麟已經(jīng)在國防和政府等關(guān)鍵部門和領(lǐng)域獲得了應(yīng)用[2-4],并將繼續(xù)被推廣。
目前麒麟主要采用光盤或者U盤等介質(zhì)進行本地安裝,其安裝過程需要人工干預(yù),無法自動完成。其安裝速度主要取決于安裝介質(zhì)數(shù)據(jù)的讀取速率,一般耗時較長。本地介質(zhì)安裝方法適合安裝單臺或者少量計算機,對于大批量計算機的安裝則效率低下。由于缺乏有效的安裝方法,目前大批量計算機的安裝主要采用單人單介質(zhì)逐臺安裝,或者多人多介質(zhì)并行安裝這兩種形式。很顯然前者時間效率不高,而后者的人員、經(jīng)濟效率較低。為了解決這一問題,本文提出了一種遠程自動安裝麒麟的方法。
事實上,麒麟作為Linux家族的一員,仍保留了許多Linux的特性[5]。利用網(wǎng)絡(luò)喚醒WOL(Wake on LAN)、預(yù)啟動執(zhí)行環(huán)境PXE[6](Preboot eXecute Environment)、KickStart[7]、動態(tài)主機配置協(xié)議DHCP(Dynamic Host Configuration Protocol)、簡單文件傳輸協(xié)議TFTP(Trivial File Transfer Protocol)、文件傳輸協(xié)議FTP(File Transfer Protocol)、網(wǎng)絡(luò)文件系統(tǒng)NFS(Network File System)等技術(shù),Linux已經(jīng)實現(xiàn)了遠程自動安裝[8-14]。但鑒于麒麟與標準Linux在安全策略、文件系統(tǒng)等方面的差異,這些已有的方法不能直接使用。本文研究了麒麟對WOL、PXE、KickStart等技術(shù)的支持,通過在網(wǎng)絡(luò)上搭建系統(tǒng)安裝服務(wù)器,實現(xiàn)了一種適合麒麟的遠程自動安裝方法。經(jīng)過實際應(yīng)用,驗證了方法的有效性。
1.1 WOL技術(shù)
WOL是一種計算機電源管理技術(shù),它允許處于關(guān)機狀態(tài)的計算機在網(wǎng)卡收到魔術(shù)包[12]后被喚醒。魔術(shù)包是由AMD公司發(fā)明的一種特殊數(shù)據(jù)包格式,里面包含了待喚醒計算機網(wǎng)卡MAC地址等信息。WOL首先需要計算機硬件的支持,它要求計算機關(guān)機后,網(wǎng)卡仍處于加電待機狀態(tài),當網(wǎng)卡偵聽到與自身MAC地址相符的魔術(shù)包后,能向主板發(fā)送開機信號。目前市場主流的計算機在硬件上均支持這項功能。此外,WOL還需要一個能發(fā)送魔術(shù)包的軟件,麒麟自帶的ether-wake工具包便具有該項功能。ether-wake命令需在root用戶下執(zhí)行,其常用的調(diào)用格式為:
# ether-wake MAC地址
利用WOL技術(shù),可以省去人工逐臺開機這一繁瑣操作,但需事先收集待安裝計算的MAC地址。遠程喚醒待安裝計算機是實現(xiàn)遠程全自動安裝麒麟的第一步。
1.2 PXE技術(shù)
PXE是由Intel公司發(fā)明的一項技術(shù)[6],它工作在C/S模式,允許客戶機通過網(wǎng)絡(luò)從遠程服務(wù)器下載操作系統(tǒng)映像并引導啟動。在這個過程中,需要用DHCP協(xié)議為客戶機分配IP地址以建立通信鏈路,還需用TFTP協(xié)議下載啟動所需文件。TFTP可認為是一種簡化了的FTP協(xié)議,不支持目錄列表和用戶認證,適合客戶機在啟動一個完整的操作系統(tǒng)前進行文件的下載。PXE可以引導啟動多種操作系統(tǒng),如Windows、Linux等。
本文通過研究表明,PXE同樣能夠引導中標麒麟操作系統(tǒng),利用syslinux工具包中提供的引導文件pxelinux.0即可實現(xiàn)麒麟內(nèi)核映像的PXE引導。麒麟內(nèi)核被遠程引導啟動后,就可以根據(jù)啟動配置文件啟動安裝程序。
值得注意的是,客戶機通過WOL技術(shù)被遠程喚醒后,需確保能自動進入PXE引導模式??蛻魴C的引導模式在BIOS中進行設(shè)置。默認情況下,當客戶機通過網(wǎng)卡喚醒后,BIOS已被設(shè)置為PXE模式引導。
1.3 KickStart技術(shù)
KickStart是由Red Hat公司發(fā)明的一種自動安裝Red Hat Linux的技術(shù)[7]。利用該技術(shù),安裝過程中的人機交互可以根據(jù)預(yù)先準備好的自動應(yīng)答文件(通常名為ks.cfg)自動完成。在自動應(yīng)答文件中,可以指定操作系統(tǒng)安裝文件所在的位置、客戶機磁盤分區(qū)、root用戶密碼等基本設(shè)置,還可以指定需要安裝的軟件包,以及安裝完成后需要執(zhí)行的腳本等。自動應(yīng)答文件是一種純文本的配置文件,可以直接編輯修改,也可以通過圖形化的KickStart工具軟件進行修改。
本文通過研究發(fā)現(xiàn),KickStart同樣支持麒麟的安裝,因此用它來實現(xiàn)安裝過程中的自動交互。
通過上文的分析可知,麒麟能夠支持WOL、PXE、KickStart技術(shù),通過WOL技術(shù)可以實現(xiàn)待安裝計算機的遠程喚醒,通過PXE技術(shù)可以實現(xiàn)麒麟內(nèi)核的遠程引導以及安裝程序的自動啟動,而通過KickStart技術(shù)則可實現(xiàn)安裝過程的自動交互。具體實現(xiàn)上,本文基于以上三項技術(shù)在局域網(wǎng)上搭建一臺系統(tǒng)安裝服務(wù)器,以實現(xiàn)局域網(wǎng)上客戶機的自動安裝。
圖1是系統(tǒng)安裝服務(wù)器與待安裝客戶機的網(wǎng)絡(luò)連接關(guān)系圖,其中服務(wù)器提供WOL、DHCP、TFTP和FTP四項服務(wù),用以支撐WOL、PXE和KickStart這三項關(guān)鍵技術(shù)的實現(xiàn)。其中FTP服務(wù)提供自動應(yīng)答文件以及操作系統(tǒng)安裝文件的下載。
圖1 系統(tǒng)安裝服務(wù)器與待安裝計算機網(wǎng)絡(luò)連接關(guān)系圖
圖2是自動安裝過程的流程圖,系統(tǒng)安裝服務(wù)器與待安裝客戶機按照預(yù)設(shè)的流程自動進行交互,從而實現(xiàn)自動安裝。安裝過程主要包括以下步驟:
(1) 遠程喚醒待安裝客戶機。系統(tǒng)安裝服務(wù)器通過ether-wake命令發(fā)送“魔術(shù)包”喚醒待安裝客戶機。
(2) 待安裝客戶機自動啟動操作系統(tǒng)安裝程序。待安裝客戶機被遠程喚醒后,將以PXE模式引導操作系統(tǒng)。首先,客戶機向服務(wù)器申請分配IP地址,服務(wù)器收到請求后,通過DHCP服務(wù)向客戶機分配IP地址,并同時提供TFTP服務(wù)器的地址,也就是安裝服務(wù)器自身的IP地址。接下來,客戶機利用服務(wù)器提供的TFTP服務(wù)下載啟動麒麟操作系統(tǒng)內(nèi)核所需的文件,主要包括引導文件pxelinux.0、內(nèi)核映像文件vmlinuz、驅(qū)動文件initrd.img、啟動配置文件default等。其中配置文件default指定內(nèi)核啟動后運行系統(tǒng)安裝程序,并指定安裝過程采用KickStart技術(shù)實現(xiàn)自動應(yīng)答,以及自動應(yīng)答文件ks.cfg的FTP地址。文件下載完成后,客戶機啟動麒麟內(nèi)核并根據(jù)配置文件啟動系統(tǒng)安裝程序。
(3) 待安裝客戶機實現(xiàn)安裝過程的自動交互,并完成自動安裝。首先,客戶機利用服務(wù)器的FTP服務(wù)下載自動應(yīng)答文件,在自動應(yīng)答文件中,指定操作系統(tǒng)安裝文件的FTP地址,以及安裝過程的交互內(nèi)容。接下來,客戶機再次利用服務(wù)器的FTP服務(wù)下載操作系統(tǒng)安裝文件,并根據(jù)自動應(yīng)答文件中的交互設(shè)置自動完成安裝。
圖2 自動安裝過程
本文以麒麟3.2.2(內(nèi)核版本2.6.32)的安裝為例,闡述系統(tǒng)安裝服務(wù)器的搭建方法。其中服務(wù)器同樣運行麒麟3.2.2,其IP地址為2.10.8.99,網(wǎng)關(guān)為2.10.8.254,局域網(wǎng)網(wǎng)段為2.10.8.0/24。由于麒麟操作系統(tǒng)自帶ether-wake工具,因此服務(wù)器默認具有WOL服務(wù),無需另外搭建。下文主要介紹DHCP服務(wù)器、TFTP服務(wù)器、FTP服務(wù)器的搭建方法。在搭建服務(wù)器時,需要將麒麟安裝光盤插入服務(wù)器光驅(qū)以準備安裝相應(yīng)的軟件包。
3.1 DHCP服務(wù)器搭建
搭建DHCP服務(wù)器需要安裝dhcp軟件包,在root用戶下運行以下命令即可完成安裝:
# rpm dhcp
軟件包安裝完成后需要編輯修改配置文件,其路徑為/etc/dhcp/dhcpd.conf,圖 3是配置文件的內(nèi)容,其中,第15行指定了TFTP服務(wù)器地址,本文即系統(tǒng)安裝服務(wù)器地址;第21-26行指定了動態(tài)IP網(wǎng)段的設(shè)置。特別地,第26行指定了動態(tài)IP的范圍,此范圍必須包含DHCP服務(wù)器本身的IP地址。
最后,需要在root用戶下運行以下命令重啟dhcp服務(wù):
# service dhcpd restart
圖3 DHCP配置文件內(nèi)容
3.2 TFTP服務(wù)器搭建
搭建TFTP服務(wù)器需要安裝tftp、tftp-server、xinetd三個軟件包,在root用戶下運行以下命令完成軟件包安裝:
# rpm tftp tftp-server xinetd
軟件包安裝完成后,編輯配置文件/etc/xinetd.d/tftp配置TFTP服務(wù)。圖 4是配置文件內(nèi)容,其中第9行中的字符串“/tftpboot”為TFTP服務(wù)器存放文件的目錄。配置完成后,將引導啟動麒麟所需要的文件復(fù)制到目錄/tftpboot中,具體的復(fù)制方法如表 1所示。復(fù)制完成后,編輯修改麒麟啟動配置文件/tftpboot/pxelinux.cfg/default,圖 5是其內(nèi)容。其中第18行中的“ksdevice=link”指定了安裝過程采用KickStart技術(shù)自動交互,“ks=ftp://2.10.8.99/NeoKylin-3.2.2/kickstart/ks.cfg”指定了自動應(yīng)答文件ks.cfg的FTP地址。
默認情況下,麒麟的SELinux工作在Enforcing模式,這阻止了TFTP服務(wù)的正常訪問,需將其關(guān)閉或者設(shè)置為Permissive模式。然而麒麟3.2.2出于安全的考慮,不允許用戶關(guān)閉SELinux,而且Permissive模式處于隱藏狀態(tài),無法直接設(shè)置。在root用戶下運行以下命令可將SELinux設(shè)置為Permissive模式:
# setenforce Softmode
通過運行以下命令查看SELinux狀態(tài),確保返回結(jié)果為Permissive:
# getenforce
最后,需要在root用戶下運行以下命令重啟tftp服務(wù):
# service xinetd restart
圖4 TFTP配置文件內(nèi)容
序號文件(夾)源路徑文件(夾)目的路徑1/usr/share/syslinux/pxelinux.0/tftpboot/pxelinux.02(NeoKylin安裝光盤)/boot//tftpboot/boot3(NeoKylin安裝光盤)/isolinux//tftpboot/pxelinux.cfg/4/tftpboot/pxelinux.cfg/isolinux.cfg/tftpboot/pxelinux.cfg/default
圖5 啟動配置文件default的內(nèi)容
3.3 FTP服務(wù)器搭建
搭建FTP服務(wù)器需要安裝ftp、vsftpd兩個軟件包,在root用戶下運行以下命令安裝軟件包:
# rpm tfp vsftpd
安裝完成后編輯配置文件/etc/vsftpd/vsftpd.conf,確保屬性anonymous_enable=YES,其他保持默認值即可。配置完成后將麒麟安裝光盤復(fù)制到服務(wù)器的目錄/var/ftp/NeoKylin-3.2.2/中。文件復(fù)制完成后,編輯自動應(yīng)答文件,其路徑為/var/ftp/NeoKylin-3.2.2/kickstart/ks.cfg。該文件可以用麒麟自帶的軟件包KickStart進行編輯,也可以在原有的模板上直接以文本方式進行編輯。圖 6是一個自動應(yīng)答文件示例,其中第2行中用url關(guān)鍵字指定了安裝文件的位置;第5行用rootpw關(guān)鍵字指定了root用戶的密碼;在第20-47行的packages段指定了需要安裝的軟件包;在第48-52行的post段指定了安裝結(jié)束后運行的腳本,其中第49行新建了一個用戶new-user并指定其密碼為123456。更多KickStart設(shè)置,請參見相關(guān)技術(shù)文檔。
同樣的,最后需要在root用戶下運行以下命令重啟ftp服務(wù):
# service vsftpd restart
圖6 自動應(yīng)答文件ks.cfg內(nèi)容
本文用上述方法進行了實測實驗。圖 7為實驗中的待安裝客戶機,共100臺。客戶機CPU為i7四核,內(nèi)存4 GB,服務(wù)器配置與客戶機相同,局域網(wǎng)為千兆網(wǎng)。實驗前,已收集所有客戶機網(wǎng)卡的MAC地址,并編寫好shell腳本通過ether-wake工具遠程喚醒所有客戶機。
實驗時,服務(wù)器運行遠程喚醒腳本,觸發(fā)客戶機自動安裝過程。27分鐘后,所有客戶機成功完成了自動安裝。由于實際工作需要,對100臺客戶機進行了共三次批量安裝,均能在30分鐘內(nèi)完成。
本文利用麒麟對于WOL、PXE、KickStart技術(shù)的支持,提出了一種遠程自動安裝麒麟的方法。通過在局域網(wǎng)上搭建系統(tǒng)安裝服務(wù)器,解決了目前麒麟無法批量遠程自動安裝的問題。實驗應(yīng)用結(jié)果表明,本文的方法可以在30分鐘內(nèi)實現(xiàn)100臺計算機的自動安裝。
本文的方法適合局域網(wǎng)中大規(guī)模終端操作系統(tǒng)的批量安裝,尤其適應(yīng)于大型機房。相比于傳統(tǒng)的本地介質(zhì)安裝方法,該方法在時間、人員、經(jīng)濟方面的效率都有很大的提高。
[1] 中標軟件有限公司.中標麒麟操作系統(tǒng)[OL].http://www.cs2c.com.cn/.
[2] 崔健.基于中標麒麟的火箭飛行三維實時仿真系統(tǒng)的研究與實現(xiàn)[D].重慶:重慶大學,2014.
[3] 中標軟件有限公司.中標麒麟在電子政務(wù)中的應(yīng)用[J].信息技術(shù)與標準化,2012(11):49-52.
[4] 杜列波,涂青,羅武勝,等.基于麒麟嵌入式操作系統(tǒng)的車載智能終端軟件遠程升級的設(shè)計與實現(xiàn)[J].國防科技大學學報,2012,34(4):95-98.
[5] 吳慶波,戴華東,吳泉源.麒麟操作系統(tǒng)層次式內(nèi)核設(shè)計技術(shù)[J].國防科技大學學報,2009,31(2):76-80.
[6] Intel Corporation.Preboot execution environment (PXE) specification[Z].1999.
[7] Sobell M G.Red Hat Linux指南[M].楊明軍,張杰良,譯.北京:人民郵電出版社,2008.
[8] 使用PXE+DHCP+Apache+Kickstart無人值守安裝CentOS5.8 x86_64[EB/OL].http://yuhongchun.blog.51cto.com/1604432/1100567.
[9] DHCP+TFTP+PXE自動網(wǎng)絡(luò)引導安裝Linux操作系統(tǒng)[EB/OL].http://www.linuxidc.com/linux/2013-03/81580.htm.
[10] Ubuntu配置PXE+Kickstart+TFTP+DHCP實現(xiàn)快速布署Linux操作系統(tǒng)[EB/OL].http://www.linuxidc.com/linux/2012-07/65748.htm.
[11] 杜曉軍,耿凱,吳秋紅.基于PXE協(xié)議的Linux自動安裝原理分析與應(yīng)用[J].通信技術(shù),2008,41(8):137-138.
[12] 李懷剛,邱建新.網(wǎng)絡(luò)安裝Linux的技術(shù)原理分析及實現(xiàn)[J].計算機應(yīng)用與軟件,2006,23(9):109-111,118.
[13] 邱建新,馬世霞.Linux網(wǎng)絡(luò)安裝的自動化原理剖析及應(yīng)用[J].微計算機應(yīng)用,2005,26(6):760-764.
[14] 黃敏.實現(xiàn)網(wǎng)絡(luò)設(shè)備智能安裝的系統(tǒng)及其方法:201410 147354.9[P].2014.
A METHOD OF INSTALLING NEOKYLIN OPERATING SYSTEM REMOTELYAND AUTOMATICALLY
Wang Jian He Liang Shen Juhong
(Troops63811PLA,Wenchang571339,Hainan,China)
As the software domestication progressed, the NeoKylin operating system is more and more widely used. However, the NeoKylin cannot be installed automatically on a large batch of computers. In order to solve the problem, a method based on network is proposed. This method is implemented by setting up an installation server in local area network. Firstly, the installation server wakes up the client computer with the technique of WOL, and then starts the installation automatically with the technique of PXE. Finally, the interaction is achieved automatically with the KickStart technique. The application results show that, 100 computers can be installed automatically within 30 minutes.
NeoKylin Automatic installation WOL PXE KickStart
2016-01-25。王建,工程師,主研領(lǐng)域:航天測控,軟件國產(chǎn)化。何亮,工程師。沈菊鴻,工程師。
TP316
A
10.3969/j.issn.1000-386x.2017.03.016