Next Previous Contents

8. 其它各種主題 -- Miscellaneous topics

8.1 減少 root filesystem 的 size -- Reducing root filesystem size

有時 root filesystem 會因太大而無法塞入一張軟碟片內,甚至在壓縮過後還是這樣。這裡有一些方法可減少 filesystem 的 size :

  1. 增加磁碟片密度 (density) 。 依照預設,軟碟片會以 1440 K 來進行格式化,但是現在也有更高密度的格式。 fdformat會為以下 sizes 的磁片進行格式化: 1600, 1680, 1722, 1743, 1760, 1840, 以及 1920 。大部分的 1440 K 軟碟機可支援 1722 K ,我一直都是使用這個來製作 bootdisks 。請參考 fdformat man page與 /usr/src/linux/Documentation/devices.txt 。
  2. 替換你的 shell 。 一些在 Linux 上廣受歡迎的 shells ,諸如 bashtcsh ,是相當大且需要許多函式庫。 Light-weight 的選擇於是存在,諸如 ash, lsh, kisssmash,它們小很多而且只需要很少 (或是不需要)函式庫。大部分這些用來代替的 shells 可以在 http://metalab.unc.edu/pub/Linux/system/shells/ 找得到。請確定你所使用的任何 shell ,能夠執行你放在你 bootdisk 內的所有 rc 檔案中的指令。
  3. 刪去函式庫與二進位檔 。 很多函式庫與二進位檔一般而言是未被刪去的 (包括debugging symbols)。如果如此,對這些檔案執行 file 會告訴你 ``not stripped'' 。 當 copy 二進位檔到你的 root filesystem 時,這是一個好練習去使用:
          objcopy --strip-all FROM TO
    
    當 copy 函式庫時,請確定使用的是 strip-debug 而不是 strip-all
  4. 如果你在製作 root filesystem 時,刪除或移動過多檔案,請再重新製作一次。請看上述關於不要在 filesystem 內有 dirty blocks 之重要性的注意事項。
  5. 移動非關鍵檔案到工具磁片 (utility disk) 上 。 如果你的一些二進位檔對 boot 或 login 來說並非立即需要,那麼你就可以把它們移到工具磁片上。細節請看 Building a utility disk 這一節。你同樣可考慮把 modules 移到工具磁片上。

8.2 Non-ramdisk root filesystems

Building a root filesystem 這一節曾給予指示以建造一個壓縮的 root filesystem ,它會在系統開機時被載入到 ramdisk 。這個方法有許多優點,所以通常都採用此法。然而,一些只有一點點記憶體的系統無法負擔此法所需的 RAM ,因此,這些系統必須使用直接從軟碟片掛上的 root filesystems 。

這樣的 filesystems 實際上比壓縮的 root filesystems 更容易建造,因為它們可以被造在一張磁片上,而非某個其它的設備上,另外,它們也不必被壓縮。當異於前述的指示時,我們將敘述該程序的要點。如果你選擇這樣做,請記得你可獲得的剩餘 空間會變少

  1. 請計算你將有多少空間可供 root files 使用。 如果你建造的是一張單一的 boot/root 磁片,你必須讓所有給 kernel 的 blocks 以及所有給 root filesystem 的 blocks 都能容納於同一張磁片上。
  2. 使用 mke2fs ,在適當 size 的軟碟片上造出一個 root filesystem 。
  3. 如同前述的方法殖入於此 filesystem 。
  4. 完成後, unmount 此 filesystem 並且傳送它使之成為一個磁片檔案,但是 不要壓縮它
  5. 以前述之方法,把 kernel 傳送到一張軟碟片上。當計算 ramdisk word 時, 把 bit 14 設成 0 ,以指示不要把 root filesystem 載入到 ramdisk 。請以前述之方法執行 rdev 指令。
  6. 如同以往,傳送此 root filesystem 。

有好幾種捷徑你可採用。如果你建造的是一套雙磁片組,你可以直接把完整的 root filesystem建造在第二張磁片上,而且你並不需要把它傳送成一個硬碟檔案然後再存回磁片上。同樣地,如果你建造的是一張單一的 boot/root 磁片而且使用 LILO ,你可以在整張磁片上建立 單一的 filesystem,包含 kernel 、 LILO files 與 root files ,然後只要執行 LILO 做為最後一步。

8.3 建造一張工具磁片 -- Building a utility disk

建造一張工具磁片相對來說簡單多了 -- 只要在一張已格式化的磁片上造出一個 filesystem ,然後 copy 檔案於其上即可。為了跟 bootdisk 一起使用它,請在系統啟動以後,用手動的方式 mount 它。

在前面的指示中,我們曾提及 utility disk 可以被 mount 做為 /usr 。在這個情況下,二進位檔可以被放在你 utility disk 之 /bin 目錄內,以便於將 /usr/bin 設入你的 path 中可以存取它們。二進位檔所需之其它函式庫被放在 utility disk 之 /lib 目錄內。

當設計 utilitu disk 時,有幾個重點要記住:

  1. 不要把關鍵的系統二進位檔或函式庫放到 utility disk 上,因為直到系統順利啟動之前, utility disk 不會被掛上,其上的檔案也無法供系統使用。
  2. 你不能同時存取一張軟碟片與一台磁帶機。意指如果你有一台磁帶機,那麼當你正在使用 (mount) utility disk 時,你將不能存取那台磁帶機。
  3. 存取 utility disk 上的檔案會很慢。

Sample utility disk directory listing 提供了utility disk的檔案之樣本。以下是一些建議關於一些你會發現有用的檔案:檢查與操作磁片(format, fdisk)、 filesystems (mke2fs, fsck, debugfs, isofs.o)的程式,小型的文書編輯器 (elvis, jove),壓縮與檔案工具 (gzip, tar, cpio, afio), 磁帶工具 (mt, tob, taper),通訊工具 (ppp.o, slip.o, minicom)與給設備使用的工具 (setserial, mknod)。


Next Previous Contents