阿貴的系統管理撇步


我用 linux 很多年了, 玩出一些不太正統的系統管理心得, 在這裡跟大家分享。 當然, 每個人的需求與癖好不同, 這裡提供的撇步不見得適合您。 我的生活哲學是: 降低對外界的需求, 提高自己適應不同環境的彈性, 隨時準備好面對最艱困的環境。 因此我選擇的應用軟體與安裝的系統有一些特性:

  1. 盡量用小支, 依賴套件少, 文字介面的工具。 例如用 lynx 與 w3m 瀏覽; 用 mutt 收發信件, 用 vim 編輯 html 檔並用 tidy 整修, 用 soffice2html 轉換 OO.o, ... 等等。 又如視窗管理員, 我既不用 gnome 也不用 kde, 而是選擇輕薄短小卻聲效十足的 enlightenment, 強力推薦!
  2. 用不到的套件盡量砍掉!

所以要安裝一套每天工作娛樂使用的系統, 其實 2G, 最多 3G 的硬碟空間就用不完了。 (我的系統通常大約使用 1.2G 到 1.5G 的空間) 以下許多安排的合理性與實用性, 都基於這樣的假設。 另一方面, 如果您的生活哲學與我不同, 這裡談的資源配置就不見得適合您。 (例如備份光碟可能會超過 700MB)

分割硬碟

首先盡其可能地多切幾個 partitions。 如果沒有經過特殊設定的話, 一顆硬碟最多可以切成 16 個分割。 其中 1 個 extendend partition 只是用來容納 logical partitions 的空殼子, 不能直接用; 其他 3 個 primary partitions 與 12 個 logical partitions 都可以用。

按照大小, 不要按照功來能切割。 這部電腦用幾年下來, 可能會升級好幾次, 安裝很多套不同的 Linux 或 BSD (如果不幸的話, 甚至還必須安裝 Windows...)。 從這個角度思考, 留各種不同大小的空間, 比現在決定如何分出 /var /home /usr ... 更有意義。 事實上大部分時候我只掛載兩個分割在用: 系統與資料; 而資料要由不同版本的系統共用, 所以有另外的設定方式, 下詳。 例如 40G 的硬碟, 它的 logical partitions 可以切成 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 6, 6; 其他留給 primary。 有各種大小的分割, 最常用的大小多切幾個, 這樣將來要調整/安裝多套/對調/... 就很方便。

Windows 很難養, 一定要 primary partition, 所以把 那三個 primary 留給它, 萬一那天不幸需要的時候可以用。 選一個分割 (例如叫做 worksp) 存放資料, 包含未來的 /home 。 從前我還必須 dual boot 回 windows 或 OS/2 的時候, 另外還有一個格式化成 vfat 的分割 (例如叫做 share), 用來與這些作業系統交換檔案。

安裝系統

選一個 2G 的分割, 開始進行 最小安裝。 如果新版的光碟片/系統/驅動程式/... 有任何問題, 很快就會知道; 避免花了很多時間選套件, 最後才發現根本無法開機。

確定可以開機沒問題之後, 趕快重新開機切換到另一個系統 (例如舊版的 Linux; 或直接用光碟開機, 並在 boot 的提示符號上打 linux rescue 進入救援模式)。 假設剛剛裝在 /dev/hda17 上面, 於是檢查一下系統 fsck -f /dev/hda17, 掛載進來 mount /dev/hda17 /mnt/hda17, 備份 cd /mnt/hda17 ; tar czf . /some/large/data/partition/mdv-06-a.tgz 這裡的 "/some/large/data/partition" 當然是指另外掛載的, 專門放大量資料的大容量分割。 將來要還原或是複製系統, 可以直接拿這個映象檔來解壓縮 (下詳), 不必再經過繁瑣的交談式安裝手續。 這要蠻久的, 起來活動活動筋骨吧。

