2016年5月14日 星期六

psd 不讓瀏覽器折磨開機隨身碟

[2018/2/20 重新整理] 2009 年我在馬來西亞授課兩週時, 都是在 slax 開機隨身碟上過日子。 那時就發現瀏覽器頻繁寫入, 對 linux 開機隨身碟的傷害最大。 2011 年這篇 Linux 開機隨身碟延年益壽妙方 的第一重點也是要設定瀏覽器。 今天來介紹 Profile Sync Daemon (以下簡稱 psd) -- 它把 firefox、 chromium、 ... 各種瀏覽器所使用的目錄整個搬到記憶體去, 直到關機前才寫回硬碟, 以便保護你的開機隨身碟。

安裝 psd 之前, 以下要先用普通人 (你自己常用的帳號, 非 root) 的身份做一些準備。 psd 運作時, 會把 ~/.mozilla/firefox/亂碼.default 跟 ~/.config/chromium 等瀏覽器工作目錄放到記憶體裡 (/var/run/user/1000 之類的目錄底下)。 不過最傷隨身碟的是 cache, 而它卻不在 psd 管轄範圍內。 所以我們下 ls -l ~/.cache 先查看有哪些子目錄, 並且把每個瀏覽器的 cache 目錄搬到它自己的工作目錄底下, 這樣等一下 psd 把工作目錄搬到記憶體裡面的時候, cache 就可以一起搭便車。 然後再從原來的 cache 目錄建立一個 symobilic link (類似 windows 下的「捷徑」) 指向 cache 目錄新的位置, 這樣瀏覽器才找得到它的 cache 目錄。 另外也可順便 手動調整 firefox cache 大小首先關掉所有的瀏覽器視窗。 然後:

cd ~/.cache
mv chromium ~/.config/chromium/cache
ln -s ~/.config/chromium/cache chromium
ls -l # 確認連結是正確的
cd ~/.cache/mozilla/firefox
ls
mv 亂碼.default ~/.mozilla/firefox/亂碼.default/cache
ln -s ~/.mozilla/firefox/亂碼.default/cache 亂碼.default
ls -l # 確認連結是正確的

完成上述設定後, 先確認所有瀏覽器視窗都已關掉, 然後才安裝 psd 套件。 從 ubuntu 16.10 起, 官方套件庫裡已收錄 psd, 直接 sudo apt-get install profile-sync-daemon 即可安裝。 若是使用較舊的版本 (15.04 及 15.10), 則必須先按照 Ubuntu Users 那一節 把 ppa:graysky/utils 加入你的套件庫清單當中。 裝好之後, 用 psd p 查看, 注意 sync target 跟 tmpfs dir 這兩個欄位是否如本文先前所描述的路徑。 再把 systemctl 那一句加入 「登入時自動啟動」 的程式清單。 例如 lubuntu 是放在 ~/.config/lxsession/Lubuntu/autostart 裡面。 這個設定檔有可能是空的; 但若不是空的, 啟動 psd 的指令必須放在啟動任何瀏覽器之前。 再下 systemctl --user enable psd 這樣每次登入時, psd 才會自動啟動。 詳見 這個問答

開瀏覽器之前, find ~/.cache /run/user -type f -mmin -3 查看這兩個目錄底下在過去三分鐘內曾經修改過的檔案。 應該空空的沒幾個檔案。 打開瀏覽器, 然後再執行一次 find, 這次應該出現很多檔案, 如果大部分都在 /run/user 底下, 那就對了, 以後隨身碟 (大約) 可以放心使用; 如果大部分都在 ~/.cache 底下, 那就是設定錯誤, 瀏覽器還是一直在頻繁讀寫隨身碟。

注意: (1) 如果需要手動關閉 psd, 請先關掉所有的瀏覽器。 重新啟動 psd 之後, 才打開瀏覽器。 (2) 如果想要備份瀏覽器的設定, 則必須先手動關閉 psd, 瀏覽器的設定才會被從記憶體裡搬回硬碟原來的目錄。 比方說你想把 firefox 跟 chrome 的歷史記錄跟設定整個砍掉重練, 做最安全最隱私的設定, 應該這樣做:

  1. 關掉所有的瀏覽器。
  2. 停用 psd: systemctl --user stop psd
  3. 刪掉舊資料: rm -rf .mozilla/firefox .config/chromium
  4. 打開全新的 firefox 跟 chromium, 讓系統自動產生相關目錄、
  5. 安裝 https everywhere、 privacy badger、 ... 等等。
  6. 關閉 firefox 跟 chromium。
  7. 重做上述建立 symlink 的動作。
  8. 備份: tar czf firefox-clean.tgz ~/.mozilla/firefox
  9. 備份: tar czf chromium-clean.tgz ~/.config/chromium
  10. 啟用 psd: systemctl --user start psd

當然, 這些動作最好在硬碟上做。 儲存好之後, 就可以拿到隨身碟上解壓縮, 然後你的開機隨身碟版 firefox 跟 chromium 也會變得一樣乾淨安全。 還有, 這兩個壓縮檔內包含你登入過的網站的帳密, 所以請小心保管不要外流

[2018/7/11] 有好幾次我無法重新啟動 psd, 遇到這樣的錯誤: Failed to connect to bus: No such file of directory。 搜尋到 這個 issue 可能有幫助。

其實就算不用 psd, firefox chrome 也都可以各自設定成把 cache 放在記憶體裡 (tmpfs), 不過這樣每次關機 cache 就清空了, 下次又要重新累積才有 cache 的效果。

那麼接下來就請大家用力在隨身碟上過日子, 等玩壞的時候再來小格分享一下第二頻繁寫入的到底是哪類的檔案吧 :-)

1 則留言:

  1. 最近使用 psd 遇到奇怪的問題。 可能是我不小心刪到什麼檔案, 或是做一些奇怪的動作, 總之突然就無法啟動 psd 了。 啟動時看到如下錯誤訊息: failed to start Process ... org.freedesktop.systemd1 exited with status 1 根據這篇: https://github.com/graysky2/profile-sync-daemon/issues/147 手動設定 XDG_RUNTIME_DIR 跟 DBUS_SESSION_BUS_ADDRESS 就又可啟動。 所以是 dbus 被我玩壞掉了。 沒找出原因, 乾脆用 zfs 還原系統。 筆記一下, 以後再研究。

    回覆刪除