2012年6月29日 星期五

重製 Tiny Core Linux 光碟


Tiny Core Linux 從 4.0 版開始, 共推出三個版本, 分別是 TinyCore, CorePlusCore. Core 這個版本並沒有提供桌面系統, 只提供文字命令模式, 因它具有系統擴充功能的能力, 可以輕易換裝扮演 網路設備(NAT, Router,..)應用伺服器 (Samba, Apache,...), 為了換裝方便, 必須重製 Core 的光碟檔, 使它具有儲存 "系統設定檔" 及 "應用伺服器套件檔" 的功能. 重製後的光碟檔, 為了與原發行套件做區別, 所以給它命名為 Tiny Server Core, 簡稱為 TSC.

重製 Core 光碟檔, 主要是針對 isolinux 這個 boot loader 的核心參數, 加入 tce=sda1 及 restore=sda1 這二個參數. 重製後的光碟檔, 一旦啟動如偵測到有一顆硬碟(必須有格式化), 它會自動將此硬碟設為 "系統設定檔 (bootlocal.sh,..)" 及 "應用伺服器套件檔 (*.tcz)" 的儲存裝置

重製操作步驟如下 :

1. 下載 Tiny Core Linux 的 Core 光碟檔 (32 位元)

http://distro.ibiblio.org/tinycorelinux/4.x/x86/release/Core-current.iso

2. 使用本文後面提供的 fromiso.sh 程式, 將 Core 光碟檔解開

$ sudo ./fromiso.sh ISO/Core-current.iso
[sudo] password for student:
/tmp/core
└── boot
    ├── core.gz
    ├── isolinux
    │   ├── boot.cat
    │   ├── boot.msg
    │   ├── f2
    │   ├── f3
    │   ├── f4
    │   ├── isolinux.bin
    │   └── isolinux.cfg
    └── vmlinuz

2 directories, 9 files

光碟解開的內容, 會存放在 /tmp/core 目錄中

3. 修改 isolinux 系統啟動設定檔 (isolinux.cfg), 命令如下 :

$ sudo nano /tmp/core/boot/isolinux/isolinux.cfg

display boot.msg
default microcore
label microcore
        kernel /boot/vmlinuz
        append initrd=/boot/core.gz quiet tce=sda1 restore=sda1

label mc
        kernel /boot/vmlinuz
        append initrd=/boot/core.gz quiet
implicit 0
prompt 1
timeout 300
F1 boot.msg
F2 f2
F3 f3
F4 f4

在 isolinux.cfg 設定檔中加入 "tce=sda1 restore=sda1" 這二個 Linux 系統核心參數, 這二個參數用來指定 "擴充套件" 及 "系統設定檔" 的儲存裝置 (/dev/sda1)

4. 使用本文後面提供toiso.sh 程式, 產生 Tiny Server Core 光碟檔

$ sudo ./toiso.sh
I: -input-charset not specified, using utf-8 (detected in locale settings)
Size of boot image is 4 sectors -> No emulation
Total translation table size: 2048
Total rockridge attributes bytes: 1301
Total directory bytes: 4096
Path table size(bytes): 38
Max brk space used 22000
4048 extents written (7 MB)

重製的光碟檔存放在 /tmp 目錄, 檔名為  tsc32.iso


fromiso.sh 程式內容如下 :

# 執行前檢查
[ "$USER" != "root" ] && echo "需要 root 權限" && exit 1

if [ -f "$1" ]; then
   mkdir /tmp/isotmp
   mount $1 /tmp/isotmp -o loop,ro &>/dev/null

   [ -d /tmp/core ] && rm -r /tmp/core

   mkdir /tmp/core
   cp -a /tmp/isotmp/boot /tmp/core &>/dev/null

   umount /tmp/isotmp &>/dev/null
   rm -r /tmp/isotmp

   # 顯示重製目錄內容
   tree /tmp/core
fi

toiso.sh 程式內容如下 :

# 執行前檢查
[ "$USER" != "root" ] && echo "需要 root 權限" && exit 1

if [ -d /tmp/core ]; then
   cd /tmp/
   mkisofs -o tsc32.iso -l -J -R -V Core-custom -no-emul-boot -boot-load-size 4 -b boot/isolinux/isolinux.bin -boot-info-table -c boot/isolinux/boot.cat core
fi

沒有留言:

張貼留言