RPI2 – Freebsd

Les aventures pour monter un Raspberry PI2 model B version 1.2 (c’est à dire après le RPI3) avec une FReeBSD.

L’Image

Depuis la version 11 de FreeBSD, l’arm est géré nativement par la distribution, il y a des snapshots régulier de fournit par la RE team disponbile sur le ftp public : ftp://ftp.freebsd.org/pub/FreeBSD/snapshots/ISO-IMAGES/11.1/

ftp://ftp.freebsd.org/pub/FreeBSD/snapshots/arm/armv6/ISO-IMAGES/11.1/

Mais le hic, seuls sont disponibles des snapshots pour les armv6, et notre RPI 2 (B v1.2) utilise un processeur plus récent, nous nous heurtons au « Rainbow Screen 4 blinks ACT boot »… En cherchant, il existe une image pour le RPI2 ARMv7 mais seulement pour la version 12 donc encore en développement jusque début 2019 (  ftp://ftp.freebsd.org/pub/FreeBSD/snapshots/ISO-IMAGES/12.0/  )

Il y a 2 actions à faire de suite par configurer les locales

cp /usr/share/zoneinfo/Europe/Paris /etc/localtime
echo keymap="fr" >> /etc/rc.conf
echo ntpd_enable="YES" >> /etc/rc.conf
echo ntpd_sync_on_start="YES" >> /etc/rc.conf

 

12-CURRENT

Vu que nous sommes sur du current, rien n’est stable et nous ne pouvons pas faire des upgrades binaires du kernel, ça veut donc dire que toutes les modifs sur la SD seront perdu au prochain snapshot, de plus, dans les versions actuelles, il n’est pas possible de compiler un ports depuis la SD, le système soit se plante lors du portsnap, soit ne redémarre plus, nous devons donc trouver un moyen de garder trace des modifications en cas d’update et de soulager la carte SD. L’avantage c’est que tout les packages construit à partir du répertoire des ports arrivent dans la partie local (un vrai unix donc avec une distinction forte system/local). Portsnap utilise : /var/db/portsnap , ports : /usr/ports et le système /url/local, nous pouvons donc monter 3 répertoire nfs pour stabiliser et péreniser notre configuration

echo nfs_client_enable="YES" >> /etc/rc.conf
echo server:/mnt/tank/rpi/ports     /usr/ports       nfs     rw      0 0 >> /etc/fstab
echo server:/mnt/tank/rpi/local/usr /usr/local       nfs     rw      0 0 >> /etc/fstab
echo server:/mnt/tank/rpi/local/var /var/db/portsnap nfs     rw      0 0 >> /etc/fstab

WordPress

L’étape suivante est la mise en place d’un petit serveur wordpress, le process est assez classique, attention toutefois à bien désactiver dt_trace dans php, sinon la compilation n’ira pas au bout !

portsnap auto
cd /usr/ports/ports-mgmt/portmaster
make install clean
portmaster www/nginx lang/php72 www/wordpress

Au besoin, je vous laisse allez lire l’excellent thread HOWTO: Install WordPress 3.x + Nginx + MySQL 5.5

MySQL

Au vu de la séparation Data/Applicatif mis en place, j’ai décidé d’insaller mysql sur un jail sur le freenas. A la première tentative en utilisant la gui et les commandes jails, le service mysql ne lance pas et l’initialisation n’a pas lieu, les erreur suivantes ont lieu:

WARNING: failed precmd routine for mysql

après un lancement de mysql –initialize

/usr/local/libexec/mysqld: Undefined symbol "fdatasync"

La gestion des jails de FreeNAS 11-1 et du coup les jails créé via l’interface ne sont pas viable, il faut passer par iocage. L’idée ici est de créer le jail et d’installer mysql-server

iocage create -n examplejail ip4_addr="bge0|192.168.1.10/24" -r 11.1-RELEASE
iocage start examplejail
iocage console example jail
pkg install mysql57-server
sysrc mysql_enable=YES

Enjoy !