我已經參考本文製作成功了,那在這兒記錄一下,希望大家也能打造自己的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