日期:2011-06-10 22:03:00  来源:本站整理

定制自己的linux发行版 精简centos[服务器安全]

赞助商链接



  本文“定制自己的linux发行版 精简centos[服务器安全]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:

 我已经参考本文制作成功了,那在这儿记录一下,但愿大家也能打造自己的linux版本..

工欲善其事,必先利其器.在制作发行版之前,需求安装一些软件,最简单的办法当然是用CentOS的yum来安装啦!
#yum -y install anaconda-runtime createrepo yum-utils anaconda anaconda-help busybox-anaconda mkisofs
 
工具安装完成了,可以开始制作linux了.
 
要想做好一个机会CentOS发行版的linux,持续要安装一次CentOS,安装时,将必要的包选中,比方,base,develop-tools,text-internet等等,其他的,用不到的东西最好不要选,这样做出来的系统,可以保证体积.
 
我是在vmware workstation上完成第一次CentOS安装的.安装完成之后,可以在/root/目录下,找到anaconda-ks.cfg这个文件,可以用cat号令看一下这个文件的内容,就大体知道之前装了那些软件包了.
 
# cat anaconda-ks.cfg
# Kickstart file automatically generated by anaconda.
 
install
cdrom
lang en_US.UTF-8
keyboard us
network --device eth0 --bootproto dhcp
rootpw --iscrypted $1$mrG7rARX$2zkvd4WLl2Lh5sD9aNP5Q.
firewall --enabled --port=22:tcp
authconfig --enableshadow --enablemd5
selinux --enforcing
timezone --utc Asia/Shanghai
bootloader --location=mbr --driveorder=sda
# 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 --drives=sda
#part /boot --fstype ext3 --size=100 --ondisk=sda
#part pv.2 --size=0 --grow --ondisk=sda
#volgroup VolGroup00 --pesize=32768 pv.2
#logvol swap --fstype swap --name=LogVol01 --vgname=VolGroup00 --size=1024 --grow --maxsize=2048
#logvol / --fstype ext3 --name=LogVol00 --vgname=VolGroup00 --size=1024 --grow
 
%packages
@development-libs
@editors
@text-internet
@legacy-network-server
@dialup
@core
@base
@network-server
@admin-tools
@development-tools
kexec-tools
device-mapper-multipath
imake
 
有了上述信息,制作linux的时刻就有底了.
 
在完成上述行动之后,我们可以在/目录下成立一些目录,用来存放linux发行版需求的文件,比方,我将我的系统命名为RiceOS,则,我在/目录下成立一个rice的目录,用来存放linux发行版制作时需求的文件.
 
p.s.这里的系统因为可以算是再发行版了,所以,可以自己定义,没必要古板.
 
#mkdir /rice
 
我们需求将CentOS的dvd光盘挂载到linux上来,可以通过挂载光驱,也可以通过挂载iso文件,在挂载之前,我们先在/mnt/目录下成立一个目录,用来挂载.
 
#mkdir /mnt/cdrom
 
#mount -t iso9660 -o loop /dev/cdrom /mnt/cdrom      //挂载光驱
 
#mount -t iso9660 -o loop /xxx/CentOS-5.3-i386-bin-DVD.iso /mnt/cdrom      //挂载iso文件,此处的xxx是CentOS-5.3-i386-bin-DVD.iso文件所在的绝对途径.
 
挂载完成之后,操纵tar号令将光驱中全部的文件复制至/rice目录:
 
#cd /mnt/cdrom
 
#tar -cf - . | ( cd /rice ; tar -xvpf - )
 
复制完成之后,进入rice目录,ls -al一下:
 
# ls -al
 
