设为首页收藏本站

LinuxTone | 运维专家网论坛 - 最棒的Linux运维与开源架构技术交流社区!

 找回密码
 注册

QQ登录

只需一步,快速开始

#公告#抱歉,网站将关闭,不再开放。由于PC时代已远逝 。在这个后移动互联网时代,我们继续携手前行,保持对技术的热情。共同构建linuxtone知识星球欢迎加入,一起讨论技术、招聘人才、分享资源。请新老linuxtone人 扫码移步到 知识星球:linuxtone

学习是一种信仰!分享是一种快乐!能力= 心态 * 沟通 * 知识 (你的每一天需要正能量!)

 网站的发展需要你贡献一份力量!希望你能每天坚持看贴1小时,并回答网友的问题!祝你在浏览论坛的过程中取得进步!谢谢!linuxtone加油!大家加油! 友情提示: 你今天学习了吗?你今天进步了吗?少一点抱怨!多一点进步!Life is short ! Why not linuxtone ?  

网站的发展、感谢每位坛友的努力!

查看: 47204|回复: 84

利用CentOS快速构建自己的发行版   [复制链接]

LT管理团队

社区首席勤杂工

Rank: 9Rank: 9Rank: 9

签到
473
注册时间
2008-5-19
最后登录
2019-8-14
在线时间
1946 小时
阅读权限
200
积分
59239
帖子
2551
主题
1209
精华
25
UID
1

LT总司令

发表于 2009-4-11 23:15:47 |显示全部楼层

利用CentOS快速构建自己的发行版

                                                             作者:NetSeek  http://www.linuxtone.org

推荐:http://bbs.linuxtone.org/thread-7685-1-1.html

【背景】
我的朋友不少是个人网站站长并且网站运营的都很不错。但是每次业务扩容装Linux系统都让他们很头痛。有的IDC技术不会装Linux系统,或者有的就是装一次系统收取一定的费用。为此一个朋友向我提出能不能做一个精简一点的CentOS发行版,并且针对LinuxTone论坛里的<<构建高性能的LEMP第三版>做个版本并且集成初始化优化脚本。为此我建立了LTOS这个发行版。以下是具体的制作过程和朋友们一起分享!希望能共同进步
并且支持http://www.linuxtone.org的发展!

一.制作LTOS具体过程
光盘结构介绍
* isolinux 目录存放光盘启动时的安装界面信息
*images    目录包括了必要的启动映像文件
*CentOS   目录存放安装软件包及信息
*.discinfo 文件是安装价质的识别信息
*lemp.tar.gz 文件存放系统初始化及其相关程序安装脚本.
》》环境说明:CentOS 5.3-i386  Vmware Workstation上完成制作工作.


1.安装制作发行版所需的基本软件包
# yum -y install anaconda-runtime createrepo yum-utils anacondaanaconda-help busybox-anaconda mkisofs


2.制作ltos源文件夹
# mkdir /ltos
# mkdir /mnt/cdrom
# mount -t iso9660 -o loop /dev/cdrom /mnt/cdrom/ 挂载光盘镜像

或者挂载ISO文件到/mnt/cdrom
# mount -t iso9660 -o loop centos.xxx.iso/mnt/cdrom
CentOSISO文件挂载到/mnt/cdrom目录
# cd /mnt/cdrom
# tar -cf - . | ( cd /ltos ; tar -xvpf - )
//
/mnt/cdrom里的文件利用tar全部拷贝到/ltsos这个目录下.
#cd /ltos
//
进入此目录删除一些无关的文件,仍后进入后面的工作.

[root@server ltos]# ls -al
total 88
8 16:06 CentOS
8 16:43 .discinfo

4096 Mar 21 23:04 images

4096 Apr 12 00:00 isolinux

1root root 14371 Apr 11 23:16 lemp.tar.gz//
这个软件包是我们后面要建立的,读者可以分析一下后面的ks.cfg脚本就可以明白他的用途.
4096 Apr 11 21:00 repodata

7048 Mar 21 23:05 TRANS.TBL




3.定制package.list软件包清单
如安装一个CentOS5.3的系统,根据自己的需求选择软件包;如果想你的系统很小,建议选择最少的包。安装完成以后,在系统里会产生日志。日文文件存放在/root/install.log
# cat install.log | grepInstalling | sed 's/Installing //g'|sed 's/^[0-9]\+://g' > packages.list
#mkdir /ltos/CentOS
建立存放rpm包的目录.

