把 cyut 版的 slax 拷貝到隨身碟上

2011/09 更新: 新版的 cyut 救命碟已經不用 slax, 而是 改用 SimplyMepis

  1. 假設你已 用 mk-boot-usb 做好可開機隨身碟。 一開始上面只有 ttylinux; 現在我們要把 cyut 版的 slax 放上去。
  2. 先下 df, 出現類似這樣的結果:
            Filesystem           1K-blocks      Used Available Use% Mounted on
            aufs                    617944      4504    613440   1% /
            /dev/hda1            160826680  39749812 121076868  25% /mnt/hda1
            /dev/sda1              3162420     70336   2931436   3% /mnt/sda1
            /dev/sda2              3162452     70336   2931468   3% /mnt/sda2
            /dev/sda3              9487672    152400   8853324   2% /mnt/sda3
            /dev/sda5              3162420     70336   2931436   3% /mnt/sda5
            /dev/sda6            221475136  52600344 157801036  25% /mnt/sda6
    
    我的電腦有一顆 160G 的古代 IDE 硬碟 (/dev/sda) 只含一個分割區, 及一顆 240G 的 SATA 硬碟 (/dev/sda), 切了三個 主要分割區 primary partitions 及兩個 邏輯分割區 logical partitions。 (實際上切更多; 不過簡化一下比較不會亂掉。) 詳見 硬碟分割的觀念
  3. 插入已做好的隨身碟, 等它跳出數個對話框 (問你是否要開啟隨身碟), 再下一次 df。 應該沒有任何差別。
  4. 每按一個 「確認」 (開啟), 就再下一次 df, 會看到每次多一列。 當初你的隨身碟切成幾個分割, 現在就會有多少個對話框; 到最後就會多出那麼多列。 延續先前 「432 3400」 的假設, 總共有三個分割 (別忘了, mk-boot-usb 切了一個系統用的第四分割區), 所以我看到多出三列:
            /dev/sdx1               441520         0    441520   0% /mnt/sdx1
            /dev/sdx4                23332     15996      6132  73% /mnt/sdx4
            /dev/sdx5              3450552      5960   3270692   1% /mnt/sdx5
    
  5. 再來要找出 slax 光碟資料, 到底放在那個目錄底下? 在其他主流版本的 linux 裡面 (例如 ubuntu/fedora/mandriva), 如果光碟機內有光碟片, 通常用 df 可以看到有一列 cdrom 之類的。 但 slax 採用 aufs ("another union file system" -- union fs 的改良版), 所以用 df 看不見。 請用 less /proc/mounts 查看, 並尋找 "iso9660" (所有 cdrom 的 檔案系統格式 皆是 iso9660) 或直接: grep iso9660 /proc/mounts 看到類似這樣一列:
            /dev/hdz /mnt/live/mnt/hdz iso9660 ro,noatime 0 0
    
  6. 確認一下 /mnt/live/mnt/hdz 的內容及容量:
            cd /mnt/live/mnt/hdz
            ls -l
            du -s
            cd slax
            ls -l
            du -s modules/ optional/
    
    出現的第一個數字 A 是光碟總容量; 後兩個數字 B 與 C 是我多放進去的額外模組總容量。 A - (B+C) 應該大約是 200000 (單位是 K), 也就是說, 原始光碟佔用的空間將近 200M。
  7. 在 /mnt/sdx5 底下建一個新目錄 slax-6.1.2 , 並把 /mnt/live/mnt/hdz 整個目錄 (連同子目錄孫目錄...) 複製進去。
            cd /
            cp -a /mnt/live/mnt/hdz /mnt/sdx5/slax-6.1.2
    
  8. 放在 modules 底下的模組 (.lzm 檔) 在開機時會自動載入; 放在 optional 底下的模組, 則需要另外指定。 為避免麻煩, 我們將 optional 底下的中文字型模組 zh-tw*.lzm 及中文輸入法模組 gcin*.lzm 搬到 modules 底下。 (當初製作這張光碟, 希望外國朋友也可以用, 所以把語言模組都放在 optional, 這樣開機就進入普通的英文介面。) 記得要用 tab 鍵 (定位鍵) 讓系統幫你做 file name completion!
            cd /mnt/sdx5/slax-6.1.2/slax/optional/
            mv zh-tw-定位鍵 gcin-定位鍵 ../modules
            cd - # 記得離開這個目錄, 否則等一下無法卸下隨身碟。
    
  9. 修改設定檔: 請用編輯器 (vim 或 nano) 開啟 /mnt/sdx4/boot/grub/menu.lst 並將其中 slax 那一段改成如下:
            title   slax 6.1.2
            kernel  (hd0,4)/slax-6.1.2/boot/vmlinuz ramdisk_size=6666 root=/dev/ram0 rw autoexec=xconf;telinit~4 from=/slax-6.1.2/ changes=/slax-6.1.2/slax
            initrd  (hd0,4)/slax-6.1.2/boot/initrd.gz
    
    特別注意底線強調的部分。 你可能需要修改這些地方, 以符合你真實放置 slax 的分割與目錄。 最保險的方法是, 從光碟上的 boot/ 或 isolinux/ 目錄下找到這一片光碟的開機設定檔, 從這裡出發, 改成 grub 語法, 並修改上述分割與目錄。 詳見 修改 grub 設定檔
  10. 卸下隨身碟: umount /dev/sdx? 並且用 df 確認已經 沒有 任何一列含有 /dev/sdx?。 先用 qemu 測試一下, 然後拔出隨身碟, 找一部實機測試一下。 也許當初應該先把 menu.lst 裡面的 default 從 ttylinux 改成 slax。 又, 請下 df > df.txt, 這個存檔 df.txt 日後有用。

其他版本的 live cd / live dvd, 做法類似。 以 damn small linux 為例, 只需要多一個選項: knoppix_dir。 詳情請搜 「dsl cheat code」。