制作条件:一台装有CentOS系统的计算机或者虚拟机,CentOS光盘。本次试验所用虚拟机为Vmware Workstation-7.0.0,CentOS光盘版本为CentOS-5.4-i386-bin-DVD。

步骤如下:

打开虚拟机的控制台,创建iso以及iso/CentOS文件夹

#mkdir-pv iso/CentOS

使用ls命令查看文件夹是否创建成功,在这个目录下,还看到有一个文件是install.log,用vim编辑器或者是cat命令查看到这个文件中有很多以Installing开头的文件(这些文件就是此虚拟机上已经安装过的系统文件,Installing后面的是文件名),现在需要从光盘上找到与它们一样的文件,然后把这些从光盘上找到的文件复制的虚拟机上,请注意,在install.log文件中,有一些文件是以数字开头的,例如:Installing 30:bind-9.3.6-4.P1.el5.i386

然而这些文件数目很多,而且,我们还知道,在光盘文件中,文件是以.rpm结尾的。Install.log中的文件名和光盘中的文件名并不是完全相同的。真是困难重重啊!呵呵……要解决这些问题,当然不可能一个一个的从光盘上复制啦!这时,linux的强大之处就体现出来了! 完全可以整个shell脚本来执行。但是在整脚本之前,还有一些准备工作要完成。

先建立一个文件,命名为packages.txt这个文件的作用就是放置那些从Install.log文件中整出来的东东!那么这些东东是怎么整出来的呢?请看命令:

#awk ‘/^Installing/{print $2}’Install.log|sed‘s/^[0-9]*//g’>>packages.txt

现在好了,知道packages.txt文件的作用了吧?接下来做什么呢?

接下来的任务是挂载光盘:

# 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 "$LINEcopy is error" >>cperr.txt

done < $FILE

~

~

好了,脚本写好了!要记得保存哦!当然,脚本写好后,要调试一下先!执行命令:

bash –ncprpm.sh

再来执行一下脚本(可千万别忘记执行脚本啊!本人就是因为这个问题,白白浪费了大半天的时间):

bash –xcprpm.sh

执行完脚本后,查看一下/root/iso/CentOS/目录下是否有存在文件。(看到目录下很多的东东,总算觉得刚才写脚本的心血没有白费啊!^_^)

做到这里,已经向前迈了一大步啦!来庆贺一下吧?

切换到光盘目录下:

#cd /media/cdrom

将/media/cdrom目录下的一些文件复制到/root/iso目录下:

#cp -r .treeinfo .discinfo p_w_picpaths/ isolinux/ repodata/ RPM-GPG-KEY-CentOS-5 EULAGPL /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行改为rootpwredhat

第9和第11行的“enabled”改为“disabled”

在第23后面添加以下两行:

bootloader

reboot

本人把这些代码复制到这里,只是想说明一些其他的设置。在第一段的14—23行被#注释的部分,代表着磁盘的自动分区,如打开这些设置,系统在安装时会自动分区,但同时也可能会出现意想不到的错误,因此不建议初试者进行设置。

#cd

#cpanaconda-ks.cfg iso/ks.cfg

#cdiso/

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=416

23 #logvol / --fstype ext3 --name=LogVol00 --vgname=VolGroup00 --size=1024 --grow

修改的结果为:

1 # Kickstart file automatically generated by anaconda.

2 text

3 cdrom

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

10 authconfig --enableshadow --enablemd5

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=416

24 #logvol / --fstype ext3 --name=LogVol00 --vgname=VolGroup00 --size=1024 --grow

25 bootloader

26 reboot

进行到现在为止,已经走完了两大步,还有一大步就大功告成啦,所以,还需要加油哦!

切换回iso目录:

#cdiso/

# createrepo-g repodata/comps.xml ../iso

(注释:在执行这个步骤时,有可能会提示没有没有createrepo命令,解决办法是切换至/media/cdrom/CentOS/目录下,安装createrepo软件包。

#rpm -ivhcreaterepo-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的文件,好了,大功告成,镜像文件

制作成功。

后面的工作就是把镜像文件复制出来,然后在物理机上新建一台虚拟机测试一下,验证刚刚的劳动成果!

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

这些天再考虑如何写一个脚本,让上面的步骤自动运行并生成一个镜像文件。这个有难度,思考中…….

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