O rEFInd precisa de código no MBR para inicializar janelas em um Mac?

0

Li muitas mensagens relacionadas à instalação e inicialização do Windows em computadores Mac. Muitos procedimentos usam o rEFInd para inicializar uma instalação do BIOS do Windows. Os procedimentos não parecem indicar qualquer instalação de código no MBR. Portanto, ou a suposição é que já existe código no MBR de uma instalação anterior ou o rEFInd não requer esse código para inicializar o Windows. Alguém sabe a resposta?

    
por David Anderson 12.08.2015 / 23:31

2 respostas

2

Tanto o rEFIt quanto o rEFInd colocarão uma cópia do código de inicialização do SYSLINUX MBR no MBR se o MBR ainda não estiver inicializável e se o código de inicialização apropriado existir em uma partição. Dito isso, o código de inicialização deve existir no MBR, embora possa ser destruído pelas ferramentas de particionamento que assumem que os primeiros 440 bytes do MBR em um disco GPT devem ser zerados, como é normalmente o caso de Discos GPT inicializáveis por EFI.

Isso traz outro ponto: o Windows 8 (e presumivelmente o Windows 10) é instalado bem no modo EFI em muitos Macs. Quando instalado desta maneira, não é necessário nenhum código de inicialização no modo BIOS, seja no MBR ou na (s) partição (ões) do Windows. É provável que uma instalação no modo EFI seja mais segura, porque não há necessidade do perigoso MBR híbrido que os Macs usam para o dual boot do OS X e versões anteriores do Windows. O problema desse tipo de instalação é que o Utilitário de Disco e algumas outras ferramentas do OS X criarão um MBR híbrido se você tentar preparar o disco para o Windows - por exemplo, configurando uma partição FAT. Quando o instalador do Windows, inicializado no modo EFI, vir o MBR híbrido, ele reclamará que não pode instalar em um disco MBR. Você pode contornar esse problema usando qualquer número de ferramentas (como gdisk : Digite x e, em seguida, n , depois w ), mas pode ser frustrante e confuso se você não entender a natureza do problema ou como corrigi-lo.

    
por 13.08.2015 / 02:09
1

Quando o CSM é usado, uma opção é carregar o código de inicialização do MBR como um BIOS faria.

A lógica: o CSM deve agir exatamente como um BIOS faria para ser compatível. O sistema operacional colocará o código de inicialização necessário no MBR e no (s) setor (es) de inicialização da partição.

Mas isso é para inicialização baseada em CSM para começar. Tenha em mente que o rEFInd em si é uma opção de inicialização EFI. Por causa disso, o rEFInd será carregado pelo (U) EFI como um executável EFI binário padrão (PE 32 ou 64 bits, dependendo do EFI), como qualquer carregador de um sistema operacional EFI. Quando o menu rEFInd é exibido, nenhum CSM foi carregado ainda. Como o rEFInd é inicializado como um executável EFI, não há necessidade do CSM.

Com o EFI inicializado como rEFInd como ponto de partida, o próprio rEFInd continuará a procurar opções inicializáveis, isto é, partições, outros carregadores ou kernels EFI. Para sistemas operacionais baseados em BIOS, o rEFInd determinará se uma opção é inicializável exatamente como um CSM, verificando se há uma partição MBR (híbrida) com código de inicialização do sistema operacional baseado em BIOS. Se estiver faltando ou se curvar, o sistema operacional não inicializará. (Uma razão pode ser que algo deu errado ao instalar o sistema operacional na partição MBR.)

Portanto, a resposta curta é: não. Somente ao inicializar um disco (não uma partição!) do CSM, o código de inicialização do MBR será carregado. O rEFInd, iniciado como um gerenciador de partida EFI, não é necessário ou mesmo capaz de iniciar o MBR.

Imagine rEFInd iria iniciar o MBR (e para isso vamos supor que ele também poderia fazer o UEFI carregar o CSM): se há uma falha no código de inicialização e / ou particionamento (como nenhuma partição definida como ativo ) ou se a opção de inicialização selecionada (via rEFInd) não é aquela marcada como a partição ativa na tabela de partições MBR, o código de inicialização do MBR não carregará a partição selecionada, tornando todo o propósito de rEFInd menu de seleção de inicialização nulo e sem efeito.

De O gerenciador de inicialização do rEFInd: Usando drivers EFI , seção Selecionando um driver EFI :

NTFS—Samuel Liao contributed this driver, which uses the rEFIt/rEFInd driver framework. Note that this driver is not required to boot Windows with rEFInd, since Windows stores its EFI boot loader on the (FAT) ESP, and the BIOS boot process (generally used when dual-booting on a Mac) relies only on the partition's boot sector, which is read without the benefit of this driver.

Isso claramente implica que o rEFInd irá apenas carregar o setor de boot da respectiva partição do MBR (embora seja uma partição híbrida), ignorando intencionalmente o MBR.

