如何利用centos构建两台dhcp快速构建自己的发行版

1883人阅读
linux系统管理(17)
& & & & & & && &&&&&&&&&&&&&&&&&&&&& -----thanks& NetSeek&
环境说明:CentOS 5.5-i386 + Vmware Workstation.
&&&&&&&&& 装好的虚拟机母系统的磁盘为一个IDE 10G,能连接互联网.&
&&&&&&&&& DIY CD的装机图片,GRUB图片会去掉,不要华丽,用原始。
&&&&&&&&& 从页面上复制脚本粘贴进LINUX后,注意DOS UNIX格式的问题,否则脚本执行会报错。可用vi -b filename查看修改。
制作好的光盘结构介绍&
&* isolinux 目录存放光盘启动时的安装界面信息&
&* images 目录包括了必要的启动映像文件&
&* CentOS 目录存放安装软件包及信息&
&* .discinfo 文件是安装价质的识别信息&
&* TRANS.TBL
一.制作TANK-OS具体过程&
0. 在虚拟机里安装一个centos母系统。
& 如果做服务器版本CD的话,尽量把常用的文本界面下的工具安装上。
& 注意:容量问题。本次实验母系统装好后1.3G,DIY好的光盘容量560M。使制作好的容量尽量保持在一张CD容量内(&700M),方便携带安 装.
1.安装制作发行版所需的基本软件包&
# yum -y install anaconda-runtime createrepo yum-utils anaconda anaconda-help busybox-anaconda mkisofs
2. 制作tank-os源文件夹&
# mkdir /tank-os&
# 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&
将/mnt/cdrom里的 images& isolinux repodata三个目录 .discinfo TRANS.TBL两个文件拷贝到/tank-os这个目录下.&
并#mkdir /tank-os/CentOS 建立存放rpm包的目录.&
/tank-os/下的目录结构应如下:&
[root@server tank-os]# ls -al&
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&
drwxr-xr-x 2 root root 4096 Apr 11 21:00 repodata&
-r--r--r-- 1 root root 7048 Mar 21 23:05 TRANS.TBL&
3.定制package.list软件包清单&
在母系统~root目录下有安装 母系统产生的日志,/root/install.log。用脚本从中提取软件包.
#cat install.log | grep Installing | sed 's/Installing //g'|sed 's/^[0-9]\+://g' & packages.list&
#wc -l packages.list
466 packages.list
将定制 tank-os所要的rpm复制到/tank-os/CentOS目录&
#cat packages.list |do cp -a /mnt/cdrom/CentOS/$name.rpm /tank-os/CentOS/ ;done
#cd /tank-os&
#createrepo -g repodata/comps.xml .&&&&&& //注意最后的&.&不可漏了.
4. 配置kickstart脚本
安装母系统以后,会在系统里产生一个kickstart安装脚本,/root/anaconda-ks.cfg
(就 是以后自动安装DIY系统的系统配置文件,其参数自己视情况修改,如磁盘分区容量,hostname...;当然安装时不选auto自动安装也可以选择 centos原来提供的其他安装方式自己根据提示设置.)&
# cp anaconda-ks.cfg /tank-os/isolinux/ks.cfg&
# vi /tank-os/isolinux/ks.cfg& 自己动手修改脚本如下,不要随意复制粘贴后就执行。&
# Kickstart file automatically generated by anaconda.&
# Install CentOS instead of Upgrade&
#install from cd-rom&
lang en_US.UTF-8&
keyboard us&
# Skip the X Configuration&
network --device eth0 --bootproto dhcp --hostname tank-os.test.org&
rootpw tank-os&& #如果去掉该行,安装时提示输入ROOT密码。
# Setup the firewall with SSH, HTTP/S, Syslog, Webmin, and Netflow enabled&
firewall --enabled --port=22:tcp& --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&
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=6000&
part swap --size=512
part /data --fstype ext3 --size=1 --grow&
#--- Reboot the host after installation is done&
reboot& #如果没有该行,安装结束时需要点击“reboot”方可重启。
%packages&
@dns-server
@ftp-server
@legacy-network-server
@mail-server
@network-server
@news-server
@server-cfg
@text-internet
@web-server
@smb-server
device-mapper-multipath
#some changers after install packegs.
if [ -f /boot/grub/splash.xpm.gz ];then rm -f /boot/grub/splash.xpm. fi &/dev/null 2&&1
if [ -f /etc/redhat-release ];then sed -i 's/CentOS/TANK-OS/' /etc/redhat- fi &/dev/null 2&&1
if [ -f /etc/issue ];then sed -i 's/CentOS/TANK-OS/' /etc/ fi &/dev/null 2&&1
if [ -f /boot/grub/grub.conf ];then sed -i 's/CentOS/TANK-OS/' /boot/grub/grub. fi &/dev/null 2&&1
chkconfig sendmail off &/dev/null 2&&1
chkconfig portmap off &/dev/null 2&&1
chkconfig cups off &/dev/null 2&&1
chkconfig rpcidmapd off &/dev/null 2&&1
5. 添加auto项,让系统从kickstart配置启动&
# vi /tank-os/isolinux/isolinux.cfg&
default auto&
timeout 600&
display boot.msg&
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&
&&& kernel vmlinuz&
&&& append ks initrd=initrd.img&
label local&
&&& localboot 1&
label memtest86&
&&& kernel memtest&
&&& append -&
二.个性化定制你的系统
去 掉装机图片:修改/tank-os/isolinux/boot.msg文件,删除“splash.lss”。
&&&&&&&&&&&&& 删除/tank-os/isolinux/splash.lss这个图片。
去掉安装过程中的CentOS字样:&
&&&&&&&&&&&&& 在安装光盘里面有两个.buildstamp文件,一个位于stage2.img中,一个位于initrd.img中,&
&&&&&&&&&&&&& 安装光盘运行时读取的是initrd.img中的那个.buildstamp文件,所以只要把initrd.img文件改了就可以了。&
&&&&&&&&&&&&& 2.6内核中的initrd.img采用cpio压缩,不再是2.4内核使用的ext2格式,无法使用mount -o loop 挂载。需
&&&&&&&&&&&&& 要使用gunzip解压缩,然后再使用利用cpio给img解包&
# cd /tank-os/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改为tank-os即可.当然,里面的网址也 可以改。
生成新的initrd.img文件:&
#cd /tmp/initrd
# find . | cpio -c -o & ../initrd.img&
# gzip ../initrd.img&
# mv initrd.img.gz initrd.img&
# cp initrd.img /tank-os/isolinux/&
然后将 initrd.img复制到/tank-os/isolinux/,覆盖旧的。&
三.打包发布&
# cd /tank-os&
# declare -x discinfo=`head -1 .discinfo`& //指定环境变量discinfo&
# createrepo -u &media://$discinfo& -g repodata/comps.xml .& //生成repodata数据库。&
&& 说明:repodata 数据库精确描述一个rpm包的详细信息,如依赖关系,包含文件,校验码信息。它的文件主要是XML格式。
生成ISO文件&
#cd /tank-os
#mkisofs -R -J -T -r -l -d -allow-multidot -allow-leading-dots -no-bak -o /tmp/tank-os-0.1-i386.iso \&
-b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table .&
生成Md5,供下载后校验ISO
#md5sum /tmp/tank-os-0.1-i386.iso & tank-os-0.1-i386.iso.md5
四.另建立个虚拟机 测试安装该ISO
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:101296次
积分:1234
积分:1234
排名:千里之外
原创:18篇
转载:44篇
(1)(1)(2)(1)(2)(2)(2)(3)(3)(6)(2)(1)(6)(1)(2)(3)(4)(2)(12)(6)您所在的位置: &
利用CentOS快速构建自己的发行版(1)
利用CentOS快速构建自己的发行版(1)
linuxtone.org
对于很多个人站长来说,每次业务扩容装Linux系统都是件很麻烦的事情。有的IDC技术不会装Linux系统,或者有的就是装一次系统收取一定的费用。为此制作一个精简的CentOS发行版是很重要的。
编者按:对于很多个人站长来说,每次业务扩容装Linux系统都是件很麻烦的事情。有的IDC技术不会装Linux系统,或者有的就是装一次系统收取一定的费用。为此制作一个精简的CentOS发行版是很重要的。下面就一起来看下具体制作过程吧。
一、制作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 / tar -xvpf - ) //将/mnt/cdrom里的文件利用tar全部拷贝到/ltsos这个目录下.
#cd /ltos //进入此目录删除一些无关的文件,仍后进入后面的工作.
[root@server ltos]# ls -al
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
-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
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`
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
if [ $DEBUG -eq &1& ] ; then
ls $ALL_RPMS_DIR/$name-$version*
if [ $? -ne 0 ] ; then
echo &cp $ALL_RPMS_DIR/$name-$version* &
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/
i=`expr $i + 1`
执行以上脚本将定制ltos必要的rpm复制到/ltos/CentOS目录
返回到/ltos目录下,执行createrepo程序生成repodata下的comps.xml文件
#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 from cd-rom
lang en_US.UTF-8
keyboard us
# Skip the X Configuration
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
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
@development-libs
@system-tools
@text-internet
@legacy-network-server
@mail-server
@development-tools
net-snmp-utils
device-mapper-multipath
-zisofs-tools
-openldap-clients
-samba-client
-fetchmail
-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
#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
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
sed -i -e '44 s/^/#/' -i -e '48 s/^/#/' $ssh_cf
# 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 === |
+--------------------------------------------------------------+
#---------------------------------------------------------------------------------
for i in `ls /etc/rc3.d/S*`
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
# 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
timeout 600
display boot.msg
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
kernel vmlinuz
append ks initrd=initrd.img
label local
localboot 1
label memtest86
kernel memtest
内容导航&第 1 页: &第 2 页: &第 3 页:
关于&&的更多文章
CentOS,有很多人叫它社区企业操作系统。CentOS是Linux发行版之
Windows 8.1关注度日益增高,最新的Aapps商店和应用程
随着信息系统的快速发展,海量的信息需要可靠存储的同
puppet 是一种Linux、Unix、Windows平台的集中配置管
本书按照人事部、信息产业部全国计算机技术与软件专业技术资格(水平)考试程序员考试大纲编写,是对2004版的修订版,内容包括计
51CTO旗下网站制作自己的Linux发行版_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
制作自己的Linux发行版
上传于||文档简介
&&制作自己的Linux发行版
阅读已结束,如果下载本文需要使用0下载券
想免费下载更多文档?
定制HR最喜欢的简历
下载文档到电脑,查找使用更方便
还剩3页未读,继续阅读
定制HR最喜欢的简历
你可能喜欢&&&&基于centos制作自己的linux发行版
&基于centos制作自己的linux发行版
linux 安装有太多的选项,但是对于用户安装而言,并不方便。另外我们也不需要linux发行版中的一些功能,需要裁减掉,怎么办?ks脚本来帮你,这篇文档介绍了使用ks脚本定制linux发行版的一些流程。
若举报审核通过,可奖励20下载分
被举报人:
举报的资源分:
请选择类型
资源无法下载
资源无法使用
标题与实际内容不符
含有危害国家安全内容
含有反动色情等内容
含广告内容
版权问题,侵犯个人或公司的版权
*详细原因:
VIP下载&&免积分60元/年(1200次)
您可能还需要
Q.为什么我点的下载下不了,但积分却被扣了
A. 由于下载人数众多,下载服务器做了并发的限制。若发现下载不了,请稍后再试,多次下载是不会重复扣分的。
Q.我的积分不多了,如何获取积分?
A. 获得积分,详细见。
完成任务获取积分。
论坛可用分兑换下载积分。
第一次绑定手机,将获得5个C币,C币可。
关注并绑定CSDNID,送10个下载分
下载资源意味着您已经同意遵守以下协议
资源的所有权益归上传用户所有
未经权益所有人同意,不得将资源中的内容挪作商业或盈利用途
CSDN下载频道仅提供交流平台,并不能对任何下载资源负责
下载资源中如有侵权或不适当内容,
本站不保证本站提供的资源的准确性,安全性和完整性,同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
操作系统下载排行
您当前C币:0&&&可兑换 0 下载积分
兑换下载分:&
消耗C币:0&
立即兑换&&
兑换成功你当前的下载分为 。前去下载资源
你下载资源过于频繁,请输入验证码
如何快速获得积分?
你已经下载过该资源,再次下载不需要扣除积分
基于centos制作自己的linux发行版
所需积分:1
剩余积分:0
扫描微信二维码精彩活动、课程更新抢先知
VIP会员,免积分下载
会员到期时间:日
剩余下载次数:1000
基于centos制作自己的linux发行版
剩余次数:&&&&有效期截止到:
你还不是VIP会员VIP会员享免积分 . 专属通道极速下载
VIP下载次数已满VIP会员享免积分 . 专属通道极速下载,请继续开通VIP会员
你的VIP会员已过期VIP会员享免积分 . 专属通道极速下载,请继续开通VIP会员

我要回帖

更多关于 centos 查看发行版 的文章

 

随机推荐