2011年5月19日 星期四

make to linux customer auto install CD

做法一: 安裝所需套件
你必須先安裝以下幾個套件
套件一anaconda 主套件
套件二anaconda-runtime
套件三system-config-kickstart
# rpm -ivh anaconda-10.2.1.5-2.fineac.i386.rpm
# rpm -ivh anaconda-runtime-10.2.1.5-2.fineac.i386.rpm
# rpm -ivh system-config-kickstart.i386.rpm

做法二: 建立套件存放區
mkdir -p /Fedora/CD{1,2,3,4}
接著我們建立客製化光碟之路徑:
mkdir /Fedora/Custom
把 Fedora CD 的第一片光碟內容全部拷貝到 /Fedora/CD1, 方式如下:
1. cp -a /mnt/cdrom/* /Fedora/CD1/
2.cp /mnt/cdrom/.discinfo /Fedora/CD1/
重複步驟一所述, 將第二片至第四片光碟內容考到相對應之子目錄.
拷貝 CD 目錄下的東西到 Custom 的目錄下:
1.cd /Fedora
2.cp -al CD1/* Custom/
3.cp CD1/.discinfo Custom
4.cp -al CD{2,3,4}/Fedora/RPMS/* Custom/Fedora/RPMS
此時會出現要不要將檔案 TRANS.TBL 覆蓋之訊息, 選擇 no.

做法三: 選擇需要的套件
(1)選擇所需套件

編輯 comps.xml, 選擇所需之套件rpm.
重點:
core 和 base 一定要安裝
default 會安裝
mandatory 一定會安裝
optional 可選擇性

(2)編輯完後執行
cd /Fedora/Custom/Fedora/base
getGroupPkgs.py comps.xml > /Fedora/pkglist
此方式是將您所編譯好的 comps.xml 內容把所需的套件放在檔案 pkglist.

(3)移除不要的套件
接著利用 removePkgs.py 移除不必要的套件:
removePkgs.py pkglist /Fedora/Custom/Fedora/RPMS
此時您可以執行 du -hs /Fedora/Custom 來查詢安裝多少空間的套件.

(4)檢查相依性套件
由於 removePkgs.py 這程式並不能完全解決套件相依性之問題. 因此您必須還花
一點時間去處理相依性問題. 執行下列步驟來查看套件相依性:
1.cd /Fedora/Custom/Fedora/RPMS
2.mkdir /tmp/testdb
3.rpm --initdb --dbpath /tmp/testdb
4.rpm --test --dbpath /tmp/testdb -Uvh *.rpm

做法四: 建立所需要的標頭檔
重新建立套件的標頭
當所需套件之相依性問題解決完後, 我們需執行 genhdist 來產生 hdlist.請執行下列步驟:

1.export PYTHONPATH=/usr/lib/anaconda

2./usr/lib/anaconda-runtime/pkgorder /Fedora/Custom/ i386 Fedora > /Fedora/pkgfile

3./usr/lib/anaconda-runtime/genhdlist --productpath=Fedora /Fedora/Custom

4./usr/lib/anaconda-runtime/genhdlist --withnumbers --fileorder /Fedora/pkgfile --productpath=Fedora /Fedora/Custom

做法五: 產生自動安裝程序
接著產生 ks.cfs,
如何產生 進入x-window 後使用system-config-kickstart
並放置在 /Fedora/Custom 目錄下.
修改 /Fedora/Custom/isolinux/isolinux.cfg, 將 ks 改成 ks=cdrom:/ks.cfg.

第一行 default ks
到後面找到 ks 那一行
改成 ks=cdrom/ks.cfg

做法六: 製作iso並測試
(1)製作iso檔
利用 mkisofs 程式產生映像檔:
cd /Fedora/Custom
指令:mkISOboot title iso檔
mkISOboot fedora /Fedora/cd.iso

(2)燒入光碟
執行 cdrecord -v dev=/dev/hdc /Fedora/cd.iso
或使用燒入軟體k3b


=====================================================================
CentOS 實做
首先

準備一張 Centos5的DVD光碟,可到
http://ftp.isu.edu.tw/pub/Linux/CentOS/5.0/isos/i386/
下載ISo檔

第二步

準備一台電腦安裝Cntos5,安裝時把你要的套件都選一選。

第三步

安裝包裝Centos5時所需要的套件 "anaconda"
anaconda
anaconda-runtime

如果不知道要怎麼裝的話可以直接使用

代碼:
yum install anaconda


讓系統幫你裝到好~


第四步

裝好後,我的習慣是在另一台桌機上使用pietty用ssh連線登入到剛裝好的主機working~

把CentOS光碟放到主機上,並mount起來,
並 mkdir /CentOS5 <=這個用來包裝centos的目錄
把光碟片的資料 cp 到剛才建立的 /CentOS5 目錄中

第五步

挑選需要的rpm檔案,在root家目錄中有一個install.log檔
這個檔案記錄著,我們在安裝過程中所選擇的套件,
所以我們要做的就是根據這個檔案,來替我們的Cntos5 DVD減肥
(只留下安裝時選所的套件,其餘都刪除)

之前我在做centos3.8 與FC3時都是使用現成的程式(
getGroupPkgs.py & removePkgs.py)來做,但
目前好像在centos5上好像不能使用(這點不確定)

所以這個步驟自己手動來弄的話,是比較麻煩點

以我的做法是
把install.log 複製一份到自己的電腦裡面來(m$窗主機)
使用PSPad來編輯檔案,裡面的檔案大概會跟下面的差不多

正在安裝 libgcc - 4.1.1-52.el5.i386
正在安裝 filesystem - 2.4.0-1.el5.centos.i386
正在安裝 basesystem - 8.0-5.1.1.el5.centos.noarch
...以下省略...

把上面這個用"搜尋"、"取代",的技巧

變成下面這樣

#!/bin/bash
cp -a /mnt/CentOS/libgcc-4.1.1-52.el5.i386.rpm /myRPM
...以下省略...

存成copyrpm.sh 丟回到Centos5主機裡,更改權限chmod +x copyrpm.sh
並執行。

ps:請先確認有無該目錄

代碼:
cp -a /mnt/CentOS/libgcc-4.1.1-52.el5.i386.rpm /myRPM


像這行,我是把Centos5光碟mount 到/mnt
並將RPM檔cp到/myRPM 這個目錄下,沒有的話請先建一個


第六步

代碼:
cd /CentOS5/CentOS


把這個目錄清空,把/myRPM目錄下的rpm全都cp過來

代碼:
cp -a /myRPM/* /CentOS5/CentOS


第七步

回到 /CentOS5 目錄下,執行createrepo這隻程式

代碼:
createrepo -g repodata/comp.xml .


開始進行認套件的動作,通常如果出現以下的訊息

Saving Primary metadata
Saving file lists metadata
Saving other metadata
Could not remove old metadata dir: .olddata
Error was [Errno 39] Directory not empty: '/centos/.olddata'Please clean up this directory manually.

請先刪掉.olddata 這個隱藏目錄。
然後再執行一次
createrepo -g repodata/comp.xml .

第八步

如果上面的步驟ok的話,把repodata 與CentOS 這兩個目錄
連同/root/底下的anaconda-ks.cfg 給tar起來~下載到自己的m$窗主機裡面,
用winrar把剛tar的檔案解壓縮。
將anaconda-ks.cfg 改名 ks.cfg


開UltraISO編輯器,打開Centos5的ISO檔,
把剛解開的repodata 與Centos 兩個資料夾丟進去替換掉
把ks.cfg放在光碟iso檔的根目錄上。

打開isolinux資料夾裡isolinux.cfg
改第一行default linux
改成 =>default linux ks=cdrom:/ks.cfg

改好後就可以直接燒錄了。此步驟也可以直接在CentOS5主機上直接操作,
直接壓製ISO檔與燒錄。


第九步

把燒好的光碟片拿去安裝測試,成功的話就是一片自動安裝光碟了,相當於XP的無人值守光碟。

以上的過程應該就只有第五步篩選套件比較麻煩點,這篇就先寫到這邊,如有疑問歡迎提出,如果有更方便的做法也歡迎其他同好提出來與大家分享

自由軟體不就需要大家的熱情才能夠持續成長嗎

附錄:我的ks.cfg檔內容

install
cdrom
lang zh_TW.UTF-8
langsupport --default en_US.UTF-8 en_US.UTF-8
keyboard us
mouse genericwheelps/2 --device psaux
rootpw --iscrypted 密碼編碼資料
firewall --disabled
selinux --disabled
authconfig --enableshadow --enablemd5
timezone Asia/Taipei
bootloader --location=mbr
clearpart --all --initlabel
part /boot --fstype ext3 --size=100
part swap --size=1024
part / --fstype ext3 --size=100 --grow


%packages
@base
@chinese-support
@core
@dialup
@editors
@text-internet

-redhat-config-printer
-redhat-config-printer-gui

%post
# shell script command

沒有留言: