6. Configuración básica
Tras encender la Banana Pi M1 nos preguntará login. Como he dicho antes, las credenciales son:
User: root
Pass: 1234
Tras introducirlo nos pedirá que cambiemos la contraseña. Para ello, primero nos pregunta de nuevo la contraseña anterior (1234) y luego nos pregunta dos veces la nueva. Recuerda que si usas el SoC directamente con monitor y teclado el teclado estará en inglés.
Seguidamente nos pregunta la creación de un nuevo usuario. Voy a usar, como ejemplo:
User: nas
Pass: nas
Name: NAS
Otros campos: vacío (darle al enter directamente).
Tras estos dos pasos nos dejará en el intérprete de comandos.
Todos los siguientes comandos están ejecutados como root (puedes usar "sudo su" desde un usuario normal para escalar a root).
a. Actualizar sistema y base
Primero vamos a actualizar el sistema. Para ello hemos de estar conectados a Internet y ejecutar:
Código: Seleccionar todo
apt-get update; apt-get upgrade; apt-get install ntfs-3g
b. Configuración básica de idioma (locale), teclado y ratón
Para configurar el teclado:
Seleccionamos teclado estándard, luego "Otras opciones", "Español", "default" y "No compose key". Usaremos los cursores para navegar entre opciones, espacio para marcar e intro para seleccionar y avanzar a la siguiente pantalla.
Para configurar la zona horaria:
Para España seleccionamos: "Europe", "Madrid". Canarias no aparece y no sé cuál es la ciudad equivalente que sí aparece.
Para configurar el idioma:
Ejecutamos:
Primero seleccionamos (activamos) es_ES@UTF-8 UTF-8 y en la 2a pantalla la seleccionamos como "default locale"
Tras ejecutar el comando nos queda configurado el español pero no para los mensajes y comandos del sistema. Si deseamos cambiarlo editaremos la configuración:
Y lo cambiaremos por:
Código: Seleccionar todo
LANG=es_ES.UTF-8
LC_MESSAGES=es_ES.UTF-8
LANGUAGE=es_ES.UTF-8
Tras reiniciar tendremos todo configurado, como por ejemplo:
Código: Seleccionar todo
root@bananapi:~# df -h
S.ficheros Tamaño Usados Disp Uso% Montado en
udev 10M 0 10M 0% /dev
tmpfs 199M 5,7M 194M 3% /run
/dev/mmcblk0p1 7,3G 1,3G 6,0G 18% /
tmpfs 497M 0 497M 0% /dev/shm
tmpfs 5,0M 4,0K 5,0M 1% /run/lock
tmpfs 497M 0 497M 0% /sys/fs/cgroup
tmpfs 497M 0 497M 0% /tmp
log2ram 50M 1,5M 49M 3% /var/log
tmpfs 100M 0 100M 0% /run/user/1000
root@bananapi:~#
c. Configurar sistema de escalado de frecuencia de CPU
He revisado el gobernador de frecuencia de la CPU y en este sistema viene por defecto el nuevo driver, schedutil. Si bien ondemand era el gobernador que mejor rendimiento daba, éste mejora sensiblemente al anterior, por lo cual no lo cambiaremos, aunque sí retocaremos los valores por defecto. Para ello editamos la configuración:
Código: Seleccionar todo
ENABLE=true
MIN_SPEED=480000
# Muy leve overclock para situaciones de alta carga
MAX_SPEED=1008000
#Original:
#MAX_SPEED=960000
GOVERNOR=schedutil
IO_IS_BUSY=1
# Opcionales, provienen de ondemand
UP_THERESHOLD=25
SAMPLING_DOWN_FACTOR=25
Y recargamos el servicio con los nuevos valores:
d. Irqbalancing
Parece ser que sigue sin funcionar el irqbalancing en los chipsets Allwinner, con lo que configuraremos el sistema para evitar que este problema penalice el rendimiento:
y justo antes del "exit 0" del final del archivo añadimos:
Código: Seleccionar todo
for i in $(awk -F":" '/ahci/ {print $1}' </proc/interrupts); do echo 2 >/proc/irq/$i/smp_affinity; done
for i in $(awk -F":" '/mmc/ {print $1}' </proc/interrupts); do echo 2 >/proc/irq/$i/smp_affinity; done
for i in $(awk -F":" '/eth0/ {print $1}' </proc/interrupts); do echo 1 >/proc/irq/$i/smp_affinity; done
# Opcional, para el caso de usar discos USB
for i in $(awk -F":" '/usb[0-9]$/ {print $1}' </proc/interrupts); do echo 2 >/proc/irq/$i/smp_affinity; done
echo 2 > /sys/class/net/eth0/queues/rx-0/rps_cpus
echo 2 > /sys/class/net/eth0/queues/tx-0/xps_cpus
Y le damos permisos de ejecución:
e. IP fija
Este paso es opcional, pero altamente recomendable. Procederemos a asignar una IP fija a nuestro NAS.
Para ello editamos el archivo de configuración:
Y cambiamos:
Código: Seleccionar todo
iface eth0 inet dhcp
#address 192.168.0.100
#netmask 255.255.255.0
#gateway 192.168.0.1
#dns-nameservers 8.8.8.8 8.8.4.4
Por algo similar a:
Código: Seleccionar todo
## ETH0, original
#iface eth0 inet dhcp
##address 192.168.0.100
##netmask 255.255.255.0
##gateway 192.168.0.1
##dns-nameservers 8.8.8.8 8.8.4.4
## ETH0, fixed IP
iface eth0 inet static
address 192.168.1.248
netmask 255.255.255.0
gateway 192.168.1.1
dns-nameservers 8.8.8.8 8.8.4.4
Siendo 'address' la IP que queremos asignar al NAS y 'gateway' la IP del router. He puesto los DNS de Google, pero podéis usar los que deseéis.
Ahora tenemos dos opciones:
- Si estamos usando el teclado, podemos directamente usar
- Si estamos conectados por SSH hemos de reiniciar la máquina o usar dentro de una sesión "screen" (ya está instalado por defecto, pero si no sabes usarlo directamente reinicia y ya vale). De cualquier manera tendremos que reconectar por SSH si hemos cambiado la IP.
El problema de reiniciar el servicio por SSH es que al cortarse la conexión no termina de iniciar completamente y no pone la IP seleccionada, con lo que nos quedamos sin conexión. Esto se evita reiniciando o usando screen, que continúa ejecutando el 'restart' pese a no tener conexión.
f. Preparar discos extra
Para facilitar la tarea, los discos extra los podemos preparar en otro PC completo. Lo único que no haremos, preferentemente, es crear los arrays RAID, si es que queréis usarlos.
Podéis usar cualquier formato, pero yo recomiendo usar ext4.
Parar borrar todo podéis usar incluso el gestor de discos de Windows, pero para crear las particiones y formatearlas os recomiendo usar la herramienta de Discos de gnome o KDE o usar el
liveCD o liveUSB gparted.
Si queremos conectar una unidad en la que ya tenemos datos podemos hacerlo sin formatear; así podremos compartirla sin mas (por ejemplo, para compartir un pendrive).
Para editar las particiones de un disco:
Siendo X la letra del disco. Por ejemplo:
Si el disco no tiene particiones nos preguntará qué formato usar. Elegid "dos" o "gpt".
Para borrar particiones usaremos la opción "Delete"
Para crear particiones usaremos la opción "New". El tipo por defecto es "83 - Linux", que es el correcto.
Cuando tengamos todo a nuestro gusto hemos de seleccionar la opción "Write" y responder "yes". Recordad hacerlo antes de salir (Quit) o los cambios no se guardarán.
Tras ello formatearemos nuestras unidades:
Si el disco es interno al NAS usaremos ext4:
Siendo X la unidad y, opcionalmente, partición (se puede usar la unidad entera sin particionar, si lo deseamos, por ejemplo en pendrives o SDs). Por ejemplo:
Si el disco es externo usaremos FAT (compatible con todo) o NTFS (mas seguro):
Siendo X la unidad y, opcionalmente, partición (se puede usar la unidad entera sin particionar, si lo deseamos, por ejemplo en pendrives o SDs). Por ejemplo:
g. USB automount
Ya que deseamos que el NAS funcione sólo es aconsejable añadir esta pequeña utilidad que cargará nuestros discos USB automáticamente al conectarlos:
Cambiamos la configuración:
y substituimos las líneas:
Código: Seleccionar todo
FILESYSTEMS="vfat ext2 ext3 ext4 hfsplus"
MOUNTOPTIONS="sync,noexec,nodev,noatime,nodiratime"
FS_MOUNTOPTIONS=""
Por:
Código: Seleccionar todo
FILESYSTEMS="vfat ext2 ext3 ext4 hfsplus ntfs-3g fuseblk ntfs"
MOUNTOPTIONS="sync,noexec,nodev,noatime,nodiratime,user"
FS_MOUNTOPTIONS="-fstype=ntfs-3g,nls=utf8,umask=000,gid=46 -fstype=fuseblk,nls=utf8,umask=000,gid=46 -fstype=vfat,gid=1000,uid=1000,umask=000"
Crea una configuración UDEV para solucionar varios problemas:
Código: Seleccionar todo
KERNEL=="sd*", DRIVERS=="sbp2", ACTION=="add", PROGRAM="/bin/systemd-escape -p --template=usbmount@.service $env{DEVNAME}", ENV{SYSTEMD_WANTS}+="%c"
KERNEL=="sd*", SUBSYSTEMS=="usb", ACTION=="add", PROGRAM="/bin/systemd-escape -p --template=usbmount@.service $env{DEVNAME}", ENV{SYSTEMD_WANTS}+="%c"
KERNEL=="ub*", SUBSYSTEMS=="usb", ACTION=="add", PROGRAM="/bin/systemd-escape -p --template=usbmount@.service $env{DEVNAME}", ENV{SYSTEMD_WANTS}+="%c"
KERNEL=="sd*", ACTION=="remove", RUN+="/usr/share/usbmount/usbmount remove"
KERNEL=="ub*", ACTION=="remove", RUN+="/usr/share/usbmount/usbmount remove"
Y creamos el servicio systemd:
Código: Seleccionar todo
[Unit]
BindTo=%i.device
After=%i.device
[Service]
Type=oneshot
TimeoutStartSec=0
Environment=DEVNAME=%I
ExecStart=/usr/share/usbmount/usbmount add
RemainAfterExit=yes
Ahora podéis comprobar que cualquier pendrive o disco USB conectado se monta automaicamente en /media/usbXX con permisos para todos los usuarios.
h. Soporte Software RAID
Paso opcional, aunque muy recomendado, es instalar el soporte para software RAID.
Al instalar nos pregunta "MD arrays needed for the root file system:". Cambiaremos "all" por "none" para evitar problemas ya que nuestro sistema base (y con ello la partición root) estará todo en la SD y el RAID lo usaremos sólo para almacenamiento extra que puede activarse mas tarde, tras inicializar los USBs.
Luego nos pregunta sobre comprobaciones mensuales. De momento le he dicho que Sí, pero aquí elegid lo que deseéis.
Seguidamente pregunta sobre el demonio de monitorización. Podéis hacer lo que queráis, aunque yo he respondido que sí.
Si has respondido que sí en el punto anterior, tepregunta sobre el email de destino. Poned el vuestro.
Es posible que no os haga nada mas que la 1a pregunta. Si es así, o deseáis cambiar algo, podéis ejecutar:
Para poder enviar emails fuera del propio NAS necesitaremos un MTA. Los mas comunes son sendmail y POSTFIX. Para cosas sencillas usaremos sendmail:
i. Crear un array Software RAID
Si deseamos, podemos crear arrays Software RAID en el nas. Es muy recomendable usar un RAID1 para los datos sensibles, ya que aunque falle un disco los datos seguirán accesibles desde el otro.
RAID1:
Para crear un RAID1 (discos en espejo, incrementa la seguridad de los datos en el NAS) necesitamos dos discos de igual o similar capacidad.
Además, con un RAID1 incrementamos el rendimiento de lectura de los discos.
Primero usaremos cfdisk para crear las particiones y su tipo:
Siendo X la letra del disco.
Dejaremos una partición de tipo "fd Linux raid autodetect".
Luego seleccionaremos "Write", responderemos "yes" y finalmente seleccionaremos "Quit".
El comando para crearlo es:
Código: Seleccionar todo
mdadm --create --verbose /dev/mdN --level=1 --raid-devices=2 /dev/sdX /dev/sdY
Siendo X e Y los discos y particiones a usar y N el número de RAID que queremos usar.
Si queremos usar la 1a partición de los discos a y b y el número 0:
Código: Seleccionar todo
mdadm --create --verbose /dev/md0 --level=1 --raid-devices=2 /dev/sda1 /dev/sdb1
Si queremos usar los discos a y b completos y sin particionar y el número 1:
Código: Seleccionar todo
mdadm --create --verbose /dev/md1 --level=1 --raid-devices=2 /dev/sda /dev/sdb
RAID0:
RAID0 nos permite unir discos para que aparezcan como uno sólo, y además, incrementa el rendimiento, tanto de lectura como de escritura. El problema es que si cualquiera de ellos falla perdemos toda la información.
El comando para crearlo es:
Código: Seleccionar todo
mdadm --create --verbose /dev/mdN --level=0 --raid-devices=2 /dev/sdX /dev/sdY
Siendo X e Y los discos y particiones a usar y N el número de RAID que queremos usar.
Si queremos usar la 1a partición de los discos a y b y el número 0:
Código: Seleccionar todo
mdadm --create --verbose /dev/md0 --level=0 --raid-devices=2 /dev/sda1 /dev/sdb1
Si queremos usar los discos a y b completos y sin particionar y el número 1:
Código: Seleccionar todo
mdadm --create --verbose /dev/md1 --level=0 --raid-devices=2 /dev/sda /dev/sdb
Configuración tras crear el RAID:
Tras crear el RAID deberemos guardar la configuración y crear una partición.
IMPORTANTE: Guardar configuración:
Código: Seleccionar todo
mdadm --detail --scan >> /etc/mdadm/mdadm.conf
ln /etc/mdadm/mdadm.conf /etc/mdadm.conf
echo md >> /etc/modules
echo md-raid0 >> /etc/modules
echo md-raid1 >> /etc/modules
update-initramfs -u
Además, en este SoC el array no se inicia por defecto, probablemente debido a que son discos USB. Por ello hemos de añadir una línea de configuración final:
Y añadimos,
antes del "exit 0":
Luego crearems una partición (opcional) y formatear el sistema de archivos. Como los discos RAID suelen ser internos (siempre conectados), yo escogería ext4:
En mi caso, la X es 0:
Y configuraremos el fstab:
Creamos el punto de montaje:
Editamos el archivo fstab:
Y añadimos al final, adaptando el md0 y nuestro punto de montaje (/media/RAID1n0) a la configuración deseada:
Código: Seleccionar todo
/dev/md0 /media/RAID1n0 ext4 defaults,user,noauto,noatime,nodiratime,errors=remount-ro,nofail,x-systemd.automount 0 0
Detalles:
- nofail: Hace que aunque falle el montaje durante el arranque no de error de sistema y así previene que el NAS se detenga en el arranque.
- x-systemd.automount: Hace que el dispositivo se monte al acceder a él por 1a vez en lugar de durante el arranque. El NAS arranca mas rápido y evitamos problemas durante el arranque.
j. Administración web; webmin
Opcionalmente, usaremos webmin como una forma de administrar el NAS desde un navegador en cualquier PC, ya sea desde nuestra red local o, si abrimos los puertos del router, desde fuera de casa. Yo no recomendaría hacer esto último, pues puede ser usado para atacar el NAS.
Lo instalaremos desde su repositorio oficial mediante los siguientes comandos:
Código: Seleccionar todo
echo deb http://download.webmin.com/download/repository sarge contrib >> /etc/apt/sources.list
curl http://www.webmin.com/jcameron-key.asc | apt-key add -
apt-get update
apt-get install webmin
systemctl enable webmin
systemctl start webmin
Podemos acceder a la interfaz poniendo https://<ip del NAS>:10000
Nos dirá que la conexión no es segura porque el certificado no es válido. Ésto es debido a que el certificado https ha sido creado por nosotros mismos al instalar webmin y por lo tanto no hay ninguna entidad de referéncia que lo respalde. Aceptad el certificado (permanentemente para mas comodidad) y continuad.
Podéis acceder con el usuario root o con el usuario normal que habéis creado al principio; ya que vamos a administrar el sistema lo mas apropiado es usar root.
Información sacada de: