投げ銭

★当サイトへの投げ銭(PayPal)★

LINK


(無償)
logo
世界中で使われるISO標準オフィスソフト(MSオフィス互換)
The Document Foundation Wiki

人気の投稿(1ヶ月間)

Ad

Ad

投げ銭

★当サイトへの投げ銭(PayPal)★
ラベル BOINC の投稿を表示しています。 すべての投稿を表示
ラベル BOINC の投稿を表示しています。 すべての投稿を表示

2020年4月25日土曜日

【Raspberry Pi 4 B / Raspbian】BOINCの作業領域を外付けUSB HDDドライブに移してSDの劣化を防止する【BOINC 7.14.2+dfsg-3】


■概要■

下記ページに記したように通常にBOINCをインストールしただけでは、ワークディレクトリはSDカード上に設けられる。

【Raspberry pi 4 / Raspbian】分散コンピューティングRosetta@homeに参加してタンパク質の立体構造解析に貢献する【Raspbian】

しかし、24時間365日稼働させるとなると、Raspberry Pi のメインSDカードの劣化が心配である。
そこで、USB HDD(もしくはUSB SSD)に設けたパーティションをBOINCが作業領域として使用するように設定したい。
連続稼動を考えるなら、ひょっとしたらSSDの方が良いのかも知れない。


Raspberry Pi 4であれば、USB 3.0ポートを備えているので、
USB 3.0 SuperSpeedに対応したUSB HDDであれば、高速な動作を期待できる。

下記ページには、Raspberry Pi 4 に、外付けのUSB HDDを接続し、システム起動時に自動的にマウントするように設定する手順を記した。
Raspberry PiのUSBポートの電源不足を回避する方法についても記載している。

【Raspberry pi 4 B / Raspbian 】USB 3.0対応のUSB HDDを自動的にマウントするように設定する手順


以下では、上記ページの方法で、Raspberry Pi 4にUSB HDDが利用できるようになっているものとして、(ただし、まだマウントまでする必要はない。)
BOINCのワークディレクトリを、USB HDD上のディレクトリに変更する手順を記した。
以下手順では、USB HDDは、全てデータが消去されてしまうので不要なものを使うこと。

以下の作業では、rootユーザーで行っている。
$ sudo su



■BOINCのワーキングディレクトリを移すためのUSB接続のHDD(もしくはSSD)の準備

(注意)
以下手順では、USB HDDは、全てデータが消去されてしまうので不要なものを使うこと。

以下に登場する、"sdX"という表記は、操作ミスを防ぐために"sda"を置き換えたものである。
お使いの環境に応じて、変更するようにしてください。


〇適切な大きさの第一パーティションの作成を行った。

ここで使用したディスクは、USB 3.0接続の2.5インチHDDで、500GBの容量がある。
BOINCのワーキングディレクトリの移設用として、約32GB分のパーティションを作成した。
この確保容量は、Rosetta@homeプロジェクトのコンピューティングのみを想定している。
後で示すように、4.5 GB程度しか使用されない。

しかし、複数のプロジェクトに同一マシンで参加させる場合、
プロジェクトの扱うデータにも関係して、容量はずっと大きくなるのではないかと思う。(これは試してない。)

USB HDDは、/dev/sdXとして認識されたとする。(接続直後、dmesgコマンドで確認可能)
これを引数にとって、partedコマンドを実行した。

root@raspberrypi:/home/pi# parted /dev/sdX
GNU Parted 3.2
Using /dev/sdX
Welcome to GNU Parted! Type 'help' to view a list of commands.

・表示をバイト単位に切り替えた。
(parted) unit B


・現在のパーティションテーブルを表示させた。
(parted) p
Model: JMicron Generic (scsi)
Disk /dev/sdX: 500107862016B
Sector size (logical/physical): 512B/4096B
Partition Table: msdos
Disk Flags:
Number  Start     End            Size           Type     File system  Flags
 1      1048576B  500107837439B  500106788864B  primary  ext4
上記のように、全ての領域がパーティションに確保されている。


・このパーティションを削除した。
(parted) rm 1

(parted) p
Model: JMicron Generic (scsi)
Disk /dev/sdX: 500107862016B
Sector size (logical/physical): 512B/4096B
Partition Table: msdos
Disk Flags:
Number  Start  End  Size  Type  File system  Flags
上記のように、全てのパーティションは無くなった。
また、このHDDディスクが4Kバイトセクタであることに注意した。


・第一パーティションをBOINCワーキングディレクトリ用として作成した。
(parted) mkpart
Partition type?  primary/extended? primary ←基本パーティションとして作成する。
File system type?  [ext2]? ext4 ←ext4ファイルシステムを利用する。
Start? 1048576  (重要)4096の256倍になるように指定した。アライメントを考慮した。
End? 32GB  ←パーティションの容量はBOINC作業領域専用のため32GBとした。
(parted) p
Model: JMicron Generic (scsi)
Disk /dev/sdX: 500107862016B
Sector size (logical/physical): 512B/4096B
Partition Table: msdos
Disk Flags:
Number  Start     End           Size          Type     File system  Flags 1      1048576B  32000442367B  31999393792B  primary  ext4         lba

以上のようにパーティションが作成された。


