O que poderia ser feito para tornar a inicialização do Embedded Linux mais rápida?

O que poderia ser feito para tornar a inicialização do Embedded Linux mais rápida?

Minha equipe está desenvolvendo um software para uma solução Linux Embarcado. O problema que enfrentamos é que leva muito tempo para o sistema estar pronto para começar a executar os aplicativos desejados (ou seja, muito tempo para carregar o kernel do Linux). Geralmente leva de 38 a 43 segundos para que isso aconteça. Já revisamos a configuração do kernel removendo os arquivos que sabíamos que não precisávamos, mas ainda está demorando muito.

Minhas dúvidas: o que mais pode ser feito para que a inicialização do kernel seja mais rápida (de preferência sem alterações no hardware)? É normal que um Linux Embarcado demore tanto para carregar? É possível pedir ao kernel do Linux para iniciar nossos aplicativos antes que o kernel esteja totalmente carregado?

O sistema é um Texas InstrumentsOMAP L138.

A seguir estão imagens com todas as mensagens mais relevantes que são mostradas no Terminal quando o kernel está inicializando. Se alguém não tiver uma resposta (geral) para minhas perguntas, mas souber algo sobre uma das linhas que poderia ajudar a melhorar a velocidade de inicialização do kernel, sinta-se à vontade para responder também!

Primeira parte Segunda parte Terceira parte Quarta parte Quinta parte

Responder1

Na sua saída, o ponto onde o kernel é realmente carregado é este:

Init version 2.86 booting

O que acontece depois de 23 segundos. Depois disso,iniciar, um processo do espaço do usuário, assume e inicia a configuração do espaço do usuário, embora isso inevitavelmente provoque a ativação de vários drivers do kernel, possivelmente incluindo o carregamento de módulos apropriados.

Você não disse que plataforma é essa, mas, por exemplo, no Raspberry Pi de núcleo único de 700 MHz, isso leva cerca de 4 segundos. Então isso ainda está muito lento, indicando um problema.

Se subtrairmos o intervalo entre 0 e 19 segundos, você chegará ao que seria de esperar. Esta lacuna termina com um comentário sobre MII PHY –este é um driver de dispositivo Ethernet. Se for possível inicializar o sistema sem rede, você pode confirmar isso configurando o driver Ethernet fora do kernel e ver se isso fica initmais rápido.

Após a marca dos 23 segundos, o maior gargalo provavelmente será a E/S no sistema de arquivos raiz. Por alguma razão, há um intervalo de 5 segundos entre 25 e 30 segundos, terminando com um comentário sobre um erro no sistema de arquivos FAT. Na verdade, há alguns erros de fs aí. Isto implica que o sistema init está tentando montar sistemas de arquivos que não existem, o que será uma perda de tempo.

Entre 33 e 37 segundos você tem mais erros indicativos de erros envolvendocomo os sistemas de arquivos são organizados e/ou como o software que depende deles é configurado. Uma dessas dependênciaspoderseja um sistema de arquivos tmpfs que deveria ter sido criado na RAM, mas falhou (portanto, arquivos ausentes em /var/e /tmp). Você pode fazer uma pergunta separada postando a sua /etc/fstabe pedindo a alguém que a explique, se o ponto aqui não estiver claro.

informação relacionada