制作條件:一台裝有CentOS系統的計算機或者虛拟機,CentOSCD光牒。本次試驗所用虛拟機為Vmware Workstation-7.0.0,CentOSCD光牒版本為CentOS-5.4-i386-bin-DVD。
步驟如下:
打開虛拟機的控制台,建立iso 以及iso/CentOS檔案夾
#mkdir -pv iso/CentOS
使用ls指令檢視檔案夾是否建立成功,在這個目錄下,還看到有一個檔案是install.log,用vim編輯器或者是cat指令檢視到這個檔案中有很多以Installing開頭的檔案(這些檔案就是此虛拟機上已經安裝過的系統檔案,Installing後面的是檔案名),現在需要從CD光牒上找到與它們一樣的檔案,然後把這些從CD光牒上找到的檔案複制的虛拟機上,請注意,在install.log檔案中,有一些檔案是以數字開頭的,例如:Installing 30:bind-9.3.6-4.P1.el5.i386
然而這些檔案數目很多,而且,我們還知道,在CD光牒檔案中,檔案是以.rpm結尾的。Install.log中的檔案名和CD光牒中的檔案名并不是完全相同的。真是困難重重啊!呵呵……要解決這些問題,當然不可能一個一個的從CD光牒上複制啦!這時,linux的強大之處就展現出來了! 完全可以整個shell腳本來執行。但是在整腳本之前,還有一些準備工作要完成。
先建立一個檔案,命名為packages.txt 這個檔案的作用就是放置那些從Install.log檔案中整出來的東東!那麼這些東東是怎麼整出來的呢?請看指令:
#awk ‘/^Installing/{print $2}’ Install.log | sed ‘s/^[0-9]*//g’ >> packages.txt
現在好了,知道packages.txt檔案的作用了吧?接下來做什麼呢?
接下來的任務是挂載CD光牒:
# mkidr /media/cdrom
#mount /dev/cdrom /media/cdrom
好!現在開始編個腳本來執行一下,就以cprpm.sh命名吧!
#vim cprpm.sh
切換到文本編輯模式:(終于可以寫腳本啦!)
#!/bin/bash
#cprpm.sh
FILE='/root/packages.txt'
DEST_DIR='/root/iso/CentOS'
SRC_DIR='/media/cdrom/CentOS'
while read LINE
do
cp $SRC_DIR/$LINE.rpm $DEST_DIR || echo "$LINE copy is error" >>cperr.txt
done < $FILE
~
~
好了,腳本寫好了!要記得儲存哦!當然,腳本寫好後,要調試一下先!執行指令:
bash –n cprpm.sh
再來執行一下腳本(可千萬别忘記執行腳本啊!本人就是因為這個問題,白白浪費了大半天的時間):
bash –x cprpm.sh
執行完腳本後,檢視一下/root/iso/CentOS/目錄下是否有存在檔案。(看到目錄下很多的東東,總算覺得剛才寫腳本的心血沒有白費啊!^_^ )
做到這裡,已經向前邁了一大步啦!來慶賀一下吧?
切換到CD光牒目錄下:
#cd /media/cdrom
将/media/cdrom目錄下的一些檔案複制到/root/iso目錄下:
#cp -r .treeinfo .discinfo images/ isolinux/ repodata/ RPM-GPG-KEY-CentOS-5 EULA GPL /root/iso/
可以檢視一下是否複制成功:
#du -sh ./iso/
切換到/iso/isolinux/目錄下:
#cd /iso/isolinux/
編輯isolinux.cfg檔案:
#vim isolinux.cfg
将第一行内容 default linux
改為 default linux ks=cdrom:ks.cfg 修改好後,儲存退出。
好的!切換回主目錄,并且複制編輯一個很重要的檔案,這個步驟有點繁瑣,要仔細哈!(真的很重要,本人在這個問題上也發費了很長一段時間)。千萬不要被下面的代碼吓壞了啊,^_^呵呵^_^ 其實要修改的行并不是很多的,也就區區六行而已,對你來說,隻是小菜一碟啦,呵呵 !
開始修改啦!!
将第1行的install改為text
在第4行加上key ——skip
第5行改為keyboard ——skip
第8行改為rootpw redhat
第9和第11行的“enabled”改為“disabled”
在第23後面添加以下兩行:
bootloader
reboot
本人把這些代碼複制到這裡,隻是想說明一些其他的設定。在第一段的14—23行被#注釋的部分,代表着磁盤的自動分區,如打開這些設定,系統在安裝時會自動分區,但同時也可能會出現意想不到的錯誤,是以不建議初試者進行設定。
#cd
#cp anaconda-ks.cfg iso/ks.cfg
#cd iso/
1 # Kickstart file automatically generated by anaconda.
2 install
3 cdrom
4 lang en_US.UTF-8
5 keyboard us
6 xconfig --startxonboot
7 network --device eth0 --bootproto dhcp
8 rootpw --iscrypted $1$Vsudch9w$pNe6q6ZoMZ3yOhPd9Pets/
9 firewall --enabled --port=22:tcp
10 authconfig --enableshadow --enablemd5
11 selinux --enforcing
12 timezone --utc Asia/Shanghai
13 bootloader --location=mbr --driveorder=sda --append="rhgb quiet"
14 # The following is the partition information you requested
15 # Note that any partitions you deleted are not expressed
16 # here so unless you clear all partitions first, this is
17 # not guaranteed to work
18 #clearpart --linux --drives=sda
19 #part /boot --fstype ext3 --size=100 --ondisk=sda
20 #part pv.2 --size=0 --grow --ondisk=sda
21 #volgroup VolGroup00 --pesize=32768 pv.2
22 #logvol swap --fstype swap --name=LogVol01 --vgname=VolGroup00 --size=208 --grow --maxsize=41 6
23 #logvol / --fstype ext3 --name=LogVol00 --vgname=VolGroup00 --size=1024 --grow
修改的結果為:
2 text
4 key --skip
5 lang en_US.UTF-8
6 keyboard --skip
7 xconfig --startxonboot
8 network --device eth0 --bootproto dhcp
9 firewall --disabled --port=22:tcp
11 selinux –disabled
12 rootpw redhat //設定預設密碼為redhat
13 timezone --utc Asia/Shanghai
14 bootloader --location=mbr --driveorder=sda --append="rhgb quiet"
15 # The following is the partition information you requested
16 # Note that any partitions you deleted are not expressed
17 # here so unless you clear all partitions first, this is
18 # not guaranteed to work
19 #clearpart --linux --drives=sda
20 #part /boot --fstype ext3 --size=100 --ondisk=sda
21 #part pv.2 --size=0 --grow --ondisk=sda
22 #volgroup VolGroup00 --pesize=32768 pv.2
23 #logvol swap --fstype swap --name=LogVol01 --vgname=VolGroup00 --size=208 --grow --maxsize=41 6
24 #logvol / --fstype ext3 --name=LogVol00 --vgname=VolGroup00 --size=1024 --grow
25 bootloader
26 reboot
進行到現在為止,已經走完了兩大步,還有一大步就大功告成啦,是以,還需要加油哦!
切換回iso目錄:
#cd iso/
# createrepo -g repodata/comps.xml ../iso
(注釋:在執行這個步驟時,有可能會提示沒有沒有createrepo指令,解決辦法是切換至/media/cdrom/CentOS/目錄下,安裝createrepo軟體包。
#rpm -ivh createrepo-0.4.11-3.el5.noarch.rpm
安裝完成後切換回iso目錄。
下面執行最後一個指令,也是最長的一個指令,終于可以完成任務了,成就感啊!
#mkisofs -o MyCENTOS.iso -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -R -J -v -T iso/
時間有點長,要耐心一些,等待一下就可以啦!!
卻換回根目錄,可以看到名稱為MyCENTOS.iso的檔案,好了,大功告成,鏡像檔案
制作成功。
後面的工作就是把鏡像檔案複制出來,然後在實體機上建立一台虛拟機測試一下,驗證剛剛的勞動成果!
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
這些天再考慮如何寫一個腳本,讓上面的步驟自動運作并生成一個鏡像檔案。這個有難度,思考中…….
本文轉自 linuxtro 51CTO部落格,原文連結:http://blog.51cto.com/linuxtro/274911,如需轉載請自行聯系原作者