・念の為、このパーティションについてアライメントできているか確認を行った。
(parted) align-check
alignment type(min/opt)  [optimal]/minimal?
Partition number? 1
1 aligned

・コマンドを終了した。
(parted) q                                                             
Information: You may need to update /etc/fstab.

〇作成したパーティションが認識されているか確認した。

root@raspberrypi:/home/pi# cat /proc/partitions
major minor  #blocks  name
   1        0       4096 ram0
   1        1       4096 ram1
   1        2       4096 ram2
   1        3       4096 ram3
   1        4       4096 ram4
   1        5       4096 ram5
   1        6       4096 ram6
   1        7       4096 ram7
   1        8       4096 ram8
   1        9       4096 ram9
   1       10       4096 ram10
   1       11       4096 ram11
   1       12       4096 ram12
   1       13       4096 ram13
   1       14       4096 ram14
   1       15       4096 ram15
 179        0   15212544 mmcblk0
 179        1     262144 mmcblk0p1
 179        2   14946304 mmcblk0p2
   8        0  488386584 sdX
   8        1   31249408 sdX1


〇ext4ファイルシステムの作成(フォーマット)

root@raspberrypi:/home/pi# mkfs -t ext4 /dev/sdX1
mke2fs 1.44.5 (15-Dec-2018)
Creating filesystem with 7812352 4k blocks and 1954064 inodes
Filesystem UUID: 8*******-4***-4***-8***-a***********
Superblock backups stored on blocks:
        32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
        4096000
Allocating group tables: done                         
Writing inode tables: done                         
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done



■上記の手順で作成したUSB HDDのパーティションに現在動作しているBOINCの作業ディレクトリの「内容」をコピーする。

一時的にマウントしたUSB HDDのパーティションに、BOINCの作業ディレクトリの内容をコピーする。


〇USB HDDのパーティションは適当なディレクトリに一時的にマウントした。

マウントポイントとなるディレクトリの作成を行い、一時的にマウントを行った。

root@raspberrypi:/home/pi# mkdir /mnt/disk1
root@raspberrypi:/home/pi# mount -t ext4 /dev/sdX1 /mnt/disk1

マウントされたかどうか確認した。

root@raspberrypi:/home/pi# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/root        15G  1.3G   13G  10% /
devtmpfs        1.8G     0  1.8G   0% /dev
tmpfs           1.9G     0  1.9G   0% /dev/shm
tmpfs           1.9G  8.5M  1.9G   1% /run
tmpfs           5.0M  4.0K  5.0M   1% /run/lock
tmpfs           1.9G     0  1.9G   0% /sys/fs/cgroup
/dev/mmcblk0p1  253M   53M  200M  21% /boot
tmpfs           381M     0  381M   0% /run/user/1000
/dev/sdX1        30G   45M   28G   1% /mnt/disk1


〇boinc-clientを停止させた。

・boinc-clientの停止
root@raspberrypi:/home/pi# systemctl stop boinc-client

・サービスの状態を表示
root@raspberrypi:/home/pi# systemctl status boinc-client
● boinc-client.service - Berkeley Open Infrastructure Network Computing Client
   Loaded: loaded (/lib/systemd/system/boinc-client.service; enabled; vendor preset: enabled)
   Active: inactive (dead) since Fri 2020-04-24 14:06:52 BST; 4s ago
     Docs: man:boinc(1)
  Process: 1208 ExecStart=/usr/bin/boinc (code=exited, status=0/SUCCESS)
  Process: 1287 ExecStop=/usr/bin/boinccmd --quit (code=exited, status=0/SUCCESS)
  Process: 1289 ExecStopPost=/bin/rm -f lockfile (code=exited, status=0/SUCCESS)
 Main PID: 1208 (code=exited, status=0/SUCCESS)


〇データをUSB HDDをマウントしているディレクトリにコピーした。

コピー対象は、boinc-client作業ディレクトリ自体でなく、その中にあるファイルとディレクトリのみである。
ポイントは、これら作業ディレクトリの中身だけをUSB HDDのパーティションのマウントポイントのルートディレクトリにコピーすることである。

下記コマンドはそれを実行する。
オプションの「a」はアーカイブの意味で、所有者、グループ、権限をオリジナルのままにする。
オプションの「R」はリカーシブの意味で、ディレクトリがあればそのサブディレクトリに至って再帰的に辿りコピーする。
即ち、全て複製を作成するということになる。

root@raspberrypi:/home/pi# cp /var/lib/boinc-client/* /mnt/disk1/ -aR



■USB HDDのパーティションをboinc-clientのデフォルトディレクトリにシステム起動時に自動マウントする設定を行う。

上記手順で、USB HDDのパーティションには、boinc-client作業ディレクトリの内容が全てコピーされている。

これを、元々の作業ディレクトリ(/var/lib/boinc-client)にシステム起動時に自動マウントする。
これにより、boinc-clientサービスは、USB HDDの領域を作業場として利用することになる。


〇USB HDDのパーティション(データコピー済み)のPARTUUIDを調べた。

PARTUUIDの情報は自動マウント設定のために必要である。

