🛠 Survivre avec 512 Mo : zram, swap compressé et services légers
Objetivos
512 MB de DDR3 compartidos con la GPU Mali-400: ese es el techo del BPI-M2 Zero, y la reseña de referencia que ejecutó Geekbench 5 en la placa tuvo que activar zram y llevarlo hasta 350 MB para completar la medición. zram crea un bloque de swap comprimido en la RAM: se ganan bytes sin desgastar la microSD (el único almacenamiento de la placa, aún más valioso que en otros casos). Vas a configurar zram correctamente, aligerar los servicios y verificar que la placa soporta una carga real.
Material
- BPI-M2 Zero con Armbian (algunas imágenes de Armbian ya incluyen un servicio zram: verificar antes de apilar configuraciones)
- Consola (SSH, CON3 u OTG)
- Ninguna tarjeta adicional: todo ocurre en la RAM
Código completo
# 1) État des lieux : y a-t-il déjà un swap ? (ne pas doubler les dispositifs)
free -h && swapon --show && lsmod | grep zram
# 2) Créer un zram de 384 Mo en LZ4 et l'activer comme swap
sudo modprobe zram
echo lz4 | sudo tee /sys/block/zram0/comp_algorithm
sudo zramctl /dev/zram0 --size 384M
sudo mkswap /dev/zram0 && sudo swapon /dev/zram0
# 3) Le rendre résistant au reboot via un service systemd
sudo tee /etc/systemd/system/zram-swap.service >/dev/null <<'EOF'
[Unit]
Before=swap.target
[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/bin/sh -c 'modprobe zram && echo lz4 > /sys/block/zram0/comp_algorithm && zramctl /dev/zram0 --size 384M && mkswap /dev/zram0 && swapon /dev/zram0'
ExecStop=/bin/sh -c 'swapoff /dev/zram0 && zramctl /dev/zram0 --reset'
[Install]
WantedBy=multi-user.target
EOF
sudo systemctl enable --now zram-swap.service
# 4) Alléger : désactiver ce qui est inutile sur un rôle précis
systemctl list-unit-files --state=enabled | head -30
sudo systemctl disable --now bluetooth # si le BT ne sert pas
# 5) Épreuve de feu
sudo apt install -y stress-ng && stress-ng --vm 2 --vm-bytes 200M --timeout 60s
free -h && dmesg | tail # aucun OOM-killer sur sshd
Verificación esperada
swapon --show lista /dev/zram0 (prioridad alta, sin archivo en la SD); durante stress-ng, el swap se llena pero la sesión SSH sigue viva y dmesg no muestra el OOM-killer; zramctl muestra la compresión real (a menudo de 3 a 4×).
Errores frecuentes
- Apilar un archivo de swap clásico en la microSD además de zram: el desgaste de la tarjeta y la latencia 4k de la SD arruinan la experiencia.
- Ajustar zram a 512 MB: la descompresión consume ella misma RAM; 350 a 400 MB es el orden de magnitud que permitió ejecutar los grandes benchmarks en esta placa.
- Ejecutar un escritorio completo en 512 MB: mantenerse en las imágenes server/headless.
- Olvidar que la GPU consume la misma memoria: tras un uso de vídeo, la memoria disponible cae.
- Ocultar el OOM-killer: sshd es el primero en ser terminado, seguido de una pánico silencioso; mantener
vm.swappinessmoderado y vigilardmesg.
Otros tutoriales para esta placa
- Flasher Armbian et premier boot du BPI-M2 Zero
- LED et bouton avec libgpiod sur le port 40 broches
- Wi-Fi AP6212 : le piège de l'antenne U.FL non fournie
- Console série sur USB-OTG : dépanner sans réseau ni câble UART
- Activer le bus SPI0 et piloter un petit écran TFT
- Câbler l'Ethernet 10/100 EMAC avec le carrier Zero-EPHY
Ejemplos de código para esta placa
clignotante.pyPythonbouton-gpio.pyPythoncapteur-i2c.shBashsurveillance-temperature.shBashcapteur-dht11.pyPythonservo-pwm-sysfs.shBash