¿Cómo puedo hacer que mi Raspberry Pi use un servidor NFS para el sistema de archivos raíz, en lugar de la tarjeta SD?
Me gustaría poder configurar mi Raspberry Pi para que tenga su sistema de archivos raíz en una máquina remota a través de NFS para fines de rendimiento / respaldo / desarrollo. ¿Cómo puedo hacer esto?
Respuestas:
La versión corta
Aún necesitará una tarjeta SD para el arranque en la etapa inicial, pero después de eso, excepto / boot, necesitará la tarjeta SD.
Detalles
Solo he hecho esto en una máquina Linux. En teoría, es posible en cualquier máquina que pueda exportar sistemas de archivos NFS.
La forma más fácil de preparar un sistema de archivos raíz es copiar el que proporcionan las imágenes existentes. He utilizado la imagen oficial de Debian 6 como punto de partida:
Monte la partición raíz de esa imagen usando un dispositivo de bucle invertido. Necesitará el desplazamiento en la imagen para el inicio de la partición raíz, en este caso es la segunda partición de la imagen:
La segunda partición comienza en el bloque (o sector) 157696, por lo que el desplazamiento es (512 * 157696) = 80740352:
Con la imagen montada, probablemente desee copiar esto en un lugar más permanente para evitar usar el dispositivo de bucle invertido para siempre. Hice un volumen LVM2 y lo monté en / mnt / rpi-root, así que hice:
Necesitamos exportar el sistema de archivos ahora, por lo que debemos agregar una línea como:
en / etc / exports en el servidor NFS, donde 192.168.1.2 es la dirección de Raspberry Pi. Después de agregar esa ejecución
exportfs -rv
para volver a leer la lista de exportaciones. (Ver exportaciones (5) para opciones más avanzadas, incluidos comodines / subredes en lugar de hosts individuales)Alternativamente, puede omitir este paso y construir un sistema de archivos raíz desde cero utilizando algo como
multistrap
.Ahora necesitamos construir una tarjeta SD que inicie y arranque desde la etapa inicial utilizando este recurso compartido NFS. Hice esto al tomar la primera partición de la imagen oficial y copiarla en una tarjeta SD, donde la tarjeta SD es / dev / sdx:
y luego ya que esto solo copió la primera partición editando la tabla de particiones con fdisk para eliminar las dos particiones que no copiamos.
Después de eso, monté la partición desde la tarjeta SD y edité el archivo cmdline.txt para leer:
donde 192.168.1.1 es la dirección del servidor NFS. Si no desea utilizar DHCP, puede configurar la dirección IP de formas alternativas, consulte este documento para obtener más detalles.
Una vez hecho esto, puede desmontar la tarjeta SD y arrancar su Rapsberry Pi con una raíz NFS. También puede manipular el sistema de archivos desde el lado del servidor u otros clientes NFS como mejor le parezca (por ejemplo, QEMU + binfmt_misc , instantáneas LVM, sistemas de respaldo, etc.)
Cosas opcionales
Si está usando ip = dhcp, probablemente necesite comentar la línea:
en / etc / network / interfaces (/ mnt / rpi-root / etc / network / interfaces) para evitar una situación en la que el intercambio entre el inicio temprano de DHCP y el posterior habitual provoque un mensaje como:
Si desea arrancar muchos dispositivos desde la misma raíz, deberá asegurarse de proporcionar un "local" / tmp (probablemente tmpfs) y otras sutilezas para evitar problemas con varias máquinas que intentan escribir en los mismos archivos.
fuente
/home/user/Documents/raspisRootFolder
y el clientefstab
solo montan todo en/
?/dev/mmcblk0p2 / ext4 defaults,noatime 0 1
desde/etc/fstab
, aunque creo que fallaría sin causar ningún problema si lo dejas.