root@raspberrypi:/home/pi# blkid
/dev/mmcblk0p1: LABEL_FATBOOT="boot" LABEL="boot" UUID="4***-D***" TYPE="vfat" PARTUUID="7*******-01"
/dev/mmcblk0p2: LABEL="rootfs" UUID="4*******-7***-4***-a***-0***********" TYPE="ext4" PARTUUID="7*******-02"
/dev/sdX1: UUID="8*******-4***-4***-8***-a***********" TYPE="ext4" PARTUUID="0*******-01"
/dev/mmcblk0: PTUUID="7*******" PTTYPE="dos"


〇USB HDDのパーティションをboinc-clientデフォルトディレクトリに自動マウントする設定を行った。

下記のように、USB HDDのBOINC用パーティションを自動マウントするための設定を加えて保存した。

root@raspberrypi:/home/pi# nano /etc/fstab
proc            /proc           proc    defaults          0       0
PARTUUID=738a4d67-01  /boot           vfat    defaults          0       2
PARTUUID=738a4d67-02  /               ext4    defaults,noatime  0       1
PARTUUID=0*******-01  /var/lib/boinc-client      ext4    defaults,auto,rw,nofail   0       2
# a swapfile is not a swap partition, no line here
#   use  dphys-swapfile swap[on|off]  for that
/var/lib/boinc-clientは、既存のディレクトリでありオリジナルのboinc作業ディレクトリである。
ここに、USB HDDのパーティションを自動マウントすることによって、オリジナルのデータは隠されて、
USB HDDパーティションにコピー済みのデータにアクセスされることになる。

(注意)
マウントオプションに、「user」を入れてしまうとnoexecでマウントされてしまうので絶対にダメである。
これによって、ワークがRUNされずDONEERRとなった。(boinctuiでの表示の場合)
この問題解決に非常に時間がかかった。
タスクのダウンロードはなされるものの、いざタスクを実行する段階になれば、
即座にタスクが終了して、DONEERRとなってしまうのだった。

その場合、次のような権限エラーがログに記載されていた。

# grep failed /var/lib/boinc-client/client_state.xml
<stderr_out>
  <![CDATA[
   <message>
     process exited with code 13 (0xd, -243)
   </message>
   <stderr_txt>
     Process creation (../../projects/boinc.bakerlab.org_rosetta/rosetta_4.15_aarch64-unknown-linux-gnu) failed: Error -1, errno=13
execv: Permission denied
   </stderr_txt>
  ]]>
</stderr_out>
# grep project /var/log/syslog | less

Apr 24 14:00:53 raspberrypi boinc[1208]: dir_open: Could not open directory 'projects/boinc.bakerlab.org_rosetta' from '/var/lib/boinc-client'.

しかし、/etc/fstabに記載するマウントオプションから、userオプションを外すことによって、問題が解決した。
そして、順を追って述べるように、正常にタスクがRUNの状態になった。


〇システムの再起動

・まず、boinc-clientが自動起動しないように設定しておく。

この段階では、まだboinc-clientはシステム起動時に正常に起動しない。
そのため、disableをしておく。(全て準備が整ってからenable指定に戻す。)

root@raspberrypi:/home/pi# systemctl disable boinc-client

・そして、システムの再起動
root@raspberrypi:/home/pi# reboot

システムの再起動後には、
/var/lib/boinc-clientディレクトリに、HDD USBの第一パーティションがマウントされる。


〇自動的にマウントされることを確認した。

root@raspberrypi:/home/pi# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/root        15G  1.3G   13G  10% /
devtmpfs        1.8G     0  1.8G   0% /dev
tmpfs           1.9G     0  1.9G   0% /dev/shm
tmpfs           1.9G   17M  1.9G   1% /run
tmpfs           5.0M  4.0K  5.0M   1% /run/lock
tmpfs           1.9G     0  1.9G   0% /sys/fs/cgroup
/dev/sdX1        30G   54M   28G   1% /var/lib/boinc-client
/dev/mmcblk0p1  253M   53M  200M  21% /boot
tmpfs           381M     0  381M   0% /run/user/1000

/etc/fstabの設定例のように、「defaults,auto,rw,nofail」のみ設定した結果、
再起動後には次のオプション(noexecなし)でマウントされていることが確認できた。

# mount
/dev/sdX1 on /var/lib/boinc-client type ext4 (rw,relatime)



■boinc-clientサービス起動のための微調整

〇USB HDDパーティションのマウント先ディレクトリの所有者:グループの変更を行った。

上記手順で、自動マウントできるようになっても、マウントポイントである「/var/lib/boinc-client」の所有者とグループは「boinc以外」になっていた。

そこで、所有者:グループを、boinc:boincに変更した。


・所有者:グループの変更を行った。(boinc:boincにする。)

root@raspberrypi:/home/pi# chown boinc:boinc /var/lib/boinc-client
(さらに、chmodで、775にしてもよいかもしれない。ここではせずとも動作した。)

