ITCooky Recetas

Vamos a cocinar it cositas

Servidor doméstico en Raspberry Pi 4 con NVMe, RTC, UPS en una carcasa DIY!

дата octubre 22, 2020

OJO: Según mi experiencia, resulta que si instala el sistema operativo en USB y arranca Raspberry OS desde él, ¡un apagado accidental muy rápidamente mata el disco USB, a la segunda o tercera vez!
Asi murieron
1Gb noname mSATA en SupTronics X856 v1.0
256Gb KingSpec M.2 NVMe en Blueendless SSD M2 PCIe
el problema queda sin resolver, después de 30-60 horas de funcionamiento x725 empieza a descargar btareias, pero sigue conectado ala coriente…

Lo que necesita un servidor doméstico es una fuente de alimentación tolerante a fallas, un disco grande y rápido, buena refrigeración, tamaño pequeño, movilidad, bueno, ¡para colocarlo donde haya al menos energía! Esto es lo que haré: fuente de alimentación a través del X725 con baterías 18650, el disco NVMe es excesivamente rápido para USB3, el mejor enfriamiento! Y una carcasa pequeño y elegante: no hay carcasas universales para Raspberry pi, para todo el relleno, ¡pero puede tomar uno estándar y modificarlo!


PC Raspberry Pi 4
Veré que tipo de modelo tengo
cat /sys/firmware/devicetree/base/model

Raspberry Pi 4 Model B Rev 1.1

Veamos cuanta memoria
free -h

              total        used        free      shared  buff/cache   available
Mem:          3.8Gi        90Mi       3.5Gi       8.0Mi       242Mi       3.6Gi
Swap:          99Mi          0B        99Mi

4Gb!

Enfriamiento Raspberry Pi
Tomo un cooler Low Profile Ice Tower Cooler SKU: EP-0112, por qué se describe aquí en detalles Probando 52Pi ICE Tower coolers para Raspberry Pi 4!.

Reloj paraRaspberry Pi
Yo tengo uno bastante viejo – DS3231 RTC

El reloj contiene una batería recargable LIR2032 debe recargarse, pero no sé cómo verificarlo

UPS para Raspberry Pi
Tengo ese SupTronics X725 Power Management Board, no lo compre, ya hay un modelo más nuevo, y en este de de las funciones declaradas solo funcionan la fuente de alimentación y el apagado: se puede encender con cualquier toque. Aquí lo probé con más detalle Placa de administración de energía X725 Power Management Board de baterías 18650 para Raspberry Pi!

Botón de encendido para X725
Momentary Self-Reset Power Control Switch

Fuente de alimentación
Este! Tiene un conector redondo, y se conecta al x725

Disco USB para Raspberry Pi
Al principio tenía mSATA en la placa en SupTronics X856 y funcionó perfectamente en el ensamblaje de prueba, pero luego, de repente, la velocidad bajó 100 veces, comenzó a apagarse

R.I.P
SupTronics X856 o noname 1Tb mSATA

Reemplazo urgente Blueendless SSD M2 PCIe NVMe/NGFF Type C USB 3,1 y 256Gb KingSpec M.2 NVMe SSD NE Series 2280 PCIE Gen3x4 también los probé en detalle aquí. Cual unidad USB elegir para Raspberry Pi, para el arranque del sistema operativo, en mSATA o NVMe

Espero que sea una ventaja ese cambio, ya que el Wi-Fi funciona mal por SupTronics X856 interfiere con el Wi-Fi en la Raspberry Pi. 2.4Mgz no funciona completamente con él, no es posible conectarse al AP y 5Mhz puede funcionar parcialmente.

Carcasa para Raspberry Pi
1. Caja de distribución eléctrica de hierro caja de metal amplificador DIY 150 * 140 * 70 mm
2. Cable de extensión Cat6 RJ45
3. USB 2,0 Cable de extensión macho a hembra con tornillo de fijación
4. Cable de alimentación Adaptador de cargador 1,2 m DC Jack Tip Conector Cable Cable Fuente de alimentación para computadora portátil 5,5X2,5
5. Conector de alimentación DC099 5,5 мм x 2,1 мм,

Carcasa DIY – Drill It Yourself