drwxr-xr-x 7 root root    6144 03-21 23:05 .
drwxr-xr-x 4 root root    4096 08-12 22:03 ..
drwxr-xr-x 2 ossec ossec 407552 03-21 23:05 CentOS
-rw-r--r-- 1 root root     112 03-21 23:05 .discinfo
-rw-r--r-- 7 root root     212 2008-06-15 EULA
-rw-r--r-- 7 root root   18009 2008-06-15 GPL
drwxr-xr-x 4 root root    2048 03-21 23:04 images
drwxr-xr-x 2 root root    2048 03-21 22:46 isolinux
drwxr-xr-x 2 root root   12288 03-17 09:30 NOTES
-rw-r--r-- 2 root root     655 03-09 11:12 RELEASE-NOTES-cs
-rw-r--r-- 2 root root    1401 03-09 11:12 RELEASE-NOTES-cs.html
-rw-r--r-- 2 root root     839 03-09 11:12 RELEASE-NOTES-de
-rw-r--r-- 2 root root    1571 03-09 11:12 RELEASE-NOTES-de.html
-rw-r--r-- 2 root root     694 03-09 11:12 RELEASE-NOTES-en
-rw-r--r-- 2 root root    1367 03-09 11:12 RELEASE-NOTES-en.html
-rw-r--r-- 2 root root     694 03-09 11:12 RELEASE-NOTES-en_US
-rw-r--r-- 2 root root    1367 03-09 11:12 RELEASE-NOTES-en_US.html
-rw-r--r-- 2 root root     788 03-09 11:12 RELEASE-NOTES-es
-rw-r--r-- 2 root root    1619 03-09 11:12 RELEASE-NOTES-es.html
-rw-r--r-- 2 root root     852 03-09 11:12 RELEASE-NOTES-fr
-rw-r--r-- 2 root root    1641 03-09 11:12 RELEASE-NOTES-fr.html
-rw-r--r-- 2 root root     766 03-09 11:12 RELEASE-NOTES-ja
-rw-r--r-- 2 root root    1565 03-09 11:12 RELEASE-NOTES-ja.html
-rw-r--r-- 2 root root     706 03-09 11:12 RELEASE-NOTES-nl
-rw-r--r-- 2 root root    1433 03-09 11:12 RELEASE-NOTES-nl.html
-rw-r--r-- 2 root root     752 03-09 11:12 RELEASE-NOTES-pt_BR
-rw-r--r-- 2 root root    1480 03-09 11:12 RELEASE-NOTES-pt_BR.html
-rw-r--r-- 2 root root     801 03-09 11:12 RELEASE-NOTES-ro
-rw-r--r-- 2 root root    1473 03-09 11:12 RELEASE-NOTES-ro.html
drwxr-xr-x 2 root root    2048 03-21 22:35 repodata
-rw-r--r-- 7 root root    1512 2008-06-15 RPM-GPG-KEY-beta
-rw-r--r-- 2 root root    1504 2008-06-15 RPM-GPG-KEY-CentOS-5
-r--r--r-- 1 root root    7048 03-21 23:05 TRANS.TBL
-rw-r--r-- 2 root root     413 03-21 23:04 .treeinfo
 
这些文件中,有需求的仅仅是显示后果中标红的文件大概目录,别的可以全部删除,趁便说一下,在CentOS这个目录下存放的是rpm包,在此处操作时,CentOS这个目录下全部的内容删除(CentOS这个目录保存,之后有效).
 
删除一些不必要的文件之后,再ls -al一下,看看/rice/目录的构造:
 
#ls -al
 
drwxr-xr-x 2 ossec ossec 155648 09-03 01:44 CentOS
-rw-r--r-- 1 root root     112 03-21 23:05 .discinfo
drwxr-xr-x 4 root root    4096 03-21 23:04 images
drwxr-xr-x 2 root root    4096 09-03 19:51 isolinux
drwxr-xr-x 2 root root    4096 09-03 19:47 repodata
-rw-r--r-- 1 root root    1318 2009-09-04 TRANS.TBL
-rw-r--r-- 1 root root     413 03-21 23:04 .treeinfo
 
文件这样看起来就舒服多了.
 
在CentOS系统安装完成之后,会将全部rpm包的安装信息记录在/root/目录下的install.log文件中,我们可以将这个文件输出为我们想要的格局,在通过一些脚本,将需求的rpm包复制到/rice/CentOS/目录下.
 
#cd /root/
 
#cat install.log | grep Installing | sed 's/Installing //g'|sed 's/^[0-9]\+://g' > packages.list //生成packages.list,以便之后复制rpm包.
 
成立自动提取相关rpm脚本:
 
#vi cprpms.sh
 
#!/bin/bash
DEBUG=0
LT_CD=/mnt/cdrom
ALL_RPMS_DIR=/mnt/cdrom/CentOS #挂载光盘存放的目录
LT_RPMS_DIR=/rice/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复制到/rice/CentOS目录
 
#./cprpms.sh //若无法履行,利用chmod +x cprpms.sh为该脚本增添履行权限.
 
复制rpm包完成之后,返回到/rice目录下,履行createrepo程序生成repodata下的comps.xml文件
 
#cd /rice
#createrepo -g repodata/comps.xml .
 
生成comps.xml之后,就要开始成立kickstart脚本了,可以通过anaconda-ks.cfg来完成对kickstart脚本的定制:
 
#cd
 
#cp anaconda-ks.cfg /rice/isolinux/ks.cfg    //将anaconda-ks.cfg复制到/rice/isolinux/并将其改名为ks.cfg
 
然后,利用vi编辑器对ks.cfg举行编辑
 
#vi /rice/isolinux/ks.cfg
 
以下是我的ks.cfg文件内容:
 