root@raspberrypi:/home/pi# ls /var/lib/boinc-client -al
total 236
drwxr-xr-x  5 boinc boinc  4096 Apr 24 14:10 .  ←カレントディレクトリ
drwxr-xr-x 28 root  root   4096 Apr 24 13:52 ..
-rw-r--r--  1 boinc boinc  1382 Apr 24 14:01 account_boinc.bakerlab.org_rosetta.xml
-rw-r--r--  1 boinc boinc 53556 Apr 24 13:52 all_projects_list.xml
lrwxrwxrwx  1 root  root     34 Apr 24 13:52 ca-bundle.crt -> /etc/ssl/certs/ca-certificates.crt
lrwxrwxrwx  1 root  root     31 Apr 24 13:52 cc_config.xml -> /etc/boinc-client/cc_config.xml
-rw-r--r--  1 boinc boinc 32225 Apr 24 14:01 client_state_prev.xml
-rw-r--r--  1 boinc boinc 35831 Apr 24 14:06 client_state.xml
-rw-r--r--  1 boinc boinc   325 Apr 24 13:59 coproc_info.xml
-rw-r--r--  1 boinc boinc   118 Apr 24 14:06 daily_xfer_history.xml
lrwxrwxrwx  1 root  root     43 Apr 24 13:52 global_prefs_override.xml -> /etc/boinc-client/global_prefs_override.xml
lrwxrwxrwx  1 root  root     34 Apr 24 13:52 gui_rpc_auth.cfg -> /etc/boinc-client/gui_rpc_auth.cfg
-rw-r--r--  1 boinc boinc   138 Apr 24 14:00 lookup_account.xml
drwx------  2 root  root  16384 Apr 24 13:47 lost+found
-rw-r--r--  1 boinc boinc 23708 Apr 24 14:01 master_boinc.bakerlab.org_rosetta.xml
drwxrwx--x  2 boinc boinc  4096 Apr 24 14:01 notices
drwxrwx--x  3 boinc boinc  4096 Apr 24 14:00 projects
lrwxrwxrwx  1 root  root     34 Apr 24 13:52 remote_hosts.cfg -> /etc/boinc-client/remote_hosts.cfg
-rw-r--r--  1 boinc boinc 22184 Apr 24 14:01 sched_reply_boinc.bakerlab.org_rosetta.xml
-rw-r--r--  1 boinc boinc  6472 Apr 24 14:01 sched_request_boinc.bakerlab.org_rosetta.xml
-rw-r--r--  1 boinc boinc   425 Apr 24 14:01 statistics_boinc.bakerlab.org_rosetta.xml
-rw-r--r--  1 boinc boinc     0 Apr 24 13:52 stderrgpudetect.txt
-rw-r--r--  1 boinc boinc     0 Apr 24 13:52 stdoutgpudetect.txt
-rw-r--r--  1 boinc boinc   343 Apr 24 14:06 time_stats_log

これらのファイルは全て、USB HDDの第一パーティション内に存在している。


〇boinc-clientサービスがマウント完了以降のタイミングで起動するように設定を編集した。

これも大切な設定である。

boinc-clientのワーキングディレクトリは、SDカード上ではなく、USB HDDのパーティション上に存在することになる。
だから、boinc-clientサービスの始動前に、マウントが完了していなければならないのだ。
この設定をしなければ、エラーが発生して、boinc-clientを自動起動できなかった。

次のように、サービスファイルを編集し、mnt-wibble.mount の後でboinc-clientサービスは起動するようにする。

編集箇所は、下記のようにアンダーラインを引いた一行のみである。

root@raspberrypi:/home/pi# nano /lib/systemd/system/boinc-client.service
[Unit]
Description=Berkeley Open Infrastructure Network Computing Client
Documentation=man:boinc(1)
After=network-online.target mnt-wibble.mount

[Service]
ProtectHome=true
Type=simple
Nice=10
User=boinc
WorkingDirectory=/var/lib/boinc
ExecStart=/usr/bin/boinc
ExecStop=/usr/bin/boinccmd --quit
ExecReload=/usr/bin/boinccmd --read_cc_config
ExecStopPost=/bin/rm -f lockfile
IOSchedulingClass=idle

[Install]
WantedBy=multi-user.target


■以上の手順を全て完了後に、boinc-clientサービスの起動を行う。


〇サービスの自動起動の再設定、そして起動を行った。

・boinc-clientサービスを自動起動するように再設定した。
root@raspberrypi:/home/pi# systemctl enable boinc-client

・boinc-clientサービスの起動を行った。
root@raspberrypi:/home/pi# systemctl start boinc-client

・boinc-clientサービスの起動状態を確認した。
root@raspberrypi:/home/pi# systemctl status boinc-client
boinc-client.service - Berkeley Open Infrastructure Network Computing Client
   Loaded: loaded (/lib/systemd/system/boinc-client.service; enabled; vendor preset: enabled)
   Active: active (running) since Fri 2020-04-24 14:26:56 BST; 28s ago
     Docs: man:boinc(1)
 Main PID: 349 (boinc)
    Tasks: 2 (limit: 4260)
   Memory: 18.1M
   CGroup: /system.slice/boinc-client.service
           └─349 /usr/bin/boinc


〇boinctuiもしくは、boincマネージャーで動作確認を行った。

root@raspberrypi:/home/pi# boinctui

/var/lib/boinc-client にマウントしたUSB HDDのパーティション1の容量(32GB)がストレージとして認識されている。


また、Rosetta@homeプロジェクトの場合、タスクが600MB程度ダウンロードされた後に、
無事にそれらのタスクが実行され始めた。


外付けのハードディスクがアクセスランプを明滅させカリカリと音を立てた。


