Qual é a maneira mais fácil de atualizar um sistema de arquivos atualizado para um dispositivo ubuntu embutido?

0

Eu tenho um sistema embarcado rodando um kernel 3.10.9 com o Ubuntu 12.04.5. Devido às muitas vulnerabilidades de segurança que agora existem com o antigo sistema operacional Ubuntu, estou tentando atualizar o sistema operacional Ubuntu ou o sistema operacional Ubuntu e o kernel. Consegui atualizar e atualizar o sistema, mas a solução precisa ser empacotada para que eu possa usá-lo com um servidor intermitente.

O processo atual de atualização consiste em um PEEDI que programa um gerenciador de inicialização personalizado no eMMC do dispositivo. Depois que o dispositivo é reinicializado, ele procura e se conecta ao servidor TFTP, monta o driver de rede do servidor NFS e faz o download das imagens binárias para o uboot, kernel, arquivo dtb e rootfs. Em seguida, ele pisca as imagens no eMMC. Este processo funciona com um kernel 3.10.9 e um SO Ubuntu 12.04.5.

Sabemos que há quatro componentes principais no sistema embarcado:

1) dtb

2) imagem do u-boot

3) kernel

4) sistema de arquivos raiz

Meu pensamento inicial foi tentar simplesmente substituir o sistema de arquivos e deixar todos os outros componentes intocados, se possível. Isso parece funcionar e por que compilar um novo kernel e dtb se não for necessário?

  • Nota: Nenhum dos códigos-fonte originais foi retido para este projeto *

Primeiro eu tentei atualizar e atualizar o dispositivo in-loco indo para o ports.ubuntu e depois trabalhando o sistema de arquivos. O sistema de arquivos 14.04.5 LTS resultante é então colocado no servidor TFTP e usado no processo de flashing (nenhum dos outros componentes listados acima é tocado). Depois de concluir o processo de flash e reiniciar o dispositivo, o dispositivo aparentemente está funcionando e executando o Ubuntu 14.04.5 LTS. A primeira coisa que notei está desativada são as interfaces de rede - antes do upgrade do sistema de arquivos, eu tinha eth0 e wlan0. Após o upgrade, agora tenho eth1 e wlan1. Em geral, isso não parece ser um grande problema, mas eu tenho um software aplicativo que depende de que essas interfaces sejam consistentes, então isso não funcionará. Além disso, eu realmente não sei a extensão do problema.

    eth1      Link encap:Ethernet  HWaddr d8:b8:f6:01:00:3d
              inet addr:10.1.134.22  Bcast:10.1.134.255  Mask:255.255.255.0
               inet6 addr: fe80::dab8:f6ff:fe01:3d/64 Scope:Link
               UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
               RX packets:77 errors:0 dropped:0 overruns:0 frame:0
               TX packets:59 errors:0 dropped:0 overruns:0 carrier:0
               collisions:0 txqueuelen:1000
               RX bytes:9868 (9.8 KB)  TX bytes:8537 (8.5 KB)

     lo        Link encap:Local Loopback
               inet addr:127.0.0.1  Mask:255.0.0.0
               inet6 addr: ::1/128 Scope:Host
               UP LOOPBACK RUNNING  MTU:65536  Metric:1
               RX packets:16 errors:0 dropped:0 overruns:0 frame:0
               TX packets:16 errors:0 dropped:0 overruns:0 carrier:0
               collisions:0 txqueuelen:0
               RX bytes:1296 (1.2 KB)  TX bytes:1296 (1.2 KB)

     wlan1     Link encap:Ethernet  HWaddr 88:33:14:1c:6e:61
               inet6 addr: fe80::8a33:14ff:fe1c:6e61/64 Scope:Link
               UP BROADCAST MULTICAST  MTU:1500  Metric:1
               RX packets:16 errors:0 dropped:0 overruns:0 frame:0
               TX packets:14 errors:0 dropped:0 overruns:0 carrier:0
               collisions:0 txqueuelen:1000
               RX bytes:1808 (1.8 KB)  TX bytes:2196 (2.1 KB)    

O eth1 funcionará quando configurado, mas não consigo conectar o wlan1.

     root@device-01036e:~# ifup wlan1
     Internet Systems Consortium DHCP Client 4.2.4
     Copyright 2004-2012 Internet Systems Consortium.
     All rights reserved.
     For info, please visit https://www.isc.org/software/dhcp/

     Listening on LPF/wlan1/88:33:14:1c:6e:61
     Sending on   LPF/wlan1/88:33:14:1c:6e:61
     Sending on   Socket/fallback
     DHCPDISCOVER on wlan1 to 255.255.255.255 port 67 interval 2 (xid=0xaceefe56)
     DHCPDISCOVER on wlan1 to 255.255.255.255 port 67 interval 5 (xid=0xaceefe56)
     DHCPDISCOVER on wlan1 to 255.255.255.255 port 67 interval 4 (xid=0xaceefe56)
     No DHCPOFFERS received.
     No working leases in persistent database - sleeping. 

Em seguida, tentei baixar o código-fonte do kernel do link e compilá-lo com a configuração padrão.

     make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- defconfig

     make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-

O novo kernel foi então colocado no servidor intermitente junto com o 14.04.5 tarred OS e passou para o dispositivo. Este dispositivo é inicializado e mostra as versões esperadas do kernel e do SO, mas as interfaces de rede não estão funcionando corretamente, especificamente o wlan.

     sudo ifconfig wlan0 up

     wlan0: ERROR while getting interface flags: No such device

Perguntas:

1) O DTS / DTB precisa ser atualizado se um novo kernel é compilado (o hardware permanece inalterado)?

2) O que fez com que as interfaces parassem de funcionar corretamente?

3) Qual é a maneira mais fácil de produzir um sistema de arquivos atualizado, dada a configuração intermitente mencionada? É possível fazer isso sem tocar nos outros componentes?

    
por Kristina 13.01.2017 / 18:09

0 respostas