Pleroma on the PYNQ Z1 - wimvanderbauwhede/limited-systems GitHub Wiki
Pleroma on PYNQ-Z1
The PYNQ-Z1 is a board with a Xilinx Zynq chip, an FPGA-based System-on-Chip with a 650MHz dual-core Cortex-A9 and 512MB RAM.
This system does not have enough memory to run Mastodon but enough to run Pleroma. Please read my other guide, Mastodon and Pleroma on the Raspberry Pi 3 first for links and details on installing Pleroma.
The system runs Ubuntu 15.10 "Wily" for arm64
. This is alas not an LTS release, its End of Life was July 28, 2016. Cue lots of problems ...
In the end I got what I needed by combining wily
, wily-updates
with jessie-backports
. TIL: Ubuntu Wily and Debian Jessie are basically the same.
Accessing PYNQ over Ethernet
- The Ethernet device of the board has a fixed IP address
192.168.2.10
. There is no WiFi.
Accounts:
The default account is xilinx
, password xilinx
, but I disabled SSH access for that one and created a separate development account wim
and an account pleroma
.
Distro Problems
The problem is that the Ubuntu release shipped with the board (15.10 'Wily') is no longer in the standard apt-get
repo as it is too old. I eventually figured out that the file /etc/apt/sources.list.d/multistrap-wily.list
should look like the following:
deb [arch=armhf] http://old-releases.ubuntu.com/ubuntu wily universe main
deb-src http://old-releases.ubuntu.com/ubuntu wily universe main
deb [arch=armhf] http://old-releases.ubuntu.com/ubuntu wily-updates universe main
deb-src http://old-releases.ubuntu.com/ubuntu wily-updates universe main
Furthermore, as detailed below, you also need /etc/apt/sources.list.d/erlang-solutions.list
:
deb http://packages.erlang-solutions.com/debian jessie contrib
And also the Jessie backports as /etc/apt/sources.list.d/postgres-jessie-backport.list
:
deb http://ftp.uk.debian.org/debian jessie-backports main
Make sure to run apt-get update
before installing any package. In principle, this should solve all your distro problems; if not, read on.
Git Cert problem!
Problem: missing CAcert root certificate.
Solution from here -- but DON'T DO THIS, IT'S A RED HERRING!
- Create a directory in which to store the CAcert certificate files.
sudo mkdir /usr/local/share/ca-certificates/cacert.org
- Download the root certificates from the cacert website.
sudo wget -P /usr/local/share/ca-certificates/cacert.org http://www.cacert.org/certs/root.crt http://www.cacert.org/certs/class3.crt
- Update the certificate bundle
sudo update-ca-certificates git config --global http.sslCAinfo /etc/ssl/certs/ca-certificates.crt
But the actual reason for the problem was ...
Date not set correctly!
-
Setting the date:
timedatectl set-ntp false timedatectl set-time 14:55:00 timedatectl set-time 2017-12-12 timedatectl set-ntp true timedatectl status
-
Still not OK, could not restart the sync service. Conflict with
ntpd
. Solution:apt purge ntp systemctl start systemd-timesyncd systemctl status systemd-timesyncd systemctl list-unit-files | grep sync
-
Finally OK!
Elixir is too old!
apt-get install update-manager-core
=> No good!
So I tried by adding Debian Jessie packages for erlang and elixir, as /etc/apt/sources.list.d/erlang-solutions.list
:
deb http://packages.erlang-solutions.com/debian jessie contrib
Onwards:
apt install elixir
=> That seems to have worked.
But then some mix build
failed!
apt install erlang-dev
=> still not OK
apt install erlang-parsetools
=> OK, all seemed well
But in the end we were still missing something:
apt install erlang-xmerl
=> And then it works!
PostgreSQL woes!
Creating the PostgreSQL database for Pleroma:
su postgres -c psql
CREATE USER pleroma;
CREATE DATABASE pleroma_dev;
ALTER user pleroma with encrypted password 'pleroma';
ALTER USER pleroma WITH SUPERUSER;
GRANT ALL ON ALL tables IN SCHEMA public TO pleroma;
GRANT ALL ON ALL sequences IN SCHEMA public TO pleroma;
CREATE EXTENSION citext;
Then run the script generated by the build, it basically changes the password
mix ecto.migrate
mix phx.server
- So now I get a database syntax error. So I tried a clean slate: delete user & db, fresh cloned repo. No joy. Turns out I need a more recent postgresql than the one in Wily.
- Tried do-release-upgrade, FAIL.
- Finally after much trouble installed
postgresql-9.6
fromhttps://packages.debian.org/jessie-backports/armhf/database/postgresql-9.6
usingdpkg -i
to install the.deb
files. I forgot but I guess I might have neededapt-get install -f
afterwards.
libpq5_9.6.5-0+deb9u1~bpo8+1_armhf.deb
postgresql-9.6_9.6.5-0+deb9u1~bpo8+1_armhf.deb
postgresql-client-9.6_9.6.5-0+deb9u1~bpo8+1_armhf.deb
postgresql-client-common_181~bpo8+1_all.deb
postgresql-common_181~bpo8+1_all.deb
postgresql-contrib-9.6_9.6.5-0+deb9u1~bpo8+1_armhf.deb
sysstat_11.0.1-1_armhf.deb
I added the Jessie backports as /etc/apt/sources.list.d/postgres-jessie-backport.list
:
deb http://ftp.uk.debian.org/debian jessie-backports main
- And now it works!
Saving memory
By default the PYNQ runs Samba for file sharing and Jupyter Notebooks. These us a lot of memory, so I killed them.
systemctl stop smb*
killall python3.6 or use kill -9 PID
As far as I can tell Pleroma uses only about 50MB, the rest is mainly PostgreSQL.