制作条件:一台装有
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 /medai/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 �Cn cprpm.sh
再来执行一下脚本(可千万别忘记执行脚本啊!本人就是因为这个问题,白白浪费了大半天的时间):
bash �Cx cprpm.sh
执行完脚本后,查看一下
/root/iso/CentOS/
目录下是否有存在文件。(看到目录下很多的东东,总算觉得刚才写脚本的心血没有白费啊!
^_^
)
做到这里,已经向前迈了一大步啦!来庆贺一下吧?
切换到光盘目录下:
#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
修改的结果为:
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 �Cdisabled
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
的文件,好了,大功告成,镜像文件
制作成功。
后面的工作就是把镜像文件复制出来,然后在物理机上新建一台虚拟机测试一下,验证刚刚的劳动成果!
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
这些天再考虑如何写一个脚本,让上面的步骤自动运行并生成一个镜像文件。这个有难度,思考中
…….