centos定制

转载自cold night's Linux Blog

根据CentOS定制自己的发行版

本文使用的环境为CentOS5.5 32位.
首先要做的是最小化安装CentOS,就是安装过程中选择要安装包的时候使用自定义,然后去除所有要安装的包,系统就会默认最小化安装系统.
装完系统会再root的根目录下生成3个文件,我们用到两个:
anaconda-ks.cfg : kisckstart脚本,记录安装过程的配置,包括选择语言,选择键盘,分区,root密码等等等等
install.log            : 记录安装过程中所安装的包
我们首先要做的就是建立我们的自己发行版的目录,在一个剩余大小大于4G的分区创建自己发行版的目录,比如我的发行版叫ColdOS,然后挂载DVD光盘,把光盘上的内容复制到自己发行版的目录:

01 mkdir /usr/cold                 # 创建发行版目录
02 mount /dev/hdc /mnt             # 挂载IDE光驱
03 # 或
04 mount /dev/cdrom /mnt
05 # 如挂载本地ISO镜像使用下面命令
06 mount -o loop iso路径 /mnt
07  
08 # 然后使用 tar命令把光盘的内容复制到/usr/cold
09 # 都说这个命令比cp快,在256内存的虚拟机测试也就快了几十秒,个人觉得最大的用处
10 # 就是解决了cp无法复制隐藏文件的问题
11 ( cd /mnt/ && tar -cf - . ) ¦ (cd /usr/cold && tar -xvfp - )         # tar -p选项是保留原有权限

复制完成后发行版目录应该是:

01 ls -la /usr/cold
02 total 511
03 drwxr-xr-x  7 root root   6144 Apr 30  2010 .
04 drwxr-xr-x 21 root root   4096 Dec 13 18:07 ..
05 drwxrwxr-x  2  501  501 421888 Apr 30  2010 CentOS
06 -rw-r--r--  1 root root    112 Apr 30  2010 .discinfo
07 -rw-r--r--  1 root root    212 Jun 15  2008 EULA
08 -rw-r--r--  1 root root  18009 Jun 15  2008 GPL
09 drwxr-xr-x  4 root root   2048 Apr 30  2010 images
10 drwxr-xr-x  2 root root   2048 Apr 30  2010 isolinux
11 drwxr-xr-x  2 root root  22528 Apr 27  2010 NOTES
12 -rw-r--r--  1 root root    655 Apr 27  2010 RELEASE-NOTES-cs
13 -rw-r--r--  1 root root   1401 Apr 27  2010 RELEASE-NOTES-cs.html
14 -rw-r--r--  1 root root    839 Apr 27  2010 RELEASE-NOTES-de
15 -rw-r--r--  1 root root   1571 Apr 27  2010 RELEASE-NOTES-de.html
16 -rw-r--r--  1 root root    694 Apr 27  2010 RELEASE-NOTES-en
17 -rw-r--r--  1 root root   1367 Apr 27  2010 RELEASE-NOTES-en.html
18 -rw-r--r--  1 root root    694 Apr 27  2010 RELEASE-NOTES-en_US
19 -rw-r--r--  1 root root   1367 Apr 27  2010 RELEASE-NOTES-en_US.html
20 -rw-r--r--  1 root root    788 Apr 27  2010 RELEASE-NOTES-es
21 -rw-r--r--  1 root root   1619 Apr 27  2010 RELEASE-NOTES-es.html
22 -rw-r--r--  1 root root    852 Apr 27  2010 RELEASE-NOTES-fr
23 -rw-r--r--  1 root root   1641 Apr 27  2010 RELEASE-NOTES-fr.html
24 -rw-r--r--  1 root root    766 Apr 27  2010 RELEASE-NOTES-ja
25 -rw-r--r--  1 root root   1565 Apr 27  2010 RELEASE-NOTES-ja.html
26 -rw-r--r--  1 root root    706 Apr 27  2010 RELEASE-NOTES-nl
27 -rw-r--r--  1 root root   1433 Apr 27  2010 RELEASE-NOTES-nl.html
28 -rw-r--r--  1 root root    752 Apr 27  2010 RELEASE-NOTES-pt_BR
29 -rw-r--r--  1 root root   1480 Apr 27  2010 RELEASE-NOTES-pt_BR.html
30 -rw-r--r--  1 root root    801 Apr 27  2010 RELEASE-NOTES-ro
31 -rw-r--r--  1 root root   1473 Apr 27  2010 RELEASE-NOTES-ro.html
32 drwxr-xr-x  2 root root   2048 Apr 30  2010 repodata
33 -rw-r--r--  1 root root   1512 Jun 15  2008 RPM-GPG-KEY-beta
34 -rw-r--r--  1 root root   1504 Jun 15  2008 RPM-GPG-KEY-CentOS-5
35 -r--r--r--  1 root root   7048 Apr 30  2010 TRANS.TBL
36 -rw-r--r--  1 root root    413 Apr 30  2010 .treeinfo