〇数日ほど動かしてから、ディスクの使用状態を確認した。

Rosetta@homeプロジェクトの分散コンピューティングだけでは、下記のように、4.5 GB程度しか使用されていない。

root@raspberrypi:/home/pi# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/root        15G  1.3G   13G  10% /
devtmpfs        1.8G     0  1.8G   0% /dev
tmpfs           1.9G     0  1.9G   0% /dev/shm
tmpfs           1.9G  8.5M  1.9G   1% /run
tmpfs           5.0M  4.0K  5.0M   1% /run/lock
tmpfs           1.9G     0  1.9G   0% /sys/fs/cgroup
/dev/sda1        30G  4.5G   24G  17% /var/lib/boinc-client
/dev/mmcblk0p1  253M   53M  200M  21% /boot
tmpfs           381M     0  381M   0% /run/user/1000

以上



<参考>

・Set systemd service to execute after fstab mount
< https://unix.stackexchange.com/questions/246935/set-systemd-service-to-execute-after-fstab-mount > 2020年4月24日


2020年4月12日日曜日

【Raspberry pi 4 / Raspbian】分散コンピューティングRosetta@homeに参加してタンパク質の立体構造解析に貢献する【Raspbian】


<はじめに>

Raspberry pi 4 (4GBメモリモデル)にRaspbian等を搭載していれば、
BOINCというシステムを通して、分散コンピューティングプロジェクトに参加できる。

ここでは、上記システムへのBOINCの導入、Rosetta@homeというタンパク質解析のための分散コンピューティングプロジェクトに参加するための手順を説明している。

現時点(11 Apr 2020, 15:01:59 UTC)で、Rosetta@homeの参加者数、ジョブの数は次のようになっている。
Total queued jobs: 2,880,916
In progress: 1,172,305
Successes last 24h: 900,001
Users  (last day ): 1,343,478 (+594)
Hosts  (last day ): 2,770,801 (+9418)


<ウイルスの持つタンパク質>

タンパク質の立体構造を解析することによって、例えば新型コロナウイルスの表面タンパク質の機能を調べることができるようになる。
また、これにより似通った安定したタンパク質を生み出すことができ、新型コロナウイルスの治療に役立つ情報にすることができるようになる。

<タンパク質と遺伝子とアミノ酸>

タンパク質は、遺伝子によって設計されたアミノ酸配列から成り立っている。
しかしこのアミノ酸配列からどのようなタンパク質の立体構造が成り立つかは、スーパーコンピューターによる解析が必要である。
タンパク質の立体構造は何通りにも考えられるので、その中から最も安定な立体構造を検索して、実際のウイルスのタンパク質の構造を予測する必要がある。

<分散コンピューティングとスーパーコンピューター>

分散コンピューティングでは、プロジェクトに参加したPCに小さなタスクを与えて解析してもらう。
その結果、分散コンピューティングでは、スーパーコンピューター並み、それ以上の計算能力を得られる。
分散コンピューティングへの参加者が増えるほど、研究者は仕事を早くできるようになると考えられる。

Rasberry piを持っていなくても、Windows、Linux、Macなどからも分散コンピューティングへの参加は可能である。
たとえば、folding@homeというプロジェクトがあるのでぐぐってみてください。
【Linux CentOS 7】分散コンピューティングFolding@homeに演算能力を提供する【Folding@home】も参考にしてください。


ここでは、Rasberry pi 4 + Raspbian で、タンパク質の分散コンピューティングプロジェクトであるRosetta@homeに参加する方法を扱う。



■ハードウェア要件の確認

ハードウェア要件
・Raspberry pi 4 or 3 (2GB RAM モデル)以上
・SDメモリが充分にあること。

ここでは、Raspberry pi 4(4GB RAM)を用い、OSはRaspbian(デスクトップ機能あり)が動作している。
OSのインストール手順は、次のページを参考にしてください。

【Raspbian Buster September 2019】OSインストールから初期セットアップ(rootユーザー、SSHログイン、システム更新、ヘッドレス運用、microSD丸ごとバックアップ、リストアなど)



■Raspbianを64bitOSに切り替える。

sudo su でrootになって操作した。
あるいは、上記ページを参考にして、rootのパスワードを設定して、suする。
(以下同様とする。)

○config.txtを編集するので、バックアップをとった。

root@raspberrypi:/home/pi# cp /boot/config.txt /boot/config.txt.org


○(設定変更前の)unameの結果を確認した。

root@raspberrypi:/home/pi# uname -a
Linux raspberrypi 4.19.75-v7l+ #1270 SMP Tue Sep 24 18:51:41 BST 2019 armv7l GNU/Linux
「ARMv7l」アーキテクチャ(32bit)として認識していることがわかる。


(参考として)
Raspberry pi 4 or 3 は、「ARMv8」アーキテクチャの64bit CPUを搭載している。
しかし以上の結果のように、現行のRaspbianはRaspberry pi 4 or 3を「ARMv7l」アーキテクチャ(32bit)として認識している。

「ARMv8」は64bitの”AArch64”実行モードと32bitの”AArch32”実行モードを切り替えて動作できるようになっている。
32bitの”AArch32”実行モードは32bitの「ARMv7」(以前のRaspberry pi に搭載)との互換性を維持する。
現行のRaspbianは以前のRaspberry piでも使用されるため、互換性維持のためにRaspberry pi 4 or 3であっても、デフォルトでは32bitの「ARMv7」として認識されると考えられる。

