abr 15
Postado por Luiz Ricardo Freitas

Entender o processo de boot de um sistema unix ajuda muito a entender o funcionamento desses sistemas, vamos ver o funcionamento do boot em sistemas PC (x86) e servirá como base para entender o funcionamento em outras bases que são muito similares como PowerPC (Mac) e Sparc.

Na plataforma PC, ao se ligar o equipamento o primeiro processo a rodar é chamado de POST (Power-On Self-Test), este procedimento é chamado do próprio hardware (Placa Mãe) e verifica a existência de problemas no em sistemas de vídeo e memória RAM, caso haja falhas na iniciação desses periféricos são emitidos sinais sonoros.

Logo o POST estiver concluído o sistema busca o código BIOS (Basic Input-Output System) a partir da EEPROM (Electronically Erasable Programmable Read-Only Memory) e carrega na posição inicial da memória RAM e é executado.

Os parametros utilizados com a execução do BIOS são armazenados na CMOS (Complementary Metal Oxide Semiconductor) que é um circuito de baixo consumo de energia. Estes parâmetros são informações necessárias para a inicialização do SO (Sistema Operacional), como a data do sistema, configurações de dispositivos on-boards e os dispositivos de boot (IPL devices).

Na realidade a BIOS nada mais é do que um sistema inicial para o computador, sendo responsável pela busca do SO (em discos, rede, pen-drives, etc) e pela interface entre o SO e o hardware, executado o BIOS e tendo ele recebido os parâmetros que estavam armazenados na CMOS, um desses parâmetros é o local onde deve ser buscado o SO, ou melhor, a sequencia pela quel a BIOS deve procurar o SO.

No exemplo de boot a partir de um disco rígido, ou HD (Hard Drive), assim o BIOS irá carregar (INT19) para a memória RAM (0:7C00h) e executar as instruções contidas no primeiro bloco deste dispositivo, o conteúdo do cylinder 0, head 0, sector 1, setor chamado de MBR (Master Boot Record), também conhecido como Master Boot Block.

A MBR contém o primeiro executável proveniente de um dispositivo de armazenamento, como um HD ou CD-ROM. A MBR deve possuir um gerenciador de boot, para aqueles acostumados com os sistemas Windows devem achar que este não possui um carregador, na realidade ele existe mas não te da a opção de configurar outros sistemas ou partições para o boot e inicializa silenciosamente.

Para sistema unix existem vários boot loaders, como o LILO (Linux Loader) ou o GRUB (GRand Unified Bootloader), que são gravados na MBR durante a instalação do sistema operacional, estes citados são comuns em sistemas Linux, o freeBSD por sua vez possui um boot loader próprio assim como outros unix como o HP-UX da HP ou o Solaris da Sun.

Veja algumas telas de boot loader:

Grub:

LILO:

FreeBSD Boot Loader:

É importante entender a funcionalidade dos arquivos de dispositivos de bloco, no caso deste Linux, /dev/hda é um ponteiro para o início do disco, podemos utilizar o seguinte comando para obtêr uma cópia da MBR atual, considerando que nosso dispositivo primário de boot é o HD Master da IDE0: /dev/hda.

# dd if=/dev/hda of=mbr.bin bs=512 count=1

Então usanfo um editor exadecimal pode verificar o conteúdo gravado no arquivo mbr.bin.

# hexedit mbr.bin

(Clique na imagem para ampliar)

Curiosidade: são necessários 4 bits para representar um hexadecimal, ou seja, cada par de hexadecimal ocupa 1 byte. A MBR esta localizada nos primeiros 512 bytes do disco, logo, possui 1024 hexadecimais ou 4096 bits.

Com o aplicativo /bin/dd é possível o acesso direto a qualquer região do disco.

Na tradução ASCII, o ponto (.) significa que o valor hexadecimal não possui um caracter associado, assim como, apesar do hexadecimal possuir um caracter associado, esse hexadecimal pode ser um dado que não deve ser interpretado como um caracter ASCII. Por este motivo nem sempre a tradução hexadecimal => ascii tem um sentido em palavras.

Pode-se notar que única tradução hexadecimal => ascii útil é de “4C 49 4C 4F” => “LILO”. Com isso podemos inferir que o LILO está instalado nesta MBR.

O código acima, a MBR, contém duas seções. A seção do 1º (0h) ao 446º (1BDh) byte possui o código responsável pela inicialização do sistema operacional (LILO ou 1º estágio do GRUB), este código pode conter referências diretas ou indiretas ao kernel do sistema. O 447º (1BEh) ao 510º (1FDh) byte contém a tabela de partições do disco (Master Partition Table). E os bytes 511º e 512º possuem a assinatura indicando final da MBR: 55 AA.

Na parte 2 deste artigo vamos entender as referencias diretas e indiretas da MBR, até lá.

Este artigo também esta disponível em http://www.monsterinfo.com.br/.

Related Posts with Thumbnails

Post escrito por Luiz Ricardo Freitas

Voltar
Compare Produtos, Lojas e Preços

5 Responses to “[MEGArtigo] Entenda o processo de boot em sistemas unix. Parte 1”

  1. 1. Clauber Chian | 23 anos | Recife-PE Says:

    Muito bom!

    Continuem assim!

    [Responder]

  2. 2. PotHix Says:

    Æ!!

    Muuitooo interessante esse artigo sobre boot!
    Não tinha ido alem de configurar o LILO, legal isso!

    Há braços

    [Responder]

  3. 3. Anderson Matos - 28 anos - Três Rios Says:

    Muito bom! Estou estudando S.O. na faculdade e é interessante pra mim ver isso aqui.

    Abraços!

    [Responder]

  4. 4. Renan Vieira Says:

    Veio…

    Tu baixou o nível total!!

    AHAAHAAHA

    Nunca vi a MBR tão de perto assim. :D
    IUEHIUAEHIUEUIAEHIUAEh

    Muito bom! Muito bom!

    Estou aguardando a continuação.

    [Responder]

  5. 5. Clayton Magalhães - 27 anos - Sampa Says:

    Muito Bom este artigo. Espero o próximo.
    Até!

    [Responder]

Deixe seu Comentário

Internet