SlideShare a Scribd company logo
Linux•Dn•RN«•Q                                                  http://blog.bypat.com




                                                       利用 CentOS 快速构建自己的发行版
                                             作者:                NetSeek                               http://www.linuxtone.org
                                             日期:               2009-4-10                                   版本号:V1


【背景】
我的朋友不少是个人网站站长并且网站运营的都很不错。但是每次业务扩容装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 anaconda anaconda-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                       将 CentOS 的 ISO 文件挂载到/mnt/cdrom 目录
# cd /mnt/cdrom
# tar -cf - . | ( cd /ltos ; tar -xvpf - )              //将/mnt/cdrom 里的文件利用 tar 全部拷贝到/ltsos 这个目录下.
#cd /ltos    //进入此目录删除一些无关的文件,仍后进入后面的工作.

[root@server ltos]# ls -al
total 88
drwxr-xr-x                     6 root root   4096 Apr 11 21:00 .
drwxr-xr-x 27 root root                      4096 Apr 12 05:26 ..
drwxr-xr-x                     2 root root 36864 Apr    8 16:06 CentOS
-rw-r--r--    1 root root                     97 Apr   8 16:43 .discinfo
drwxr-xr-x                     4 root root   4096 Mar 21 23:04 images
drwxr-xr-x                     2 root root   4096 Apr 12 00:00 isolinux
-rw-r--r--    1 root root 14371 Apr 11 23:16 lemp.tar.gz                   //这个软件包是我们后面要建立的,读者可以分析一下
后面的 ks.cfg 脚本就可以明白他的用途.
drwxr-xr-x                     2 root root   4096 Apr 11 21:00 repodata




              Linux•Dn•RN«•Q                                                  http://blog.bypat.com
Linux•Dn•RN«•Q                                         http://blog.bypat.com




-r--r--r--   1 root root       7048 Mar 21 23:05 TRANS.TBL




3.定制 package.list 软件包清单
如安装一个 CentOS5.3 的系统,根据自己的需求选择软件包;如果想你的系统很小,建议选择最少的包。安
装完成以后,在系统里会产生日志。日文文件存放在/root/install.log。
# cat install.log | grep Installing | 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`




              Linux•Dn•RN«•Q                                         http://blog.bypat.com
Linux•Dn•RN«•Q                                     http://blog.bypat.com




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 Boot Record
bootloader --location=mbr
zerombr yes


# Set the Mouse




            Linux•Dn•RN«•Q                                     http://blog.bypat.com
Linux•Dn•RN«•Q                                  http://blog.bypat.com




mouse generic3ps/2


# The following is the partition information you requested
# Note that any partitions you deleted are not expressed
# here so unless you clear all partitions first, this is
# 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




             Linux•Dn•RN«•Q                                  http://blog.bypat.com
Linux•Dn•RN«•Q                                 http://blog.bypat.com




-spamassassin


#
#    ------- Begin LEMP 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/.bashrc 2>/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




             Linux•Dn•RN«•Q                                 http://blog.bypat.com
Linux•Dn•RN«•Q                                             http://blog.bypat.com




# Remove the ISO File translation files
find / -name TRANS.TBL -exec rm {} ; /dev/null 2>/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
.
5.让系统从 kickstart 配置启动
# vi /ltos/ isolinux/ isolinux.cfg
default auto
prompt 1
timeout 600
display boot.msg




               Linux•Dn•RN«•Q                                             http://blog.bypat.com
Linux•Dn•RN«•Q                               http://blog.bypat.com




F1 boot.msg
F2 options.msg
F3 general.msg
F4 param.msg
F5 rescue.msg
label linux
kernel vmlinuz
append initrd=initrd.img
label text
kernel vmlinuz
append initrd=initrd.img text
label auto
kernel vmlinuz
append ks=cdrom:/isolinux/ks.cfg initrd=initrd.img
label ks
kernel vmlinuz
append ks initrd=initrd.img
label local
localboot 1
label memtest86
kernel memtest
append -


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