しかし以下のように設定することによって、現行のRaspbianにおいてもRaspberry pi 4 or 3の持つCPUを「ARMv8」アーキテクチャを持つものとして認識する。


○config.txtを編集した。

最後の行にマークしたように1行追加した。

root@raspberrypi:/home/pi# nano /boot/config.txt
# For more options and information see
# http://rpf.io/configtxt
# Some settings may impact device functionality. See link above for details
# uncomment if you get no picture on HDMI for a default "safe" mode
#hdmi_safe=1
# uncomment this if your display has a black border of unused pixels visible
# and your display can output without overscan
#disable_overscan=1
# uncomment the following to adjust overscan. Use positive numbers if console
# goes off screen, and negative if there is too much border
#overscan_left=16
#overscan_right=16
#overscan_top=16
#overscan_bottom=16
# uncomment to force a console size. By default it will be display's size minus
# overscan.
#framebuffer_width=1280
#framebuffer_height=720
# uncomment if hdmi display is not detected and composite is being output
#hdmi_force_hotplug=1
# uncomment to force a specific HDMI mode (this will force VGA)
#hdmi_group=1
#hdmi_mode=1
# uncomment to force a HDMI mode rather than DVI. This can make audio work in
# DMT (computer monitor) modes
#hdmi_drive=2
# uncomment to increase signal to HDMI, if you have interference, blanking, or
# no display
#config_hdmi_boost=4
# uncomment for composite PAL
#sdtv_mode=2
#uncomment to overclock the arm. 700 MHz is the default.
#arm_freq=800
# Uncomment some or all of these to enable the optional hardware interfaces
#dtparam=i2c_arm=on
#dtparam=i2s=on
#dtparam=spi=on
# Uncomment this to enable infrared communication.
#dtoverlay=gpio-ir,gpio_pin=17
#dtoverlay=gpio-ir-tx,gpio_pin=18
# Additional overlays and parameters are documented /boot/overlays/README
# Enable audio (loads snd_bcm2835)
dtparam=audio=on
[pi4]
# Enable DRM VC4 V3D driver on top of the dispmanx display stack
dtoverlay=vc4-fkms-v3d
max_framebuffers=2
[all]
#dtoverlay=vc4-fkms-v3d
arm_64bit=1

・保存した。(ファイル名が表示されるのでそのままエンターで上書きした。)
[CTRL]+O Write Out
File Name to Write: /boot/config.txt
エンターを押す
[ Wrote 67 lines ]
・nanoを終了した。
[CTRL]+X Exit


○設定の有効化のためにラズパイの再起動を行った。

root@raspberrypi:/home/pi# reboot


○再起動後、sshログインし、rootになった。

○(設定変更後の)unameの結果を確認した。

マークしたように64という文字が確認できた。

root@raspberrypi:/home/pi# uname -a
Linux raspberrypi 4.19.75-v8+ #1270 SMP PREEMPT Tue Sep 24 18:59:17 BST 2019 aarch64 GNU/Linux
”AArch64”実行モードで動作している。



■必要なパッケージのインストールと設定

○boincパッケージのインストール

root@raspberrypi:/home/pi# apt-get update
root@raspberrypi:/home/pi# apt-get install boinc-client boinc-manager boinctui
The following additional packages will be installed:
  libboinc7 libwxbase3.0-0v5 libwxgtk-webview3.0-gtk3-0v5 libwxgtk3.0-gtk3-0v5
Suggested packages:
  boinc-client-opencl boinc-client-nvidia-cuda libgl1-mesa-glx
The following NEW packages will be installed:
  boinc-client boinc-manager libboinc7 libwxbase3.0-0v5 libwxgtk-webview3.0-gtk3-0v5 libwxgtk3.0-gtk3-0v5
0 upgraded, 6 newly installed, 0 to remove and 2 not upgraded.
Need to get 6,662 kB of archives.
After this operation, 23.3 MB of additional disk space will be used.
Do you want to continue? [Y/n] Y

○設定ファイルの編集

下記、緑のマーカー部分を追加した。

root@raspberrypi:/home/pi# nano /etc/boinc-client/cc_config.xml
<!--
This is a minimal configuration file cc_config.xml of the BOINC core client.
For a complete list of all available options and logging flags and their
meaning see: https://boinc.berkeley.edu/wiki/client_configuration
-->
<cc_config>
  <log_flags>
    <task>1</task>
    <file_xfer>1</file_xfer>
    <sched_ops>1</sched_ops>
  </log_flags>
  <options>
    <alt_platform>aarch64-unknown-linux-gnu</alt_platform>
  </options>
</cc_config>
もし、他のマシンで動作しているBOINCマネージャやboinctuiから、このマシンをリモートで管理したい場合には、次の設定も、<options>に加えておくとよい。
ただし、セキュリティーに注意が必要である。家庭のLAN内であれば心配ないのではないか。
<allow_remote_gui_rpc>1</allow_remote_gui_rpc>



システムの再起動を行った。

root@raspberrypi:/home/pi# reboot



■BOINC Managerの起動、タスクの稼働状況確認

