Instalando CentOS 7 en RaspberryPI

He aquí una pequeña guía para instalar CentOS 7.5 en una RaspberryPI, muy útil si quieres dedicar alguna de tus raspberries para algún experimento software mas allá de lo que Raspbian pueda ofrecer.
La mayor parte de la información está obtenida de la página web del SpecialInterestGroup de CentOS sobre ARM.
El procedimiento es válido para los modelos B y B+ de la Raspberry PI 3.


Paso 1: Generar la SD-card de arranque

Descargamos la imagen RAW (armv7hl-RaspberryPI-Minimal-1804-sda) de http://isoredirect.centos.org/altarch/7/isos/armhfp/ y la descomprimimos con la utilidad TAR en linux o con la utilidad 7zip en Windows.

Para copiar la imagen a la SD-card en linux utilizamos  sudo dd if=imagen_raw.img of=/dev/<device_sd-card> 
En Windows podemos utilizar la utilidad Etcher o el Universal USB Installer.

Paso 2: Personalizar la instalación

En este paso vamos a personalizar la instalación con el objetivo de poder generar una nueva imagen final de referencia que utilizaré para generar la SD-card de arranque definitiva (para desplegar mas RaspberryPIs o volver a reinstalar y tener una instalación fresca).

Lo primero es insertar la SD-Card en la Raspberry y arrancar. El password de root por defecto es centos.


Expandimos el root filesystem al tamaño máximo de la SD-Card con rootfs-expand.
Ejecutamos echo "NETWORKING=yes" > /etc/sysconfig/network para solucionar problemas con la inicialización de la red.

Deshabilitamos el KDUMP con systemctl disable kdump.

Deshabilitamos los adaptadores WiFi y BT editando el fichero /etc/modprobe.d/raspi-blklst.conf y añadiendo lo siguiente:
blacklist brcmfmac
blacklist brcmutil
blacklist btbcm
blacklist hci_uart

Y deshabilitamos el servicio wpa_supplicant con
 systemctl disable wpa_supplicant.service

Deshabilitamos y desinstalamos el NetworkManager y firewall:
systemctl stop NetworkManager firewalld
systemctl disable NetworkManager firewalld
yum -y remove NetworkManager NetworkManager-libnm firewalld

Antes de reiniciar, cambiamos la configuración de red para utilizar una dirección IP estática. Para ello creamos el fichero /etc/sysconfig/network-scripts/ifcfg-eth0 y añadimos lo siguiente:
DEVICE=eth0
TYPE=Ethernet
BOOTPROTO=none
ONBOOT=yes
IPADDR=192.168.1.15
NETMASK=255.255.255.0
GATEWAY=192.168.1.1


También configuramos la resolución de nombres en el /etc/resolv.conf añadiendo:
search pingarron.net
nameserver 8.8.8.8
nameserver 8.8.4.4

Establecemos el nombre de host con hostnamectl set-hostname pi01.pingarron.net

Configuramos la zona horaria con timedatectl set-timezone Europe/Madrid

Deshabilitamos SELinux editando el fichero /etc/selinux/config y modificando la siguiente línea:
SELINUX=disabled

Instalamos las utils de YUM con yum -y install yum-utils deltarpm y actualizamos el sistema y reiniciamos con yum -y update && reboot

Para mejorar el uso de memoria y el rendimiento en disco creamos el fichero /etc/sysctl.d/raspberryPI-sysctl.conf añadiendo los siguientes valores:
vm.swappiness=1
vm.vfs_cache_pressure=50
vm.dirty_background_ratio=15


Instalamos el repositorio EPEL, para ello creamos el fichero /etc/yum.repos.d/epel.repo y añadimos lo siguiente:
[epel]
name=Epel rebuild for armhfp
baseurl=https://armv7.dev.centos.org/repodir/epel-pass-1/
enabled=1
gpgcheck=0


A partir de ahora ya podemos instalar otros paquetes extra como python-pip.

El último paso será instalar Oracle Java 1.8, descargando el JDK para Linux ARM 32 Hard Float ABI. Para ello:
# yum -y install wget
# mkdir /usr/java
# cd /usr/java
# wget --no-cookies --no-check-certificate --header "Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com%2F; oraclelicense=accept-securebackup-cookie" http://download.oracle.com/otn-pub/java/jdk/8u191-b12/2787e4a523244c269598db4e85c51e0c/jdk-8u191-linux-arm32-vfp-hflt.tar.gz
# tar xvf jdk-8u191-linux-arm32-vfp-hflt.tar.gz
# update-alternatives --install /usr/bin/java java /usr/java/jdk1.8.0_191/bin/java 1
# update-alternatives --install /usr/bin/javac javac /usr/java/jdk1.8.0_191/bin/javac 1

Añadimos el JAVA_HOME como variable de entorno en el /etc/profile
export JAVA_HOME=/usr/java/jdk1.8.0_191
export JRE_HOME=/usr/java/jdk1.8.0_191/jre
export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin

Por último, reiniciamos y comprobamos.

Paso 3: Crear la imagen final de la instalación


Si todo está correcto podemos crear una imagen de la tarjeta microSD para clonar al resto de raspberryPIs que tengamos (o simplemente restaurar la imagen para comenzar con una instalación fresca).

En Linux utilizaremos sudo dd bs=1M if=/dev/sdX | gzip > centos7.rpi.img.gz
En Windows podemos utilizar la utilidad Win32DiskImager

Comentarios

Entradas populares de este blog

Apache Spark 2.4: hacia la analítica de datos unificada

¿Qué es NVMe y porqué es clave?