Como posso fazer meu Raspberry Pi usar um servidor NFS para o sistema de arquivos raiz, em vez do cartão SD?
Eu gostaria de poder configurar meu Raspberry Pi para ter seu sistema de arquivos raiz em uma máquina remota via NFS para fins de desempenho / backup / desenvolvimento. Como posso fazer isso?
Respostas:
A versão curta
Você ainda precisará de um cartão SD para a inicialização inicial, mas depois disso nada, exceto / boot, precisará do cartão SD.
Detalhes
Eu só fiz isso em uma máquina Linux. Em teoria, é possível em qualquer máquina que possa exportar sistemas de arquivos NFS.
A maneira mais fácil de preparar um sistema de arquivos raiz é copiar o fornecido pelas imagens existentes. Eu usei a imagem oficial do Debian 6 como meu ponto de partida:
Monte a partição raiz a partir dessa imagem usando um dispositivo de loopback. Você precisará do deslocamento na imagem para o início da partição raiz; nesse caso, é a segunda partição na imagem:
A segunda partição inicia no bloco (ou setor) 157696, portanto, o deslocamento é (512 * 157696) = 80740352:
Com a imagem montada, você provavelmente deseja copiar isso em algum lugar mais permanente para evitar o uso permanente do dispositivo de loopback. Criei um volume LVM2 e montei-o em / mnt / rpi-root, então fiz:
Precisamos exportar o sistema de arquivos agora, portanto, precisamos adicionar uma linha como:
para / etc / exportações no servidor NFS, onde 192.168.1.2 é o endereço do Raspberry Pi. Depois de adicionar essa execução
exportfs -rv
, leia novamente a lista de exportações. (Consulte exportações (5) para opções mais avançadas, incluindo curingas / sub-redes em vez de hosts individuais)Como alternativa, você pode pular esta etapa e criar um sistema de arquivos raiz do zero usando algo parecido
multistrap
.Agora precisamos construir um cartão SD que faça a inicialização inicial e inicialize usando esse compartilhamento NFS. Eu fiz isso pegando a primeira partição da imagem oficial e copiando-a para um cartão SD, onde o cartão SD é / dev / sdx:
e, como isso só copiou a primeira partição, editando a tabela de partições com o fdisk para excluir as duas partições que não copiamos.
Depois montei a partição do cartão SD e editei o arquivo cmdline.txt para ler:
onde 192.168.1.1 é o endereço do servidor NFS. Se você não quiser usar o DHCP, poderá definir formas alternativas de endereço IP, consulte este documento para obter mais detalhes.
Feito isso, desmonte o cartão SD e inicie o Rapsberry Pi com uma raiz NFS. Você também pode manipular o sistema de arquivos do lado do servidor ou outros clientes NFS como desejar (por exemplo, QEMU + binfmt_misc , instantâneos LVM, sistemas de backup etc.)
Coisas opcionais
Se você estiver usando ip = dhcp, provavelmente precisará comentar a linha:
em / etc / network / interfaces (/ mnt / rpi-root / etc / network / interfaces) para evitar uma situação em que a troca entre o DHCP de inicialização antecipada e a habitual posterior cause uma mensagem como:
Se você deseja inicializar muitos dispositivos da mesma raiz, precisará fornecer um "local" / tmp (provavelmente tmpfs) e outras sutilezas para evitar problemas com várias máquinas tentando gravar nos mesmos arquivos.
fonte
/home/user/Documents/raspisRootFolder
e clientefstab
apenas monta a coisa toda/
?/dev/mmcblk0p2 / ext4 defaults,noatime 0 1
a partir/etc/fstab
, embora eu acho que seria um fracasso, sem causar problemas se você deixá-lo em.