2013/9/3 補充: 改推薦 antix。 (ezgo 還是比較適合裝在硬碟上。)
趕在替本學期的修課同學製作第一支救命碟之前, 成功地試出如何把 ( 教育意義遠超過 iPad 的...) ezgoX 製作成開機隨身碟了! 對於處理 /var/log 的熟手而言, 這篇的重點只有兩句話: 「開機時從隨身碟還原到記憶體」 的動作可以寄生在 bootlogd 裡面 (但 ezgox/kubuntu 12.04 預設並未開啟 bootlogd); 「關機時從記憶體寫入隨身碟」 的動作可以寄生在 umountfs 裡面。 以下列出完整的步驟。
- 把 ezgox 安裝到隨身碟上。 重開機。
- 做下一步之前, 先關掉 firefox。
echo 'user_pref("browser.cache.disk.parent_directory", "/tmp/ckhung/firefox"); ' >> ~/.mozilla/firefox/*.default/prefs.js
(以上是假設你的 ezgox 的用戶名稱取為 ossacc 而且假設你的 firefox 並沒有 使用多個 profiles -- 也就是說, 假設 .mozilla/firefox/ 底下 *.default/ 只有一個目錄。)- 順便清掉舊的 Cache:
rm -rf ~/.mozilla/firefox/*.default/Cache/*
- 編輯 /etc/fstab , 確認根目錄那一句的 options 當中要有
,noatime,discard
(逗點緊貼著前面, 不可有空格) 例如本來如果是errors=remount-ro
就改成errors=remount-ro,noatime,discard
。 詳見 ext4 對固態硬碟的支援 及 noatime 的意義與效果。 (老實說, 我自己沒試過 discard 的效果, 因為我的救命碟還在用舊版 grub 0.97 搭配 ext2 。 但是少了 atime 的效果很明顯: 光是find / ...
的指令, 就會讓 ezgo 關機前整個當住好久。) - 在 /etc/fstab 裡面加上這幾句:
tmpfs /tmp tmpfs defaults 0 0 tmpfs /run tmpfs defaults 0 0
tmpfs /var/cache tmpfs defaults 0 0tmpfs /var/tmp tmpfs defaults 0 0 # tmpfs /var/log tmpfs defaults 0 0 - 建立備份用的目錄:
mkdir -p /park/var/log
- 在 /etc/init.d/bootlogd
裡面搜尋 "start)" 並且在這句後面加上:
cp -a /park/var/log/* /var/log/ (echo -n "bootlogd start ; /var/log restored from /park/var/log " ; date) >> /root/log ;
- 在 /etc/init.d/umountfs
裡面搜尋 "stop)" 並且在這句後面加上:
cp -a /var/log/* /park/var/log/ (echo -n "umountfs stop ; /var/log saved to /park/var/log " ; date) >> /root/log ;
- 把 /etc/default/bootlogd 裡面的
BOOTLOGD_ENABLE=No
改成BOOTLOGD_ENABLE=Yes
- 重新開機、 打開終端機、 打開 firefox。 檢查幾件事:
- 下
df
指令, 看看 /tmp 等等四個目錄是否已正確掛載為 tmpfs? - ~/.mozilla/firefox/*.default/Cache 裡面是不是空的?
- 是不是有一個 /tmp/ckhung/firefox/Cache/ 目錄, 裡面有很多東西?
- /root 底下是不是有一個 log 檔, 裡面至少記錄有剛才關機、 開機時刻各一列?
類似這樣:
bootlogd start ; /var/log restored from /park/var/log Sat Sep 15 10:52:38 CST 2012 umountfs stop ; /var/log saved to /park/var/log Sat Sep 15 10:55:00 CST 2012
- 下
- 如果以上皆是 -- 尤其是最後一項一定要正確 -- 就可以把 /etc/fstab 裡面的 /var/log 那一句打開 (去掉前面的 #)。
- 如果重開機沒有出現一堆錯誤訊息而且當得很慘,
那就恭喜你, 成功了! 再次下
df
時, 連 /var/log 也變成 tmpfs。 - 用別的 linux 開機、 掛載這顆隨身碟、
cd 到這顆 ezgox 碟的根目錄, 並下指令:
du -s tmp run
前一句是查看各目錄用了多少空間。 後一句是查看有沒有最近 60 分鐘內修改過的檔案。 請配合你的狀況修改參數, 確認一下: 自從你把這些目錄掛在 tmpfs 之後, 這些目錄就再也不曾更新過。 如果一切 ok, 用var/cachevar/tmp var/log find tmp runvar/cachevar/tmp var/log -mmin -60rm -rf tmp/* run/*
把這幾個目錄都清空。 (但目錄本身不能刪除! 否則等一下重開機就無法 mount -- 因為我曾經這樣死得很慘過。) 這可以省下不少空間。var/cache/*var/tmp/* var/log/*
安裝 apache2 之後, 可能無法順利啟動。 可能需要手動建立 /park/var/log/apache2/ 再重開機。
關於製作開機隨身碟如何避免過度寫入的詳細解說及相關連結, 請回顧 Linux 開機隨身碟延年益壽妙方 以及 SimplyMepis 11.9 救命碟 兩帖。
這學期的救命碟有 ezgox 當靠山, 就不必再自己寫 (永遠處於過時狀態的) 使用文件了, 超開心的!
[2012/12/20: 在 antix 上做類似的動作時有一些新的心得。 回頭更正一下這篇。 ]
- /var/cache 還是別去動它好了。 如果把它掛成 tmpfs, 開機變得好慢 orz
- 應該是 umountfs 才對; 不是 umountroot 。
沒有留言:
張貼留言
因為垃圾留言太多,現在改為審核後才發佈,請耐心等候一兩天。