Além disso, o UEFI (EFI 1.x no Mac) fornece meios para "inicializar legado" de uma partição selecionada, que, quando selecionada / instruída para isso, carrega automaticamente o CSM. Nem todas as máquinas UEFI possuem esse recurso. Se estiver faltando, o rEFInd não poderá inicializar um sistema operacional baseado em BIOS a partir de uma partição MBR.

Do Wiki OSDev , seção classe UEFI 0-3 e CSM :

PCs are categorized as UEFI class 0, 1, 2, or 3. A class 0 machine is a legacy system with a legacy BIOS; i.e. not a UEFI system at all.

A class 1 machine is a UEFI system that runs exclusively in Compatibility Support Module (CSM) mode. CSM is a specification for how UEFI firmware can emulate a legacy BIOS. UEFI firmware in CSM mode loads legacy bootloaders. A class 1 UEFI system may not advertise UEFI support at all, since it isn't exposed to the bootloader. It's only UEFI "within" the BIOS.

A class 2 machine is a UEFI system that can launch UEFI applications but also includes the option to run in CSM mode. The majority of modern PCs are UEFI class 2 machines. Sometimes the choice to run UEFI applications vs. CSM is a one-or-the-other setting in the BIOS configuration, and other times the BIOS will decide which to use after selecting the boot device and checking whether it has a legacy bootloader or a UEFI application.

A class 3 machine is a UEFI system that does not support CSM. UEFI class 3 machines only run UEFI applications and do not implement CSM for backwards compatibility with legacy bootloaders.

De A seção rEFInd Boot Manager: Usando o rEFInd Inicializando sistemas operacionais legados :

To help out when you need to boot in BIOS mode, rEFInd supports booting legacy OSes; however, the details vary between Macs and UEFI PCs. Also, be aware that some UEFI PCs lack the Compatibility Support Module (CSM) that's required for this feature to work. This is true even of some computers that can boot BIOS-based OSes natively. This can happen because the firmware is basically a BIOS with a UEFI implementation tacked on top of it; such systems rely on the native BIOS to boot, and may not provide a way for EFI applications to access the BIOS features via CSM mechanisms. If you have such a computer and if you enable a legacy boot option in the configuration file, rEFInd notifies you of its inability to present legacy boot options when it starts up.

Se você estiver interessado se realmente tiver algumas entradas CSM em seu menu de inicialização EFI - não em seleções de inicialização rEFInd, mas real (U) EFI - você pode tentar efibootmgr -v no Linux. Isso só funcionará quando o próprio Linux for inicializado como um sistema operacional (U) EFI. Quando o Linux é inicializado como uma seleção de inicialização do CSM, ele não terá acesso à implementação EFI subjacente. Só que, no Linux, não há muita diferença em relação ao particionamento, porque o Linux não é tão exigente quanto o Windows e pode usar o particionamento GPT quando estiver no modo BIOS.

# efibootmgr -v
Timeout: 2 seconds
BootOrder: 0000,0004,0005
Boot0000* Windows Boot Manager  HD(2,GPT,1bf25484-f461-4892-a640-a24136b1d45f,0xe1800,0x32000)/File(\EFI\Microsoft\Boot\bootmgfw.efi)WINDOWS.........x...B.C.D.O.B.J.E.C.T.=.{.9.d.e.a.8.6.2.c.-.5.c.d.d.-.4.e.7.0.-.a.c.c.1.-.f.3.2.b.3.4.4.d.4.7.9.5.}...e................
Boot0004* Hard Drive    BBS(HD,,0x0)P0: INTEL SSDSC2CT060A3       .
Boot0005* UEFI: SanDisk Extreme 0001    PciRoot(0x0)/Pci(0x1d,0x0)/USB(1,0)/USB(4,0)/HD(1,MBR,0x97,0xb4,0x298c)/File(\EFI\BOOT\BOOTX64.EFI)

Neste exemplo, existem apenas entradas UEFI.

# efibootmgr -v
BootCurrent: 0002
Timeout: 3 seconds
BootOrder: 0003,0002,0000,0004
Boot0000* CD/DVD Drive  BIOS(3,0,00)
Boot0001* Hard Drive    HD(2,0,00)
Boot0002* Fedora        HD(1,800,61800,6d98f360-cb3e-4727-8fed-5ce0c040365d)File(\EFI\fedora\grubx64.efi)
Boot0003* opensuse      HD(1,800,61800,6d98f360-cb3e-4727-8fed-5ce0c040365d)File(\EFI\opensuse\grubx64.efi)
Boot0004* Hard Drive    BIOS(2,0,00)P0: ST1500DM003-9YN16G

Neste exemplo, Boot0000 e Boot0004 são seleções de CSM (observe o caminho BIOS ) e a UEFI inicializará essas entradas com o CSM carregado. Mas esteja ciente de que ainda é o UEFI que invoca a inicialização da entrada selecionada!

Quando rEFInd deve usar mecanismos CSM para inicializar sistemas operacionais legados a partir de partições MBR (híbridas), só posso assumir que isso é muito semelhante às entradas de inicialização UEFI permanentes. Pode ser que o rEFInd use entradas de inicialização únicas (como BootNext ) para esta tarefa ...

    
por 07.08.2017 / 18:28