Przeglądaj źródła

Beaglebone Black specific instructions

Bob Mottram 8 lat temu
rodzic
commit
883d4d6a79

+ 86
- 0
doc/EN/beaglebone.org Wyświetl plik

@@ -0,0 +1,86 @@
1
+#+TITLE:
2
+#+AUTHOR: Bob Mottram
3
+#+EMAIL: bob@freedombone.net
4
+#+KEYWORDS: freedombone, beaglebone
5
+#+DESCRIPTION: How to install Freedombone onto a Beaglebone Black
6
+#+OPTIONS: ^:nil toc:nil
7
+#+HTML_HEAD: <link rel="stylesheet" type="text/css" href="freedombone.css" />
8
+
9
+#+BEGIN_CENTER
10
+[[file:images/logo.png]]
11
+#+END_CENTER
12
+
13
+#+BEGIN_EXPORT html
14
+<center>
15
+<h1>How to install Freedombone onto a Beaglebone Black</h1>
16
+</center>
17
+#+END_EXPORT
18
+
19
+The Beaglebone Black is small, cheap, a fully open hardware design, has a hardware random number generator and consumes very little electrical power, making it suitable for all kinds of uses.
20
+
21
+#+BEGIN_CENTER
22
+[[file:images/bbb_above.jpg]]
23
+#+END_CENTER
24
+
25
+You will need:
26
+
27
+ * A Beaglebone Black. The exact revision of the hardware isn't very important, but it should have an ethernet socket.
28
+ * Optionally a plastic or metal case to protect the electronics.
29
+ * An ethernet cable. Typically these are colour coded either blue or yellow. Either colour will do.
30
+ * Either a 5v power supply with a plug which fits the Beaglebone or a USB cable and USB to mains adaptor.
31
+ * A microSD card at least 8 gigabytes in size. In tests Sandisk class 10 works well. Prefer smaller but faster I/O rating to larger but slower.
32
+ * A microSD card adaptor for your laptop or desktop system, so that you can copy the disk image to the card.
33
+
34
+On your laptop or desktop prepare a microSD card image as follows. To create an image on a Debian based system:
35
+
36
+#+begin_src bash
37
+sudo apt-get install git
38
+git clone https://github.com/bashrc/freedombone
39
+cd freedombone
40
+git checkout stockholm
41
+sudo make install
42
+freedombone-image --setup debian
43
+#+end_src
44
+
45
+Or on Arch/Parabola:
46
+
47
+#+begin_src bash
48
+sudo pacman -S git
49
+git clone https://github.com/bashrc/freedombone
50
+cd freedombone
51
+git checkout stockholm
52
+sudo make install
53
+freedombone-image --setup parabola
54
+#+end_src
55
+
56
+If you own a domain name and want to make a system accessible via an ordinary browser then run:
57
+
58
+#+begin_src
59
+freedombone-image -t beaglebone
60
+#+end_src
61
+
62
+Or of you want a system where the services are only accessible via onion addresses.
63
+
64
+#+begin_src
65
+freedombone-image -t beaglebone --onion yes
66
+#+end_src
67
+
68
+Onion addresses have the advantage of being difficult to censor and you don't need to buy a domain or have a dynamic DNS account. An onion based system also means you don't need to think about NAT traversal type issues.
69
+
70
+Connect the power and ethernet cable and plug it into your internet router.
71
+
72
+#+BEGIN_CENTER
73
+[[file:images/bbb_back.jpg]]
74
+#+END_CENTER
75
+
76
+Now follow the [[./homeserver.html][instructions given here to copy the image to the microSD drive]] beginning with running the /freedombone-client/ command. Wherever it says "USB drive" substitute "microSD drive". When the microSD drive is ready plug it into the front of the Beaglebone.
77
+
78
+#+BEGIN_CENTER
79
+[[file:images/bbb_front.jpg]]
80
+#+END_CENTER
81
+
82
+Now power cycle by removing the power plug and then inserting it again. It should boot from the microSD drive and you should see the blue LEDs on the board flashing. If they don't fash at all for a few minutes then try copying the image to the microSD card again.
83
+
84
+Follow the rest of the [[./homeserver.html][instructions given here]] to log in via ssh and install the system. The microSD drive /should remain inside the Beaglebone/ and not be removed. This will be its main drive, with the internal EMMC not being used at all.
85
+
86
+There are many apps available within the Freedombone system and trying to install them all is probably not a good idea, since this hardware is very resource constrained on CPU and especially on RAM. If the system seems to be becoming unstable and crashing then the most likely cause is running out of RAM, in which case you can try uninstalling some apps. It is possible to monitor RAM usage by logging in with ssh, exiting to the command line and then running the /top/ command.

