貢獻多餘算力對抗 - COVID-19:Folding@HOME

利用多餘的電腦資源,加入 Folding@HOME 專案,一起對抗 COVID-19。

我有一台閒置的 Ubuntu server,我想我可以利用它閒置的時間來幫忙對抗 COVID-19。

2020 年 2 月 27 日,Folding@home 發布新的計算程式以研究 2019-nCoV 病毒。分散式運算項目 Folding@home 宣布加入新冠病毒 2019-nCoV 的研究以幫助研究人員開發出治療方法。Folding@home 指出:2019-nCoV 是 SARS 冠狀病毒(SARS-CoV)的「近親」,並且以類似的方式起作用。為了瞭解這些訊息,需要我們對 2019-nCoV 峰值蛋白的結構進行建模。我們需要構建可以實現此目標的計算模型,但它需要大量的運算能力。

按照官方的說明文件安裝,由於我沒有 GUI 介面,所以我只要下載其中一個 fahclient 就可以了。

$ wget https://download.foldingathome.org/releases/public/release/fahclient/debian-stable-64bit/v7.6/fahclient_7.6.13_amd64.deb
$ sudo dpkg -i --force-depends fahclient_7.6.13_amd64.deb

安裝的同時,安裝程式會問你一些資訊,帳號跟 team id 之類的,順利的話,裝好就已經啟動,之後再透過 /etc/init.d/FAHClient 來控制。

ghill@ghill:~$ sudo /etc/init.d/FAHClient --help
Syntax: /etc/init.d/FAHClient [OPTIONS] <COMMAND> [-- [OPTIONS]]
COMMANDS:
        start          Start client
        stop           Stop client
        restart        Full stop then restart client
        reload         Respawn client process
        status         Print client status
        log            Tail the client log
OPTIONS:
        -u <user>      Run as this user.
        -h <home>      Run in this directory.
        -v             Be verbose.  Show WS output

Any options after a '--' will be passed on to the client.

不過我的裝好就出現了奇怪的錯誤。

● FAHClient.service - LSB: Folding@home Client
   Loaded: loaded (/etc/init.d/FAHClient; generated)
   Active: failed (Result: exit-code) since Wed 2020-05-06 11:10:00 CST; 12ms ago
     Docs: man:systemd-sysv-generator(8)
  Process: 21587 ExecStart=/etc/init.d/FAHClient start (code=exited, status=1/FAILURE)
    Tasks: 4 (limit: 4647)
   CGroup: /system.slice/FAHClient.service
           ├─21596 /usr/bin/FAHClient /etc/fahclient/config.xml --run-as fahclient --pid-file=/var/run/fahclient.pid --daemon
           └─21598 /usr/bin/FAHClient --child /etc/fahclient/config.xml --run-as fahclient --pid-file=/var/run/fahclient.pid --daemon

May 06 11:10:00 ghill systemd[1]: Starting LSB: Folding@home Client...
May 06 11:10:00 ghill FAHClient[21587]: Starting fahclient ... FAIL
May 06 11:10:00 ghill systemd[1]: FAHClient.service: Control process exited, code=exited status=1
May 06 11:10:00 ghill systemd[1]: FAHClient.service: Failed with result 'exit-code'.
May 06 11:10:00 ghill systemd[1]: Failed to start LSB: Folding@home Client.

The Folding@home client is now installed

You can access the Web interface by going to:

  https://client.foldingathome.org/

in a browser on this computer.

For information about configuring the Folding@home client for
remote access please see the comments in:

  /etc/fahclient/config.xml

為此我重裝了幾次,後來網路上找到答案 [1],需要修改 /etc/init.d/FAHClient

/etc/init.d/FAHClient
wait_for_log_change() { if [ "$2" != "" ]; then pid=$2 else pid=$(get_pid) fi + while ! is_running ; do + sleep 0.1 + done while [ "$(log_status)" == "$1" ]; do if is_running ; then sleep 1 else return 1 fi done return 0 }

F@H 可以跟 Boinc 一樣,用遠端的電腦監看使用的狀態。在 /etc/fahclient/config.xml 加入:

/etc/fahclient/config.xml
<allow v='127.0.0.1 192.168.1.0/24'/> <web-allow v='127.0.0.1 192.168.1.0/24'/> <password v='xxxx'/>

<allow><web-allow> 指的是允許連線的 ip 位址 (範圍),最後一個 <password> 是連線的密碼。

接著在 Windows 方面,找到 FAHControl 這個程式,加入要觀察的 client 端。

新增 client 端新增 client 端

加入 client 端資訊加入 client 端資訊

這樣就完成了。如果一直連線無法成功的話,請檢查一下防火牆的設定。Windows 下可以檢查防火牆是不是把 FAHControl 檔掉了?Server 端用 ufw 檢查看看是否有 allow port 36330 的存取。

如果你用的 Web Control 會有一直重載的問題,請參考 F@H Web Control 一直重載?


  1. Fresh install of Ubuntu 18.04, FAHClient service not working ↩︎