Wednesday, April 22, 2009

Customize Debian Live CD

***目前只會用,完全不知道原理***

參考網址列表:
  1. www.fwlug.org
  2. www.linuxjournal.com
  3. wiki.debian.org
  4. rd.tyc.edu.tw
  5. kewang.pixnet.net
準備工作:
  1. 因為要複製一些設定檔,需要一台Debian系統。
  2. 安裝並設定你要作進Live CD中的套件,選擇的套件越多,最後的iso越大。(eg. LAMP)
  3. 安裝Live CD製作套件。apt-cacher:修改/etc/apt-cacher/apt-cacher.conf,先不啟動。
    • cache_dir=/your/path/to/apt-cacher/cache
    • admin_email=your@email.addr(非必要)
    • daemon_port=3821(隨便,不要小於1024就好,小於1024的話daemon就一定要root的權限,這邊和後面mirror的位址要一致,格式:http://yourIP:port/debian/)
    • group/user=www-data(apache的daemon 權限,因為資料夾需要讓http上的資料可以寫入)
    • path_map=debian ftp.nchc.org.tw/debian ; security security.debian.org/debian-security ftp.nchc.org.tw/debian-security (這裡的mirror站可以參考www.debian.org)
    live-helper
    • 製作Live CD的scripts提供lh_config、lh_clean、lh_build...等scripts。
步驟:全程使用root 權限,且必須在/path/to/LiveCD目錄下。紅字請自行修改成符合的值,藍字是基於某些原因而沒有採用。
  1. 啟動apt-cacher
    • mkdir /path/to/apt-cacher
    • chown -R www-data:www-data /path/to/apt-cacher
    • /etc/init.d/apt-cacher start
  2. 建立Live CD內容的存放目錄
    • mkdir /path/to/LiveCD
  3. lh_config
    • cd /path/to/LiveCD/
    • lh_config --mirror-bootstrap "http://localhost:3821/debian/" --mirror-chroot "http://localhost:3821/debian/" --mirror-binary "http://ftp.nchc.org.tw/debian/" -d lenny --hostname LiveCD --username fcu --memtest memtest86+ --packages-lists local-pkg-lamp --bootappend-live "locale=en_US.UTF-8"
      1. --mirror-bootstrap "http://localhost:3821/debian/"
      2. --mirror-chroot "http://localhost:3821/debian/"
      3. --mirror-binary "http://ftp.nchc.org.tw/debian":
      4. -d lenny
      5. --hostname LiveCD
      6. --username fcu
      7. --packages-lists local-pkg-lamp:套件的清單,名字自取。
      8. --bootappend-live "locale=en_US.UTF-8":locale請自己改成自己想要的,不過,我設上去後,在lh_build時warning狂跳,說沒有en_US.UTF-8。
      9. --memtest memtest86+:memory testing可有可無。
      10. -p xfce-desktop:會裝openoffice,太肥了,不想用。
      11. -b usb-hdd:這個是要做Live USB時使用。
    • 也可以僅執行lh_config,然後自行修改config裡的各項資料。
    • lh_config 後,在/path/to/LiveCD/產生cache/、config/、scripts/資料夾,不知道為什麼在 rebuild的時候,lh_clean會砍到剩下cache/、config/,而重新lh_config的話不會更新config的內容,所以 rebuild的時候,我只留下cache/,其他的手動移除。
  4. 放入自行選擇的套件及設定檔:這裡是影響LiveCD iso檔大小最多的地方,最後的iso大約是實際安裝os的1/3~1/2,要放進光碟的話,要考慮一下大小。另外,所以的設定檔都放在config/下。
    • 套件
      1. config/chroot_local-packageslists/
        • local-pkg-lamp:如果lh_config -p xfce-desktop沒有下,又想有桌面的環境,加入以下橘色部份的套件。
        • apache2
          libapache2-mod-php5
          php5
          php5-mysql
          php5-cli
          mysql-server
          mysql-common
          mysql-client
          lynx
          openssh-client
          openssh-server
          wireshark
          snort-doc snort-mysql
          snort-rules-default
          xorg
          fce4
          vim
          python
          perl
          iceweasel
          desktop-base
          gdm
      2. config/chroot_local-hooks/
        • lamp-update-rcd.sh
          #!/bin/sh
          #lamp-update-rcd.sh

          #Make the init script executable
          chwon root:root /etc/init.d/lamp
          chmod 755 /etc/init.d/lamp
          chwon root:root /etc/init.d/apache2
          chmod 755 /etc/init.d/apache2
          chwon root:root /etc/init.d/ssh
          chmod 755 /etc/init.d/ssh
          chwon root:root /etc/init.d/snort
          chmod 755 /etc/init.d/snort

          #Create symlinks for each runlevel as the following
          update-rc.d lamp defaults 90 10
          update-rc.d apache2 defaults 91 10
          update-rc.d ssh defaults 16 10
          update-rc.d snort defaults 20 10
        • change-owner.sh
          #!/bin/sh
          chown -R fcu:fcu /home/fcu
    • 設定檔:config/chroot_local-includes/*,一開始的時候這個目錄是空的,所以的目錄必須自行建立,這邊要配合你的lh_config和裝進LiveCD中的套件,沒有的話會無法順利lh_build,或者使用預設值啟動套件,有些套件會無法順利啟動。
      1. etc/
        • rc*.d/ and init.d/:init.d/中放scripts,建link到rc*.d/,沒有建立的,在lh_build後也不會產生,若有特別設定的套件,一定要複製過來,並建立link。
          1. lamp
            #! /bin/sh
            # /etc/init.d/lamp
            #

            # Some things that run always
            touch /var/lock/lamp

            # Carry out specific functions when asked to by the system
            case "$1" in
            start)
            echo "Starting script lamp "
            echo "Setting root password for MySQL"
            mysqladmin -u root password new-password
            echo "Importing MYSQL database mydb"
            #create db
            mysqladmin -u root -pnew-password create mydb
            #import db
            mysql -u root -pnew-password mydb < /etc/mydb.sql echo "Leaving script lamp" ;; stop) echo "Stopping script lamp" echo "Nothing to do" ;; *) echo "Usage: /etc/init.d/lamp {start|stop}" exit 1 ;; esac exit 0
          2. ssh:cp /etc/init.d/ssh .
          3. snort:cp /etc/init.d/snort .,這邊要新增以下內容,因為Live CD會把沒有建立的檔案補齊,所以db-depending-config會被建立,這個檔案在預設值中必須被刪除。if [ -f /etc/snort/db-pending-config ] ; then
            `rm /etc/snort/db-pending-config`
            fi
        • vim/:習慣會set nocompatible和syntax on
        • ssh/:sshd_config中把PermitRootLogin改成no
        • hal/:這個是xorg新的設定方式,xorg不再把各項硬體的驅動放在xorg.conf中了,而hal的manpage還是不完整,如果有修改過,記得要複製製過來。
        • snort/:cp -R /etc/snort/ .,修改snort.conf中db的user、password的部份。
      2. var/www/:偷懶,完全懶得改DocumentRoot...XD
      3. home/:配合lh_config --username的設定,cp -aR /home/fcu .,配合change-owner.sh修改不然開機了會不能用。
  5. lh_build:就慢慢等吧,沒有error的話,最後會產生一個binary.iso的檔案。
  6. rebuild
    • lh_clean
      1. lh_clean --purge會把/path/to/LiveCD/清空。
      2. 如果要再lh_config,請手動rm -rf config/。
    • 重複步驟3~5。

No comments: