O que acontece depois de carregar a imagem do kernel do Linux na RAM

8

Eu só quero saber o fluxo de atividades acontecendo depois de carregar a imagem do kernel do Linux na RAM após o processo de inicialização.

    
por Renjith G 28.12.2010 / 11:40

3 respostas

14

A partir do Linux 2.6:

Kernel

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

setup() :

  1. Construa uma tabela na RAM descrevendo o layout da memória física.
  2. Definir o atraso e a taxa de repetição do teclado.
  3. Inicialize a placa adaptadora de vídeo.
  4. Inicialize o controlador de disco com os parâmetros do disco rígido.
  5. Verifique o barramento do 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 memória RAM, mova-a para alta.
  10. Defina o pino A20 (um hack de compatibilidade para microprocessadores 8088 antigos).
  11. Configure uma Tabela de Descritores de Interrupções provisória (IDT) e uma Tabela de Descritores Global (GDT) provisória.
  12. Redefinir a unidade de ponto flutuante (FPU).
  13. Reprograme os controladores de interrupção programável (PIC).
  14. Mude do modo real para o modo protegido.

startup_32() :

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

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

  1. Inicialize os registros finais de segmentação.
  2. Preencha o segmento bss com zeros.
  3. Inicialize as tabelas de páginas provisórias do kernel.
  4. Ativar paginação.
  5. Configuração da pilha do Modo Kernel para o processo 0.
  6. Novamente, limpe todos os bits no registro eflags .
  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. Inicializa os registros com os endereços do GDT e do IDT.

start_kernel() : Quase todos os componentes do kernel são inicializados por essa função, 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

Init

O Init inicia todo o processo do usuário necessário para colocar o sistema no estado desejado, esta rotina depende muito da distribuição e do nível de execução invocado.

Digite runlevel no console, isso lhe dá o atual nível de execução do seu sistema.

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

Geralmente, esses scripts lidam com discos, rede, registro, controle de dispositivos, drivers especiais, ambiente e muitas outras sequências necessárias.

    
por 28.12.2010 / 13:04
1
  • O Kernel assume o controle do sistema H / W assim que você ver "Descompactando o Linux ..".
  • O
  • Kernel verifica e define o BIOS registros de placas gráficas eo formato de saída de tela.
  • O
  • Kernel lê as configurações da BIOS e inicializa o hardware básico interfaces.
  • Em seguida, os drivers no kernel inicialize o hardware.
  • Em seguida, o Kernel verifica o partitons
  • Em seguida, monta o sistema de arquivos raiz
  • Então o kernel inicia o init, que carrega o sistema principal com todo o seu programas e configurações.
por 28.12.2010 / 13:40
0

O gerenciador de partida pula para o ponto de entrada da imagem passando a linha de comando do kernel (se houver), e o kernel cuida do resto.

    
por 28.12.2010 / 13:05