创建自动提取相关rpm脚本:
#vi cprpms.sh
#!/bin/bash
DEBUG=0
LT_CD=/mnt/cdrom
ALL_RPMS_DIR=/mnt/cdrom/CentOS
#
挂载光盘存放的目录
LT_RPMS_DIR=/ltos/CentOS
#
存放RPM包的目录
packages_list=/root/packages.list
number_of_packages=`cat $packages_list | wc -l`
i=1
while [ $i -le $number_of_packages ] ; do
line=`head -n $i $packages_list | tail -n -1`
name=`echo $line | awk '{print $1}'`
version=`echo $line | awk '{print $3}' | cut -f 2 -d :`
if [ $DEBUG -eq "1" ] ; then
echo $i: $line
echo $name
echo $version
fi
if [ $DEBUG -eq "1" ] ; then
ls $ALL_RPMS_DIR/$name-$version*
if [ $? -ne 0 ] ; then
echo "cp $ALL_RPMS_DIR/$name-$version* "
fi
else
echo "cp $ALL_RPMS_DIR/$name-$version*$LT_RPMS_DIR/"
cp $ALL_RPMS_DIR/$name-$version* $LT_RPMS_DIR/
# in case the copy failed
if [ $? -ne 0 ] ; then
echo "cp $ALL_RPMS_DIR/$name-$version* "
cp $ALL_RPMS_DIR/$name* $LT_RPMS_DIR/
fi
fi
i=`expr $i + 1`
done

执行以上脚本将定制ltos必要的rpm复制到/ltos/CentOS目录

返回到/ltos目录下,执行createrepo程序生成repodata下的comps.xml文件
#cd /ltos
#createrepo -g repodata/comps.xml .

4.配置kickstart脚本

通过CentOS5.3定制安装系统以后,会在系统里站生一个kickstart安装脚本(/root/anaconda-ks.cfg)
# cp anaconda-ks.cfg /ltos/isolinux/ks.cfg
# vi/ltos/isolinux/ks.cfg 并修改脚本如下:
# Kickstart file automatically generated by anaconda.
# Install CentOS instead of Upgrade
install
text
#install from cd-rom
cdrom
lang en_US.UTF-8
keyboard us

# Skip the X Configuration
skipx

network --device eth0 --bootproto dhcp--hostname ltos.linuxtone.org
rootpw --iscrypted$1$jPZf0P0r$JRe7pd.5wq9k.VZEMOgdq/

# Setup the firewall with SSH, HTTP/S, Syslog, Webmin,and Netflow enabled
firewall --enabled --port=22:tcp --port=69:udp--port=80:tcp --port=443:tcp

authconfig --enableshadow --enablemd5
# Disable SELinux
selinux --disabled

timezone --utc Asia/Shanghai

# Clear the Bootloader and load it to the Master BootRecord
bootloader --location=mbr
zerombr yes

# Set the Mouse
mouse generic3ps/2

# The following is the partition information yourequested
# Note that any partitions you deleted are notexpressed
# here so unless you clear all partitions first, thisis
# not guaranteed to work
clearpart --all --initlabel
part /boot --fstype ext3 --size=100 --asprimary
part / --fstype ext3 --size=25000
part swap --size=4096
part /data --fstype ext3 --size=1 --grow


#--- Reboot the host after installation is done
reboot

%packages
@development-libs
@editors
@system-tools
@text-internet
@legacy-network-server
@dialup
@core
@base
@mail-server
@development-tools
audit
net-snmp-utils
sysstat
iptraf
dstat
tftp
lynx
device-mapper-multipath
imake
-zsh
-vnc
-zisofs-tools
-xdelta
-openldap-clients
-samba-client
-fetchmail
-dovecot
-spamassassin

#
#
------- BeginLEMP Install ---------

#

%post --nochroot

# Mount CDROM
mkdir -p /mnt/cdrom
mount -r -t iso9660 /tmp/cdrom /mnt/cdrom

# Copy our tar file and extract it
cp /mnt/cdrom/lemp.tar.gz /mnt/sysimage/tmp/lemp.tar.gz> /dev/null
cd /mnt/sysimage/tmp/
tar -zxvf lemp.tar.gz > /dev/null


# Move the contents of the tar into their new locations

