CentOS自動化安裝: anaconda
REHL/CentOS系列的系統安裝程序名為anaconda(就是那個裝系統時,讓你下一步下一步的的程序),我們可以通過修改此程序的配置文件實現自動化安裝.應用於大批量的機器需要安裝系統時.
anaconda是一個應用程序,要運行首先就需要內核,庫,在安裝光盤上提供一個微型的LINUX供anaconda運行.
在光盤的isolinux目錄下存放啟動需要的所有文件,例如kernel,initrd,類GRUB的Bootloader,工作過程與GRUB類似,當啟動成功即運行anaconda程序.
[root@EL6 /]# mount /dev/sr0 /mnt/ mount: block device /dev/sr0 is write-protected, mounting read-only
[root@EL6 /]# ls /mnt/isolinux/ boot.cat boot.msg grub.conf initrd.img isolinux.bin isolinux.cfg memtest splash.jpg TRANS.TBL vesamenu.c32 vmlinuz
boot.cat #位於MBR的stage1 isolinux.bin #stage2的程序文件 isolinux.cfg #stage2的配置文件 vesamenu.c32 #圖形接口 vmlinuz #Kernel initrd.img #ramdisk |
anaconda的工作過程:
1)安裝前配置階段,例如選擇鍵盤類型,選擇語言,選擇分區方案,時區,用戶密碼...
2)安裝運行階段,例如創建分區,格式化,掛載磁盤,安裝軟件包,安裝Bootloader
3)首次啟動,有些程序需要配置,例如iptables,selinux,core dump
而我們要實現的自動安裝則是將安裝前配置寫入到配置文件中,省略步驟一,直接進行安裝:
模板配置文件詳解:
]# less ~/anaconda-ks.cfg #命令段 .... #程序包段 %packges @group_name #要安裝的包組 package #要安裝的程序包 -packge #某個包組中,不安裝的程序包 %end
#腳本段 %pre #執行安裝前運行的腳本,沒有安裝系統,命令有限 ... %end
%post #安裝系統後,還未重啟,這時需要執行的腳本(收尾操作) ... %end
|
這個文件自己寫太過復雜,我們可以通過命令來生成kickstart文件
]#yum install -y system-config-kickstart.noarch ]# system-config-kickstart #運行,需要圖形化界面,使用xshell可運行圖形窗口
選擇相應的配置,最後選擇”file” -> ”save”保存即可 |
]# ksvalidator ~/ks.cfg #檢查是否存在錯誤
現在我們kickstart文件有了,anaconda讀取此文件即可自動安裝,那麽怎麽讓anaconda程序讀取到呢,這裏使用光盤啟動程序的命令行接口,將ks文件的位置傳遞給kernel.
接口命令行:
在光盤中看到的安裝選項都由isolinux.cfg中定義:
[root@EL6 /]# cat /mnt/isolinux/isolinux.cfg default vesamenu.c32 #prompt 1 timeout 600
display boot.msg
menu background splash.jpg #背景圖 menu title Welcome to CentOS 6.5!label linux #標題
label Install or upgrade an existing system #標簽名,在boot:下可啟動 menu default #默認啟動 kernel vmlinuz #內核 append initrd=initrd.img #append表示傳遞的內核參數
label vesa menu label Install system with ^basic video driver kernel vmlinuz append initrd=initrd.img xdriver=vesa nomodeset label rescue menu label ^Rescue installed system kernel vmlinuz append initrd=initrd.img rescue label local menu label Boot from ^local drive localboot 0xffff label memtest86 menu label ^Memory test kernel memtest append - |
註: 按tab鍵,添加內核參數 按esc鍵,進入命令行界面: 在Boot:提示符下輸入標簽名,即可啟動相應的內核及參數
常用的內核參數命令: text 以文本顯示界面安裝 method 指定要安裝rpm包的位置 網絡參數: ip= ,mask= , dns= , gateway= , ifname=name:mac 遠程參數: vnc vncpassword=”xxx” 指定kickstart文件的位置: ks=http://x.x.x.x/ks.cfg ks=https://x.x.x.x/ks.cfg ks=nfs://x.x.x.x/ks.cfg ks=ftp://x.x.x.x/ks.cfg ks=cdrom:/x.x.x.x/ks.cfg ks=hd:/x.x.x.x/ks.cfg
|
環境說明: kickstart文件生成存放在http://192.168.80.102/ks.cfg下 自動安裝設置: linux #表示啟動標簽名為Linux的啟動項 回車之後就進行安裝了 |
制作一個啟動引導光盤,將軟件包存放在網絡中:
]# mkdir myiso ]# cp -rf /mnt/isolinux myiso/ #拷貝啟動文件 ]# cp -rf /mnt/images /var/www/html/packs/ #拷貝安裝程序到rpm包目錄下 ]# cp ~/ks.cfg myiso/ ]# vim myiso/isolinux/isolinux.cfg #新增label label auto_installation menu label Auto Installation CentOS6 menu default kernel vmlinuz append initrd=initrd.img ks=cdrom:/ks.cfg
]# mkisofs -R -J -T -v --no-emul-boot -boot-load-size 4 -boot-info-table -V "MYISO_INSTALLATION" -b isolinux/isolinux.bin -c isolinux/boot.cat -o auto_install.iso myiso/
用scp,ftp或http方式什麽的把iso文件拷下來,創建新虛擬機光盤選擇此文件,啟動如下:
開始安裝,從http目錄下載rpm包到本地
|
CentOS自動化安裝: anaconda