標籤:設定檔 作業系統 運行環境 linux style
在使用光碟片安裝CentOS系的Linux作業系統時使用的是一個叫做anaconda的軟體,但是在安裝系統之前磁碟上是沒有作業系統的,也就沒有程式的運行環境,所以在光碟片上的某個目錄下有一個編譯好的核心和ramdisk以及init進程,由init啟動anaconda。
Anaconda支援文本和圖形兩種安裝介面,並把安裝過程分為三個階段:
- 安裝前配置
- 鍵盤類型
- 語言
- 時區
- 管理員密碼
- 磁碟及其分區方式
- 要安裝的程式包
- 安裝階段
- 在目標磁碟建立分區、執行格式化
- 將選定的程式包安裝至目標磁碟
- 產生bootloader
- 第一次啟動
- 配置iptables
- 設定SELinux
- 配置core dump核心轉儲,將記憶體中的內容轉儲到磁碟上
這些操作都需要手動進行選擇,但anaconda是支援讀取設定檔實現自動化安裝的,而它的設定檔就叫做kickstart。使用anaconda安裝好的系統,在root使用者的家目錄下有一個anaconda-ks.cfg檔案,這個檔案記錄了anaconda的所有配置,也可以理解為它就是一個kickstart檔案。
Kickstart檔案由一下幾部分組成:
命令段:配置鍵盤、磁碟分割等,這些命令中有必備命令也有可選命令,具體可參看redhat官方的文檔。
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/6F/AD/wKioL1Wk_rTS73vUAAJlNlpWrK4795.jpg" />
程式包段:以%packages開頭以%end結尾,此之間的為要安裝的的程式包,如果是包組則@gropename,不安裝的程式包不寫或-packagename。
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/6F/B0/wKiom1Wk_Nzh9QmfAAEmBRyw-MI144.jpg" />
指令碼段:以%pre起始表示安裝前執行的指令碼,但因為這時的Linux環境是微縮版的,所以指令碼應當盡量簡單;以%post起始表示安裝過後要執行的指令碼,這些指令碼是在安裝後的完整的Linux環境中啟動並執行。最後以%end結尾(可有可無)。
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/6F/AD/wKioL1Wk_rXz0B_mAAH-NN-cM68791.jpg" />
配置kickstart檔案的方式有兩種,一種是手動編輯配置,另一種是使用system-config-kickstart工具。不過要使用system-config-kickstart需要使用yum進行安裝,好在CentOS的base源中就有。安裝完成之後在Xshell下直接使用system-config-kickstart命令就可以了,它會啟動一個GUI介面,這個介面和anaconda介面非常類似,通過之上的提示一步步配置就可以了。
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/6F/B0/wKiom1Wk_N3Tlod-AALof2y5hJw706.jpg" />
這個命令也可以載入現有的kickstart檔案做修改,在file菜單中選擇就可以了。
配置好後我們如果要使用kickstart檔案有兩種方式:一種是將kickstart放置到光碟片上,另一種是放到網路伺服器上。放到網路伺服器上的方法我會在以後的有關PXE和cobbler伺服器的部落格中寫出,本文我們來使用製作引導光碟片方式完成安裝。
建立引導光碟片:根據CentOS官方光碟片,將提供啟動安裝過程的內容扣下來,剔除安裝樹。
- 準備工作目錄
- mkdir /tmp/cdrom
- [[email protected] ~]# mkdir /media/cdrom
- [[email protected] ~]# mount /dev/cdrom /media/cdrom
在光碟片目錄下,能夠顯示安裝介面提供安裝功能的是一個叫做isolinux的目錄
- 複製isolinux目錄和kickstart檔案拷貝到我們準備的/tmp/cdrom中
- [[email protected] cdrom]# cp -r isolinux/ /tmp/cdrom/
- [[email protected] cdrom]# chmod u+w /tmp/cdrom/isolinux/*
- [[email protected] cdrom]# cp /root/anaconda-ks.cfg /tmp/cdrom/ks.cfg
- 編輯isolinux目錄下的相關檔案並製作iso檔案:
[[email protected] isolinux]# ls
boot.cat grub.conf isolinux.bin memtest TRANS.TBL vmlinuz
boot.msg initrd.img isolinux.cfg splash.jpg vesamenu.c32
這些是isolinux目錄下的檔案,我們其中boot.msg和boot.cat是一些提示的協助資訊和引導菜單,splash.jpg是安裝介面的背景圖片,vmlinuz是微核心,vesamenu.c32、isolinux.bin、memtest是提供引導功能的程式和資料,而它們所需要用到的設定檔就是isolinux.cfg,我們就是需要編輯這個檔案讓引導光碟片自動載入kickstart檔案。此檔案中有許多lable,不lable完成不同功能,有些類似於grub中的title,我們在linux這個lable中的append指令之後添加一條ks=cdrom:/ks.cfg,用於指定kickstart檔案的位置然後使用mkisofs命令建立iso鏡像,這裡如果不指定的話,需要在進入安裝介面後橋ESC鍵進入boot介面,手動指定:boot> linux ip=192.168.1.100 netmask=255.255.255.0 gateway=192.168.1.1 ks=cdrom:/ks.cfg。
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/6F/AD/wKioL1Wk_raRL3AhAABzgah9Pvk991.jpg" />
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/6F/AD/wKioL1Wk_raynH_uAACVbmTLs-8107.jpg" />
4、將製作好的iso鏡像裝載到需要安裝系統的主機中並配置好從光碟片啟動就可以了,因為我們的光碟片是不提供安裝樹的,所以kickstart檔案中的url和repo指令指定了網路上的檔案伺服器以提供安裝樹和程式包。
CentOS系列作業系統的安裝程式anaconda與其設定檔kickstart