A partir do Linux 2.6:
Kernel
Depois de carregado na RAM, o kernel executa as seguintes funções.
setup() :
- Construa uma tabela na RAM descrevendo o layout da memória física.
- Definir o atraso e a taxa de repetição do teclado.
- Inicialize a placa adaptadora de vídeo.
- Inicialize o controlador de disco com os parâmetros do disco rígido.
- Verifique o barramento do IBM Micro Channel.
- Verifique se há dispositivos apontadores PS / 2 (mouse de barramento).
- Verifique o suporte ao gerenciamento avançado de energia (APM).
- Se suportado, crie uma tabela na RAM descrevendo os discos rígidos disponíveis.
- Se a imagem do kernel foi carregada com pouca memória RAM, mova-a para alta.
- Defina o pino A20 (um hack de compatibilidade para microprocessadores 8088 antigos).
- Configure uma Tabela de Descritores de Interrupções provisória (IDT) e uma Tabela de Descritores Global (GDT) provisória.
- Redefinir a unidade de ponto flutuante (FPU).
- Reprograme os controladores de interrupção programável (PIC).
- Mude do modo real para o modo protegido.
startup_32() :
- Inicialize os registros de segmentação e uma pilha provisória.
- Limpar todos os bits no registro
eflags. - Preencha a área de dados não inicializados com zeros.
- Invoca
decompress_kernel()para descompactar a imagem do kernel.
startup_32() (mesmo nome, outra função):
- Inicialize os registros finais de segmentação.
- Preencha o segmento
bsscom zeros. - Inicialize as tabelas de páginas provisórias do kernel.
- Ativar paginação.
- Configuração da pilha do Modo Kernel para o processo 0.
- Novamente, limpe todos os bits no registro
eflags. - Preencha o IDT com manipuladores de interrupção nulos.
- Inicialize o primeiro quadro de página com os parâmetros do sistema.
- Identifique o modelo do processador.
- 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.