Perforo agujeros para RPI y placa de identificación en la parte metálica de la caja. Lamenté no acercarlos mas a la portada, ¡estos dos milímetros me hubieran ayudado mucho en la contraportada! Es conveniente perforar agujeros con un destornillador inalámbrico con modo de taladro, solo debes recordar que él puede rotar el taladro en ambas direcciones … igual puedes taladrar agujeros, pero si el taladro gira en sentido horario, entonces perforar es mucho más fácil y rápido! Antes de perforar, clavé los agujeros, hay que hacer esto con precaución, de lo contrario, el metal se dobla inmediatamente. Las ubicaciones de los ports están pensadas teniendo en cuenta las vísceras y los cables. Los cables USB se pueden introducir por debajo de x725, por debajo de RPI podría introducir USB NVMe, pero literalmente faltan un par de milímetros, ¡la conector de USB es muy larga!

La cubierta de plástico tiene marcas en el interior, eso ayuda a hacer agujeros para los ports. Usé un destornillador y una dremel con cúter.

El conector de alimentación está soldado al cable de alimentación. En el centro esta posotovo rojo, en el costado negativo negro; hay una pista sobre la fuente de alimentación. En los cables USB, corté la protección contra doblado en los conectores, de lo contrario no encajaban

Diagrama de conexión

x725 y RPI estan conectados con cables Arduin ordinarios, los primeros 7 pines (dos filas en el lado de alimentación). Un par de veces cometí un error y mis cables se derritieron … ¡pero RPI y x725 (funcionaba tan mal antes) sobrevivieron! Conecto el reloj DS3231 RTC al x725, solo en los pines unidos con el RPI. Adjunto el panel frontal en el último momento, conecto el botón al los pins correspondiente en x725

Hay una terrible mescla de cables en el interior, ¡pero todo encaja! Arriba está USB NVMe. El ventilador de la CPU se puso en funcionamiento para soplar afuera, ¡hay agujeros en la carcasa justo al lado! A 3.3 es bastante débil, pero sopla, ¡pero silencioso!

Afuera, todo se ve bastabte decente y hermoso, ¡tomé un estuche rojo especialmente para la frambuesa!

Para encender, presione y suelte botón. Para apagarlo, presiónelo y manténgalo presionado durante 3-4 segundos, cuando comience a parpadear, entonces el proceso de apagado ha comenzado. Si lo mantiene durante mucho tiempo, se apagará a la fuerza, sisuleta en 1-2 segundos se reiniciará, todo esto funciona solo si se instalan los scripts para x725.

Instalación inicial a la tarjeta SD
Es necesario instalar Raspberry Pi OS (32 bits) Lite (antes conocido como Raspbian) en esta versión no hay entorno de escritorio.
Descargo la última versión aquíwww.raspberrypi.org/downloads/raspbian/
Y aqui descargo el instalador https://www.raspberrypi.org/downloads/

Para que ssh funcione, en el SD card de la sección BOOT, debe crear un archivo vacío llamado ssh y funcionará después de eso. Ya puede insertar la tarjeta en la frambuesa, conectar el cable ethernet, encender y ver cual IP obtuvo, miré el enrutador, puede ir a la frambuesa con las manos y mirar con el comando
ifconfig
name ssh: pi
password: raspberry

Conéctese y arranque desde NVMe a través de USB
Aun estamos en SD hasta ahora.
Vea qué firmware es ahora
vcgencmd bootloader_version

Apr 16 2020 18:11:26
version a5e1b95f320810c69441557c5f5f0a7f2460dfb8 (release)
timestamp 1587057086

No es el último, a actualizar
sudo apt update
sudo apt full-upgrade
sudo rpi-eeprom-update
sudo rpi-eeprom-update -a

Puede hacerlo manualmente, pero solo después de actualizar todo. Debería aparecer un nuevo firmware y necesitas actualizarlo, para esto cambiamos en el archivo
sudo vi /etc/default/rpi-eeprom-update
palabra critical a stable

ver qué firmware está en
ls /lib/firmware/raspberrypi/bootloader/stable/

instalamos el ultimo pieeprom-2020-09-03.bin
sudo rpi-eeprom-update -d -f /lib/firmware/raspberrypi/bootloader/stable/pieeprom-2020-09-03.bin

Reiniciar
Mira
vcgencmd bootloader_version

Sep  3 2020 13:11:43
version c305221a6d7e532693cc7ff57fddfc8649def167 (release)
timestamp 1599135103

Ahora es la ultima

NVMe está conectado a USB 3 y se define comosda
De alguna manera descargamos y ponemos la última imagen en la frambuesa 2020-08-20-raspios-buster-armhf-lite.zip no hay un enlace directo en el sitio, ¡así que de alguna manera!
unzip 2020-08-20-raspios-buster-armhf-lite.zip

