定製CentOS

#yum -y install anaconda-runtime createrepo yum-utils anaconda anaconda-help busybox-anaconda mkisofshtml

工具安裝完成了,能夠開始製做linux了。linux

要想作好一個機遇CentOS發行版的linux,繼續要安裝一次CentOS,安裝時,將必要的包選中,好比,base,develop-tools,text-internet等等,其餘的,用不到的東西最好不要選,這樣作出來的系統,能夠保證體積。web

我是在vmware workstation上完成第一次CentOS安裝的。安裝完成以後,能夠在/root/目錄下,找到anaconda-ks.cfg這個文件,能夠用cat命令看一下這個文件的內容,就大致知道以前裝了那些軟件包了。express

# cat anaconda-ks.cfg
# Kickstart file automatically generated by anaconda.
windows

install
cdrom
lang en_US.UTF-8
keyboard us
network --device eth0 --bootproto dhcp
rootpw --iscrypted 1mrG7rARX$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
bash

%packages
@development-libs
@editors
@text-internet
@legacy-network-server
@dialup
@core  
@base  
@network-server
@admin-tools
@development-tools
kexec-tools
device-mapper-multipath
imake
app

有了上述信息,製做linux的時候就有底了。less

在完成上述動做以後,咱們能夠在/目錄下建立一些目錄,用來存放linux發行版須要的文件,好比,我將個人系統命名爲RiceOS,則,我在/目錄下建立一個rice的目錄,用來存放linux發行版製做時須要的文件。tcp

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/目錄下。

1 #cd /root/
1 #cat install.log | grep Installing | sed 's/Installing //g'|sed 's/^[0-9]\+://g' > packages.list

//生成packages.list,以便以後複製rpm包。

建立自動提取相關rpm腳本:

#vi cprpms.sh

01 #!/bin/bashDEBUG=0LT_CD=/mnt/cdromALL_RPMS_DIR=/mnt/cdrom/CentOS #掛載光盤存放的目錄LT_RPMS_DIR=/rice/CentOS #存放RPM包的目錄
02 packages_list=/root/packages.list
03 number_of_packages=`cat packageslist|wc?l‘i=1while[i -le numberofpackages];doline=‘head?ni packageslist|tail?n?1‘name=‘echoline | awk '{print 1}'` version=`echoline | awk '{print 3}' cut -f 2 -d :` if [DEBUG -eq "1" ] ; then
04 echo i:line
05 echo nameechoversion
06 fi
07 if [ DEBUG?eq"1"];thenlsALL_RPMS_DIR/name?version*
08 if [ ??ne0];thenecho"cpALL_RPMS_DIR/name?version* "
09 fi
10 else
11 echo "cp ALLRPMSDIR/name-version?LT_RPMS_DIR/"
12 cp ALLRPMSDIR/name-version?LT_RPMS_DIR/
13 # in case the copy failed
14 if [ ??ne0];thenecho"cpALL_RPMS_DIR/name?version* "
15 cp ALLRPMSDIR/name* LTRPMSDIR/fifii=‘expri + 1`
16 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 1jPZf0P0r$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 //相關腳本及工具下載

相關文章
相關標籤/搜索