O que acontece após o carregamento da imagem do kernel Linux na RAM

9

Eu só quero saber o fluxo de atividades que acontecem após o carregamento da imagem do kernel linux na RAM após o processo de inicialização.

Renjith G
fonte
2
Você não deveria querer saber disso. O que você deve querer é aprender .
alex

Respostas:

15

A partir do Linux 2.6:

Núcleo

Depois de carregado na RAM, o kernel executa as seguintes funções.

setup():

  1. Crie uma tabela na RAM descrevendo o layout da memória física.
  2. Defina o atraso e a taxa de repetição do teclado.
  3. Inicialize a placa do adaptador de vídeo.
  4. Inicialize o controlador de disco com os parâmetros do disco rígido.
  5. Verifique o barramento IBM Micro Channel.
  6. Verifique se há dispositivos apontadores PS / 2 (mouse de barramento).
  7. Verifique o suporte ao Gerenciamento avançado de energia (APM).
  8. Se suportado, crie uma tabela na RAM descrevendo os discos rígidos disponíveis.
  9. Se a imagem do kernel foi carregada com pouca RAM, mova-a para alta.
  10. Defina o pino A20 (um hack de compatibilidade para microprocessadores 8088 antigos).
  11. Configure uma tabela provisória de descritores de interrupção (IDT) e uma tabela provisória de descritores globais (GDT).
  12. Redefina a unidade de ponto flutuante (FPU).
  13. Reprograme os controladores de interrupção programáveis ​​(PIC).
  14. Alterne do modo real para o protegido.

startup_32():

  1. Inicialize registradores de segmentação e uma pilha provisória.
  2. Limpe todos os bits no eflagsregistro.
  3. Preencha a área de dados não inicializados com zeros.
  4. Invoca decompress_kernel()para descomprimir a imagem do kernel.

startup_32() (mesmo nome, outra função):

  1. Inicialize os registros finais de segmentação.
  2. Preencha o bsssegmento com zeros.
  3. Inicialize tabelas de páginas provisórias do kernel.
  4. Ativar paginação.
  5. Configure a pilha do Modo Kernel para o processo 0.
  6. Mais uma vez, limpe todos os bits no eflagsregistro.
  7. Preencha o IDT com manipuladores de interrupção nulos.
  8. Inicialize o primeiro quadro de página com os parâmetros do sistema.
  9. Identifique o modelo do processador.
  10. Inicialize os registros com os endereços do GDT e IDT.

start_kernel(): Quase todos os componentes do kernel são inicializados por esta função, estes são apenas alguns.

  • Agendador
  • Zonas de memória
  • Alocador de sistema de amigos
  • IDT
  • SoftIRQs
  • Data e hora
  • Alocador de placas
  • Criar processo 1 ( /sbin/init)

A "lista" completa está disponível nas fontes em linux / init / main.c

Iniciar

O Init inicia todo o processo do usuário necessário para trazer o sistema ao estado desejado; essa rotina depende muito da distribuição e do nível de execução invocado.

Digite runlevelno console, isso fornece o nível de execução atual do seu sistema.

Dê uma olhada em /etc/rcX.d/(ou /etc/rc.d/rcX.d/), substituindo o X pelo seu nível de execução.
Esses são links simbólicos ordenados por prioridade de execução. S01....significa que esses scripts são iniciados muito cedo, enquanto são S99....executados no final do processo de inicialização. Os KXX....links simbólicos fazem o mesmo, mas para a sequência de desligamento.

Geralmente, esses scripts lidam com discos, redes, registros, controle de dispositivos, drivers especiais, ambiente e muitas outras seqüências necessárias.

abanar
fonte
O LXR é uma ótima interface para ler a fonte do kernel do Linux. Boa lista, embora tenha em atenção que muitas delas dependem muito da arquitetura (esta é a versão para PC).
Gilles 'SO- stop be evil'
1
  • O kernel assume o controle do sistema H / W assim que você vê "Descompactando o Linux ..".
  • O kernel verifica e define os registros de BIOS das placas gráficas e o formato de saída da tela.
  • O kernel então lê as configurações do BIOS e inicializa as interfaces básicas de hardware.
  • Em seguida, os drivers no kernel inicializam o hardware.
  • Em seguida, o Kernel verifica as partições
  • Em seguida, monta o sistema de arquivos raiz
  • Então o kernel inicia o init, que inicializa o sistema principal com todos os seus programas e configurações.
Sen
fonte
0

O carregador de inicialização pula para o ponto de entrada da imagem passando a linha de comando do kernel (se houver), e o kernel lida com o restante.

alex
fonte