+ 2
- 0
doc/EN/index.org Wyświetl plik

@@ -20,6 +20,8 @@ So you want to run your own internet services? Email, chat, VoIP, web sites, fil
20 20
 
21 21
 [[./homeserver.html][Here's how]].
22 22
 
23
+And here's how [[./beaglebone.html][on a Beaglebone Black]].
24
+
23 25
 Want to make a community mesh network which doesn't depend upon the internet?
24 26
 
25 27
 [[./mesh.html][You can do that too]].

BIN
img/bbb_above.jpg Wyświetl plik


BIN
img/bbb_back.jpg Wyświetl plik


BIN
img/bbb_front.jpg Wyświetl plik


+ 384
- 0
website/EN/beaglebone.html Wyświetl plik

@@ -0,0 +1,384 @@
1
+<?xml version="1.0" encoding="utf-8"?>
2
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
3
+"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
4
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
5
+<head>
6
+<!-- 2016-11-23 Wed 22:20 -->
7
+<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
8
+<meta name="viewport" content="width=device-width, initial-scale=1" />
9
+<title></title>
10
+<meta name="generator" content="Org mode" />
11
+<meta name="author" content="Bob Mottram" />
12
+<meta name="description" content="How to install Freedombone onto a Beaglebone Black"
13
+ />
14
+<meta name="keywords" content="freedombone, beaglebone" />
15
+<style type="text/css">
16
+ <!--/*--><![CDATA[/*><!--*/
17
+  .title  { text-align: center;
18
+             margin-bottom: .2em; }
19
+  .subtitle { text-align: center;
20
+              font-size: medium;
21
+              font-weight: bold;
22
+              margin-top:0; }
23
+  .todo   { font-family: monospace; color: red; }
24
+  .done   { font-family: monospace; color: green; }
25
+  .priority { font-family: monospace; color: orange; }
26
+  .tag    { background-color: #eee; font-family: monospace;
27
+            padding: 2px; font-size: 80%; font-weight: normal; }
28
+  .timestamp { color: #bebebe; }
29
+  .timestamp-kwd { color: #5f9ea0; }
30
+  .org-right  { margin-left: auto; margin-right: 0px;  text-align: right; }
31
+  .org-left   { margin-left: 0px;  margin-right: auto; text-align: left; }
32
+  .org-center { margin-left: auto; margin-right: auto; text-align: center; }
33
+  .underline { text-decoration: underline; }
34
+  #postamble p, #preamble p { font-size: 90%; margin: .2em; }
35
+  p.verse { margin-left: 3%; }
36
+  pre {
37
+    border: 1px solid #ccc;
38
+    box-shadow: 3px 3px 3px #eee;
39
+    padding: 8pt;
40
+    font-family: monospace;
41
+    overflow: auto;
42
+    margin: 1.2em;
43
+  }
44
+  pre.src {
45
+    position: relative;
46
+    overflow: visible;
47
+    padding-top: 1.2em;
48
+  }
49
+  pre.src:before {
50
+    display: none;
51
+    position: absolute;
52
+    background-color: white;
53
+    top: -10px;
54
+    right: 10px;
55
+    padding: 3px;
56
+    border: 1px solid black;
57
+  }
58
+  pre.src:hover:before { display: inline;}
59
+  /* Languages per Org manual */
60
+  pre.src-asymptote:before { content: 'Asymptote'; }
61
+  pre.src-awk:before { content: 'Awk'; }
62
+  pre.src-C:before { content: 'C'; }
63
+  /* pre.src-C++ doesn't work in CSS */
64
+  pre.src-clojure:before { content: 'Clojure'; }
65
+  pre.src-css:before { content: 'CSS'; }
66
+  pre.src-D:before { content: 'D'; }
67
+  pre.src-ditaa:before { content: 'ditaa'; }
68
+  pre.src-dot:before { content: 'Graphviz'; }
69
+  pre.src-calc:before { content: 'Emacs Calc'; }
70
+  pre.src-emacs-lisp:before { content: 'Emacs Lisp'; }
71
+  pre.src-fortran:before { content: 'Fortran'; }
72
+  pre.src-gnuplot:before { content: 'gnuplot'; }
73
+  pre.src-haskell:before { content: 'Haskell'; }
74
+  pre.src-java:before { content: 'Java'; }
75
+  pre.src-js:before { content: 'Javascript'; }
76
+  pre.src-latex:before { content: 'LaTeX'; }
77
+  pre.src-ledger:before { content: 'Ledger'; }
78
+  pre.src-lisp:before { content: 'Lisp'; }
79
+  pre.src-lilypond:before { content: 'Lilypond'; }
80
+  pre.src-lua:before { content: 'Lua'; }
81
+  pre.src-matlab:before { content: 'MATLAB'; }
82
+  pre.src-mscgen:before { content: 'Mscgen'; }
83
+  pre.src-ocaml:before { content: 'Objective Caml'; }
84
+  pre.src-octave:before { content: 'Octave'; }
85
+  pre.src-org:before { content: 'Org mode'; }
86
+  pre.src-oz:before { content: 'OZ'; }
87
+  pre.src-plantuml:before { content: 'Plantuml'; }
88
+  pre.src-processing:before { content: 'Processing.js'; }
89
+  pre.src-python:before { content: 'Python'; }
90
+  pre.src-R:before { content: 'R'; }
91
+  pre.src-ruby:before { content: 'Ruby'; }
92
+  pre.src-sass:before { content: 'Sass'; }
93
+  pre.src-scheme:before { content: 'Scheme'; }
94
+  pre.src-screen:before { content: 'Gnu Screen'; }
95
+  pre.src-sed:before { content: 'Sed'; }
96
+  pre.src-sh:before { content: 'shell'; }
97
+  pre.src-sql:before { content: 'SQL'; }
98
+  pre.src-sqlite:before { content: 'SQLite'; }
99
+  /* additional languages in org.el's org-babel-load-languages alist */
100
+  pre.src-forth:before { content: 'Forth'; }
101
+  pre.src-io:before { content: 'IO'; }
102
+  pre.src-J:before { content: 'J'; }
103
+  pre.src-makefile:before { content: 'Makefile'; }
104
+  pre.src-maxima:before { content: 'Maxima'; }
105
+  pre.src-perl:before { content: 'Perl'; }
106
+  pre.src-picolisp:before { content: 'Pico Lisp'; }
107
+  pre.src-scala:before { content: 'Scala'; }
108
+  pre.src-shell:before { content: 'Shell Script'; }
109
+  pre.src-ebnf2ps:before { content: 'ebfn2ps'; }
110
+  /* additional language identifiers per "defun org-babel-execute"
111
+       in ob-*.el */
112
+  pre.src-cpp:before  { content: 'C++'; }
113
+  pre.src-abc:before  { content: 'ABC'; }
114
+  pre.src-coq:before  { content: 'Coq'; }
115
+  pre.src-groovy:before  { content: 'Groovy'; }
116
+  /* additional language identifiers from org-babel-shell-names in
117
+     ob-shell.el: ob-shell is the only babel language using a lambda to put
118
+     the execution function name together. */
119
+  pre.src-bash:before  { content: 'bash'; }
120
+  pre.src-csh:before  { content: 'csh'; }
121
+  pre.src-ash:before  { content: 'ash'; }
122
+  pre.src-dash:before  { content: 'dash'; }
123
+  pre.src-ksh:before  { content: 'ksh'; }
124
+  pre.src-mksh:before  { content: 'mksh'; }
125
+  pre.src-posh:before  { content: 'posh'; }
126
+  /* Additional Emacs modes also supported by the LaTeX listings package */
127
+  pre.src-ada:before { content: 'Ada'; }
128
+  pre.src-asm:before { content: 'Assembler'; }
129
+  pre.src-caml:before { content: 'Caml'; }
130
+  pre.src-delphi:before { content: 'Delphi'; }
131
+  pre.src-html:before { content: 'HTML'; }
132
+  pre.src-idl:before { content: 'IDL'; }
133
+  pre.src-mercury:before { content: 'Mercury'; }
134
+  pre.src-metapost:before { content: 'MetaPost'; }
135
+  pre.src-modula-2:before { content: 'Modula-2'; }
136
+  pre.src-pascal:before { content: 'Pascal'; }
137
+  pre.src-ps:before { content: 'PostScript'; }
138
+  pre.src-prolog:before { content: 'Prolog'; }
139
+  pre.src-simula:before { content: 'Simula'; }
140
+  pre.src-tcl:before { content: 'tcl'; }
141
+  pre.src-tex:before { content: 'TeX'; }
142
+  pre.src-plain-tex:before { content: 'Plain TeX'; }
143
+  pre.src-verilog:before { content: 'Verilog'; }
144
+  pre.src-vhdl:before { content: 'VHDL'; }
145
+  pre.src-xml:before { content: 'XML'; }
146
+  pre.src-nxml:before { content: 'XML'; }
147
+  /* add a generic configuration mode; LaTeX export needs an additional
148
+     (add-to-list 'org-latex-listings-langs '(conf " ")) in .emacs */
149
+  pre.src-conf:before { content: 'Configuration File'; }
150
+
151
+  table { border-collapse:collapse; }
152
+  caption.t-above { caption-side: top; }
153
+  caption.t-bottom { caption-side: bottom; }
154
+  td, th { vertical-align:top;  }
155
+  th.org-right  { text-align: center;  }
156
+  th.org-left   { text-align: center;   }
157
+  th.org-center { text-align: center; }
158
+  td.org-right  { text-align: right;  }
159
+  td.org-left   { text-align: left;   }
160
+  td.org-center { text-align: center; }
161
+  dt { font-weight: bold; }
162
+  .footpara { display: inline; }
163
+  .footdef  { margin-bottom: 1em; }
164
+  .figure { padding: 1em; }
165
+  .figure p { text-align: center; }
166
+  .inlinetask {
167
+    padding: 10px;
168
+    border: 2px solid gray;
169
+    margin: 10px;
170
+    background: #ffffcc;
171
+  }
172
+  #org-div-home-and-up
173
+   { text-align: right; font-size: 70%; white-space: nowrap; }
174
+  textarea { overflow-x: auto; }
175
+  .linenr { font-size: smaller }
176
+  .code-highlighted { background-color: #ffff00; }
177
+  .org-info-js_info-navigation { border-style: none; }
178
+  #org-info-js_console-label
179
+    { font-size: 10px; font-weight: bold; white-space: nowrap; }
180
+  .org-info-js_search-highlight
181
+    { background-color: #ffff00; color: #000000; font-weight: bold; }
182
+  .org-svg { width: 90%; }
183
+  /*]]>*/-->
184
+</style>
185
+<link rel="stylesheet" type="text/css" href="freedombone.css" />
186
+<script type="text/javascript">
187
+/*
188
+@licstart  The following is the entire license notice for the
189
+JavaScript code in this tag.
190
+
191
+Copyright (C) 2012-2013 Free Software Foundation, Inc.
192
+
193
+The JavaScript code in this tag is free software: you can
194
+redistribute it and/or modify it under the terms of the GNU
195
+General Public License (GNU GPL) as published by the Free Software
196
+Foundation, either version 3 of the License, or (at your option)
197
+any later version.  The code is distributed WITHOUT ANY WARRANTY;
198
+without even the implied warranty of MERCHANTABILITY or FITNESS
199
+FOR A PARTICULAR PURPOSE.  See the GNU GPL for more details.
200
+
201
+As additional permission under GNU GPL version 3 section 7, you
202
+may distribute non-source (e.g., minimized or compacted) forms of
203
+that code without the copy of the GNU GPL normally required by
204
+section 4, provided you include this license notice and a URL
205
+through which recipients can access the Corresponding Source.
206
+
207
+
208
+@licend  The above is the entire license notice
209
+for the JavaScript code in this tag.
210
+*/
211
+<!--/*--><![CDATA[/*><!--*/
212
+ function CodeHighlightOn(elem, id)
213
+ {
214
+   var target = document.getElementById(id);
215
+   if(null != target) {
216
+     elem.cacheClassElem = elem.className;
217
+     elem.cacheClassTarget = target.className;
218
+     target.className = "code-highlighted";
219
+     elem.className   = "code-highlighted";
220
+   }
221
+ }
222
+ function CodeHighlightOff(elem, id)
223
+ {
224
+   var target = document.getElementById(id);
225
+   if(elem.cacheClassElem)
226
+     elem.className = elem.cacheClassElem;
227
+   if(elem.cacheClassTarget)
228
+     target.className = elem.cacheClassTarget;
229
+ }
230
+/*]]>*///-->
231
+</script>
232
+</head>
233
+<body>
234
+<div id="preamble" class="status">
235
+<a name="top" id="top"></a>
236
+</div>
237
+<div id="content">
238
+<div class="org-center">
239
+
240
+<div class="figure">
241
+<p><img src="images/logo.png" alt="logo.png" />
242
+</p>
243
+</div>
244
+</div>
245
+
246
+<center>
247
+<h1>How to install Freedombone onto a Beaglebone Black</h1>
248
+</center>
249
+
250
+<p>
251
+The Beaglebone Black is small, cheap, a fully open hardware design, has a hardware random number generator and consumes very little electrical power, making it suitable for all kinds of uses.
252
+</p>
253
+
254
+<div class="org-center">
255
+
256
+<div class="figure">
257
+<p><img src="images/bbb_above.jpg" alt="bbb_above.jpg" />
258
+</p>
259
+</div>
260
+</div>
261
+
262
+<p>
263
+You will need:
264
+</p>
265
+
266
+<ul class="org-ul">
267
+<li>A Beaglebone Black. The exact revision of the hardware isn't very important, but it should have an ethernet socket.</li>
268
+<li>Optionally a plastic or metal case to protect the electronics.</li>
269
+<li>An ethernet cable. Typically these are colour coded either blue or yellow. Either colour will do.</li>
270
+<li>Either a 5v power supply with a plug which fits the Beaglebone or a USB cable and USB to mains adaptor.</li>
271
+<li>A microSD card at least 8 gigabytes in size. In tests Sandisk class 10 works well. Prefer smaller but faster I/O rating to larger but slower.</li>
272
+<li>A microSD card adaptor for your laptop or desktop system, so that you can copy the disk image to the card.</li>
273
+</ul>
274
+
275
+<p>
276
+On your laptop or desktop prepare a microSD card image as follows. To create an image on a Debian based system:
277
+</p>
278
+
279
+<div class="org-src-container">
280
+<pre class="src src-bash">sudo apt-get install git
281
+git clone https://github.com/bashrc/freedombone
282
+<span class="org-builtin">cd</span> freedombone
283
+git checkout stockholm
284
+sudo make install
285
+freedombone-image --setup debian
286
+</pre>
287
+</div>
288
+
289
+<p>
290
+Or on Arch/Parabola:
291
+</p>
292
+
293
+<div class="org-src-container">
294
+<pre class="src src-bash">sudo pacman -S git
295
+git clone https://github.com/bashrc/freedombone
296
+<span class="org-builtin">cd</span> freedombone
297
+git checkout stockholm
298
+sudo make install
299
+freedombone-image --setup parabola
300
+</pre>
301
+</div>
302
+
303
+<p>
304
+If you own a domain name and want to make a system accessible via an ordinary browser then run:
305
+</p>
306
+
307
+<pre class="example">
308
+freedombone-image -t beaglebone
309
+</pre>
310
+
311
+<p>
312
+Or of you want a system where the services are only accessible via onion addresses.
313
+</p>
314
+
315
+<pre class="example">
316
+freedombone-image -t beaglebone --onion yes
317
+</pre>
318
+
319
+<p>
320
+Onion addresses have the advantage of being difficult to censor and you don't need to buy a domain or have a dynamic DNS account. An onion based system also means you don't need to think about NAT traversal type issues.
321
+</p>
322
+
323
+<p>
324
+Connect the power and ethernet cable and plug it into your internet router.
325
+</p>
326
+
327
+<div class="org-center">
328
+
329
+<div class="figure">
330
+<p><img src="images/bbb_back.jpg" alt="bbb_back.jpg" />
331
+</p>
332
+</div>
333
+</div>
334
+
335
+<p>
336
+Now follow the <a href="./homeserver.html">instructions given here to copy the image to the microSD drive</a> beginning with running the <i>freedombone-client</i> command. Wherever it says "USB drive" substitute "microSD drive". When the microSD drive is ready plug it into the front of the Beaglebone.
337
+</p>
338
+
339
+<div class="org-center">
340
+
341
+<div class="figure">
342
+<p><img src="images/bbb_front.jpg" alt="bbb_front.jpg" />
343
+</p>
344
+</div>
345
+</div>
346
+
347
+<p>
348
+Now power cycle by removing the power plug and then inserting it again. It should boot from the microSD drive and you should see the blue LEDs on the board flashing. If they don't fash at all for a few minutes then try copying the image to the microSD card again.
349
+</p>
350
+
351
+<p>
352
+Follow the rest of the <a href="./homeserver.html">instructions given here</a> to log in via ssh and install the system. The microSD drive <i>should remain inside the Beaglebone</i> and not be removed. This will be its main drive, with the internal EMMC not being used at all.
353
+</p>
354
+
355
+<p>
356
+There are many apps available within the Freedombone system and trying to install them all is probably not a good idea, since this hardware is very resource constrained on CPU and especially on RAM. If the system seems to be becoming unstable and crashing then the most likely cause is running out of RAM, in which case you can try uninstalling some apps. It is possible to monitor RAM usage by logging in with ssh, exiting to the command line and then running the <i>top</i> command.
357
+</p>
358
+</div>
359
+<div id="postamble" class="status">
360
+
361
+<style type="text/css">
362
+.back-to-top {
363
+    position: fixed;
364
+    bottom: 2em;
365
+    right: 0px;
366
+    text-decoration: none;
367
+    color: #000000;
368
+    background-color: rgba(235, 235, 235, 0.80);
369
+    font-size: 12px;
370
+    padding: 1em;
371
+    display: none;
372
+}
373
+
374
+.back-to-top:hover {
375
+    background-color: rgba(135, 135, 135, 0.50);
376
+}
377
+</style>
378
+
379
+<div class="back-to-top">
380
+<a href="#top">Back to top</a> | <a href="mailto:bob@freedombone.net">E-mail me</a>
381
+</div>
382
+</div>
383
+</body>
384
+</html>

+ 5
- 1
website/EN/index.html Wyświetl plik

@@ -3,7 +3,7 @@
3 3
 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
4 4
 <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
5 5
 <head>
6
-<!-- 2016-11-11 Fri 22:23 -->
6
+<!-- 2016-11-23 Wed 22:22 -->
7 7
 <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
8 8
 <meta name="viewport" content="width=device-width, initial-scale=1" />
9 9
 <title></title>
@@ -262,6 +262,10 @@ So you want to run your own internet services? Email, chat, VoIP, web sites, fil
262 262
 </p>
263 263
 
264 264
 <p>
265
+And here's how <a href="./beaglebone.html">on a Beaglebone Black</a>.
266
+</p>
267
+
268
+<p>
265 269
 Want to make a community mesh network which doesn't depend upon the internet?
266 270
 </p>
267 271