install      
text           //文本情势安装
cdrom       //从光盘安装
lang en_US.UTF-8          //设置默许字符集为美国英语UTF-8
keyboard us             //美式键盘
skipx                 //跳过xwindows
network --device eth0 --bootproto dhcp --hostname RiceOS      //默许开启网卡0,并让其自动得到ip,同时,计算机的hostname命名为RiceOS
rootpw --iscrypted $1$jPZf0P0r$JRe7pd.5wq9k.VZEMOgdq/      //root账号的密码,按照初次安装CentOS时利用的密码差别而差别,这里显示的密码是经过加密处理之后的字符.
authconfig --enableshadow --enablemd5      //密码利用md5加密
selinux --disabled                  //不启用selinux
timezone --utc Asia/Shanghai          //设置时区为亚洲/上海
bootloader --location=mbr           //读取mbr信息
zerombr yes                        //初始化//mbr
mouse generic3ps/2                     //鼠标为三键ps/2接口鼠标
clearpart --all --initlabel                    //初始化分区信息,这里考虑到每一台计算机的硬件情形差别,因此,将分区历程设置为手动,其他历程全为自动.
reboot                  //安装完成之后重启
%packages             //这一行之后,均为安装rpm包信息.
@development-libs
@editors
@text-internet
@legacy-network-server
@dialup
@core
@base
@network-server
@admin-tools
@development-tools
kexec-tools
device-mapper-multipath
imake
 
kickstart脚本写完之后,需求改正linux的默许安装方法,这里,改正/rice/isolinux/isolinux.cfg这个文件,到达我们的目标,值得注意的是,isolinux.cfg文件是只读的,要想改正,需求为其赋予可写权限:
 
#chmod +w /rice/isolinux/isolinux.cfg
 
#vi isolinux.cfg
 
default ks        //此处默许为linux,改正成ks,让linux从ks这个脚本启动
prompt 1
timeout 10          //此处默许600,即等候一分钟,我的耐烦不太好,因此,我只想等候1秒,各位看官可以按照自己的爱好,设定此处的数值.
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 ks
kernel vmlinuz
append ks=cdrom:/isolinux/ks.cfg initrd=initrd.img
label local
localboot 1
label memtest86
kernel memtest
append -
 
将isolinux.cfg改正成如上所述便可.
 
在完成以上工作之后,便可以利用mkisofs公布iso文件了,各位看官注意哦,不能将/rice这个目录直接复制到windows用UltraISO这样的软件直接制作,因为这样做出来,不可以指导……
 
别的,在mkisofs的时刻,需求在/rice/目录下举行,呵呵!
 
[root@localhost rice]#mkisofs -R -J -T -r -l -d -allow-multidot -allow-leading-dots -no-bak -o /glftpd/site/test/RiceOS-0.1-i386.iso -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table .
 
制作iso完成之后,便可将iso下载至windows,利用VMware安装看看,若可以安装成功,则iso制作成功.
 
p.s.做这个东西我花的时间实际上并不多,中间杂事太多,断断续续做了三周才做出来,不过后果还是好的.各位看官若想对这个iso举行定制,还可以对cat号令生成的packages.list文件举行定制,还可以解析
 
@development-libs
@editors
@text-internet
@legacy-network-server
@dialup
@core
@base
@network-server
@admin-tools
@development-tools
 
这些类别中包含的数据包,可以将全部的数据包列出,而不是列出类别,当然,这样是很累的,让我这样的懒人来做,呵呵,大概还要三周!嘎嘎!
 
不过我想,这样做出来的linux应当很小了.
 
顺带说一下本性化定制这个linux系统(问答情势):
 
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 文件便可.
操纵上面办法生成的图片大概无法显示,大概质量不高,若何生成高质量的grub图片呢.
操纵文中背面我供应的ltospackl.tar.gz里面的grubtool.exe便可在windows平台将jpg,bmp图生成为.xpm.gz格局的文件,直代替换/boot/grup下的文件便可.
 
 
3.若何去掉安装历程中的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便可.
相关脚本及制作工具下载:
http://www.linuxtone.org/project/ltos/ltospack.tar.gz //相关脚本及工具下载.
 
 
参考文档(并对以下文章作者表示感激和致敬!)
 
1. http://bbs.linuxtone.org/thread-2448-1-1.html
2. http://lingxiang.tang.谷歌pages.com/createalesssizecentos5
3. http://sipx-wiki.calivia.com/index.php/A_Kickstart_CD_for_sipX_on_CentOS
4. http://linux.chinaunix.net/ebook/doc/2009/04/02/1095757.shtml
5. http://www.ibm.com/developerworks/cn/linux/l-k26initrd/

    以上是“定制自己的linux发行版 精简centos[服务器安全]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:

  • 定制自己的linux发行版 精简centos
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .