定制自己的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

相关内容

    暂无相关文章