1.如何定制安装开机画面:
启动画面用的是一种比较奇怪的格式 lss16,它限制图片使用 16 种颜色,除去前景和背景色只能有 14 种颜
色。我们需要 ppmtolss16 giftopnm 等程序,系统一般默认都安装了。
一般用 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.如何生成 GRUP 的 xpm 文件?
(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 文件即可.




              Linux•Dn•RN«•Q                               http://blog.bypat.com
Linux•Dn•RN«•Q                                    http://blog.bypat.com




? 利用上面方法生成的图片可能无法显示,或者质量不高,如何生成高质量的 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 解压缩,然后再使用
利用 cpio 给 img 解包
# 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
# mv initrd.img.gz initrd.img
# cp initrd.img /ltos/isolinux/
仍后将 initrd.img 复制到/ltos/isolinux/


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


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


三.打包生成 ISO 文件发布
# cd /ltos
# declare -x discinfo=`head -1 .discinfo`
# createrepo -u "media://$discinfo" -g repodata/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




              Linux•Dn•RN«•Q                                    http://blog.bypat.com
Linux•Dn•RN«•Q                                  http://blog.bypat.com




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


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


四.安装光盘效果演示图
   启动安装光盘




    Grub 界面




            Linux•Dn•RN«•Q                                  http://blog.bypat.com
Linux•Dn•RN«•Q                         http://blog.bypat.com




    IT 运维专家网                                                            http://www.linuxtone.org


系统登陆界面演示




五.参考文档(并对以下文章作者表示感谢和致敬!                             )
 1. http://lingxiang.tang.googlepages.com/createalesssizecentos5
 2. http://sipx-wiki.calivia.com/index.php/A_Kickstart_CD_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/




IT 运维专家网------“我为人人,人人为我!知识源于分享,源于交流!”---LinuxTone 技术交流分享社区!


         Linux•Dn•RN«•Q                         http://blog.bypat.com

More Related Content

PDF
利用Cent Os快速构建自己的发行版
DOC
康盛创想项目部Linux 服务器部署标准(最新版)
DOC
Nagios的安装部署和与cacti的整合(linuxtone)
DOC
X64服务器 lamp服务器部署标准 new
PDF
Linux基础
DOC
Centos下安装apache + subversion
DOC
Linux安全配置终极指南
PDF
Lamp安全全攻略
利用Cent Os快速构建自己的发行版
康盛创想项目部Linux 服务器部署标准(最新版)
Nagios的安装部署和与cacti的整合(linuxtone)
X64服务器 lamp服务器部署标准 new
Linux基础
Centos下安装apache + subversion
Linux安全配置终极指南
Lamp安全全攻略

What's hot (20)

PDF
Ruby on Rails 開發環境建置 for Mac
PDF
unixtoolbox_zh_CN
PDF
Ruby on Rails 開發環境建置 for Ubuntu
KEY
Linuxguide4f2e
PPTX
5, system admin
PDF
开源Pass平台flynn功能简介
PPT
Hadoop平台搭建
DOC
CentOS5 apache2 mysql5 php5 Zend
PDF
Debian 套件打包教學指南 v0.19 - 繁體中文翻譯
PDF
Unixtoolbox zh cn
PPTX
20121111 linux intro
PPTX
Free Bsd7.2 Install V1.6
PDF
Clonezilla tutorial.v7
DOC
尚观Linux研究室 linux驱动程序全解析
PPT
20030623 linuxbasic and-security
PDF
Deployment with Capistrano
DOC
Oraliux+mysql5单机多实例安装文档
DOC
Kick start无人值守批量安装linux
PDF
Cent os 安装 subversion
PPTX
使用Rpm&yum进行基础软件管理
Ruby on Rails 開發環境建置 for Mac
unixtoolbox_zh_CN
Ruby on Rails 開發環境建置 for Ubuntu
Linuxguide4f2e
5, system admin
开源Pass平台flynn功能简介
Hadoop平台搭建
CentOS5 apache2 mysql5 php5 Zend
Debian 套件打包教學指南 v0.19 - 繁體中文翻譯
Unixtoolbox zh cn
20121111 linux intro
Free Bsd7.2 Install V1.6
Clonezilla tutorial.v7
尚观Linux研究室 linux驱动程序全解析
20030623 linuxbasic and-security
Deployment with Capistrano
Oraliux+mysql5单机多实例安装文档
Kick start无人值守批量安装linux
Cent os 安装 subversion
使用Rpm&yum进行基础软件管理
Ad

Viewers also liked (9)

PPT
高性能Web服务器nginx及相关新技术的应用
PDF
Bypat博客出品-服务器运维集群方法总结2
PDF
Bypat博客出品-服务器运维集群方法总结3
PDF
Bypat博客出品-手把手教你如何建立自己的linux系统lfs速成手册
PDF
ByPat博客出品Lvs+keepalived
PDF
高性能Web服务器nginx及相关新技术的应用
PDF
Bypat博客出品-利用cent os快速构建自己的发行版-进阶版v1.1
PPT
ByPat博客出品-高性能Web服务器nginx及相关新技术的应用
PDF
Bypat博客出品-linux+apache+mysql+php之linux系统安装
高性能Web服务器nginx及相关新技术的应用
Bypat博客出品-服务器运维集群方法总结2
Bypat博客出品-服务器运维集群方法总结3
Bypat博客出品-手把手教你如何建立自己的linux系统lfs速成手册
ByPat博客出品Lvs+keepalived
高性能Web服务器nginx及相关新技术的应用
Bypat博客出品-利用cent os快速构建自己的发行版-进阶版v1.1
ByPat博客出品-高性能Web服务器nginx及相关新技术的应用
Bypat博客出品-linux+apache+mysql+php之linux系统安装
Ad

Similar to Bypat博客出品-利用cent os快速构建自己的发行版 (20)

PDF
unix toolbox 中文版
PPT
Linux系统工程师教程
PPT
基于PXE实现部署Linux服务器
DOCX
Centos 5.5_图形安装教程
DOC
linux安装以及LAMP 环境安装详细
PDF
Ubuntu手册(中文版)
PPT
[精华回顾]讲座:How To Install Linux
KEY
LinuxGuide4F2E
DOCX
Linux学习
PDF
Ubuntu
PPT
Linux 系统应用与程序设计
DOC
Linux必学的60个命令
DOC
Linux服务器服务配置说明
PPTX
Linux常用命令
DOC
Ubuntu 的架構
PDF
Oracle10g Rac Configuration For Linux X86
PDF
Sysadmin
PPTX
2, installation
DOCX
CentOS 5.5_图形安装教程(超详细)
PDF
Introduction to FreeBSD commands
unix toolbox 中文版
Linux系统工程师教程
基于PXE实现部署Linux服务器
Centos 5.5_图形安装教程
linux安装以及LAMP 环境安装详细
Ubuntu手册(中文版)
[精华回顾]讲座:How To Install Linux
LinuxGuide4F2E
Linux学习
Ubuntu
Linux 系统应用与程序设计
Linux必学的60个命令
Linux服务器服务配置说明
Linux常用命令
Ubuntu 的架構
Oracle10g Rac Configuration For Linux X86
Sysadmin
2, installation
CentOS 5.5_图形安装教程(超详细)
Introduction to FreeBSD commands

Recently uploaded (16)

PPTX
3分钟读懂佩珀代因大学毕业证Pepperdine毕业证学历认证
PPTX
A Digital Transformation Methodology.pptx
PPTX
3分钟读懂滑铁卢大学毕业证Waterloo毕业证学历认证
PPTX
《HSK标准教程4下》第15课课件new.pptx HSK chapter 15 pptx
PPTX
3分钟读懂肯塔基大学毕业证UK毕业证学历认证
PPTX
3分钟读懂贵湖大学毕业证U of G毕业证学历认证
PDF
想要安全提高成绩?我们的黑客技术采用深度伪装和多层加密手段,确保你的信息安全无忧。价格公道,流程简单,同时提供全面的信息保护和事后痕迹清理,让你轻松提升G...
PPTX
3分钟读懂圭尔夫大学毕业证U of G毕业证学历认证
PPTX
ONU and OLT from Baudcom Jenny training PPT
PPTX
3分钟读懂加州大学欧文分校毕业证UCI毕业证学历认证
PDF
學會學LHTL榮譽作業:結合實驗與理論學習(製作者:陽明交通大學醫學二年級馬品婷)
PDF
01_Course_Introduction(20210916課後更新).pdf
DOCX
ALISON -COURSE ADVANCED CHEMISTRY -POLIMERIZATION 2025.docx
PDF
黑客技术,安全提分不是梦!我们采用最新的数据破解和隐藏技术,精准定位并修改你的成绩,同时采用深度隐藏技术确保你的操作不被发现。价格实惠,流程快速,事后无痕...
PPTX
3分钟读懂渥太华大学毕业证UO毕业证学历认证
PPTX
3分钟读懂福特汉姆大学毕业证Fordham毕业证学历认证
3分钟读懂佩珀代因大学毕业证Pepperdine毕业证学历认证
A Digital Transformation Methodology.pptx
3分钟读懂滑铁卢大学毕业证Waterloo毕业证学历认证
《HSK标准教程4下》第15课课件new.pptx HSK chapter 15 pptx
3分钟读懂肯塔基大学毕业证UK毕业证学历认证
3分钟读懂贵湖大学毕业证U of G毕业证学历认证
想要安全提高成绩?我们的黑客技术采用深度伪装和多层加密手段,确保你的信息安全无忧。价格公道,流程简单,同时提供全面的信息保护和事后痕迹清理,让你轻松提升G...
3分钟读懂圭尔夫大学毕业证U of G毕业证学历认证
ONU and OLT from Baudcom Jenny training PPT
3分钟读懂加州大学欧文分校毕业证UCI毕业证学历认证
學會學LHTL榮譽作業:結合實驗與理論學習(製作者:陽明交通大學醫學二年級馬品婷)
01_Course_Introduction(20210916課後更新).pdf
ALISON -COURSE ADVANCED CHEMISTRY -POLIMERIZATION 2025.docx
黑客技术,安全提分不是梦!我们采用最新的数据破解和隐藏技术,精准定位并修改你的成绩,同时采用深度隐藏技术确保你的操作不被发现。价格实惠,流程快速,事后无痕...
3分钟读懂渥太华大学毕业证UO毕业证学历认证
3分钟读懂福特汉姆大学毕业证Fordham毕业证学历认证

Bypat博客出品-利用cent os快速构建自己的发行版

  • 1. Linux•Dn•RN«•Q http://blog.bypat.com 利用 CentOS 快速构建自己的发行版 作者: NetSeek http://www.linuxtone.org 日期: 2009-4-10 版本号:V1 【背景】 我的朋友不少是个人网站站长并且网站运营的都很不错。但是每次业务扩容装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 anaconda anaconda-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 将 CentOS 的 ISO 文件挂载到/mnt/cdrom 目录 # cd /mnt/cdrom # tar -cf - . | ( cd /ltos ; tar -xvpf - ) //将/mnt/cdrom 里的文件利用 tar 全部拷贝到/ltsos 这个目录下. #cd /ltos //进入此目录删除一些无关的文件,仍后进入后面的工作. [root@server ltos]# ls -al total 88 drwxr-xr-x 6 root root 4096 Apr 11 21:00 . drwxr-xr-x 27 root root 4096 Apr 12 05:26 .. drwxr-xr-x 2 root root 36864 Apr 8 16:06 CentOS -rw-r--r-- 1 root root 97 Apr 8 16:43 .discinfo drwxr-xr-x 4 root root 4096 Mar 21 23:04 images drwxr-xr-x 2 root root 4096 Apr 12 00:00 isolinux -rw-r--r-- 1 root root 14371 Apr 11 23:16 lemp.tar.gz //这个软件包是我们后面要建立的,读者可以分析一下 后面的 ks.cfg 脚本就可以明白他的用途. drwxr-xr-x 2 root root 4096 Apr 11 21:00 repodata Linux•Dn•RN«•Q http://blog.bypat.com
  • 2. Linux•Dn•RN«•Q http://blog.bypat.com -r--r--r-- 1 root root 7048 Mar 21 23:05 TRANS.TBL 3.定制 package.list 软件包清单 如安装一个 CentOS5.3 的系统,根据自己的需求选择软件包;如果想你的系统很小,建议选择最少的包。安 装完成以后,在系统里会产生日志。日文文件存放在/root/install.log。 # cat install.log | grep Installing | 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` Linux•Dn•RN«•Q http://blog.bypat.com
  • 3. Linux•Dn•RN«•Q http://blog.bypat.com 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 Boot Record bootloader --location=mbr zerombr yes # Set the Mouse Linux•Dn•RN«•Q http://blog.bypat.com
  • 4. Linux•Dn•RN«•Q http://blog.bypat.com mouse generic3ps/2 # The following is the partition information you requested # Note that any partitions you deleted are not expressed # here so unless you clear all partitions first, this is # 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 Linux•Dn•RN«•Q http://blog.bypat.com
  • 5. Linux•Dn•RN«•Q http://blog.bypat.com -spamassassin # # ------- Begin LEMP 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/.bashrc 2>/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 Linux•Dn•RN«•Q http://blog.bypat.com
  • 6. Linux•Dn•RN«•Q http://blog.bypat.com # Remove the ISO File translation files find / -name TRANS.TBL -exec rm {} ; /dev/null 2>/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 . 5.让系统从 kickstart 配置启动 # vi /ltos/ isolinux/ isolinux.cfg default auto prompt 1 timeout 600 display boot.msg Linux•Dn•RN«•Q http://blog.bypat.com
  • 7. Linux•Dn•RN«•Q http://blog.bypat.com F1 boot.msg F2 options.msg F3 general.msg F4 param.msg F5 rescue.msg label linux kernel vmlinuz append initrd=initrd.img label text kernel vmlinuz append initrd=initrd.img text label auto kernel vmlinuz append ks=cdrom:/isolinux/ks.cfg initrd=initrd.img label ks kernel vmlinuz append ks initrd=initrd.img label local localboot 1 label memtest86 kernel memtest append - 二.个性化定制你的系统(问答形式) 1.如何定制安装开机画面: 启动画面用的是一种比较奇怪的格式 lss16,它限制图片使用 16 种颜色,除去前景和背景色只能有 14 种颜 色。我们需要 ppmtolss16 giftopnm 等程序,系统一般默认都安装了。 一般用 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.如何生成 GRUP 的 xpm 文件? (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 文件即可. Linux•Dn•RN«•Q http://blog.bypat.com
  • 8. Linux•Dn•RN«•Q http://blog.bypat.com ? 利用上面方法生成的图片可能无法显示,或者质量不高,如何生成高质量的 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 解压缩,然后再使用 利用 cpio 给 img 解包 # 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 # mv initrd.img.gz initrd.img # cp initrd.img /ltos/isolinux/ 仍后将 initrd.img 复制到/ltos/isolinux/ 3. 如何替换安装以后的 grub ? 在安装光盘里的 ks.cfg 文件里写好替换 splash.xpm.gz 文件即可. 4. 如何去掉启动过程中的"CentOS release 5 (Final)" 在安装光盘里的 ks.cfg 文件里写好脚本,直接替换/etc/redhat-release 即可. 三.打包生成 ISO 文件发布 # cd /ltos # declare -x discinfo=`head -1 .discinfo` # createrepo -u "media://$discinfo" -g repodata/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 Linux•Dn•RN«•Q http://blog.bypat.com
  • 9. Linux•Dn•RN«•Q http://blog.bypat.com /usr/lib/anaconda-runtime/implantisomd5 /tmp/ltos-0.1-i386.iso 相关脚本及制作工具下载: http://www.linuxtone.org/project/ltos/ltospack.tar.gz //相关脚本及工具下载. 四.安装光盘效果演示图 启动安装光盘 Grub 界面 Linux•Dn•RN«•Q http://blog.bypat.com
  • 10. Linux•Dn•RN«•Q http://blog.bypat.com IT 运维专家网 http://www.linuxtone.org 系统登陆界面演示 五.参考文档(并对以下文章作者表示感谢和致敬! ) 1. http://lingxiang.tang.googlepages.com/createalesssizecentos5 2. http://sipx-wiki.calivia.com/index.php/A_Kickstart_CD_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/ IT 运维专家网------“我为人人,人人为我!知识源于分享,源于交流!”---LinuxTone 技术交流分享社区! Linux•Dn•RN«•Q http://blog.bypat.com