150 lines
9.1 KiB
Org Mode
150 lines
9.1 KiB
Org Mode
#+TITLE:
|
|
#+AUTHOR: Bob Mottram
|
|
#+EMAIL: bob@freedombone.net
|
|
#+KEYWORDS: freedombox, debian, beaglebone, red matrix, email, web server, home server, internet, censorship, surveillance, social network, irc, jabber
|
|
#+DESCRIPTION: Turn the Beaglebone Black into a personal communications server
|
|
#+OPTIONS: ^:nil toc:nil
|
|
#+HTML_HEAD: <link rel="stylesheet" type="text/css" href="freedombone.css" />
|
|
|
|
#+BEGIN_CENTER
|
|
[[file:images/logo.png]]
|
|
#+END_CENTER
|
|
|
|
#+begin_export html
|
|
<center><h1>Mesh Network: Images</h1></center>
|
|
#+end_export
|
|
|
|
* Pre-built Disk Images
|
|
** Writing many images quickly
|
|
There may be situations where you need to write the same disk image to multiple drives at the same time in order to maximize rate of deployment. In the instructions given below the *dd* command is used for writing to the target drive, but to write to multiple drives you can use a tool such as [[https://wiki.gnome.org/Apps/MultiWriter][GNOME MultiWriter]].
|
|
|
|
For example on Arch/Parabola:
|
|
|
|
#+begin_src bash
|
|
sudo pacman -S gnome-multi-writer
|
|
#+end_src
|
|
|
|
Or on Debian based systems:
|
|
|
|
#+begin_src bash
|
|
sudo apt-get install gnome-multi-writer
|
|
#+end_src
|
|
|
|
The MultiWriter tool is also available within mesh client images, so that you can use mesh systems to create more copies of the same system.
|
|
** Client images
|
|
|
|
#+BEGIN_CENTER
|
|
[[file:images/mesh_netbook.jpg]]
|
|
#+END_CENTER
|
|
|
|
"Client" isn't exactly the right term, but it's a mesh peer with a user interface. These images can be copied to a USB drive, then you can plug it into a laptop/netbook/desktop machine and boot from it. You will probably also need an Atheros USB wifi dongle (the black protruding object on the left side of the netbook in the picture above), because most built-in wifi usually requires proprietary firmware. In the commands below substitute /dev/sdX with the USB drive device, excluding any trailing numbers (eg. /dev/sdb). The USB drive you're copying to will need to be at least 8GB in size.
|
|
|
|
#+begin_src bash
|
|
sudo apt-get install xz-utils wget
|
|
wget https://freedombone.net/downloads/current/freedombone-meshclient-i386.img.xz
|
|
wget https://freedombone.net/downloads/current/freedombone-meshclient-i386.img.xz.sig
|
|
gpg --verify freedombone-meshclient-i386.img.xz.sig
|
|
sha256sum freedombone-meshclient-i386.img.xz
|
|
61e474afae14774d7aa479b6727fd5e77bdc1854e547b3c5b630bf10542a9581
|
|
unxz freedombone-meshclient-i386.img.xz
|
|
sudo dd if=/dev/zero of=/dev/sdX bs=1M count=8
|
|
sudo dd bs=1M if=freedombone-meshclient-i386.img of=/dev/sdX conv=fdatasync
|
|
#+end_src
|
|
|
|
To get a number of systems onto the mesh repeat the /dd/ command to create however many bootable USB drives you need.
|
|
|
|
If you're in an emergency and don't have Atheros wifi dongles then there is also an "insecure" image which contains some proprietary wifi drivers which may work with a wider range of laptops. Proprietary drivers *are not recommended* because they're unsupportable and may be exploitable or contain malicious antifeatures which fundamentally compromise the security of the network. However, the trade-off between security/maintainability and simply having the ability to communicate at all may be a valid one in some situations.
|
|
|
|
#+begin_src bash
|
|
sudo apt-get install xz-utils wget
|
|
wget https://freedombone.net/downloads/current/freedombone-meshclient-insecure-i386.img.xz
|
|
wget https://freedombone.net/downloads/current/freedombone-meshclient-insecure-i386.img.xz.sig
|
|
gpg --verify freedombone-meshclient-insecure-i386.img.xz.sig
|
|
sha256sum freedombone-meshclient-insecure-i386.img.xz
|
|
fec843303d7d280859f75f7a8edccd70512915a34d4cc0787b5de7d8fbde5c81
|
|
unxz freedombone-meshclient-insecure-i386.img.xz
|
|
sudo dd if=/dev/zero of=/dev/sdX bs=1M count=8
|
|
sudo dd bs=1M if=freedombone-meshclient-insecure-i386.img of=/dev/sdX conv=fdatasync
|
|
#+end_src
|
|
|
|
** Router images
|
|
Routers are intended to build network coverage for an area using small and low cost hardware. You can bolt them to walls or leave them on window ledges. They don't have any user interface and their only job is to haul network traffic across the mesh and to enable peers to find each other via running bootstrap nodes for Tox and IPFS. Copy the image to a microSD card and insert it into the router, plug in an Atheros wifi dongle and power on. That should be all you need to do.
|
|
*** Beaglebone Black
|
|
#+BEGIN_CENTER
|
|
[[file:images/mesh_router.jpg]]
|
|
#+END_CENTER
|
|
|
|
The above picture shows a Beaglebone Black with the image copied onto a microSD card (there's no need to do anything with the internal EMMC). A USB Atheros wifi adaptor with a large antenna is attached and in this case power is from the mains, although it could be from a battery or solar power system capable of supplying 5 volts and maybe 1A (depending upon how active the router is).
|
|
|
|
#+begin_src bash
|
|
sudo apt-get install xz-utils wget
|
|
wget https://freedombone.net/downloads/current/freedombone-mesh_beaglebone-armhf.img.xz
|
|
wget https://freedombone.net/downloads/current/freedombone-mesh_beaglebone-armhf.img.xz.sig
|
|
gpg --verify freedombone-mesh_beaglebone-armhf.img.xz.sig
|
|
sha256sum freedombone-mesh_beaglebone-armhf.img.xz
|
|
45f131995e2f77188e7ddaf2b42ca3d8d48d821d37c7a31a21e2e6dcceaf510d
|
|
unxz freedombone-mesh_beaglebone-armhf.img.xz
|
|
sudo dd bs=1M if=freedombone-mesh_beaglebone-armhf.img of=/dev/sdX conv=fdatasync
|
|
#+end_src
|
|
|
|
If you have a few Beaglebone Blacks to use as routers then repeat the /dd/ command to create however many microSD cards you need.
|
|
|
|
There is still a software freedom issue with the Beaglebone Black, but it doesn't prevent you from running a fully free system on the board. The TI AM335X SOC has a PowerVR SGX530 GPU which will only run with a proprietary blob, but this would only be an issue for systems with a monitor or LCD screen attached running a desktop environment which also needs GPU acceleration. For "headless" systems such as servers or mesh routers this isn't a problem.
|
|
|
|
* Building Disk Images
|
|
It's better not to trust images downloaded from random places on the interwebs. Chances are that unless you are in the web of trust of the above GPG signatures then they don't mean very much to you. If you actually want something trustworthy then build the images from scratch. It will take some time. Here's how to do it.
|
|
|
|
First you will need to create an image. On a Debian based system (tested on Debian Stretch):
|
|
|
|
#+begin_src bash
|
|
sudo apt-get -y install git wget build-essential
|
|
wget https://freedombone.net/downloads/current/freedombone.tar.gz
|
|
wget https://freedombone.net/downloads/current/freedombone.tar.gz.sig
|
|
gpg --verify freedombone.tar.gz.sig
|
|
sha256sum freedombone.tar.gz
|
|
e2715e27b142a21fa257eab15778ddc96f86fda70f8d91d47c4c9aa19f22e272
|
|
tar -xzvf freedombone.tar.gz
|
|
cd freedombone
|
|
git checkout stretch
|
|
sudo make install
|
|
freedombone-image --setup debian
|
|
freedombone-image -t i386 -v meshclient
|
|
#+end_src
|
|
|
|
If you don't have Atheros or free software compatible wifi adapter then you can include proprietary wifi drivers which will work with most laptops. This is *NOT RECOMMENDED* because proprietary drivers are unsupportable and may contain either malware or be exploitable in a way which can't be fixed. However, if you're in an emergency and don't have any Atheros or free software wifi USB dongles then you can use the following command to make the image:
|
|
|
|
#+begin_src bash
|
|
freedombone-image -t i386 -v meshclient --insecure yes
|
|
#+end_src
|
|
|
|
This takes a while. Maybe an hour or so, depending on the speed of your system and the internets. The good news though is that once created you can use the resulting image any number of times, and you don't need to trust some pre-built image.
|
|
|
|
List what drives are on your system with:
|
|
|
|
#+begin_src bash
|
|
ls /dev/sd*
|
|
#+end_src
|
|
|
|
Now plug in the USB thumb drive, and do the same again. Notice which drive letter gets added.
|
|
|
|
You can now copy the image to the USB thumb drive, replacing *sdX* with the identifier of the USB thumb drive. Don't include any numbers (so for example use *sdc* instead of *sdc1*).
|
|
|
|
#+begin_src bash
|
|
sudo dd if=/dev/zero of=/dev/sdX bs=1M count=8
|
|
sudo dd bs=1M if=myimagefile.img of=/dev/sdX conv=fdatasync
|
|
#+end_src
|
|
|
|
And wait. Again it will take a while to copy over. When that's done plug it into the laptop or netbook which you want to use on the mesh, power on and set the BIOS to boot from the USB stick.
|
|
|
|
On first boot you'll be asked to set a username, and then you can open the chat client and select the *users* icon to show the Tox IDs for other users on the mesh. When folks join they will be announced.
|
|
|
|
Rinse, repeat, for any number of laptops that you want to get onto the mesh or to build out coverage within an area. There are no servers. Just peer-to-peer communications routed through the network which are end-to-end secure after a friend request is accepted. By default the chat client doesn't log anything.
|
|
|
|
You can also use single board computers (SBCs) such as the BeagleBone Black to make mesh routers which can be bolted to walls or the sides of buildings and consume minimal electrical power, so could be solar or battery powered for short term events such as festivals. To do that use the following command to make the image:
|
|
|
|
#+begin_src bash
|
|
freedombone-image -t beaglebone -v mesh
|
|
#+end_src
|
|
|
|
The resulting image can be copied to a microSD card, inserted into a Beaglebone Black and booted. Don't forget to plug in an Atheros USB wifi dongle.
|