![Como funcionam os sistemas operacionais de inicialização múltipla](https://rvso.com/image/1476419/Como%20funcionam%20os%20sistemas%20operacionais%20de%20inicializa%C3%A7%C3%A3o%20m%C3%BAltipla.png)
Eu li que o computador carrega um sistema operacional pesquisando os primeiros 512 KB de cada dispositivo conectado. Se esse espaço de memória atuar como um setor de inicialização, ele começará a carregar o espaço de memória depois dele.
De acordo com este artigo:https://www.gnu.org/software/grub/manual/multiboot/multiboot.html
Vários sistemas operacionais existentes no mesmo disco rígido executam o "encadeamento". Agora, se todos eles estão no mesmo disco rígido, como a máquina sabe depois de quantos saltos encontrará outro setor de boot.
E o que está encadeando
Responder1
Eu li que o computador carrega um sistema operacional pesquisando os primeiros 512 KB de cada dispositivo conectado.
O BIOS do PC faz isso - e não atinge necessariamente todos os dispositivos conectados, apenas aqueles que ele sabe ler e que está configurado para ler nas configurações.
PCs com o padrão UEFI mais recente podem carregar um arquivo diretamente de uma partição EFI em um disco rígido. Tradicionalmente, o BIOS não entende sistemas de arquivos como NTFS ou FAT, mas o UEFI é um pouco mais inteligente e pode realmente ler arquivos de um dispositivo.
No caso do BIOS, o que é carregado nunca é um sistema operacional completo, mas um pequeno programa que é umbootloader de primeiro estágio. Este bootloader de primeiro estágio pode carregar um sistema operacional completo, mas apenas no caso do DOS ou outro sistema operacional muito simples.
O que geralmente acontece é que o bootloader de primeiro estágio liga e carrega um bootloader de segundo estágio, que pode ser o antigo NT/XP NTLDR
, o bootloader do Windows Vista+ winload.exe
ou o GRUB.
Os bootloaders (segundo estágio e superiores) podem fazer mais do que o BIOS, portanto, eles leem um arquivo ou dados de configuração e podem apresentar um menu de qual sistema operacional inicializar. O bootloader é sobrescrito assim que o sistema operacional é carregado.
Encadeamentoé onde um bootloader chama outro bootloader. Como o Windows inicializa apenas com seu próprio bootloader, se você tiver o GRUB instalado, o que o GRUB faz para carregar o Windows é seguir em frente e apenas carregar o bootloader de primeiro estágio que o BIOS teria carregado de qualquer maneira. Isso está armazenado no primeiro setor de sua partição, acredito. O mesmo é feito com o DOS.
Não é necessário se o GRUB puder inicializar o sistema operacional diretamente, o que acontece com qualquer Linux. O Linux não se importa muito com o modo como ele e seu disco initram entram na memória, ao contrário de outros sistemas operacionais.
UEFI pode carregar um sistema operacional diretamente, mas o Windows não suporta este AFAIK, então geralmente os sistemas UEFI carregam winload.exe
e executam diretamente.
Outros gerenciadores de inicialização que não são de PC, como o U-Boot (algo que seu roteador doméstico pode executar), entendem os sistemas de arquivos FAT e Linux e carregam o Linux diretamente a partir deles e, em seguida, iniciam o sistema operacional diretamente.
Responder2
Eu li que o computador carrega um sistema operacional pesquisando os primeiros 512 KB de cada dispositivo conectado.
Quase correto. O hardware estilo PC lê o primeiro setor, que tem 512 bytes. (não quilobytes).
Se esse espaço funcionar como um setor de inicialização, ele começará a carregar o espaço depois dele.
Também quase correto. O firmware clássico da placa-mãe continha algo chamado BIOS. Quando o PC fosse ligado, isso seria executado. Uma de suas tarefas era entregar o controle a outro dispositivo (por exemplo, a uma unidade de disquete).
Versões mais avançadas não suportavam apenas um único dispositivo, mas verificavam vários dispositivos e passavam para o próximo caso algum deles não conseguisse fornecer uma solução de inicialização. Por exemplo, ele poderia tentar inicializar a partir de um disquete, e se isso falhar, tente inicializar a partir de um CD, e se falhar, tente inicializar a partir do primeiro disco rígido. (ondeprimeirotambém é interessante se você tiver vários discos).
Na maioria das vezes ele lia o primeiro setor de um disco rígido. E um disco rígido normalmente tinha um esquema de particionamento (MBR para PC compatível com IBM) e algum código de inicialização. Em seguida, seguiria uma cadeia de carregadores.
Por exemplo, o firmware carregaria um único setor de inicialização e iniciaria o código nele.
O código lido desse setor entenderia mais sobre o disco e carregaria um programa maior. (repita se necessário com mais etapas).
Vários sistemas operacionais existentes no mesmo disco rígido executam o "encadeamento".
O sistema operacional não realiza encadeamento. Mas se um dos seus estágios posteriores for um programa de inicialização avançado (por exemplo, grub), ele poderá solicitar a entrada do usuário e, dependendo disso, poderá continuar de maneiras diferentes. Por exemplo, ele poderia carregar um kernel Linux e poderia carregar e iniciar o NTloader.