[转]订制CentOS自安装光盘
本文轉(zhuǎn)自:http://www.v2ns.cn/?post=62
?
參考了老曹的利用CentOS快速構(gòu)建自己的發(fā)行版  ,以自己的切身體會(huì),修改了kickstart腳本 文件 ,去除了全自動(dòng) 存在的問(wèn)題:不夠靈活,對(duì)于分區(qū)限制太死。
 下載地址  : http://blog.freebsdsystem.org/LEMPOS/LEMPOS-0.1.3-i386.iso  
  下面摘錄了老曹的文章
 一.制作 LEMPOS具體過(guò)程  
 光盤(pán)結(jié)構(gòu)介紹  
 * isolinux  目錄 存放光盤(pán)啟動(dòng)時(shí)的安裝界面信息  
 *images   目錄包括了必要的啟動(dòng)映像文件  
 *CentOS   目錄存放安裝軟件 包及信息  
 *.discinfo  文件是安裝價(jià)質(zhì)的識(shí)別信息  
 *lemp.tar.gz  文件存放系統(tǒng) 初始化及其相關(guān)程序安裝腳本 . 
 *AutoLEMP-0.1.2.tar.bz2  AutOLEMP程序  
 》》環(huán)境說(shuō)明: CentOS 5.3-i386 xen  上完成制作工作 . 
  
 
 1. 安裝制作發(fā)行版所需的基本軟件包  
 # yum -y install anaconda-runtime createrepo yum-utils anacondaanaconda-help busybox-anaconda mkisofs 
 
 
 2. 制作 LEMPOS 源文件夾  
 # mkdir /lempos 
 # mkdir /mnt/cdrom 
 # mount -t iso9660 -o loop /dev/cdrom /mnt/cdrom/  掛載光盤(pán)鏡像  
 
  或者掛載  ISO 文件到  /mnt/cdrom 
 # mount -t iso9660 -o loop centos .xxx.iso/mnt/cdrom 
  將  CentOS 的  ISO 文件掛載到  /mnt/cdrom 目錄  
 # cd /mnt/cdrom 
 # tar -cf - . | ( cd /ltos ; tar -xvpf - )
 // 將  /mnt/cdrom 里的文件利用  tar 全部拷貝到  /ltsos 這個(gè)目錄下  . 
 #cd /ltos
 // 進(jìn)入此目錄刪除一些無(wú)關(guān)的文件,仍后進(jìn)入后面的工作  . 
 
 [root@server LEMPOS]# ls -al 
 total 88 
 
 8 16:43 .discinfo  
 4096 Mar 21 23:04 images  
 4096 Apr 12 00:00 isolinux  
 1root root 14371 Apr 11 23:16 lemp.tar.gz //  這個(gè)軟件包是我們后面要建立的,讀者可以分析一下后面的  ks.cfg 腳本就可以明白他的用途  . 
 4096 Apr 11 21:00 repodata  
 7048 Mar 21 23:05 TRANS.TBL 
 AutoLEMP-0.1.2.tar.bz2 
 
 
 
 3. 定制 package.list 軟件包清單  
 如安裝一個(gè)  CentOS5.3 的系統(tǒng),根據(jù)自己的需求選擇軟件包  ; 如果想你的系統(tǒng)很小,建議選擇最少的包。安裝完成以后,在系統(tǒng)里會(huì)產(chǎn)生日志 。日文文件存放在  /root/install.log 。  
 #pwd 
 /root 
 # cat install.log | grepInstalling | sed 's/Installing //g'|sed 's/^[0-9]/+://g' > packages.list  
 #mkdir /lempos/CentOS 
  建立存放  rpm 包的目錄  . 
 
 創(chuàng)建自動(dòng)提取相關(guān)  rpm 腳本  : 
 #vi cprpms.sh 
 #!/bin/bash 
 DEBUG=0 
 LT_CD=/mnt/cdrom
  ALL_RPMS_DIR=/mnt/cdrom/CentOS 
 # 掛載光盤(pán)存放的目錄  
 LT_RPMS_DIR=/lempos/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 
 
 執(zhí)行以上腳本將定制  ltos 必要的  rpm 復(fù)制到  /lempos/CentOS 目錄  
 
 返回到  /ltos 目錄下,執(zhí)行  createrepo 程序生成  repodata 下的  comps.xml 文件  
 #cd /lempos 
 #createrepo -g repodata/comps.xml . 
 
 4. 配置 kickstart 腳本  
 
 通過(guò)  CentOS5.3 定制安裝系統(tǒng)以后,會(huì)在系統(tǒng)里站生一個(gè)  kickstart 安裝腳本  (/root/anaconda-ks.cfg ) 
 # cp anaconda-ks.cfg /lempos/isolinux/ks.cfg 
 # vi/ltos/isolinux/ks.cfg  并修改腳本如下  : 
 
 # Kickstart file automatically generated by anaconda.
 install
 text
 cdrom
 #lang en_US.UTF-8 
 #keyboard us
  network --device eth0 --bootproto static --ip 192.168.1.17 --netmask 255.255.255.0 --gateway 192.168.1.1 --nameserver 202.102.154.3,202.102.152.3 --hostname autolemp
 #rootpw --iscrypted $1$jPZf0P0r$JRe7pd.5wq9k.VZEMOgdq/ 
 firewall --disabled
 authconfig --enableshadow --enablemd5
 selinux --disabled
 timezone 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 --linux
 #part /boot --fstype ext3 --size=100
 #part swap --size=512 注釋掉,然后系統(tǒng)安裝時(shí)就會(huì)提示分區(qū)的 
 #part / --fstype ext3 --size=100 --grow 
 
 %packages
 @editors
 @text-internet
 @core
 @base
 device-mapper-multipath
 -acpid
 -readahead
 -aspell-en
 -apmd
 -aspell
 -vconfig
 -rsync
 -autofs
 -pcmciautils
 -firstboot-tui
 -cpuspeed
 -NetworkManager
 -tcpdump
 -rsh
 -nfs-utils
 -smartmontools
 -telnet
 -bluez-utils
 -usbutils
 
 . #
 # ------- Begin LEMP Install ---------
 #
 %post --nochroot
 # Mount CDROM
 mkdir -p /mnt/cdrom
 mount -r -t iso9660 /tmp/cdrom /mnt/cdrom
 # Copy our tar file and extract it
 cp /mnt/cdrom/lemp.tar.gz /mnt/sysimage/tmp/lemp.tar.gz > /dev/null
 cp /mnt/cdrom/AutoLEMP-0.1.2.tar.bz2 /mnt/sysimage/tmp/AutoLEMP-0.1.2.tar.bz2 > /dev/null
 rm -rf /mnt/sysimage/etc/issue
 cd /mnt/sysimage/tmp/
 tar -zxvf lemp.tar.gz > /dev/null
 tar -jxvf AutoLEMP-0.1.2.tar.bz2 -C /mnt/sysimage/usr/local
 # Move the contents of the tar into their new locations
 cp -R /mnt/sysimage/tmp/boot/* /mnt/sysimage/boot/ > /dev/null 2>/dev/null
 cp -R /mnt/sysimage/tmp/etc/* /mnt/sysimage/etc/ > /dev/null 2>/dev/null 
 rm -rf lemp.tar.gz && rm -rf boot && rm -rf etc
 rm -rf AutoLEMP-0.1.2.tar.bz2
 # Unmount CDROM
  
 %post
 #vim syntax on
 sed -i "8 s/^/alias vi='vim'/" /root/.bashrc 2>/dev/null
 echo 'syntax on' > /root/.vimrc 2>/dev/null
 # Disable IPv6 until Cacti at least supports it
 echo "alias net-pf-10 off" >> /etc/modprobe.conf
 echo "alias ipv6 off" >> /etc/modprobe.conf
 /sbin/chkconfig --level 35 ip6tables off
 #init_ssh
 ssh_cf="/etc/ssh/sshd_config"
 sed -i -e '74 s/^/#/' -i -e '76 s/^/#/' $ssh_cf
 sed -i "s/#UseDNS yes/UseDNS no/" $ssh_cf
 #client
 sed -i -e '44 s/^/#/' -i -e '48 s/^/#/' $ssh_cf 
 # Remove the ISO File translation files
 find / -name TRANS.TBL -exec rm {} /; /dev/null 2>/dev/null 
 # Remove some unneeded services
 #--------------------------------------------------------------------------------
 cat << EOF
 +--------------------------------------------------------------+
 | === Welcome to Tunoff services === |
 +--------------------------------------------------------------+
 EOF
 #---------------------------------------------------------------------------------
 for i in `ls /etc/rc3.d/S*`
 do
 CURSRV=`echo $i|cut -c 15-`
 echo $CURSRV
 case $CURSRV in
 crond | irqbalance | microcode_ctl | network | random | sshd | syslog | local )
 echo "Base services, Skip!"
 ;;
 *)
 echo "change $CURSRV to off"
 chkconfig --level 235 $CURSRV off
 service $CURSRV stop
 ;;
 esac
 done 
 
 
 二 . 個(gè)性化定制你的系統(tǒng)(問(wèn)答形式)  
 
 1. 如何定制安裝開(kāi)機(jī)畫(huà)面 : 
 啟動(dòng)畫(huà)面用的是一種比較奇怪的格式  lss16 ,它限制圖片使用  16 種顏色,除去前景和背景色只能有  14 種顏色。我們需要  ppmtolss16giftopnm 等程序,系統(tǒng)一般默認(rèn)都安裝了。  
 一般用  gimp 生成一個(gè)  index 模式的  gif 圖形,顏色限制為  14,  然后通過(guò)如下的辦法進(jìn)行轉(zhuǎn)  : 
 
 安裝  yum -y install syslinux 
 giftopnm< splash.gif | ppmtolss16 > splash.lss 
 
 另外你還需要修改  isolinux/boot.msg 文件,做一些個(gè)性化的提示  . 
 
 ?   如何生成高質(zhì)量的圖。  
 先用  photoshop 打開(kāi)任何一張圖片,然后在文件的下拉菜單里  , 保存的時(shí)候選擇“保存為   WEB 和設(shè)備使用格式  “,再然后選擇  gif 再選擇  16 色  保存就  OK. 
 仍后利用  giftopnm < splash.gif | ppmtolss16 >splash.lss  轉(zhuǎn)換即可  . 
 
 2. 如何生成 GRUP 的 xpm 文件 ? 
 (1)  將備一張  640 x 480 16 色圖片,檔案類型為  JPG 的格式  
 (2)convert grub.gif-colors 14 -geometry 640x480! splash.xpm && gzip -9 splash.xpm.gz  
 (3)  直接替換  /boot/grup/splash.xpm.gz  文件即可  . 
 
 ?   利用上面方法生成的圖片可能無(wú)法顯示,或者質(zhì)量不高,如何生成高質(zhì)量的  grub 圖片呢  . 
 利用文中后面我提供的  ltospackl.tar.gz 里面的  grubtool.exe 即可在  windows  平臺(tái) 將  jpg,bmp 圖生成為  .xpm.gz 格式的文件,直接替換  /boot/grup 下的文件即可  .
 
 2. 如何去掉安裝過(guò)程中的 CentOS 字樣?  
 在安裝光盤(pán)里面有兩個(gè)  .buildstamp 文件,一個(gè)位于  stage2.img 中,一個(gè)位于  initrd.img 中,  
 安裝光盤(pán)運(yùn)行 時(shí)讀取的是  initrd.img 中的那個(gè)  .buildstamp 
 文件,所以只要把  initrd.img 文件改了就可以了。  
 如何解壓  initr.dimg 文件  : 
 2.6 內(nèi)核 中的  initrd.img 采用  cpio 壓縮,不再是  2.4 內(nèi)核使用的  ext2 格式,無(wú)法使用  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 文件  : 
 # 假設(shè)當(dāng)前目錄位于準(zhǔn)備好的  initrd 文件系統(tǒng)的根目錄下  
 # find . | cpio -c -o >../initrd.img  
 # gzip ../initrd.img 
 # cp initrd.img /ltos/isolinux/ 
 
 仍后將  initrd.img 復(fù)制到  /ltos/isolinux/ 
 
 3.   如何替換安裝以后的   grub?  
 在安裝光盤(pán)里的  ks.cfg 文件里寫(xiě)好替換  splash.xpm.gz 文件即可  . 
 
 4.   如何去掉啟動(dòng)過(guò)程中的   "CentOSrelease 5 (Final)"  
 在安裝光盤(pán)里的  ks.cfg 文件里寫(xiě)好腳本,直接替換  /etc/redhat -release 即可  . 
 
 三   .  打包生成   ISO  文件發(fā)布   
 # cd /ltos 
 # declare -x discinfo=`head -1 .discinfo`
  
 # createrepo -u "media://$discinfo" -grepodata/comps.xml . 
 
 
 生成   ISO  文件   
 #mkisofs -R -J -T -r -l -d -allow-multidot-allow-leading-dots -no-bak -o /tmp/LEMPOS-0.1.3-i386.iso / 
 -b isolinux/isolinux.bin -c isolinux/boot.cat-no-emul-boot -boot-load-size 4 -boot-info-table .  
 
 Md5  
 /usr/lib/anaconda-runtime/implantisomd5/tmp/LEMPOS-0.1-i386.iso 
 
 附錄:lemp.tar.gz分解 
 
 解壓后,會(huì)發(fā)現(xiàn)存在 boot etc 兩個(gè)目錄,里面總共包括network、redhat-release、splash.xpm.gz 
 登陸界面就是在network這個(gè)系統(tǒng)腳本中,分別在55行,149 150 151代碼,因?yàn)?etc/issue本身不是腳本文件,可以用^[[32;1m這樣的代碼來(lái)實(shí)現(xiàn)彩色。更改自己需要的信息 
 相關(guān)腳本及制作工具 下載   : 
 http://www.linuxtone.org/project/ltos/ltospack.tar.gz   
?
   
總結(jié)
以上是生活随笔為你收集整理的[转]订制CentOS自安装光盘的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
 
                            
                        - 上一篇: 回合策略游戏《神笔谈兵》发售:首发加入
- 下一篇: 如何让秒杀、活动倒计时更“精确”?