下記、デスクトップ環境での操作を取り扱っている。
同様のことは、CUI端末において、boinctui コマンドでも可能である。
(ただし、TUIについてはここでは解説していない。)


ディスプレイの接続されていないRaspberry pi 4でも、
設定すればデスクトップにVNCでリモートアクセスすることができる。
下記ページに設定ためのリンクを載せていますので参考にてください。

【Raspbian Buster September 2019】OSインストールから初期セットアップ(rootユーザー、SSHログイン、システム更新、ヘッドレス運用、microSD丸ごとバックアップ、リストアなど)


<解析タスク割り当て前>

○デスクトップのラズベリーアイコンから、BOINC Manager を起動した。

参考画像のように、ラズベリーアイコンから、System Toolsを辿り、
その中に、BOINC Managerを見つけた。

すると、次のようなウインドウが二つ開いた。

カテゴリーと、プロジェクトを選択した。
参加するプロジェクトは、Rosetta@homeである。

警告が出るがそのまま「Yes」をクリックした。

ログインの必要がある。
初めてなので、「No,new user」を選び、
今後ログインで使う自分のメールアドレスを入力、
そして、パスワードを設定した。

自動でブラウザが起動した。
WEBで、先のアカウント情報をRosettaのシステムに登録した。
(WEBのURLにクエリストリングが含まれていることから、自分のメールアドレスと関連づけられているようである。)



つづいて、チームの参加や作成を促されるページも開くが、
今回は参加も作成も行わないようにした。
そのままブラウザを閉じた。

すぐには、タスクが割り当てられなかった。
「No work available to process」という表示が長い間続いた。
そのまま気長に放置しておいた。(Work が与えられるまで気長に待つ必要がある。)


解析タスクが割り当てられるまで何もすることがない。

boinc-client.serviceの稼働状況の確認を行った。

システムは正常に稼働しているようである。
しかしまだ、タンパク質解析のためのタスクが与えられていない状態だとわかった。

root@raspberrypi:/home/pi# systemctl status boinc-client
● boinc-client.service - Berkeley Open Infrastructure Network Computing Client
   Loaded: loaded (/lib/systemd/system/boinc-client.service; enabled; vendor preset: enabled)
   Active: active (running) since Sat 2020-04-11 09:33:50 JST; 28s ago
     Docs: man:boinc(1)
 Main PID: 5087 (boinc)
    Tasks: 2 (limit: 4261)
   Memory: 2.9M
   CGroup: /system.slice/boinc-client.service
           └─5087 /usr/bin/boinc
Apr 11 09:33:50 raspberrypi boinc[5087]: dir_open: Could not open directory 'slots' from '/var/lib/boinc-client'.
Apr 11 09:33:50 raspberrypi boinc[5087]: 11-Apr-2020 09:33:50 [---] Checking active tasks
Apr 11 09:33:50 raspberrypi boinc[5087]: 11-Apr-2020 09:33:50 [---] Setting up GUI RPC socket
Apr 11 09:33:50 raspberrypi boinc[5087]: 11-Apr-2020 09:33:50 [---] gui_rpc_auth.cfg is empty - no GUI RPC password protection
Apr 11 09:33:50 raspberrypi boinc[5087]: 11-Apr-2020 09:33:50 [---] Checking presence of 0 project files
Apr 11 09:33:50 raspberrypi boinc[5087]: 11-Apr-2020 09:33:50 Initialization completed
Apr 11 09:33:50 raspberrypi boinc[5087]: 11-Apr-2020 09:33:50 [Rosetta@home] Sending scheduler request: To fetch work.
Apr 11 09:33:50 raspberrypi boinc[5087]: 11-Apr-2020 09:33:50 [Rosetta@home] Requesting new tasks for CPU
Apr 11 09:33:53 raspberrypi boinc[5087]: 11-Apr-2020 09:33:53 [Rosetta@home] Scheduler request completed: got 0 new tasks
Apr 11 09:33:53 raspberrypi boinc[5087]: 11-Apr-2020 09:33:53 [Rosetta@home] No tasks sent

<解析タスク割り当て後>
後程、タスクが割り当てられ、次のように確認できた。

後程、見てみると、解析中になっていることがわかった。


Advanced View表示をした。

ところで、このBOINC マネージャーがフリーズすることがあったので、
その場合は、次のようにプロセス番号を調べて、番号を指定してkillすればよかった。

root@raspberrypi:/home/pi# ps -u myusername | grep boincmgr
12345 ?        00:00:03 boincmgr
root@raspberrypi:/home/pi# kill 12345


さて、タンパク質の解析中の場合は以下の表示となった。

root@raspberrypi:/home/pi# systemctl status boinc-client
● boinc-client.service - Berkeley Open Infrastructure Network Computing Client
   Loaded: loaded (/lib/systemd/system/boinc-client.service; enabled; vendor preset: enabled)
   Active: active (running) since Sat 2020-04-11 09:33:50 JST; 13h ago
     Docs: man:boinc(1)
 Main PID: 5087 (boinc)
    Tasks: 11 (limit: 4261)
   Memory: 3.0G
   CGroup: /system.slice/boinc-client.service
           ├─1222 ../../projects/boinc.bakerlab.org_rosetta/rosetta_for_devices_4.12_aarch64-unknown-linux-gnu -run:protocol jd2_scripting -parser:protocol predicto
           ├─1464 ../../projects/boinc.bakerlab.org_rosetta/rosetta_for_devices_4.12_aarch64-unknown-linux-gnu -run:protocol jd2_scripting @flags_rb_04_11_21136_207
           ├─4110 ../../projects/boinc.bakerlab.org_rosetta/rosetta_for_devices_4.12_aarch64-unknown-linux-gnu -run:protocol jd2_scripting @flags_rb_04_11_21136_207
           └─5087 /usr/bin/boinc
