天天看點

用安裝好的虛拟機制作CentOSCD光牒鏡像

制作條件:一台裝有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,如需轉載請自行聯系原作者

繼續閱讀