cp -R /mnt/sysimage/tmp/boot/* /mnt/sysimage/boot/ >/dev/null 2>/dev/null
cp -R /mnt/sysimage/tmp/etc/* /mnt/sysimage/etc/ >/dev/null 2>/dev/null

# Unmount CDROM
umount /mnt/cdrom


%post

#vim syntax on
sed -i "8 s/^/alias vi='vim'/" /root/.bashrc2>/dev/null
echo 'syntax on' > /root/.vimrc 2>/dev/null

# Disable IPv6 until Cacti at least supports it
echo "alias net-pf-10 off" >>/etc/modprobe.conf
echo "alias ipv6 off" >> /etc/modprobe.conf
/sbin/chkconfig --level 35 ip6tables off

#init_ssh
ssh_cf="/etc/ssh/sshd_config"
sed -i -e '74 s/^/#/' -i -e '76 s/^/#/' $ssh_cf
sed -i "s/#UseDNS yes/UseDNS no/" $ssh_cf
#client
sed -i -e '44 s/^/#/' -i -e '48 s/^/#/' $ssh_cf

# Remove the ISO File translation files
find / -name TRANS.TBL -exec rm {} \; /dev/null2>/dev/null


# Remove some unneeded services
#--------------------------------------------------------------------------------
cat << EOF
+--------------------------------------------------------------+
|
===Welcome to Tunoff services ===
|

+--------------------------------------------------------------+
EOF
#---------------------------------------------------------------------------------
for i in `ls /etc/rc3.d/S*`
do

CURSRV=`echo $i|cut -c 15-`


echo $CURSRV
case $CURSRV in

crond |irqbalance | microcode_ctl | network | random | sendmail | sshd | syslog |local | mysqld )


echo"Base services, Skip!"


;;


*)



echo "change $CURSRV to off"


chkconfig --level 235 $CURSRV off


service$CURSRV stop


;;

esac
done

#
file descriptors
ulimit -HSn 65535


echo -ne "
* soft nofile 65536
* hard nofile 65536
" >>/etc/security/limits.conf

.

.个性化定制你的系统(问答形式)

1.如何定制安装开机画面:
启动画面用的是一种比较奇怪的格式lss16,它限制图片使用16种颜色,除去前景和背景色只能有14种颜色。我们需要ppmtolss16giftopnm等程序,系统一般默认都安装了。
一般用gimp生成一个index模式的gif图形,颜色限制为14, 然后通过如下的办法进行转:

安装yum -y install syslinux
giftopnm< splash.gif | ppmtolss16 > splash.lss

另外你还需要修改isolinux/boot.msg文件,做一些个性化的提示.

如何生成高质量的图。
先用photoshop打开任何一张图片,然后在文件的下拉菜单里,保存的时候选择“保存为WEB和设备使用格式“,再然后选择gif再选择16保存就OK.
仍后利用giftopnm < splash.gif | ppmtolss16 >splash.lss 转换即可.

2.如何生成GRUPxpm文件?
(1) 将备一张640 x 480 16色图片,档案类型为JPG的格式
(2)convert grub.gif-colors 14 -geometry 640x480! splash.xpm && gzip -9 splash.xpm
(3) 直接替换/boot/grup/splash.xpm.gz 文件即可.

? 利用上面方法生成的图片可能无法显示,或者质量不高,如何生成高质量的grub图片呢.
利用文中后面我提供的ltospackl.tar.gz里面的grubtool.exe即可在windows平台将jpg,bmp图生成为.xpm.gz格式的文件,直接替换/boot/grup下的文件即可.

2.如何去掉安装过程中的CentOS字样?
在安装光盘里面有两个.buildstamp文件,一个位于stage2.img中,一个位于initrd.img中,
安装光盘运行时读取的是initrd.img中的那个.buildstamp
文件,所以只要把initrd.img文件改了就可以了。
如何解压initr.dimg文件:
2.6内核中的initrd.img采用cpio压缩,不再是2.4内核使用的ext2格式,无法使用mount-o loop 挂载。需要使用gunzip解压缩,然后再使用
利用cpioimg解包
# cd /ltos/isolinux/
# cp
initrd.img

/tmp/initrd.img.gz

# cd /tmp
# gunzip initrd.img.gz
# mkdir initrd
# mv initrd.img initrd
# cd initrd
# cpio -ivmd < initrd.img


仍后修改.buildstamp文件,将CentOS改为LTOS即可.
如何制作initrd.img文件:
#假设当前目录位于准备好的initrd文件系统的根目录下
# find . | cpio -c -o >../initrd.img
# gzip ../initrd.img
# cp initrd.img /ltos/isolinux/

仍后将initrd.img复制到/ltos/isolinux/

3. 如何替换安装以后的grub?
在安装光盘里的ks.cfg文件里写好替换splash.xpm.gz文件即可.

4. 如何去掉启动过程中的"CentOSrelease 5 (Final)"
在安装光盘里的ks.cfg文件里写好脚本,直接替换/etc/redhat-release即可.

.打包生成ISO文件发布
# cd /ltos
# declare -x discinfo=`head -1 .discinfo`

# createrepo -u "media://$discinfo" -grepodata/comps.xml .


生成ISO文件
#mkisofs -R -J -T -r -l -d -allow-multidot-allow-leading-dots -no-bak -o /tmp/ltos-0.1-i386.iso \
-b isolinux/isolinux.bin -c isolinux/boot.cat-no-emul-boot -boot-load-size 4 -boot-info-table .

Md5
/usr/lib/anaconda-runtime/implantisomd5/tmp/ltos-0.1-i386.iso


相关脚本及制作工具下载:
http://www.linuxtone.org/project/ltos/ltospack.tar.gz
//
相关脚本及工具下载.

.安装光盘效果演示图

启动安装光盘

Grub界面


系统登陆界面演示


.参考文档并对以下文章作者表示感谢和致敬!

1.http://lingxiang.tang.googlepages.com/createalesssizecentos5

2. http://sipx-wiki.calivia.com/ind ... _for_sipX_on_CentOS

3. http://linux.chinaunix.net/ebook/doc/2009/04/02/1095757.shtml

4. http://www.ibm.com/developerworks/cn/linux/l-k26initrd/

下载PDF方便阅读(更新): 利用CentOS快速构建自己的发行版.pdf (163.47 KB, 下载次数: 902)
相关脚本及软件下载: ltospack.tar.gz (1.42 MB, 下载次数: 150)
install.png
grub.png
login.png
已有 3 人评分积分 收起 理由
falcon + 2
抚琴煮酒 + 12
gyl4802959 + 24 精品文章

总评分: 积分 + 38   查看全部评分

&amp;lt;-sina_sign,1762622645,2a5b1a59,10-&amp;gt;感谢大家对linuxtone的支持!&amp;lt;/strong&amp;gt;

LT资深版主

犯强汉者,虽远必诛!

Rank: 8Rank: 8

注册时间
2009-2-1
最后登录
2016-2-19
在线时间
548 小时
阅读权限
150
积分
7434
帖子
824
主题
88
精华
3
UID
1215

LT同学

发表于 2009-4-11 23:16:46 |显示全部楼层
好文章,谢谢老大无私分享啊!
<-sina_sign,1836665025,1->

使用道具 举报

LT管理团队

向Linuxsir的哈密瓜大哥看齐 ...

Rank: 9Rank: 9Rank: 9

注册时间
2008-6-5
最后登录
2019-1-23
在线时间
1828 小时
阅读权限
200
积分
63902
帖子
715
主题
199
精华
4
UID
46

LT同学

发表于 2009-4-12 14:44:27 |显示全部楼层
恭喜老大……
收藏了……
{:2_35:}{:2_35:}{:2_35:}
哈密瓜!一个热爱linux的水果!
gtalk/msn:hamgua@gmail.com
sina微博:http://weibo.com/hamgua
LTmail:hamgua@linuxtone.org
是雄鹰就有展翅飞翔的时候,不是雄鹰要制造展翅飞翔的时候!

使用道具 举报

LT管理团队

想飞的鸟

Rank: 9Rank: 9Rank: 9

注册时间
2008-6-20
最后登录
2015-7-7
在线时间
594 小时
阅读权限
200
积分
23002
帖子
512
主题
83
精华
3
UID
95
发表于 2009-4-12 18:08:59 |显示全部楼层
哈哈,别的话不说了,谁用谁知道
&amp;lt;-sina_sign,1703616862,29fb6047,1-&amp;gt;

使用道具 举报

Rank: 3Rank: 3

注册时间
2009-1-13
最后登录
2014-5-5
在线时间
17 小时
阅读权限
30
积分
270
帖子
55
主题
13
精华
0
UID
915
发表于 2009-4-13 09:59:45 |显示全部楼层
谢了!~~~~~~~~~~~~~好东西。。。。辛苦老大
QQ:346829213
我的BLOG

使用道具 举报

Rank: 3Rank: 3

注册时间
2009-3-23
最后登录
2019-3-24
在线时间
4 小时
阅读权限
30
积分
377
帖子
5
主题
3
精华
0
UID
2068
发表于 2009-4-13 10:07:21 |显示全部楼层
不错。收藏了。谢谢老大的好文

使用道具 举报

Rank: 1

注册时间
2008-11-17
最后登录
2010-10-27
在线时间
1 小时
阅读权限
1
积分
5
帖子
8
主题
0
精华
0
UID
574
发表于 2009-4-13 10:14:07 |显示全部楼层
太强悍了。支持一下。

使用道具 举报

LT管理团队

想飞的鸟

Rank: 9Rank: 9Rank: 9

注册时间
2008-6-20
最后登录
2015-7-7
在线时间
594 小时
阅读权限
200
积分
23002
帖子
512
主题
83
精华
3
UID
95
发表于 2009-4-13 12:10:49 |显示全部楼层
好像漏了点东西 ks.cfg默认安装时应该是识别不了!需要在 isolinux.cfg 中加上这个文件吧,要不还是会用默认的方法来安装!
这个地方写了:http://bbs.linuxtone.org/thread-1240-1-1.html
&amp;lt;-sina_sign,1703616862,29fb6047,1-&amp;gt;

使用道具 举报

LT管理团队

社区首席勤杂工

Rank: 9Rank: 9Rank: 9

注册时间
2008-5-19
最后登录
2019-8-14
在线时间
1946 小时
阅读权限
200
积分
59239
帖子
2551
主题
1209
精华
25
UID
1

LT总司令

发表于 2009-4-13 12:32:01 |显示全部楼层
是啊,我太粗心了,补上:)?
&amp;lt;-sina_sign,1762622645,2a5b1a59,10-&amp;gt;感谢大家对linuxtone的支持!&amp;lt;/strong&amp;gt;

使用道具 举报

LT管理团队

想飞的鸟

Rank: 9Rank: 9Rank: 9

注册时间
2008-6-20
最后登录
2015-7-7
在线时间
594 小时
阅读权限
200
积分
23002
帖子
512
主题
83
精华
3
UID
95
发表于 2009-4-13 13:00:22 |显示全部楼层
好像漏了点东西 ks.cfg默认安装时应该是识别不了!需要在 isolinux.cfg 中加上这个文件吧,要不还是会用默认的方法来安装!
这个地方写了:http://bbs.linuxtone.org/thread-1240-1-1.html
&amp;lt;-sina_sign,1703616862,29fb6047,1-&amp;gt;

使用道具 举报

LT管理团队

社区首席勤杂工

Rank: 9Rank: 9Rank: 9

注册时间
2008-5-19
最后登录
2019-8-14
在线时间
1946 小时
阅读权限
200
积分
59239
帖子
2551
主题
1209
精华
25
UID
1

LT总司令

发表于 2009-4-13 21:17:50 |显示全部楼层
PDF已经更新,详细参照PDF文件。

很多人关心kickstart的写法,具体可以参照此文档:
http://www.17xie.com/read-48524.html
&amp;lt;-sina_sign,1762622645,2a5b1a59,10-&amp;gt;感谢大家对linuxtone的支持!&amp;lt;/strong&amp;gt;

使用道具 举报

LT资深版主

犯强汉者,虽远必诛!

Rank: 8Rank: 8

注册时间
2009-2-1
最后登录
2016-2-19
在线时间
548 小时
阅读权限
150
积分
7434
帖子
824
主题
88
精华
3
UID
1215

LT同学

发表于 2009-4-13 21:47:02 |显示全部楼层
老大真热心啊!赞一个!
<-sina_sign,1836665025,1->

使用道具 举报

Rank: 3Rank: 3

注册时间
2009-1-14
最后登录
2012-12-19
在线时间
5 小时
阅读权限
30
积分
517
帖子
10
主题
2
精华
0
UID
938
发表于 2009-4-14 10:18:39 |显示全部楼层
支持一个
经典文章

使用道具 举报

Rank: 2

注册时间
2009-4-14
最后登录
2019-7-22
在线时间
13 小时
阅读权限
20
积分
147
帖子
15
主题
2
精华
0
UID
2458
发表于 2009-4-14 10:45:36 |显示全部楼层
新人报告,文章很不错,这是我要找的内容,真的要好好学习。。。很感觉楼主。。嘿嘿!

使用道具 举报

LT资深版主

醉了星星·醉月亮

Rank: 8Rank: 8

注册时间
2009-3-2
最后登录
2018-1-29
在线时间
331 小时
阅读权限
150
积分
10053
帖子
440
主题
59
精华
1
UID
1656

LT同学

发表于 2009-4-14 16:51:56 |显示全部楼层
以前一直想做,但苦于无时间,唉!.

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

IT运维专家网感谢您的支持

合作联系: QQ:67888954/MSN:cnseek@msn.com/mail:netseek@linuxtone.org

Archiver|手机版|感谢所有关心和支持过LinuxTone的朋友们 转载本站内容请注明原作者名及出处 ( 京ICP备08103151 )   |

GMT+8, 2019-10-23 19:01 , Processed in 0.077217 second(s), 17 queries , Apc On.

Powered by Discuz! X2 Licensed

© 2001-2011 Comsenz Inc.

回顶部