Linux não persistente do HDD

0

Estou desenvolvendo um produto embarcado que rodará linux em hardware similar a um pi de framboesa mas com armazenamento interno. Eu gostaria que a energia pudesse ser cortada na máquina e ter um risco muito baixo de corrupção. Eu estava pensando que uma versão ao vivo do linux não faria gravações em HDD, então nunca poderia ser mid write.

Em todos os casos de uso que eu vi, isso é normalmente feito em uma unidade USB. Eu quero instalar isso no armazenamento interno para que ele possa inicializar a partir dele.

Além disso, em um mundo perfeito, seria fácil atualizar a imagem diretamente, por exemplo, criar um arquivo e "atualizar" a imagem no disco para incluir esse arquivo.

Uma versão do Linux suporta algo assim? Além disso, como a instalação funcionaria para obter a instalação não persistente instalada em uma unidade interna e não em uma unidade flash?

    
por Eric Johnson 10.05.2018 / 15:54

2 respostas

2

I am developing a embedded product ...

Os dispositivos que executam o Linux embarcado normalmente possuem um kernel personalizado e um sistema de arquivos raiz personalizado. Normalmente, não vale a pena tentar adaptar uma distribuição Linux existente a um hardware personalizado e usar um sistema de arquivos de área de trabalho de uso geral para um aplicativo incorporado dedicado.
As ferramentas para criar sistemas de arquivos root e kernel Linux personalizados são o Buildroot e o Yocto.

Does a version of linux support something like this?

Uma "versão live do linux" é simplesmente um kernel Linux que inicializa com um ramdisk ou mais provavelmente um ramfs para o sistema de arquivos raiz. Eu vi (assim como construído) numerosos sistemas Linux embarcados que usam um ramfs ou ramdisk para seus rootfs.
IOW o que você propõe não é único ou novo; é um conceito bem usado que tem muitas variações de implementação.

A mídia de inicialização é sua e o que o hardware suporta.
IOW se você quiser inicializar o Linux com um initramfs de um HDD, então o único problema pode ser você aprender como criá-lo.
Dependendo do hardware que você usa, não pode haver nenhum novo código para desenvolver (além do seu aplicativo), e construir um kernel e rootfs seria uma questão de baixar, configurar e construir o código fonte existente.

A atualização de um sistema no campo é um tópico complexo e há muitas soluções. Os vários sistemas de pacotes usados pelas distribuições são tipicamente muito pesados / complexos para sistemas embarcados, especialmente aqueles que são baseados em flash NAND.

    
por 11.05.2018 / 09:50
2

Em primeiro lugar, você pode realmente inicializar um sistema 'ao vivo' como este de um disco rígido ou outro armazenamento persistente com bastante facilidade. Basta escrever a imagem que você colocaria na unidade flash USB para qualquer armazenamento e inicializar a partir dela. Muitos sistemas de tipo de quiosque fazem isso, assim como muitos thin clients.

Agora, dito isto, esta provavelmente não é a melhor opção para o seu caso de uso. Eu sugiro muito dar uma olhada em como o Android e o ChromeOS lidam com seus sistemas de arquivos raiz. Ambos são projetados para serem extremamente resilientes contra corrupção causada por perda de energia inesperada, e ambos também oferecem proteção contra adulteração por padrão (IOW, você saberá se alguém modificou os dados enquanto o dispositivo estava desligado). Configurações semelhantes podem ser obtidas sem muita dificuldade com um sistema de arquivos raiz personalizado feito por Buildroot .

Como alternativa, você pode considerar o Alpine Linux . Ele foi projetado para ser executado a partir de mídia somente leitura, embora eu não saiba ao certo como ele suporta outras coisas além de sistemas x86 de 64 bits.

    
por 10.05.2018 / 21:09