现在对系统进行精简:

1 rm -f RELEASE-NOTES-*
2  rm -rf NOTES/
3 rm -f RPM-GPG-KEY-*
4 rm -f EULA
5 rm -f GPL
6 rm -f CentOS/*                          # 删除所有rpm包,等会根据install.log复制过来,保证系统最小化

精简完后应该是这样子的:

01 s -la /usr/cold/
02 total 20
03 drwxr-xr-x  6 root root   4096 Dec 13 19:39 .
04 drwxr-xr-x 16 root root   4096 Dec 13 23:14 ..
05 drwxrwxr-x  3  501  501 172032 Dec 14 02:23 CentOS
06 -rw-r--r--  1 root root    112 Apr 30  2010 .discinfo
07 drwxr-xr-x  4 root root   4096 Apr 30  2010 images
08 drwxr-xr-x  2 root root   4096 Dec 14 00:36 isolinux
09 drwxr-xr-x  2 root root   4096 Dec 14 01:42 repodata
10 -r--r--r--  1 root root   7048 Apr 30  2010 TRANS.TBL
11 -rw-r--r--  1 root root    413 Apr 30  2010 .treeinfo

现在根据install.log创建packages.list,用来安装所需要的rpm包:

01 # 根据install.log,提取其中的rpm包名,
02 cat install.log ¦ grep Installing ¦ awk '{print $2}' ¦ awk -F':' '{ if (NF==2){ print $2} else {print $1}}' > packages.list
03 # 如果仅仅最小化安装就失去了定制自己的发行版的意义
04 # 向packages.list添加几个常用的工具,需要先用yum安装一遍记住包的依赖关系
05 # 把依赖关系的包也放入packages.list
06 # 比如man依赖bzip2 groff
07 vi packages.list
08 # 末尾添加如下内容:
09 setuptool
10 lszrz wget
11 kernel-devel
12 kernel-headers
13 libgomp
14 cpp
15 glibc-headers
16 glibc-devel
17 gcc
18 make
19 which
20 bzip2
21 groff
22 man
23 # 根据packages.list进行复制
24 for i in `cat packages.list `;do  cp -p -f  /mnt/CentOS/"$i"* /usr/cold/CentOS/;done

复制完所需的RPM包之后我们如何来让系统安装的时候安装我们自定义添加的包呢?
首先我们需要编辑repodata/comps.xml,但是comps.xml文件内容太杂,大概 2万多行,所以我们需要对comps.xml进行一个预处理:

1 # comps.xml包含最多的是各国语言
2 # 我们先去除不需要的语言,这里我只需要英文,
3 sed -ri '/xml:lang/ {/en_GB/!d}' comps.xml  # 如果需要保留其他语言比如中文,在en_GB后添加"¦zh_CN"

去除了各国语言的comps.xml大概包含2000多行,现在我们要进一步处理,删除除了id为core的group的其他节点,删除完后comps.xml大概只剩下73行.现在我们要把我们自己添加的包顶一个group节点,在紧跟id为core的group节点(也就是</group>后面)添加如下内容:

01 <group>
02     <id>useful</id>
03     <name>Useful</name>
04     <name xml:lang="en_GB">Useful</name>
05     <description>Useful tools for administartor </description>
06     <description xml:lang="en_GB">Useful tools for administartor</description>
07     <default>true</default>
08     <uservisible>false</uservisible>
09     <packagelist>
10       <packagereq type="default">setuptool</packagereq>
11       <packagereq type="default">lszrz</packagereq>
12       <packagereq type="default">wget</packagereq>
13       <packagereq type="default">kernel-headers</packagereq>
14       <packagereq type="default">libgomp</packagereq>
15       <packagereq type="default">cpp</packagereq>
16       <packagereq type="default">glibc-headers</packagereq>
17       <packagereq type="default">glibc-devel</packagereq>
18       <packagereq type="default">gcc</packagereq>
19       <packagereq type="default">make</packagereq>
20       <packagereq type

你可能感兴趣的:(linux,centos,timezone,语言,keyboard,2010)