Estou criando um aplicativo remoto incorporado que não será permanentemente ativado. Venho brincando com diferentes distribuições de SO e posso reduzir o tempo de inicialização substancialmente usando melhores cartões SD com velocidades de leitura mais rápidas. Não estou fixo a nenhuma distribuição específica, portanto, posso reduzir o necessário para usar uma distribuição mínima do Linux.
(Tentei procurar referências que as pessoas executaram para melhorar o tempo de inicialização, mas não encontrei nada com números concretos.)
Eu também poderia usar a raiz de construção (veja também o vídeo do YouTube Raspberry Pi - Tempo de inicialização super rápido - Sistema de entretenimento Marshmallow ) ...
Respostas:
Se você combinar o Arch Linux com os recursos sugeridos por Fred, deverá obter um sistema operacional de inicialização geralmente rápido.
O que diminui o tempo de inicialização do sistema operacional é
Velocidades lentas de leitura / gravação (E / S).
Então você usar um cartão SD mais rápido vai ajudar,
um cartão de Classe 10 será substancialmente mais rápido do que um cartão de Classe 4. Eu entendi mal como as classes de cartões SD funcionavam, e isso foi claramente indicado nos comentários, que é ruim. Na verdade, um cartão Classe 10 será mais rápido que um cartão Classe 4 para transferências de arquivos grandes , como vídeo HD e outros enfeites. Aparentemente, a classe 4 funciona tão bem com arquivos menores. Mais uma vez, meu mal, mas ei, todos aprendemos de vez em quando.Uma sequência init atolada.
Se você tiver muitos softwares que são inicializados durante a fase de inicialização, o tempo de inicialização será mais lento. Mais software iniciando == Maior tempo de inicialização.
Portanto, se você precisar de uma inicialização rápida, corte o máximo de software da sequência init possível. Você pode criar um script simples (ou tenho certeza que existe um por aí) que iniciará o software após a conclusão da sequência principal de inicialização, espalhando a carga um pouco mais.
É basicamente isso. O Arch Linux é provavelmente o caminho a percorrer, combinado com os recursos que Fred mencionou, como eu disse antes. O Arch é um sistema operacional muito mínimo e pode não ser a melhor coisa para um iniciante, mas se você tem experiência no Linux, faça isso. É preciso apenas um pouco de configuração, pois ele vem com o mínimo necessário para instalar e é isso .
Espero que seu projeto corra bem!
fonte
Eu sugiro usar o Arch Linux.
Eu recebo um tempo de inicialização normal de 5s (kernel) + 5s (para o espaço do usuário) e não requer muito esforço, porque está sendo usado
systemd
para o init.fonte
systemd
faz muita diferença em comparação comsysvinit
. Veja minha resposta .Eu escrevi um artigo aqui sobre isso.
Em resumo: use
systemd
.Você pode facilmente executar o aplicativo RaspberryPi em menos de 8 segundos depois de conectar o cabo de alimentação ou em menos de 3 segundos após o início da inicialização do Linux.
Um exemplo aqui, meu serviço é chamado
samplerbox.service
:Nota: Não tentei otimizar o tempo do espaço do usuário porque não preciso: meu aplicativo é iniciado cedo de qualquer maneira, por isso não me importo se a atribuição de DHCP / IP da rede demorar 8 segundos após o lançamento do aplicativo.
fonte
A solução ideal é provavelmente criar uma distribuição que faça exatamente o que você deseja na inicialização, desta forma você terá tempos mínimos garantidos (usando um sistema init minimalista como o sinit ). Como alternativa, você pode considerar o uso do recurso de suspensão em disco ( hibernação ) do kernel do Linux. Depois de inicializadas, as operações de suspensão e retomada mais tarde são bastante rápidas e o sistema fica totalmente desativado nesse meio tempo.
fonte
O uso de um kernel vinculado estaticamente em vez de drivers modprobing também pode aumentar drasticamente o desempenho. Existem outras otimizações a serem feitas configurando e recompilando cuidadosamente um kernel.
fonte
1) Do this in command line, 2) Do this and this 3) Modify this and this in config.txt 4) Boot, it will take 3.2 seconds! 5) Here is the result of my benchmarks: ...
)Use TinyCoreLinux . Foi feito para carregamento rápido e para sobreviver a falhas de energia.
fonte
1) Download an image here: +link 2) Flash it on your microSD 3) Modify this and this in config.txt 4) Boot, it will take 3.2 seconds!
)Você pode tentar usar o eINIT para acelerar o processo de inicialização:: http://sourceforge.net/projects/einit/
Infelizmente, atualmente (outubro de 2016), a página inicial do eINIT observa:
fonte
Remova todos os módulos do kernel que você não usará.
fonte