-
Notifications
You must be signed in to change notification settings - Fork 0
/
index.html
184 lines (178 loc) · 13.5 KB
/
index.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
<!DOCTYPE html>
<html>
<head>
<meta name="description" content="Preparing BOINC for OpenWrt, build instructions for compiling Einstein@Home clients for 64bit ARM platform">
<title>Volunteer Computing Help</title>
</head>
<body>
<h1>Volunteer Computing Help</h1>
<p>
This is a small web page to accompany a <a href="https://github.com/VolunteerComputingHelp">set of projects on github</a> that all aim at somehow augmenting
<ul>
<li>the user base - so the science of these projects gets carried into our society</li>
<li>the sheer power - we should use our hardware and the power it consumes to the best of its potential</li>
</ul>
of volunteer computing projects.
</p>
<p>
We use this site to communicate the extra mile (kilometer for us) that users (or project administrators) may have to go to reproduce our work or to integrate that new development in their routine setup. Developments you may be interested to follow-up are:
<ul>
<li>Einstein@Home Linux ARM clients
<ul>
<li>BRP project</li>
<li>FGRP project</li>
</ul></li>
<li><a href="#openwrt">BOINC client for OpenWrt</a></li>
</ul>
</p>
<h2 name=einstein>ARM 64bit clients for Einstein@Home</h2>
<p>
<a href="https://einsteinathome.org">Einstein@Home</a> is a very fine project for BOINC, accompanying its development for 15+ years. It is all about finding pairs of pulsars and gravitational waves.
</p>
<p>
These 64bit binaries for ARM exist, for both BRP and FGRP, have in the past been sent out on request per email and are likely to move here - give this new site a few days/weeks to settle.
Eventually, in an ideal world, the project maintainers would rebuild or just adopt and redistribute them, though. It is yet a bit unclear if, in the longer term, by offering these binaries separately, we may be doing a disservice to the community. We will give exact instructions here how to reproduce what we came up with and then also place the binaries - please don't just run arbitrary binaries from web sites since this may pose security risks - to your computer and to the scientific mission of the project.
</p>
<p>
In the mean time consider to run the WorldCommunityGrid (<a href="https://www.worldcommunitygrod.org">www.worldcommunitygrid.org</a>),
Rosetta@Home <a href="http://boinc.bakerlab.org/rosetta/">http://boinc.bakerlab.org/rosetta/</a>) or TN-GRID (<a href="http://gene.disi.unitn.it/test/">http://gene.disi.unitn.it/test/</a>) that already support the ARM 64bit platform.
</p>
<h2 name=openwrt>BOINC Client for the OpenWrt Router OS</h2>
<p>
In April 2020 we prepared a boinc package for the OpenWrt operating system which lives at <a href="https://github.com/openwrt/packages/tree/master/net/boinc">https://github.com/openwrt/packages/tree/master/net/boinc</a>.
The accompanying pull request was <a href="https://github.com/openwrt/packages/pull/11768">#11768</a>.
That "net/boinc" package is auto-built for the 21.02 release of OpenWrt and later.
</p>
<p>
Developments for are still ongoing.
In particular there is a a nice web-interface via which routers can be configured that still needs to be brought forward.
</p>
<p> OpenWrt we anticipate to bring new impulses for the BOINC community:
<ul>
<li>plenty of energy-efficient machines running 24/7 with spare cycles that BOINC could tap into</li>
<li>vicinity to the Internet-of-Things and many devices are especially designed to interact with all sorts of sensors, which may trigger new use cases for the BOINC technology</li>
<li>direct use of novel accelerators like FPGA and (why not) GPUs</li>
</ul>
We should wait and see - and gather ideas.
</p>
<h3>Installing the BOINC package on OpenWrt</h3>
<p>
TL;DR: <code>opkg install boinc</code>
</p>
<p>
If the above is problematic, e.g. because of reboots, or if no binary is offered for your platform for
your earlier-than-21.02 install of OpenWrt then
<a href="https://openwrt.org/docs/guide-user/additional-software/imagebuilder">create your own image</a>
as described on the <a href="https://openwrt.org/docs/guide-user/additional-software/imagebuilder">OpenWrt documentation</a>.
</p>
<h3>How can this work on such small devices?</h3>
<p>
Well, yes. Small routers are typically stressed for place on their flash "drive". And if there are no spare 2MB for the boinc application then the device cannot be used for BOINC. The special demands in terms of disk space and compute alike however come from the applications that BOINC first downloads from the project's server and the scientific data that the application works on. This may exceed Gigabytes and few OpenWrt devices, if any, provide that. The trick is an external drive, like an USB stick or (for some advanced devices) a SATA device, that either substitutes the current overlay device or shall be mounted at /opt/boinc. All communication between BOINC and the scientific app is performed on files within /opt/boinc. This way, the device's internal drive is protected from frequent writes.
</p>
<p>
To elucidate the technical details of the previous paragraph a bit more, hardcore OpenWrt users (or just anyone running one of their routers without any extras) will have the typical setup:
<ol>
<li>Have all base packages in an unreadable compressed gibberish in the /rom partition</li>
<li>Auto-decompress everything into RAM at boot time
<li>Overwrite anything with what is in the /overlay partition
</ol>
You can write to the /overlay partition, but not to what constitutes the base. For that you would need to create a new image. The page <a href="https://openwrt.org/docs/guide-user/additional-software/extroot_configuration">https://openwrt.org/docs/guide-user/additional-software/extroot_configuration</a> instructs how to use an external USB stick instead of the internal device for the overlay. That all reads more complicated than it is. But, read on.
</p>
<p>
Traditional users of Linux are confused about this all. And especially if your device is already booting from an SD card for instance, there is little motivation to fiddle around much with an external drive. But of course you can at any point.
So, for those already booting from an external drive, you may want to go for one of the "combined" images (see <a href="https://downloads.openwrt.org/snapshots/targets/x86/64/">https://downloads.openwrt.org/snapshots/targets/x86/64/</a>) that do not have the overlay. You may still need to adjust partitions to have enough write space, which is all regular Linux and you will manage.
</p>
<h3>How can I help?</h3>
<p>
The boinc package is available as a snapshot (and in the upcoming releases) on <a href="https://downloads.openwrt.org/snapshots/packages">https://downloads.openwrt.org/snapshots/packages</a>/<yourtarget>/packages/boinc_7.16.5-1_<yourtarget>.ipk, e.g. for
<ul>
<li>aarch64_cortex-a53: <a href="https://downloads.openwrt.org/snapshots/packages/aarch64_cortex-a53/packages/boinc_7.16.16-1_aarch64_cortex-a53.ipk">https://downloads.openwrt.org/snapshots/packages/aarch64_cortex-a53/packages/boinc_7.16.5-1_aarch64_cortex-a53.ipk</a></li>
<li>arm_cortex-a9_neon: <a href="https://downloads.openwrt.org/snapshots/packages/arm_cortex-a9_neon/packages/boinc_7.16.16-1_arm_cortex-a9_neon.ipk">https://downloads.openwrt.org/snapshots/packages/arm_cortex-a9_neon/packages/boinc_7.16.5-1_arm_cortex-a9_neon.ipk</a></li>
<li>...</li>
<li>i386_pentium4: <a href="https://downloads.openwrt.org/snapshots/packages/i386_pentium4/packages/boinc_7.16.16-1_i386_pentium4.ipk">https://downloads.openwrt.org/snapshots/packages/i386_pentium4/packages/boinc_7.16.5-1_i386_pentium4.ipk</a></li>
<li>...</li>
<li>x86_86: <a href="https://downloads.openwrt.org/snapshots/packages/x86_64/packages/boinc_7.16.16-1_x86_64.ipk">https://downloads.openwrt.org/snapshots/packages/x86_64/packages/boinc_7.16.5-1_x86_64.ipk</a></li>
</ul>
Please use opkg to install that package (or whatever was backported to your version of OpenWrt) and report difficulties as an issue <a href="https://github.com/VolunteerComputingHelp/VolunteerComputingHelp.github.io/issues">here</a> so we can improve on whatever we may not be aware about.
</p>
<p>
<i>Run it.</i> We have partnered up with <a href="http://gene.disi.unitn.it/test/">TN-GRID</a> (<a href="http://gene.disi.unitn.it/test/forum_thread.php?id=265#1698">who just also started a Covid-19 related extensions</a>) that needs only about 65MB of RAM to compute. If your device is running on an ARM device then this project will distribute a scientific app to you. If you are using another device with that amount of spare RAM available then please create an <a href="https://github.com/VolunteerComputingHelp/VolunteerComputingHelp.github.io/issues">issue</a> requesting a scientific app for it.
</p>
<p>
<i>Run it also on regular Linux/MacOS/Windows machines.</i> Most Linux distros have a package for the client, otherwise refer to <a href="https://boinc.berkeley.edu">https://boinc.berkeley.edu</a> to download a client. <a href="boinc.bakerlab.org/rosetta/">Rosetta@Home</a>, <a href="http://gene.disi.unitn.it/test/">TN-GRID</a>, <a href="https://www.worldcommunitygrid.org">World Community Grid</a> and <a href="https://www.gpugrid.net">GPUGRID</a> are all addressing questions in molecular biology that should be worthwhile to support these days. Also consider <a href="https://foldingathome.org">Folding@Home</a>, that is independent from BOINC but is also doing good stuff.
</p>
<p>
<i>Spread the word!</i>
<h3>What if my platform is none of the above?</h3>
Right. That is what is so special about OpenWrt. Many exotic small platforms. As of today, we only have an automated generation of the scientific app across all platforms for the TN-GRID project. For other projects you need to find the sources and compile the client yourselves or persuade the project maintainers to support OpenWrt. You may need to disguise your client in the cc_config.xml file if your platform is not yet supported. If you are an OpenWrt or general Linux professional we would like to hear from you, though. Maybe there is a way to have your platform to be official supported - this is beyond our personal control, though.
To raise awareness of the platform, please consider registering the machine with the project, being supported or not:
<ol>
<li>get account for the project (likely to be done already)
<li>copy account key from the project's account page
<li>attach router to project
<pre>cd /opt/boinc
boinccmd --project_attach PROJECTURL ACCOUNTKEY</pre>
<li>if you see tasks assigned for the computer on your account page then your machine should already be crunching. Check with the "top" utility.
</ol>
If you read till here then your machine is indeed not supported.
<dl>
<dt>TN-GRID</dt>
<dd>
<p>
We cross-built the app for a series of platforms and offer respective packages in the
<a href="https://github.com/VolunteerComputingHelp/VolunteerComputingHelp.github.io/tree/master/apps">apps</a>
directory. This is a 70MB package and your router by chance does not like that since this may exceed the typically scarse flash storage on the device.
</p>
<p>Please first
<ol start=5>
<li>mount a spare drive/USB stick to /opt or /opt/boinc - BOINC will have created a folder /opt/boinc if not already existing and populate it
<li>install the boinc package which should be part of the SNAPSHOT distribution - talk to us if not
<li>download your app package to that external drive
<li>untar it, and the data tar file within it
<li>run the test scripts
</ol>
</p>
<p>
If the tests are fine then continue below, otherwise please create an issue.
<ol start=10>
<li>report the platform_name stated in client_state.xml to us
<li>set up an app_info.xml describing your app
</ol>
</p>
</dd>
<dt>WorldCommunityGrid, Rosetta@Home</dt>
<dd><p>These projects distribute their scientific applications as statically linked binaries, i.e. the libc does not matter.
Instead of presenting your computer with the platform that it really is, i.e. one with the musl C library, you may
then override that default spec with the name your platform would have with a regular Linux and the GNU C library.
Hereto, if running a 32bit ARM machine, in the BOINC data directory (/opt/boinc) create the file cc_config.xml as follows:
<pre>
<cc_config>
<options>
<alt_platform>arm-unknown-linux-gnueabihf</alt_platform>
</options>
</cc_config>
</pre>
For other platforms, please inspect <a href="https://boinc.berkeley.edu/trac/wiki/BoincPlatforms">https://boinc.berkeley.edu/trac/wiki/BoincPlatforms</a>
for the preferred string to get the platform identified. For the example given, the platforms reported to the project are stated in a grep for 'platform' in the file client_state.xml:
<pre>
<platform_name>arm-openwrt-linux-muslgnueabi</platform_name>
<alt_platform>arm-zynq-router-openwrt-muslgnueabi</alt_platform>
<alt_platform>arm-unknown-linux-gnueabihf</alt_platform>
</pre>
</p>
<p>
Caveat:
<ul>
<li>This changes the platform for all projects. So, if not running TN-GRID, WorldCommunityGrid or Rosetta, you will create many faulty work units.
<li>Also, it is unclear if the statistics spot that this was originally an OpenWrt machine. Hence, it may be preferable to stay with TN-GRID as the only project that fully supports OpenWrt - yet!
</ul>
</p>
</dd>
<dt>Einstein@Home, others</dt>
<dd>No idea. We don't yet know about how large that cake of OpenWrt users is with an interest in BOINC.
Other projects likely will want their share once that cake has grown enough. You may want to make a pitch
for OpenWrt on the respective forum of your favorite project.</dd>
</dl>
</p>
</body>
</html>