重新開機回到剛裝好的迷你系統, 開始增刪套件。 rpm -qa --qf '%10{SIZE} (%{NAME}) %{SUMMARY}\n' | sort -n | less 從最下面 (最大) 的套件開始向上檢查, 看看有那些套件自己從來不用, 可以刪除。 至於新增套件, 在 Mandriva 底下可以用 urpmi, 在 Fedora 底下可以用 yum; 這兩個指令都會查看欲安裝套件的相依關係, 如果有必要, 會自動安裝使用者未指定, 但需要用到的其他套件。 一切 ok 沒有問題之後, 記得下 rpm -qa > .../worksp/mdv-06-b.rpm-qa 將系統目前安裝的套件列表記錄到資料分割某處。 這可是經過幾小時精挑細選的心血, 要好好保存。 另外, 我習慣把新增的 user (例如 ckhung) 的家搬到工作分割 worksp 底下, 並從 /home 底下建立 symbolic link: ln -s /mnt/worksp/home/ckhung 這樣將來不論從那套 linux 開機, 自己家中的設定都不必重新改。

複製系統

再度 reboot, 切換到舊的 Linux 或用光碟開機。 就像先前備份的動作一樣, 再把剛才辛苦挑選套件安裝完成的系統壓縮起來, 叫做 mdv-06-b.tgz 好了。 (一樣, 放在另外的大容量資料分割。) 現在將整個系統複製到 /dev/hda18 去:

	mkfs -t ext2 -j /dev/hda18
	mount /dev/hda18 /mnt/hda18
	cd /mnt/hda18
	tar xzpsf /some/large/data/partition/mdv-06-b.tgz

再來只要改兩個地方, hda18 也變成可以開機的系統了:

  1. 修改 /mnt/hda18/etc/fstab, 把原來的 "/dev/hda18 /mnt/xxx ..." 改成 "/dev/hda18 / ..."
  2. 修改 /boot/grub (或是 /lib/grub ?) 底下的 menu.lst -- 把安裝時自動產生的 /dev/hda17 那幾句抄過來類比修改。

重新開機, 選 hda18 進入試試看吧。 Linux 要複製在同一系統的不同分割上面就這麼簡單! 是不是比 Windows 乾淨清楚多了呢?

有了複製系統, 就不怕臨時出狀況。 雖然說 Linux 不太當機, 但是偶爾總會遇到停電不正常關機, 或不經意刪除一些很久以後才會發現/悔恨的套件, ... 等等意外狀況。 特別是經常帶著筆記電腦四處奔波的朋友, 只要遇到一次, 您就會感受到複製系統的方便。

每隔幾個月, 可以檢查這段時間以來新增了那些套件, 準備再製作新的映象檔 mdv-06-x.tgz 。 (x=c,d,e, ...) 但不要直接在現行使用的系統上面製造, 而是切到乾淨, 從來沒有在用的複製系統, 把新增套件一次裝完, 立即重新開機回現行使用的系統, fsck -f 之後, 對複製系統備份。 這樣你的備份系統又乾淨得跟剛安裝完畢時差不多。 當然前提就是平常你不會在現行使用系統上用 "非 rpm" 的方式安裝套件; 或者說, 如果對它做了任何增刪 rpm 套件之外的修改, 記得要記錄下來, 以便製作新映象檔的時候可以使用。

把 grub 搬到 資料分割

到目前為止, grub 都還是跟著 hda17 跑; 但事實上它應該像 home 一樣, 超然獨立於任何版本的 linux 之外。 用 rpm -ql grub 看一下最重要的檔案是那些 (通常放在 /lib/grub 底下), 把它搬到 /mnt/worksp/boot/grub 去, 並且重新安裝一次。 ... 不知為什麼, 較新版本的 grub (0.95, 0.97) 對於 --config-file 沒有反應, 它的設定檔不能改名字, 一定要叫做 menu.lst 。

(本節待補充)

製作救援光碟

把 /mnt/worksp/boot 壓縮起來, 和最新的備份映象檔 mdv-06-x.tgz 一起放到光碟上, 並用 syslinux 安裝幾套小型的 linux, 就變成客製化的救援光碟。 就算機器換了一顆全新的空硬碟, 也可以靠著這張救援光碟, 在半小時內還原成平常工作的環境。

(本節待補充)


命令列讀本

  1. 目錄
  2. 前言
  3. 瀏覽
  4. 套件
  5. 圖片整形
  6. 老鼠迷宮
  7. 迷宮積木
  8. 誰常上機?
  9. 網頁做簡報
  10. tidy 網頁
  11. 編碼
  12. 客製
  13. Regexp
  14. 目錄比較
  15. 聯集差集

附錄

  1. GUI 求生
  2. 基本指令
  3. 阿貴管理