2011年9月11日 星期日

Linux 開機隨身碟延年益壽妙方 & 複製 SimplyMepis 版救命碟

May your tux usb keys and sd cards live long and prosper! 2013/9/3 補充: 改推薦 antix

「百毒不侵救命碟」 可以讓你過著 電腦樂活 的生活。 不過隨身碟如果寫入頻率過高, 很容易衰老損毀。 在經過設定之後, 過去三個多星期我帶著 Linux 開機隨身碟在國外生活, 開機六十多次共使用一百多個小時, 到目前為止都沒什麼問題。 (這帖的圖文也還是在這上面完成的。) 以下解釋如何讓您的 Linux 開機隨身碟也可以延年益壽; 主要參考 SSD optimizations on Linux 這篇文章。

一、 開機隨身碟延年益壽妙方

救命碟原本採用的版本是 slax-cyut; 但是因為 slax 已經兩年沒有更新, 所以最近改用 SimplyMepis。 本文的實作環境是 mk-boot-usb 所製作的開機隨身碟上安裝的 SimplyMepis 11; 不過我猜大致上也適用於其他基於 debian 的版本。

首先請把你的隨身碟當做硬碟, 將 SimplyMepis 安裝進去。 我是在 8G 隨身碟上用 mk-boot-usb 分配 6G 給 SimplyMepis 用。 (好懷念 slax 的輕薄短小...) 然後下載 m/11/ssd-opt.tgz ssd-opt-2.tgz (2012/09/09 小更新) 並且到根目錄底下解壓縮: cd / ; tar xvzf ssd-opt-2.tgz。 這些檔案就是讓開機隨身碟延年益壽的妙方。 reminder/ 底下的檔案都只是提醒作用, 你必須找到自己系統內相對應的檔案, 模仿修改; 其他檔案則可以不去動它。

  1. 修改 grub 選單裡的開機選項, 加上 elevator=noop 這一小段 (請參考 reminder/menu.lst)
  2. 修改 /etc/fstab , 加上以下幾句:
            tmpfs /tmp tmpfs defaults 0 0
            tmpfs /var/run tmpfs defaults 0 0
            tmpfs /var/log tmpfs defaults 0 0
    
    這些都是最常寫入的目錄, 所以把它們放在記憶體裡。 超重要! (請參考 reminder/fstab)
  3. 找到每一位用戶的 firefox 設定檔 -- ~/.mozilla/firefox/亂數.default/prefs.js 並且在裡面加上這一句: user_pref("browser.cache.disk.parent_directory", "/tmp/ckhung/firefox"); 請參考 reminder/prefs.js 並且請把 ckhung 改成你的帳號。 [注意: 請先關掉 firefox 才編輯 pref.js , 不然會做白工。] 這個設定超重要! 幾年前我剛開始玩隨身碟開機時, 就是因為不懂得設定這個, 所以有好幾顆隨身碟死在 firefox 的 cache 手上 冏rz。 這個設定指定快取暫存檔放置的目錄。 注意: 如果是在多人共用電腦上, 這個設定會洩漏隱私!
  4. park/ 子目錄搭配 etc/init.d/park-ssd 腳本, 作用是: 關機前把 (存放於記憶體裡面的) /var/log 拷貝回隨身碟上的 park/ 子目錄; 開機後又把隨身碟上的 log 檔拷貝到 (記憶體內的) /var/log 。 另外, etc/rc?.d/*park-ssd 這幾個捷徑, 是用 update-rc.d park-ssd defaults 自動產生出來的; 詳見 Making scripts run at boot time with Debian。 這部分的所有檔案應該都不需要更改。
  5. /etc/polkit-1/localauthority/50-local.d/02-disable-hibernation.pkla 的作用是取消休眠功能 (我不確定有無效果)

重新開機之後, 請做兩個最重要的檢查:

  1. df 指令的結果, 至少應該包含以下所有 tmpfs 的檔案系統:
            ckhung@z9100:~$ df
            檔案系統               1K-區段      已用     可用 已用% 掛載點
            ...
            tmpfs                   512208     10684    501524   3% /tmp
            tmpfs                   512208       384    511824   1% /var/run
            tmpfs                   512208     21944    490264   5% /var/log
    
  2. ls -la .mozilla/firefox/*.default/Cache 應該看到空的目錄; 另一方面 ls -la /tmp/你的帳號/firefox 應該看到很多目錄與檔案。

如果這兩個檢查的結果不符預期, 那麼你的隨身碟還是曝露在過度寫入的危險之中! 另一個次要的檢查是 /park 裡面的檔案。 使用電腦時, 那些檔案應該不會增減; 但每次重開機之後, 會有一些檔案更新、 變大。

最後, 壓縮檔裡面還附贈一個 /usr/sbin/mbu-uuid 指令。 因為複製新版的救命碟時, 需要多一個步驟...

二、 複製 SimplyMepis 版或 Antix 版的百毒不侵救命碟

[2014/02/16 更新]

想要複製救命碟, 建議先在你原本的 (Antix/SimplyMepis/... 完整版本的) 救命碟上面另外補裝文字介面救援版 finnix。 (不需要重新製作救命碟。)

  1. 確認你的救命碟 [甲碟] 上沒有個人隱私資料如相片密碼信用卡號等等!
  2. 以甲碟開機, 選擇進入 finnix。
  3. fdisk -s /dev/sd?
  4. 插入目的地碟 [丙碟]
  5. 隔幾秒, 再度 fdisk -s /dev/sd? 看看與先前有何差異。
  6. mk-boot-usb -b -v 1 -s /dev/sd甲 -d /dev/sd丙 把甲碟複製給丙碟。
  7. mbu-uuid /dev/sd丙 這支小程式會自動整修丙碟的 menu.lst 與 fstab 裡面的 UUID= 設定。

上面的 fdisk 指令, 用意是根據隨身碟插入順序及顯示的容量大小 (以 K 為單位) 來判斷甲碟及丙碟的正確代號。 當然, 用甲碟開機之後, 也可以拿另外的乙碟當作來源碟, 複製給丙碟。

請用力為更多朋友製作開機隨身碟吧! (但要注意保護自己及他人的隱私, 記得別誤將自己平日使用的隨身碟複製給別人了) 史巴克與貴哥共同祝您的 Linux 開機隨身碟與記憶卡長命百歲, 多子多孫 -- live long and prosper!

4 則留言:

  1. 更新: 如果乙碟上除了 SimplyMepis 之外, 也安裝一套原始精簡的 slax 並加裝 mk-boot-usb 與 mbu-uuid, 那麼就可以省略甲碟, 直接從乙碟的 slax 開機, 從乙複製到丙。

    回覆刪除
  2. slax有人改良新的版本叫porteus(http://porteus.org/),設定方式跟slax一樣,只要幾百mb,隨身系統帶著走~

    回覆刪除
  3. 哇, 好酷, 謝謝! 暑假再來試 porteus。 雖然現在 16G 隨身碟只要 399; 如果可以恢復像過去一樣用 2G 裝一堆教育軟體還是比較酷。

    回覆刪除