定製Linux鏡像批量部署初始應用

主要用途:html

自動安裝操做系統(swap分區交互輸入),系統安裝後並自動執行一些自定義腳本java

以Rhel6.5x86_64光盤爲例!python


一、掛載光盤到/mnt下,拷貝內容到新建目錄linux

mount /dev/cdrom /mnt
mkdir /opt/iso
cp -rT /mnt /opt/iso

二、修改isolinux.cfg文件vim

vim  /opt/iso/isolinux/isolinux.cfg
default vesamenu.c32 改成 default linux 
timeout 600          改成 timeout 30  3秒
label linux
  menu label ^Install or upgrade an existing system
  menu default
  kernel vmlinuz
  append initrd=initrd.img
 改成:
 label linux
  menu label ^Install or upgrade an existing system
  menu default
  kernel vmlinuz
  append initrd=initrd.img ks=cdrom:/ks.cfg

其中的ks.cfg位於/opt/iso/下,cdrom:/的路徑就是/opt/isobash

三、定義ks.cfg文件服務器

#platform=x86, AMD64, or Intel EM64T
#version=DEVEL
firewall --disabled  #禁用防火牆
install          #新的安裝
cdrom            #安裝介質爲cdrom
text            #文本安裝
keyboard us          
lang en_US.UTF-8 
selinux --disabled   #禁用selinux
skipx
logging --level=info
rootpw  --iscrypted $6$Mq/o.xHPh3L2wpJj$1IinnbXglCDM.ZyNVWocMHEsIlRc.oyU4In.1GTrRESIfa2Wb4IAVo8Xma3YHCirHXSyyM.Zt1VzXZyKCWAm00
authconfig --enableshadow --passalgo=sha512 #通過加密的密碼 --iscrypted表明密碼已經被加密,如rootpw 123456密碼直接爲123456
reboot
timezone  Asia/Shanghai
network  --bootproto=static --device=eth0 --ip=10.0.1.1 --netmask=255.255.255.0 --onboot=on
network  --bootproto=static --device=eth1 --onboot=on
bootloader --location=mbr
zerombr
clearpart --all  
part /boot --fstype="ext4" --size=200  #啓動分區200M
#part swap --fstype="swap" --size=4096 #Swap註釋,從配置文件讀取(用戶交互輸入)
part / --fstype="ext4" --grow --size=1 #剩餘的空間所有給/
%include /tmp/mydata.txt          #包括用戶輸入的自定義的內容
%packages                    #如下爲默認安裝的一些包
@base
@client-mgmt-tools
@console-internet
@core
@debugging
@directory-client
@hardware-monitoring
@java-platform
@large-systems
@network-file-system-client
@performance
@perl-runtime
@server-platform
@server-policy
@X Window System
@Desktop
@Graphics Creation Tools
@chinese-support
pax
python-dmidecode
oddjob
sgpio
device-mapper-persistent-data
samba-winbind
certmonger
pam_krb5
krb5-workstation
perl-DBD-SQLite
firefox
%pre                   #安裝前定義的腳本,切換到rry6終端,用於交互輸入Swap分區
#!/bin/bash
exec < /dev/tty6 > /dev/tty6
chvt 6
clear
echo -n "Please input the swap size(M)-32G(32768)-64G(65536)-Or-Other: "
read Size
echo -e "part swap --fstype="swap" --size=${Size}" >> /tmp/mydata.txt
exec < /dev/tty1 > /dev/tty1
chvt 1
#
%post --nochroot      #從光盤拷貝文件到安裝後的系統,光盤的/目錄爲/mnt/source/下,也就是/opt/iso下,/mnt/sysp_w_picpath/爲裝完系統後的/目錄
cp /mnt/source/test.tar.gz /mnt/sysp_w_picpath/opt/         #把光盤/opt/iso下的test.tar.gz 拷貝的安裝後系統的/opt目錄下
#
%post                  #安裝系統後要執行的命令,此處的/目錄即爲裝完系統後的真實的/目錄          
sed -i '/^id/s/3/5/g' /etc/inittab       #把系統啓動級別改成5
cd /opt
tar -zxf test.tar.gz -C /opt           #把/opt下的test.tar.gz解壓到/opt
cd /opt/test/123 #進入某目錄,就至關於真實操做系統的命令
bash /opt/test/123/test.sh #執行某目錄下的腳本
%end


更多ks.cfg參數參考:app

https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/6/html/Installation_Guide/s1-kickstart2-options.html ide

關於ks的生成可參考:利用Kickstart部署無人值守安裝源服務器post

rm -f repodata/*.gz repodata/*.*.bz2 repodata/*.repomd.xml 
declare -x discinfo=`head -1 .discinfo` 
createrepo -u media://$discinfo -g repodata/2a7e0c1da38a40e2961c0cec6acca8b8446d974b1fc055216ebde88bb4a19eb9-c6-x86_64-comps.xml .

五、從新封裝ISO

cd /opt/iso
mkisofs -R -l -r -T -no-emul-boot -J -c isolinux/boot.cat -b isolinux/isolinux.bin -o /root/test.iso -boot-load-size 4 -boot-info-table -no-bak .

把鏡像從新封裝到/root/test.iso,test.iso即爲製做好的鏡像,上邊的參數不要修改,除非很清楚在幹什麼

主要有幾個注意點:

一、光盤安裝的時候,光盤的臨時目錄爲/mnt/source/(把USB刻錄爲CD-ROM時,此目錄爲/mnt/stage2)

二、安裝過程系統的目錄爲/mnt/sysp_w_picpath/

若是定製的ISO過大(超過4G),將沒法刻錄到通常的光盤,能夠刻錄到U盤,把U盤作一個光盤來用

U盤須要量產,能夠參考http://jingyan.baidu.com/article/20095761bd435ecb0721b4bb.html

用U盤來模擬CD-ROM會出現如下錯誤(iso在vmware中啓動無問題)


報錯一:

No driver find
Unabled to find any devices of the type
needed for this installation type.
Woulud you like to manually select your
device or use a driver Disk?

解決方法:

在從光盤啓動後,快速按Esc鍵,輸入"linux all-generic-ide irqpoll pci=nommconf「


報錯二:

Unable to read group information from repositories. This
is a problem with the generation of your install tree

解決方法:

重置repodata,而後從新生成鏡像

rm -f repodata/*.gz repodata/*.*.bz2 repodata/*.repomd.xml 
declare -x discinfo=`head -1 .discinfo` 
createrepo -u media://$discinfo -g repodata/2a7e0c1da38a40e2961c0cec6acca8b8446d974b1fc055216ebde88bb4a19eb9-c6-x86_64-comps.xml .
相關文章
相關標籤/搜索