centos如何编写html,根据CentOS定制自己的发行版

本文使用的环境为CentOS5.5 32位.

首先要做的是最小化安装CentOS,就是安装过程中选择要安装包的时候使用自定义,然后去除所有要安装的包,系统就会默认最小化安装系统.

装完系统会再root的根目录下生成3个文件,我们用到两个:

anaconda-ks.cfg : kisckstart脚本,记录安装过程的配置,包括选择语言,选择键盘,分区,root密码等等等等

install.log            : 记录安装过程中所安装的包

我们首先要做的就是建立我们的自己发行版的目录,在一个剩余大小大于4G的分区创建自己发行版的目录,比如我的发行版叫ColdOS,然后挂载DVD光盘,把光盘上的内容复制到自己发行版的目录:

01mkdir /usr/cold# 创建发行版目录

02mount /dev/hdc /mnt# 挂载IDE光驱

03# 或

04mount /dev/cdrom /mnt

05# 如挂载本地ISO镜像使用下面命令

06mount -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选项是保留原有权限

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

01ls -la /usr/cold

02total 511

03drwxr-xr-x  7 root root   6144 Apr 30  2010 .

04drwxr-xr-x 21 root root   4096 Dec 13 18:07 ..

05drwxrwxr-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

09drwxr-xr-x  4 root root   2048 Apr 30  2010 images

10drwxr-xr-x  2 root root   2048 Apr 30  2010 isolinux

11drwxr-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

32drwxr-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

现在对系统进行精简:

1rm -f RELEASE-NOTES-*

2rm -rf NOTES/

3rm -f RPM-GPG-KEY-*

4rm -f EULA

5rm -f GPL

6rm -f CentOS/*# 删除所有rpm包,等会根据install.log复制过来,保证系统最小化

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

01s -la /usr/cold/

02total 20

03drwxr-xr-x  6 root root   4096 Dec 13 19:39 .

04drwxr-xr-x 16 root root   4096 Dec 13 23:14 ..

05drwxrwxr-x  3  501  501 172032 Dec 14 02:23 CentOS

06-rw-r--r--  1 root root    112 Apr 30  2010 .discinfo

07drwxr-xr-x  4 root root   4096 Apr 30  2010 images

08drwxr-xr-x  2 root root   4096 Dec 14 00:36 isolinux

09drwxr-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包名,

02cat 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

07vi packages.list

08# 末尾添加如下内容:

09setuptool

10lszrz wget

11kernel-devel

12kernel-headers

13libgomp

14cpp

15glibc-headers

16glibc-devel

17gcc

18make

19which

20bzip2

21groff

22man

23# 根据packages.list进行复制

24for 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# 我们先去除不需要的语言,这里我只需要英文,

3sed -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节点(也就

是后面)添加如下内容:

01

02useful

03Useful

04Useful

05Useful tools for administartor

06Useful tools for administartor

07true

08false

09

10setuptool

11lszrz

12wget

13kernel-headers

14libgomp

15cpp

16glibc-headers

17glibc-devel

18gcc

19make

20which

21bzip2

22groff

23man

24

25

上面添加了一个id为useful的group节点,下面把这两个节点放到一个类别里:

01

02cold

03Cold

04Cold

05Cold Linux

06Cold Linux

0792

08

09core

10useful

11

12

然后根据我们的comps.xml创建源:

1# 安装所需要的工具

2yum -y install createrepo anaconda anaconda-runtime

3# 创建源

4createrepo -g /usr/cold/repodata/comps.xml /usr/cold/CentOS

5# 完成后会有如下提示:

6224/224 - kudzu-1.2.57.1.24-1.el5.centos.i386.rpm

7Saving Primary metadata

8Saving file lists metadata

9Saving other metadata

由于我们编辑了comps.xml,所以comps.xml的sha值会改变,这样就会导致跟repomd.xml中所记录的不同,安装的时候会报

错:An error occurred umounting the CD. Please make sure you’are not

accessing  /mnt/source from the shell on tty2 an the click OK retry.

所以我们更改完comps.xml要计算comps.xml的sha值

1# 计算comps.xml的sha值

2sha1sum repodata/comps.xml

3c1d304cae50f969370a72d95e3cd2f71087fc73a  repodata/comps.xml

然后更新到repomd.xml中编辑repodata/repomd.xml找到location href=”repodata/comps.xml”/的一个data节点把sha值更新为刚刚计算的

1

2

3c1d304cae50f969370a72d95e3cd2f71087fc73a

41272586365

5

comps.xml里新加了一个咱们的useful 组,怎么使系统安装我们定义的包呢?怎么自定义安装过程呢?下面将讲解根据anaconda-ks.cfg文件定义安装过程:

首先复制anaconda-ks.cfg到我们的发行版目录:

01cp ~/anaconda-ks.cfg /usr/cold/isolinux/ks.cfg# 复制到isolinux下并命名为ks.cfg

02cd /usr/cold

03# 编辑kickstart脚本

04vi isolinux/ks.cfg

05install                            # 定义安装

06cdrom# 从光盘安装

07lang en_US.UTF-8# 安装语言为英文

08keyboard us# 定义键盘布局

09rootpw --iscrypted $1$OKNHES6P$tPdz9HxIp6.QUvulqxNwa.# 定义root密码(你安装的时候提供的密码)

10firewall --disable# 禁用防火墙

11authconfig --enableshadow --enablemd5# 使用md5加密

12selinux --disabled# 禁用selinux

13timezone --utc Asia/Chongqing# 定义时区

14bootloader --location=mbr --driveorder=sda# 在一块硬盘上安装mbr

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# 如果想安装过程中手动分区就把下面几行注释掉

20clearpart --linux --drives=sda# 格式化sda

21part / --fstype ext3 --size=1 --grow --maxsize=4096# 创建/分区大小为4个G

22part /usr --fstype ext3 --size=1 --grow# 创建/usr分区,大小为剩余空间

23part swap --size=1 --grow --maxsize=512# 创建swap大小为512M

24

25%packages# 定义安装时安装的包

26@core# 最小化安装的包

27@useful# 自定义的包

然后就要修改配置文件使安装时使用ks.cfg的配置来安装,修改isolinux.cfg:

01vi isolinux/isolinux.cfg

02default linux# 默认启动的label

03prompt 1

04timeout 10# 等待时间为1秒钟

05display boot.msg

06F1 boot.msg

07F2 options.msg

08F3 general.msg

09F4 param.msg

10F5 rescue.msg

11label linux

12kernel vmlinuz

13append ks=cdrom:/isolinux/ks.cfg initrd=initrd.img text#修改默认linux的label,ks使用自定义的ks,并文本启动

14label text

15kernel vmlinuz

16append initrd=initrd.img text

17label ks

18kernel vmlinuz

19append ks initrd=initrd.img

20labellocal

21localboot 1

22label memtest86

23kernel memtest

24append -

到这里配置就基本完成,下面就是制作iso镜像进行安装测试:

1# 首先安装工具

2yum -yinstall mkisofs

3# 创建iso镜像:

4cd /usr/cold

5mkisofs -R

-J -T -r -l -d -allow-multidot -allow-leading-dots -no-bak -o

/usr/ColdOS-0.1-i386.iso -b isolinux/isolinux.bin  -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table .

然后就可以把镜像下载下来进行安装测试了…下一篇就会介绍如何把之前一篇文章介绍的cfengine集成到自己的发行版

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值