Apr 11 22:27:28 raspberrypi boinc[5087]: 11-Apr-2020 22:27:28 [Rosetta@home] Started upload of *****_Junior_HalfRoid_vs_COVID-19_design1_dev_SAVE_ALL_OUT_NOJRAN_
Apr 11 22:27:34 raspberrypi boinc[5087]: 11-Apr-2020 22:27:34 [Rosetta@home] Finished upload of *****_Junior_HalfRoid_vs_COVID-19_design1_dev_SAVE_ALL_OUT_NOJRAN
Apr 11 22:50:05 raspberrypi boinc[5087]: 11-Apr-2020 22:50:05 [Rosetta@home] Sending scheduler request: To report completed tasks.
Apr 11 22:50:05 raspberrypi boinc[5087]: 11-Apr-2020 22:50:05 [Rosetta@home] Reporting 4 completed tasks
Apr 11 22:50:05 raspberrypi boinc[5087]: 11-Apr-2020 22:50:05 [Rosetta@home] Requesting new tasks for CPU
Apr 11 22:50:07 raspberrypi boinc[5087]: 11-Apr-2020 22:50:07 [Rosetta@home] Scheduler request completed: got 1 new tasks
Apr 11 22:50:09 raspberrypi boinc[5087]: 11-Apr-2020 22:50:09 [Rosetta@home] Started download of *****_Junior_HalfRoid_vs_COVID-19_design1_dev.zip
Apr 11 22:50:09 raspberrypi boinc[5087]: 11-Apr-2020 22:50:09 [Rosetta@home] Started download of *****_Junior_HalfRoid_vs_COVID-19_design1_dev.flags
Apr 11 22:50:11 raspberrypi boinc[5087]: 11-Apr-2020 22:50:11 [Rosetta@home] Finished download of *****_Junior_HalfRoid_vs_COVID-19_design1_dev.flags
Apr 11 22:50:13 raspberrypi boinc[5087]: 11-Apr-2020 22:50:13 [Rosetta@home] Finished download of *****_Junior_HalfRoid_vs_COVID-19_design1_dev.zip

ところで、

必要があれば、USB接続HDDにBOINCワークディレクトリを移動することもできる。
これによって、365日24時間の運用でも、SDの劣化の防止が期待できると考えられる。
次のページを参照してください。

【Raspberry Pi 4 B / Raspbian】BOINCの作業領域を外付けUSB HDDドライブに移してSDの劣化を防止する【BOINC 7.14.2+dfsg-3】


以上



<参考>
・Rosetta@home
< https://boinc.bakerlab.org/ > 2020年4月11日

・Set your Processors to ANALYSE for the COVID-19 virus with Folding@Home or Rosetta@Home
< https://www.element14.com/community/thread/75254/l/set-your-processors-to-analyse-for-the-covid-19-virus > 2020年4月11日

・Rosetta@home on Raspbian Pi 4
< https://www.element14.com/community/people/gam3t3ch/blog/2020/04/09/rosettahome-on-raspbian-pi-4 > 2020年4月11日

・Turning Your Raspberry Pi Into a Science Research Station Via BOINC
< https://dzone.com/articles/turning-your-raspberry-pi-into-a-science-research > 2020年4月11日

・How to Fight Coronavirus With Your Raspberry Pi
< https://www.tomshardware.com/how-to/fight-coronavirus-with-raspberry-pi > 2020年4月11日

・E14community チームの情報
< https://boinc.bakerlab.org/rosetta/team_display.php?teamid=19110 > 2020年4月11日

・Raspberry Pi BOINC Tutorial
< https://pimylifeup.com/raspberry-pi-boinc/ > 2020年4月15日

・Controlling BOINC remotely
< https://boinc.berkeley.edu/wiki/Controlling_BOINC_remotely > 2020年4月25日


〇CPUアーキテクチャについて

・ARM、64ビットアーキテクチャ「ARMv8」の概要を公開
< https://news.mynavi.jp/article/20111031-arm_v8/2 > 2020年4月15日

・ARMアーキテクチャ
< https://ja.wikipedia.org/wiki/ARMアーキテクチャ > 2020年4月15日

・ARM64 on Raspberry Pi 4
< http://marksrpicluster.blogspot.com/2019/12/arm64-on-raspberry-pi-4.html > 2020年4月15日

・armv7とarm64とarmhfの違い
< https://teratail.com/questions/190228 > 2020年4月15日

・ARM、64bit化される次世代アーキテクチャー「ARMv8」を発表
< https://ascii.jp/elem/000/000/645/645995/ > 2020年4月15日



投げ銭

★当サイトへの投げ銭(PayPal)★

Ad

Ad