The translation is temporarily closed for contributions due to maintenance, please come back later.
Context English Portuguese (Brazil) State
<personname> <firstname>Sergey</firstname> <surname>Lyubka</surname> </personname> <contrib>Contributed by </contrib> <personname><firstname>Sergey</firstname><surname> Lyubka</surname></personname><contrib> Contribuíram por </contrib>
Synopsis Sinopse
<primary>BIOS</primary> <primary>BIOS</primary>
<primary>firmware</primary> <primary>firmware</primary>
<primary>IA-32</primary> <primary>IA-32</primary>
<primary>booting</primary> <primary>inicialização</primary>
<primary>system initialization</primary> <primary>inicialização do sistema</primary>
The FreeBSD boot process can be surprisingly complex. After control is passed from the <acronym>BIOS</acronym>, a considerable amount of low-level configuration must be done before the kernel can be loaded and executed. This setup must be done in a simple and flexible manner, allowing the user a great deal of customization possibilities. O processo de inicialização do FreeBSD pode ser surpreendentemente complexo. Após o controle ser passado da <acronym>BIOS</acronym>, uma quantidade considerável de configuração de baixo nével deve ser feita antes que o kernel possa ser carregado e executado. Essa configuração deve ser feita de maneira simples e flexível, permitindo ao usuário uma grande quantidade de possibilidades de personalização.
The boot process is an extremely machine-dependent activity. Not only must code be written for every computer architecture, but there may also be multiple types of booting on the same architecture. For example, a directory listing of <filename>/usr/src/sys/boot</filename> reveals a great amount of architecture-dependent code. There is a directory for each of the various supported architectures. In the x86-specific <filename>i386</filename> directory, there are subdirectories for different boot standards like <filename>mbr</filename> (Master Boot Record), <filename>gpt</filename> (<acronym>GUID</acronym> Partition Table), and <filename>efi</filename> (Extensible Firmware Interface). Each boot standard has its own conventions and data structures. The example that follows shows booting an x86 computer from an <acronym>MBR</acronym> hard drive with the FreeBSD <filename>boot0</filename> multi-boot loader stored in the very first sector. That boot code starts the FreeBSD three-stage boot process. O processo de inicialização é uma atividade extremamente dependente da máquina. Não sé deve ser escrito código para cada arquitetura de computador, mas também pode haver vários tipos de inicialização na mesma arquitetura. Por exemplo, uma lista de diretórios de <filename>/usr/src/sys/boot</filename> revela uma grande quantidade de código dependente de arquitetura. Existe um diretório para cada uma das várias arquiteturas suportadas. No x86-specific <filename>i386</filename> diretório, existem subdiretórios para diferentes padrões de inicialização, como <filename>mbr</filename> (Master Boot Record), <filename>gpt</filename> (Tabela de Partição <acronym>GUID</acronym> ) e <filename>efi</filename> (Interface de Firmware Extensível). Cada padrão de inicialização possui suas próprias convenções e estruturas de dados. O exemplo a seguir mostra a inicialização de um computador x86 de um disco rígido <acronym>MBR</acronym> com o FreeBSD <filename>boot0</filename> carregador multi-boot armazenado no primeiro setor. Esse código inicia o processo de inicialização de três estágios do FreeBSD.
The key to understanding this process is that it is a series of stages of increasing complexity. These stages are <filename>boot1</filename>, <filename>boot2</filename>, and <filename>loader</filename> (see <citerefentry><refentrytitle>boot</refentrytitle><manvolnum>8</manvolnum></citerefentry> for more detail). The boot system executes each stage in sequence. The last stage, <filename>loader</filename>, is responsible for loading the FreeBSD kernel. Each stage is examined in the following sections. A chave para entender esse processo é que ele é uma série de estágios de crescente complexidade. Esses estágios são <filename>boot1</filename> , <filename>boot2</filename> e <filename>carregador</filename> (Vejo <citerefentry><refentrytitle>boot</refentrytitle><manvolnum>8</manvolnum></citerefentry> para mais detalhes). O sistema de inicialização executa cada estágio em sequência. O último estágio <filename>carregador</filename> , é responsável por carregar o kernel do FreeBSD. Cada estágio é examinado nas seções seguintes.
<literal>boot0</literal> <literal>boot0</literal>
<filename>loader</filename> <filename>carregador</filename>
When the computer powers on, the processor's registers are set to some predefined values. One of the registers is the <emphasis>instruction pointer</emphasis> register, and its value after a power on is well defined: it is a 32-bit value of <literal>0xfffffff0</literal>. The instruction pointer register (also known as the Program Counter) points to code to be executed by the processor. Another important register is the <literal>cr0</literal> 32-bit control register, and its value just after a reboot is <literal>0</literal>. One of <literal>cr0</literal>'s bits, the PE (Protection Enabled) bit, indicates whether the processor is running in 32-bit protected mode or 16-bit real mode. Since this bit is cleared at boot time, the processor boots in 16-bit real mode. Real mode means, among other things, that linear and physical addresses are identical. The reason for the processor not to start immediately in 32-bit protected mode is backwards compatibility. In particular, the boot process relies on the services provided by the <acronym>BIOS</acronym>, and the <acronym>BIOS</acronym> itself works in legacy, 16-bit code. Quando o computador liga, os registros do processador são ajustados para alguns valores pré-definidos. Um dos registradores é o <emphasis>ponteiro de instrução</emphasis> registrar, e seu valor após um power on é bem definido: é um valor de 32 bits de <literal>0xfffffff0</literal> . O registrador de ponteiro de instrução (também conhecido como Contador de Programa) aponta para o código a ser executado pelo processador. Outro registro importante é o <literal>cr0</literal> Registro de controle de 32 bits, e seu valor logo após a reinicialização é <literal>0</literal>. Um de <literal>cr0</literal>'s bits, o bit PE (Protection Enabled), indica se o processador está sendo executado no modo protegido de 32 bits ou no modo real de 16 bits. Como esse bit é limpo no momento da inicialização, o processador é inicializado no modo real de 16 bits. O modo real significa, entre outras coisas, que os endereços linear e físico são idênticos. O motivo para o processador não iniciar imediatamente no modo protegido de 32 bits é compatível com versões anteriores. Em particular, o processo de inicialização depende dos serviços fornecidos pelo <acronym>BIOS</acronym>, e o próprio <acronym>BIOS</acronym> funciona em código legado de 16 bits.
The value of <literal>0xfffffff0</literal> is slightly less than 4 GB, so unless the machine has 4 GB of physical memory, it cannot point to a valid memory address. The computer's hardware translates this address so that it points to a <acronym>BIOS</acronym> memory block. O valor de <literal>0xfffffff0</literal> é um pouco menor que 4 GB, portanto, a menos que a máquina tenha 4 GB de memória física, ela não pode apontar para um endereço de memória válido. O hardware do computador traduz esse endereço para que ele aponte para um bloco de memória da <acronym>BIOS</acronym> .
The <acronym>BIOS</acronym> (Basic Input Output System) is a chip on the motherboard that has a relatively small amount of read-only memory (<acronym>ROM</acronym>). This memory contains various low-level routines that are specific to the hardware supplied with the motherboard. The processor will first jump to the address 0xfffffff0, which really resides in the <acronym>BIOS</acronym>'s memory. Usually this address contains a jump instruction to the <acronym>BIOS</acronym>'s POST routines. O <acronym>BIOS</acronym> (Basic Input Output System) é um chip da placa-mãe que tem uma quantidade relativamente pequena de memória somente leitura (<acronym>ROM</acronym>). Essa memória contém várias rotinas de baixo nível que são específicas para o hardware fornecido com a placa-mãe. O processador irá primeiro saltar para o endereço 0xfffffff0, que realmente reside na memória do <acronym>BIOS</acronym>. Normalmente, este endereço contém uma instrução de salto para as rotinas de POST do <acronym>BIOS</acronym>.
The <acronym>POST</acronym> (Power On Self Test) is a set of routines including the memory check, system bus check, and other low-level initialization so the <acronym>CPU</acronym> can set up the computer properly. The important step of this stage is determining the boot device. Modern <acronym>BIOS</acronym> implementations permit the selection of a boot device, allowing booting from a floppy, <acronym>CD-ROM</acronym>, hard disk, or other devices. O <acronym>POST</acronym> (Power On Self Test) é um conjunto de rotinas incluindo a verificação de memória, verificação do barramento do sistema e outras inicializações de baixo nível para que a <acronym>CPU</acronym> possa configurar o computador corretamente. A etapa importante deste estágio é determinar o dispositivo de inicialização. As implementações modernas do <acronym>BIOS</acronym> permitem a seleção de um dispositivo de inicialização, permitindo a inicialização a partir de um disquete, <acronym>CD-ROM</acronym>, disco rígido ou outros dispositivos.
This sector is our boot-sequence starting point. As we will see, this sector contains a copy of our <filename>boot0</filename> program. A jump is made by the <acronym>BIOS</acronym> to address <literal>0x7c00</literal> so it starts executing. Este setor é o nosso ponto de partida da sequência de inicialização. Como veremos, este setor contém uma cópia do nosso <filename>boot0</filename> programa. Um salto é feito pelo <acronym>BIOS</acronym> para endereçar <literal>0x7c00</literal> então começa a execução.
The Master Boot Record (<literal>boot0</literal>) O registro mestre de inicialização (<literal>boot0</literal>)
<primary>MBR</primary> <primary>MBR</primary>
A special structure starting from offset <literal>0x1be</literal> in the <acronym>MBR</acronym> is called the <emphasis>partition table</emphasis>. It has four records of 16 bytes each, called <emphasis>partition records</emphasis>, which represent how the hard disk is partitioned, or, in FreeBSD's terminology, sliced. One byte of those 16 says whether a partition (slice) is bootable or not. Exactly one record must have that flag set, otherwise <filename>boot0</filename>'s code will refuse to proceed. Uma estrutura especial a partir de offset <literal>0x1be</literal> no <acronym>MBR</acronym> é chamado de <emphasis>tabela de partições</emphasis>. Tem quatro registros de 16 bytes cada, chamados <emphasis>registros de partições</emphasis>, que representam como o disco rígido é particionado, ou, na terminologia do FreeBSD, fatiado. Um byte desses 16 diz se uma partição (fatia) é inicializável ou não. Exatamente um registro deve ter esse sinalizador definido, caso contrário <filename>boot0</filename> O código da empresa se recusará a prosseguir.