沒問題!這是一個非常適合使用 systemd 服務來解決的完美案例。自己編寫一個 systemctl 服務來管理硬體功能,是 Linux 客製化的精髓所在。
您的思路完全正確。我們將建立一個簡單的 systemd 服務單元 (service unit),讓它在開機過程中自動執行啟用 Cooler Boost 的指令。
操作步驟:建立一個 systemd 服務
請依照以下步驟操作:
第一步:建立服務檔案
我們需要在 /etc/systemd/system/ 目錄下建立一個新的服務檔案。我建議將它命名為 msi-cooler-boost.service。
開啟終端機,執行以下指令來建立並編輯這個檔案 (需要 sudo 權限):
sudo nano /etc/systemd/system/msi-cooler-boost.service
第二步:貼上服務內容
- 將下面這段完整的內容複製並貼上到 nano 編輯器中:
- [Unit]
Description=Enable MSI Cooler Boost on startup
After=multi-user.target - [Service]
Type=oneshot
ExecStart=/bin/sh -c "echo on > /sys/devices/platform/msi-ec/cooler_boost" - [Install]
WantedBy=multi-user.target - 儲存並關閉檔案:
- 在 nano 中,按下 Ctrl + O (代表 Write Out/寫出)。
- 它會確認檔案名稱,直接按下 Enter 鍵。
- 再按下 Ctrl + X 離開編輯器。
內容解析 (讓您知道這段程式碼在做什麼)
- [Unit] 區塊:
- Description: 服務的簡單描述,方便您在用 systemctl status 查看時辨識。
- After=multi-user.target: 這是一個重要的設定,它告訴 systemd:「請在系統完成開機、進入多使用者模式後,再執行這個服務」。這可以確保 msi-ec 模組和 /sys 檔案系統都已經準備就緒。
- [Service] 區塊:
- Type=oneshot: 因為我們的指令只需要執行一次就結束,所以 oneshot 是最適合的類型。
- ExecStart=/bin/sh -c "echo on > /sys/devices/platform/msi-ec/cooler_boost": 這是服務的核心。
- 我們使用 /bin/sh -c "..." 來確保 > 這個 shell 重導向功能能正常運作。
- 因為 systemd 的服務預設就是以 root 使用者身份執行的,所以我們不需要再使用 sudo 或 tee。直接用 echo 和 > 寫入檔案即可,這樣更乾淨、更直接。
- [Install] 區塊:
- WantedBy=multi-user.target: 這是在您執行 systemctl enable 指令時使用的。它會建立一個符號連結,讓這個服務成為 multi-user.target 的一部分,進而達成開機自動啟動的目的。
第三步:啟用並啟動服務
服務檔案建立好之後,我們需要讓 systemd 知道它的存在,並將它設定為開機啟動。
重新載入 systemd 設定 (讓它讀取到您剛建立的新檔案):
codeBash
sudo systemctl daemon-reload
將服務設定為開機自動啟動:
codeBash
sudo systemctl enable msi-cooler-boost.service
您應該會看到一行訊息,說明系統已經建立了符號連結。
(可選)立即啟動服務來測試:
如果您想立刻看到效果,而不是等到下次重開機,可以手動啟動它:codeBash
sudo systemctl start msi-cooler-boost.service
第四步:驗證
現在,您可以隨時檢查 Cooler Boost 的狀態:
codeBash
cat /sys/devices/platform/msi-ec/cooler_boost
如果輸出是 on,就代表服務已經成功執行了!
現在,每次您的電腦開機,systemd 都會自動為您啟用 Cooler Boost,讓您的筆電隨時保持在最佳的散熱狀態。
如何停用?
未來如果您想取消開機自動啟動,只需要執行 disable 指令即可:
codeBash
sudo systemctl disable msi-cooler-boost.service