DHCP e sistema de arquivos raiz somente leitura

2

Ao fazer ifup wlan0 em um sistema com / montado como somente leitura (computador incorporado), recebo este erro:

Failed to connect to non-global ctrl_ifname: wlan0  error: Read-only file system
Internet Systems Consortium DHCP Client 4.3.1
Copyright 2004-2014 Internet Systems Consortium.
All rights reserved.
For info, please visit https://www.isc.org/software/dhcp/

can't create /var/lib/dhcp/dhclient.wlan0.leases: Read-only file system
Listening on LPF/wlan0/80:1f:02:d3:42:b8
Sending on   LPF/wlan0/80:1f:02:d3:42:b8
Sending on   Socket/fallback
DHCPDISCOVER on wlan0 to 255.255.255.255 port 67 interval 7
DHCPDISCOVER on wlan0 to 255.255.255.255 port 67 interval 13
...
DHCPDISCOVER on wlan0 to 255.255.255.255 port 67 interval 5
No DHCPOFFERS received.
No working leases in persistent database - sleeping.

Por outro lado, ao fazer ifup wlan0 com / montado como leitura-gravação, não há problema, um IP é atribuído com sucesso.

Como fazer o DHCP funcionar em um sistema de arquivos raiz somente de leitura?

# /etc/network/interfaces

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet dhcp

auto wlan0
allow-hotplug wlan0
iface wlan0 inet dhcp
wpa-ssid "<myssid>"
wpa-psk "<mypasswd>"
    
por Basj 15.06.2015 / 20:59

3 respostas

5

Crie uma partição tmpfs na RAM e, em seguida, vincule / var / lib / dhcp a um diretório nela.

Edit: Eu suponho que você pode editar seu sistema de arquivos raiz antes de alterá-lo para somente leitura. Então:

  1. Configurar um ponto de montagem tmpfs com mkdir /mnt/ramdisk && mkdir /mnt/ramdisk/var-lib-dhcp
  2. Adicione o tmpfs ao seu fstab com tmpfs /mnt/ramdisk/var-lib-dhcp tmpfs size=10M 0 0
  3. Adicione um link simbólico de /var/lib/dhcp a /mnt/ramdisk/var-lib-dhcp
  4. Teste enquanto o sistema de arquivos é lido / gravado
  5. Tornar o sistema de arquivos somente leitura, testar novamente
por 16.06.2015 / 02:36
3

semelhante a Daniel Griscom Answer , mas um pouco mais simples.

você pode adicionar

tmpfs /var/lib/dhcp/ tmpfs nodev,nosuid,size=1M,mode=1777 0 0

em /etc/fstab

isso cria um sistema de arquivos temporário na RAM e sobrescreve o diretório como ponto de montagem para este tempfs. (então, se você tiver arquivos lá de antes, eles não estarão disponíveis)

com isso você não precisa gerenciar os links simbólicos e assim por diante ... e 1M para o tamanho deve ser o suficiente para algumas informações de dhcp da placa incorporada. isso também é necessário se você deseja criar um AccessPoint com o servidor DHCP (as informações de concessão são armazenadas no mesmo diretório do servidor).

lembre-se de primeiro remontar com o acesso de gravação mount -o remount,rw / (como root) - e quando você terminar as alterações remonte, escreva somente ( mount -o remount,ro / ) ou reinicie.

minha fonte original para esta string de configuração do tmpfs foi este breve guia sobre Prepara o microSD para a aplicação final

    
por 09.04.2018 / 12:10
0

Supondo que você já tenha um ponto de montagem tmpfs, por exemplo / run, / var / run ou / tmp, uma abordagem muito simples está sendo executada,

sudo rm -rf /var/lib/dhcp/

e

sudo ln -s /run /var/lib/dhcp

O primeiro removerá o diretório de banco de dados /var/lib/dhcp , o segundo criará um link para /run . Ou você pode fazer o link para /tmp ou /var/run .

Você precisará remontar seu sistema de arquivos de leitura / gravação para executar as alterações acima.

    
por 14.10.2015 / 02:02