Escribimos esta imagen en NVMe
sudo dd bs=4M if=2020-08-20-raspios-buster-armhf-lite.img of=/dev/sda conv=fsync

Monte la primera partición en una carpeta, por ejemplo /mnt/usb

sudo mkdir /mnt/usb
sudo mount /dev/sda1 /mnt/usb

aquí creamos un archivo para ssh
sudo touch /mnt/usb/ssh

Después de eso, apaga la frambuesa, saca la tarjeta SD y ¡enciende!
Todo se carga milagrosamente

Hacemos la segunda partition y la encriptamos
Si no necesita la segunda paretition, ¡no la haga! Lo necesito para almacenar todos los datos allí y de repente no obstruir todo el disco con ellos. También lo cifraré, porque habrá información personal, copias de seguridad, contraseñas, etc.

Arranque desde SD nuevamente. Como se dice? el sistema operativo Linux som archivos, ¡y solo necesitamos copiar todos los archivos de la partición principal para hacer una copia o transferir todo el sistema operativo a un nuevo disco!

hacer las carpetas necesarias
sudo mkdir /mnt/nvme
sudo mkdir /home/pi/backup/

Tengo la partición deseada determinada como sda2 montala
sudo mount /dev/sda2 /mnt/nvme
y copia todos los archivos
sudo cp -rp /mnt/nvme/* /home/pi/backup/
sudo umount /dev/sda2

IMPORTANTE: Debe copiarlo con la preservación de todos los derechos y atributos, por lo tanto, en el comando esta p

Veo lo que tenemos de discos
sudo fdisk -lu
Información de NVMe

Disk /dev/sda: 238.5 GiB, 256060514304 bytes, 500118192 sectors
Disk model:                 
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: dos
Disk identifier: 0xcf443634

Device     Boot  Start       End   Sectors   Size Id Type
/dev/sda1         8192    532479    524288   256M  c W95 FAT32 (LBA)
/dev/sda2       532480 500118191 499585712 238.2G 83 Linux

¡No tocamos la primera sección, sino que eliminamos sda2 y haremos dos secciones sobre ella!

Utilisamos fdisk
sudo fdisk /dev/sda
Algo extraño, pero no puede ser usado por comandos, solo modo interactivo
para eliminar la segunda sección, presione con enter cada vez
d
2
w
enter

Otra vez
sudo fdisk /dev/sda
Para crear una nueva segunda partición, necesita saber dónde termina la primera, esto se puede ver en sudo fdisk -lu normalmente fdisk tiene que resolverlo, pero esta vez no. Agregue uno a esta cifra y 532480 será el comienzo de la segunda sección, y 64013096 será el final, lo que significa que el tamaño de esta sección será de aproximadamente 30 GB
n
p
2
532480
64013096

check

Disk /dev/sda: 238.5 GiB, 256060514304 bytes, 500118192 sectors
Disk model:                 
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: dos
Disk identifier: 0xcf443634

Device     Boot  Start      End  Sectors  Size Id Type
/dev/sda1         8192   532479   524288  256M  c W95 FAT32 (LBA)
/dev/sda2       532480 64013096 63480617 30.3G 83 Linux

Filesystem/RAID signature on partition 2 will be wiped.

Y hacemos la tercera sección, aquí también los números, simplemente no indicamos el final, usamos todo lo que es
n
p
3
64013097
enter

Para aplicar los cambios
w

Hacer un file system
sudo mkfs -t ext4 /dev/sda2
También necesita crear inmediatamente un sistema de archivos en la tercera partición, de lo contrario, la frambuesa después de la carga intentará expandirse y tomarla también (como me parece)
sudo mkfs -t ext4 /dev/sda3

Momtar
sudo mount /dev/sda2 /mnt/nvme
y copia todos los archivos
sudo cp -rp /home/pi/backup/* /mnt/nvme/

Lo apago, saco la tarjeta SD, la enciendo y ahora tenemos dos secciones!

Almacenamiento seguro de datos
Puede cifrar todo el disco, pero siempre debe ingresar la contraseña al arrancar. Inconveniente, por lo que solo cifraré una partición. Esto protegerá los datos que contiene de la lectura directa; si no hay cifrado en algún momento, puede conectar la unidad a otra PC y leer todos los datos. Aquí, también, deberá ingresar una contraseña, pero en el momento de su conexión y no en el arranque.

Actualizando si no está actualizado
sudo apt update
sudo apt full-upgrade

Instale lo que se necesita para el cifrado
sudo apt-get install cryptsetup
sudo modprobe dm-crypt sha256 aes

Estoy creando una sección de cifrado, aquí tendrás que crear una contraseña
sudo cryptsetup --verify-passphrase luksFormat /dev/sda3 -c aes -s 256 -h sha256
Inicializo la sección de cifrado, aquí deberá ingresar la contraseña
sudo cryptsetup luksOpen /dev/sda3 mYdata

Y creo un sistema de archivos, creando tambien tabla de archivos. De lo contrario, si solo lo crea, se creará cuando lo monte; en el caso de una partición cifrada, esto crea una gran carga incomprensible en el sistema
sudo mkfs -t ext4 -E lazy_itable_init=0,lazy_journal_init=0 /dev/mapper/mYdata

Lo monto

sudo mkdir /mnt/nvme
sudo mount /dev/mapper/mYdata /mnt/nvme

El cifrado, por supuesto, carga el procesador y la velocidad de escritura cae.

Medí la velocidad de creación de archivos.
sudo dd if=/dev/zero of=test.file count=10000 bs=1048576
Las velocidades eran de 200 a 70 mb por segundo, estos resultados no me quedan claros …

Fuente de alimentación ininterrumpida para Raspberry Pi
Tengo X725 Power Management Board no toma compre esa placa, el fabricante ya está vendiendo un nuevo modelo x728; debería ser mejor, incluso si la mitad de las funciones declaradas funcionan en él, entonces definitivamente es mejor que el x725.

En la Raspberry Pi, necesitas habilitar I2C, todo se hace a través del menú, lo haré a través de la consola.

Necesitas editar el archivo
sudo vi /boot/config.txt
descomentar líneas

dtparam=i2c_arm=on
dtparam=i2s=on

Y tambien al archivo
sudo vi /etc/modules
añadir

i2c-dev
i2c-bcm2835

E instalar
sudo apt-get install -y python-smbus i2c-tools

Ahora de acuerdo con las instrucciones del fabricante. www.suptronics.com/miniPCkits/x725-software.html instalamos

wget https://raw.githubusercontent.com/suptronics/x750_x725-script/master/x750.sh
sudo bash x750.sh
printf "%s\n" "alias x750off='sudo x750shutdown.sh'" >> ~/.bashrc
sudo reboot

Instala scripts
sudo python /home/pi/x750ups.py
este muestra el voltaje y el porcentaje de carga, el resultado se muestra constantemente en la consola

******************
Voltage: 4.22V
Battery:  104%
******************
******************
Voltage: 4.22V
Battery:  104%
******************

Y este comando apaga de repente la frambuesa y x725
x750off
desde la consola funciona desde scripts no, pero puedes apagarlo así
sudo /usr/local/bin/x750shutdown.sh

Solo necesito obtener el valor de voltaje una vez, así que elimino todo lo innecesario para crear un script
sudo vi /home/pi/x725bv.py

code

#!/usr/bin/env python
import struct
import smbus
import sys
import time


def readVoltage(bus):

     address = 0x36
     read = bus.read_word_data(address, 2)
     swapped = struct.unpack("<H", struct.pack(">H", read))[0]
     voltage = swapped * 1.25 /1000/16
     return voltage



bus = smbus.SMBus(1) # 0 = /dev/i2c-0 (port I2C0), 1 = /dev/i2c-1 (port I2C1)

while True:
 print ("{0}".format(readVoltage(bus))) 
 exit()

Y bash sript, que apagará todo cuando el voltaje de la batería sea inferior a 3,5, esto es aproximadamente dos horas de funcionamiento de la frambuesa bajo carga
vi /home/pi/batteryoff.sh
code

#!/bin/bash
a=`sudo python /home/pi/x725bv.py`
compare=`echo "$a>3.5" | bc`
if [ $compare -eq 0 ]
then
sudo /usr/local/bin/x750shutdown.sh
fi

Esta será un apagado por hardware … no es la mejor opción … desde el botón x725 se apaga de manera diferente

Para que se inicie una vez por minuto, agregue
sudo crontab -e
linea

* * * * * sh /home/pi/batteryoff.sh

IP estática
descomentar las líneas en el archivo
sudo vi /etc/dhcpcd.conf
y escribir nuestra propia IP de su subred (que no sea del rango DHCP), y un enrutador y DNS

interface eth0
static ip_address=192.168.1.11/24
static routers=192.168.1.1
static domain_name_servers=8.8.8.8

Nos conectamos a Wi-Fi
Desbloquear Wi-Fi
sudo rfkill unblock 0

Veamos las redes
sudo iwlist wlan0 scan

Agregar al archivo
sudo vi /etc/wpa_supplicant/wpa_supplicant.conf

éste con su nombre de red y contraseña

network={
    ssid="ITCOOKY_CEO_B"
    psk="passwrod"
}

Reiniciar Wi-Fi
wpa_cli -i wlan0 reconfigure
Y después de 20 segundos, vemos la conexión
ifconfig

Conecta el reloj ds3231
añadir
sudo vi /boot/config.txt
linea

dtoverlay=i2c-rtc,ds3231

Quitar un reloj falso
sudo apt-get purge fake-hwclock
Configurando el tiempo
sudo dpkg-reconfigure tzdata

Reiniciar

Veo que hora es en el reloj
sudo hwclock -r

Esi se puede registrar en la hora del sistema del reloj.
sudo hwclock -w

Para que el sistema tome tiempo del reloj en el arranque, agrego a
sudo vi /etc/rc.local
antes de exit 0hay que agregar

/sbin/hwclock -s

esto debería escribir la hora desde el RTC hasta el sistema en el arranque

Lo comprerbo, deshabilitar la sincronización horaria
sudo systemctl disable systemd-timesyncd
Apago la frambuesa y la enciendo, ¡el reloj ds3231 ha funcionado!

Vuelvo a activar la sincronización horaria, según tengo entendido, solo funciona por Internet
sudo systemctl enable systemd-timesyncd

Bueno, eso es todo largisimo y todavía falta un sistema para monitorear el estado del servidor con avisos … eso pa luego pa otro articulo…

UPD: Apagado programáticamente de la Raspberry Pi y X725 Power Management Board
Hay un problema con X725 Power Management Board hay un script que lo apaga solo a el, pero no a Raspberry Pi!

Después de instalar el script del fabricante, aparece aquí /usr/local/bin/x750shutdown.sh envía 1 a 18 pines y el X725 se apaga, cortando energía a la Raspberry Pi, lo cual no es bueno … ¡lo cual es muy malo!

Segundo script /etc/x750pwr.sh envía una señal 1 al pin 17 y escucha la presión de un botón en el pin 4 , por lo que cuando se presiona el botón el tiempo suficiente, inicia el apagado de la Raspberry Pi, y el x725 se apaga cuando la señal en 17 desaparece, lo que significa que la frambuesa se apagó, ¡este es un apagado súper correcto! El problema es que no puedes enviar la señal 1 al pin 4 desde otro pin de la frambuesa para iniciar este apagado programáticamente (la frambuesa se apaga pero el X725 no)…tienes que presionar el botón de alguna manera, ¡esto se puede hacer con un transistor!

Tomo el transistor 2N3904 y lo conecto según el esquema

Estoy confundido acerca de los transistores, así que sigue la imagen sueldo el cable rojo del transistor al rojo del botón, en el botón mismo y no como en el diagrama.
En el Raspberry, el transistor está conectado al pin 27 y a tierra, en el diagrama, estos pines se lanzan a X725.

Y debe presionar el botón durante solo 3 a 6 segundos, si presionar 8 se apagar forzozamente. Por eso, hacemos un script
sudo vi bshut.sh
code

#!/bin/bash
shdown=27
echo "$shdown" > /sys/class/gpio/export
echo "out" > /sys/class/gpio/gpio$shdown/direction
echo "1" > /sys/class/gpio/gpio$shdown/value
shtdownstart=$(date +%s%N | cut -b1-13)
while true; do
if [ $(($(date +%s%N | cut -b1-13)-$shtdownstart)) -gt 600 ]; then
exit
fi
done

Lo arrancamos
sudo bash ./bshut.sh

¡Y el apagado normal funciona como de un botón!


2 Responses to “Servidor doméstico en Raspberry Pi 4 con NVMe, RTC, UPS en una carcasa DIY!”

  1. […] Servidor doméstico en Raspberry Pi 4 con NVMe, RTC, UPS en una carcasa DIY! […]

  2. […] Integración con mi DIY case/strong> Inserto UPS HAT V2 en case del artículo ese Servidor doméstico en Raspberry Pi 4 con NVMe, RTC, UPS en una carcasa DIY! […]

Responder a Tecnologías antiguas – eMule: ¡Instalando el cliente p2p aMule en Raspberry Pi! « ITCooky Recetas Cancelar la respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *