GNU GRUB

(Redirecionado de Grub2)
 Nota: "GRUB" e "Grub2" redirecionam para este artigo. Para outros significados, veja Grub.

O GNU GRUB (abreviação de GNU GRand Unified Bootloader) é um pacote gerenciador de inicialização do Projeto GNU. O GRUB é a implementação de referência da Especificação Multiboot da Free Software Foundation, que oferece ao usuário a opção de inicializar um dos vários sistemas operacionais instalados em um computador ou selecionar uma configuração específica do núcleo disponível nas partições de um determinado sistema operacional.

GNU GRUB
Captura de tela
GNU GRUB
Menu de seleção do sistema operacional
Autor Erich Boleyn
Desenvolvedor Projeto GNU
Plataforma IA-32, x86-64, IA-64, ARM, PowerPC, MIPS e SPARC
Modelo do desenvolvimento Software livre
Lançamento 1995 (28–29 anos)
Versão estável 2.12[1] (20 de dezembro de 2023; há 4 meses)
Versão em teste 2.12~rc1[2] (10 de julho de 2023; há 9 meses)
Idioma(s) Multilíngue
Escrito em Assembly, C
Sistema operacional Linux, macOS, BSD, Solaris (porte x86), e Windows (em chainloading)
Gênero(s) Bootloader
Licença GPLv3
Estado do desenvolvimento Ativo
Página oficial www.gnu.org/software/grub/
Repositório git.savannah.gnu.org/cgit/grub.git

O GNU GRUB foi desenvolvido a partir de um pacote chamado Grand Unified Bootloader (uma brincadeira com a expressão Grand Unified Theory[3]). Ele é usado predominantemente para sistemas do tipo Unix. O sistema operacional GNU usa o GNU GRUB como seu gerenciador de inicialização, assim como a maioria das distribuições Linux e o sistema operacional Solaris em sistemas x86, começando com a versão Solaris 10 1/06.

Características editar

Os usuários podem configurar dinamicamente o subsistema do GRUB. O GRUB fornece uma interface de linha de comando simples, semelhante à do bash, à medida que é carregado, permitindo alterações no momento da inicialização, como a seleção de diferentes núcleos ou discos de RAM iniciais e permitindo aos usuários escrever novas sequências de inicialização em tempo real, além das listas de menus normais.

O GRUB é altamente portátil. Ele oferece suporte a vários formatos executáveis e é independente da tradução de geometria, incluindo suporte ao endereçamento de bloco lógico (LBA). Ele é compatível com todos os sistemas de arquivos Unix comumente usados e os sistemas de arquivos FAT e NTFS do Windows.

O GRUB pode fazer o download e descompactar automaticamente as imagens de inicialização do sistema operacional a partir da rede, oferecendo assim suporte a sistemas sem disco. O GRUB oferece suporte a sistemas operacionais que não são de inicialização múltipla usando o carregamento em cadeia. Ele usa as mesmas duas ou três linhas de sequências de comando para inicializar qualquer sistema DOS, Windows, Linux, BSD ou Solaris, o que torna muito fácil trabalhar com ele. Os carregadores em cadeia para os sistemas operacionais do tipo Unix compatíveis são incorporados ao GRUB.

O GRUB pode ser usado com uma variedade de interfaces de usuário. A maioria das distribuições Linux aproveita o suporte do GRUB a uma interface gráfica para fornecer um menu de inicialização personalizado com uma imagem de fundo. Uma modificação da interface de texto do GRUB pode usar um link serial para que um terminal remoto possa ter acesso ao gerenciador de inicialização.

O GRUB usa uma tela de rolagem para a seleção de inicialização do sistema operacional. Isso significa que 150 ou mais opções de inicialização podem ser facilmente controladas, bastando adicioná-las ao arquivo de configuração grub.cfg. As teclas de seta são usadas para selecionar o SO a ser inicializado. Além da interface de menu normal, o GRUB também oferece um prompt de comando de terminal semelhante ao bash, que fornece um rico conjunto de comandos para permitir que o usuário visualize ou altere qualquer parte do processo de inicialização. Com essas ferramentas, o GRUB pode ser usado a partir de um dispositivo externo, como um dispositivo USB ou um CD-ROM, ou via rede para instalar ou inicializar os sistemas operacionais.

Operação editar

 
GRUB2 em um disco rígido particionado em MBR; o estágio 1 (boot.img) pode, alternativamente, ser gravado em um dos setores de inicialização da partição
 
GRUB2 em um disco rígido particionado em GPT, inicializando no firmware BIOS ou no modo de compatibilidade do UEFI (CSM)

Inicialização editar

Quando um computador é ligado, o BIOS localiza o dispositivo inicializável primário configurado (geralmente o disco rígido do computador) e carrega e executa o programa de bootstrap inicial a partir do registro mestre de inicialização (MBR). O MBR é o primeiro setor do disco rígido, com zero como offset (a contagem de setores começa em zero). Durante muito tempo, o tamanho de um setor foi de 512 bytes, mas desde 2009 há discos rígidos disponíveis com um tamanho de setor de 4096 bytes, chamados discos de formato avançado. A partir de outubro de 2013, esses discos rígidos ainda são acessados em setores de 512 bytes, utilizando a emulação 512e.[4]

A tabela de partição MBR legada suporta um máximo de quatro partições e ocupa 64 bytes. Juntamente com a assinatura de disco opcional (quatro bytes) e o registro de data e hora do disco (seis bytes), isso deixa entre 434 e 446 bytes disponíveis para o código de máquina de um carregador de inicialização. Embora um espaço tão pequeno possa ser suficiente para carregadores de inicialização muito simples,[5] ele não é grande o bastante para conter um carregador de inicialização com suporte a sistemas de arquivos complexos e múltiplos, seleção de opções de inicialização orientada por menus, etc. Os carregadores de inicialização com pegadas maiores são, portanto, divididos em partes, onde a menor parte se encaixa e reside dentro do MBR, enquanto as partes maiores são armazenadas em outros locais (por exemplo, em setores vazios entre o MBR e a primeira partição) e invocadas pelo código do carregador de inicialização no MBR.

As imagens do núcleo do sistema operacional são, na maioria dos casos, arquivos que residem em sistemas de arquivos apropriados, mas o conceito de um sistema de arquivos é desconhecido pelo BIOS. Assim, em sistemas baseados no BIOS, o dever de um carregador de inicialização é acessar o conteúdo desses arquivos, para que ele possa ser carregado na RAM e executado.

Uma abordagem possível para os carregadores de inicialização carregarem imagens do núcleo é acessar diretamente os setores do disco rígido sem compreender o sistema de arquivos subjacente. Normalmente, é necessário um nível adicional de indireção, na forma de mapas ou arquivos de mapas – arquivos auxiliares que contêm uma lista de setores físicos ocupados por imagens do núcleo. Esses mapas precisam ser atualizados sempre que uma imagem do núcleo muda sua localização física no disco, devido à instalação de novas imagens do núcleo, desfragmentação do sistema de arquivos, etc. Além disso, caso os mapas mudem de local físico, seus locais precisam ser atualizados no código do carregador de inicialização no MBR, para que o mecanismo de indireção de setores continue a funcionar. Isso não é apenas incômodo, mas também faz com que o sistema precise de reparos manuais caso algo dê errado durante as atualizações do sistema.[6]

Outra abordagem é tornar um gerenciador de boot ciente dos sistemas de arquivos subjacentes, de modo que as imagens do núcleo sejam configuradas e acessadas usando seus caminhos de arquivo reais. Isso exige que um gerenciador de inicialização contenha um driver para cada um dos sistemas de arquivos suportados, de modo que eles possam ser compreendidos e acessados pelo próprio gerenciador de inicialização. Essa abordagem elimina a necessidade de locais codificados dos setores do disco rígido e a existência de arquivos de mapa, além de não exigir atualizações do MBR depois que as imagens do núcleo são adicionadas ou movidas. A configuração de um gerenciador de inicialização é armazenada em um arquivo comum, que também é acessado de uma forma sensível ao sistema de arquivos para obter configurações de inicialização antes da inicialização real de qualquer imagem do núcleo. Como resultado, a possibilidade de algo dar errado durante várias atualizações do sistema é significativamente reduzida. Como desvantagem, esses carregadores de inicialização aumentam a complexidade interna e ocupam um espaço ainda maior.[6]

O GNU GRUB usa a segunda abordagem, compreendendo os sistemas de arquivos subjacentes. O próprio gerenciador de inicialização é dividido em vários estágios, o que permite que ele se encaixe no esquema de inicialização do MBR.

Duas versões principais do GRUB são de uso comum: A versão 1 do GRUB, chamada GRUB legacy, só prevalece em versões mais antigas das distribuições Linux, algumas ainda estão em uso e têm suporte, por exemplo, no CentOS 5. A versão 2 do GRUB, denominada GRUB 2, foi escrita do zero e destinada a substituir seu antecessor, e agora é usada pela maioria das distribuições Linux.

Versão 1 (GRUB Legacy) editar

 
GRUB v1 em execução como parte de uma instalação do Ubuntu 8.04

O registro mestre de inicialização (MBR) geralmente contém o estágio 1 do GRUB, ou pode conter uma implementação padrão no MBR que faz o carregamento em cadeia do estágio 1 do GRUB a partir do setor de inicialização da partição ativa. Dado o tamanho pequeno de um setor de inicialização (512 bytes), o estágio 1 pode fazer pouco mais do que carregar o próximo estágio do GRUB carregando alguns setores do disco a partir de um local fixo próximo ao início do disco (nos primeiros 1024 cilindros).

O estágio 1 pode carregar o estágio 2 diretamente, mas normalmente é configurado para carregar o estágio 1.5, localizado nos primeiros 30 KiB do disco rígido, imediatamente após o MBR e antes da primeira partição. Caso esse espaço não esteja disponível (tabela de partição incomum, drivers de disco especiais, disco GPT ou LVM), a instalação do estágio 1.5 falhará. A imagem do estágio 1.5 contém drivers do sistema de arquivos, permitindo que ele carregue diretamente o estágio 2 de qualquer local conhecido no sistema de arquivos, por exemplo, de /boot/grub. O estágio 2 carregará então o arquivo de configuração padrão e quaisquer outros módulos necessários.

Versão 2 (GRUB 2) editar

 
GRUB 2 - particionamento MBR vs. GPT e sequência de inicialização visualizada (sistemas que usam firmware BIOS)

Inicialização em sistemas que usam firmware BIOS editar

  • 1º Estágio: o boot.img é armazenado nos primeiros 440 bytes do Registro Mestre de Inicialização (MBR no setor 0) ou, opcionalmente, em um setor de inicialização de uma partição (PBR/VBR). Ele endereça o diskboot.img por um endereço LBA de 64 bits, portanto, pode carregar acima do limite de 2 TiB do MBR. O número real do setor é gravado pelo grub-install.
  • 2º Estágio: diskboot.img é o primeiro setor do core.img (chamado de estágio 1.5 no Grub Legacy) com o único propósito de carregar o restante do core.img identificado por números de setor LBA também escritos pelo grub-install.
    • Em discos particionados em MBR: o core.img (chamado de estágio 1.5 no Grub Legacy) é armazenado nos setores vazios entre o MBR e a primeira partição. Os sistemas operacionais recentes sugerem um espaço de 1 MiB aqui para alinhamento (2047*512 bytes ou 255*4KiB setores). Essa lacuna costumava ser de 62 (32 KiB) como um lembrete do limite de número de setor do endereçamento C/H/S usado pelo BIOS antes de 1998; portanto, o core.img foi projetado para ser menor que 32 KiB.
    • Em discos particionados em GPT: as partições não são limitadas a 4, portanto o core.img é gravado em sua própria partição de inicialização do BIOS, minúscula (1 MiB) e sem sistema de arquivos.
  • 3º estágio: o core.img entra no modo protegido de 32 bits, descompacta a si mesmo (o núcleo do grub e os módulos do sistema de arquivos para alcançar o /boot/grub) e, em seguida, carrega o /boot/grub/<plataforma>/normal.mod a partir da partição configurada pelo grub-install. Se o índice da partição tiver mudado, o Grub não conseguirá encontrar o normal.mod e apresentará ao usuário o prompt do Grub Rescue, onde o usuário "pode" encontrar e carregar o normal.mod ou o núcleo Linux.
  • O diretório /boot/grub pode estar localizado em qualquer partição (o Grub pode ler muitos sistemas de arquivos, inclusive o NTFS). Dependendo de como foi instalado, ele está na partição raiz da distribuição ou em uma partição /boot separada.
  • 4º estágio: normal.mod (equivalente ao estágio 2 no Grub Legacy) analisa /boot/grub/grub.cfg, opcionalmente carrega módulos (por exemplo, para a interface gráfica do usuário) e mostra o menu.

Inicialização em sistemas que usam firmware UEFI editar

  • Comum em placas-mãe desde ca. 2012.
  • O /efi/<distro>/grubx64.efi é instalado como um arquivo na partição do sistema EFI, e inicializado diretamente pelo firmware, sem um boot.img no setor 0.
  • O /boot/grub/ também pode ser instalado na partição do sistema EFI.

Depois da inicialização editar

O GRUB apresenta um menu, no qual o usuário pode escolher entre os sistemas operacionais (SO) encontrados pelo grub-install. O GRUB pode ser configurado para carregar automaticamente um SO especificado após um tempo limite definido pelo usuário; se o tempo limite for definido como zero segundos, pressionar e manter pressionada a tecla Shift enquanto o computador estiver sendo inicializado permite acessar o menu de inicialização.[7]

No menu de seleção do sistema operacional, o GRUB aceita alguns comandos:

  • Ao pressionar e, é possível editar os parâmetros do item de menu selecionado antes que o sistema operacional seja iniciado. O motivo para fazer isso no GRUB (ou seja, não editar os parâmetros em um sistema já inicializado) pode ser um caso de emergência: o sistema falhou na inicialização. Usando a linha de parâmetros do núcleo, é possível, entre outras coisas, especificar um módulo a ser desativado (colocado na lista negra) para o núcleo. Isso pode ser necessário se o módulo específico do núcleo estiver quebrado e, portanto, impedir a inicialização. Por exemplo, para colocar na lista negra o módulo do núcleo nvidia-current, pode-se acrescentar modprobe.blacklist=nvidia-current no final dos parâmetros do núcleo.[8]
  • Ao pressionar c, o usuário entra na linha de comando do GRUB. A linha de comando do GRUB não é um shell normal do Linux, como, por exemplo, o bash, e aceita apenas determinados comandos específicos do GRUB, documentados por várias distribuições do Linux.[9]

Depois que as opções de inicialização são selecionadas, o GRUB carrega o núcleo selecionado na memória e passa o controle para o núcleo. Como alternativa, o GRUB pode passar o controle do processo de inicialização para outro carregador de inicialização, usando o carregamento em cadeia. Esse é o método usado para carregar sistemas operacionais que não são compatíveis com a Especificação Multiboot ou que não são suportados diretamente pelo GRUB.

Se o uso do dm-crypt for pretendido, o conteúdo do /boot, ou seja, /boot/grub, o núcleo Linux e o initramfs, respectivamente o initrd, precisam estar em uma partição não criptografada distinta, pois a lógica para lidar com partições criptografadas reside dentro do núcleo do Linux.

História editar

O GRUB foi inicialmente desenvolvido por Erich Boleyn como parte do trabalho de inicialização do sistema operacional GNU/Hurd, desenvolvido pela Free Software Foundation.[10] Em 1999, Gordon Matzigkeit e Yoshinori K. Okuji tornaram o GRUB um pacote de software oficial do Projeto GNU e abriram o processo de desenvolvimento ao público.[10] A partir de 2014, a maioria das distribuições Linux adotou o GNU GRUB 2, bem como outros sistemas, como o PlayStation 4 da Sony.[11]

Desenvolvimento editar

O GRUB versão 1 (também conhecido como "GRUB Legacy") não está mais em desenvolvimento e está sendo eliminado gradualmente.[12] Os desenvolvedores do GNU GRUB mudaram seu foco para o GRUB 2,[13] uma reescrita completa com objetivos que incluem tornar o GNU GRUB mais limpo, mais robusto, mais portátil e mais poderoso. O GRUB 2 começou com o nome PUPA. O PUPA foi apoiado pela Agência de Promoção da Tecnologia da Informação (Information-technology Promotion Agency, IPA) do Japão. O PUPA foi integrado ao desenvolvimento do GRUB 2 por volta de 2002, quando a versão 0.9x do GRUB foi renomeada para GRUB Legacy.

Alguns dos objetivos do projeto GRUB 2 incluem suporte a plataformas não-x86, internacionalização e localização, caracteres não-ASCII, módulos dinâmicos, gerenciamento de memória, uma mini-linguagem de script, migração de código específico de plataforma (x86) para módulos específicos de plataforma e uma estrutura orientada a objetos. O GNU GRUB versão 2.00 foi lançado oficialmente em 26 de junho de 2012.[14][15]

Três das distribuições Linux mais amplamente utilizadas usam o GRUB 2 como seu gerenciador de inicialização principal.[16][17][18] O Ubuntu adotou ele como o gerenciador de inicialização padrão em sua versão 9.10 de outubro de 2009.[19] O Fedora seguiu o exemplo com o Fedora 16, lançado em novembro de 2011.[20] O openSUSE adotou o GRUB 2 como gerenciador de inicialização padrão em sua versão 12.2, de setembro de 2012.[21] O Solaris também adotou o GRUB2 na plataforma x86 na versão Solaris 11.1.[22]

No final de 2015, o exploit de pressionar backspace 28 vezes para contornar a senha de login foi encontrado e rapidamente corrigido.[23][24]

Variantes editar

O GNU GRUB é um software livre e de código aberto, por isso foram criadas diversas variantes. Algumas notáveis, que não foram incorporadas à linha principal do GRUB:

  • O OpenSolaris inclui um GRUB Legacy modificado que suporta rótulos de disco BSD, seleção automática de núcleo de 64 bits e inicialização a partir do ZFS (com compactação e vários ambientes de inicialização).[25][26]
  • O Google Summer of Code 2008 tinha um projeto de suporte ao GRUB legacy para inicializar a partir de partições formatadas em ext4.[27]
  • O projeto Syllable criou uma versão modificada do GRUB para carregar o sistema a partir de seu sistema de arquivos AtheOS.[28]
  • O TrustedGRUB amplia o GRUB implementando a verificação da integridade do sistema e a segurança do processo de inicialização, usando o Trusted Platform Module (TPM).[29]
  • O Intel BIOS Implementation Test Suite (BITS) fornece um ambiente GRUB para testar BIOSes e, em particular, a inicialização de processadores, hardware e tecnologias Intel. O BITS é compatível com scripts via Python e inclui APIs Python para acessar várias funcionalidades de baixo nível da plataforma de hardware, incluindo ACPI, registros da CPU e do chipset, PCI e PCI Express.[30]
  • O GRUB4DOS é um fork do GRUB legacy que aprimora a experiência de instalação no DOS e no Microsoft Windows, colocando tudo além da configuração do GRLDR em um arquivo de imagem. Ele pode ser carregado diretamente do DOS ou pelo NTLDR ou Windows Boot Manager.[31][32] O GRUB4DOS está em desenvolvimento ativo e, a partir de 2021, será compatível com UEFI.[33]

Utilitários editar

Ferramentas de configuração do GRUB editar

 
StartUp-Manager, um programa usado para configurar o GRUB
 
GRUB Customizer, outra ferramenta para configurar o GRUB

As ferramentas de configuração em uso por várias distribuições geralmente incluem módulos para configurar o GRUB. Por exemplo, o YaST2 nas distribuições SUSE Linux e openSUSE e o Anaconda nas distribuições Fedora/RHEL. O StartUp-Manager e o GRUB Customizer são editores de configuração gráfica para distribuições baseadas no Debian.

Para o GRUB 2, existem os módulos de controle do KDE.[34][35]

O GRLDR ICE é uma pequena ferramenta para modificar a configuração padrão do arquivo grldr para o GRUB4DOS.[36]

Outros utilitários editar

O GRUB Utilities é uma coleção de utilitários multiplataforma para o GRUB Legacy, o GRUB 2 e o GRUB para DOS.[37]

O Boot-Repair é uma ferramenta gráfica simples para recuperação de problemas frequentes relacionados à inicialização com o GRUB e o carregador de inicialização do Microsoft Windows. Esse aplicativo está disponível sob a licença GNU GPL. O Boot-Repair pode reparar o GRUB em várias distribuições Linux, incluindo, mas não se limitando a, Debian, Ubuntu, Mint, Fedora, openSUSE e Arch Linux.[38][39]

O Grub2Win é um pacote de software de código aberto para Windows. Ele permite que o GNU Grub inicialize a partir de um diretório do Windows. O programa de configuração instala o GNU Grub versão 2.02 em uma partição NTFS. Em seguida, um aplicativo GUI no Windows é usado para personalizar o menu de inicialização do Grub, os temas, a ordem de inicialização no UEFI, os scripts etc. Todos os scripts e comandos do GNU Grub são compatíveis com sistemas UEFI e legados. O Grub2Win pode configurar o Grub para inicialização múltipla do Windows, Ubuntu, openSuse, Fedora e muitas outras distribuições Linux. Ele está disponível gratuitamente sob a licença GNU GPL no SourceForge.

Ver também editar

Referências

  1. Daniel Kiper (20 de dezembro de 2023). «GRUB 2.12 released». grub-devel (Lista de grupo de correio) (em inglês). Consultado em 21 de dezembro de 2023 
  2. Daniel Kiper (10 de julho de 2023). «GRUB 2.12~rc1 released». grub-devel (Lista de grupo de correio). Consultado em 18 de julho de 2023 
  3. «Definition of GRand Unified Bootloader». Arquivado do original em 3 de dezembro de 2010 
  4. Smith, Ryan (18 de dezembro de 2009). «Western Digital's Advanced Format: The 4K Sector Transition Begins». AnandTech. Consultado em 10 de dezembro de 2013. Cópia arquivada em 12 de março de 2012 
  5. «mbldr (Master Boot LoaDeR)». mbldr.sourceforge.net. 2009. Consultado em 10 de outubro de 2013. Cópia arquivada em 16 de março de 2013 
  6. a b «Booting and Boot Managers». SUSE. Consultado em 10 de outubro de 2013. Cópia arquivada em 17 de setembro de 2013 
  7. Hoffman, Chris (22 de setembro de 2014). «How to Configure the GRUB2 Boot Loader's Settings». HowToGeek.com. Consultado em 25 de abril de 2015. Cópia arquivada em 28 de abril de 2015 
  8. «ArchWiki: Blacklist Kernel modules from GNU GRUB». 11 de novembro de 2012. Consultado em 1 de dezembro de 2012 
  9. «GNU GRUB documentation». Consultado em 16 de abril de 2014. Cópia arquivada em 18 de abril de 2014 
  10. a b «GRUB Manual – 1.2 Grub History». Gnu.org. 23 de junho de 2012. Consultado em 16 de abril de 2014. Arquivado do original em 16 de abril de 2014 
  11. «PS4 runs Orbis OS, a modified version of FreeBSD that's similar to Linux». extremetech.com. 24 de junho de 2013. Consultado em 23 de outubro de 2013. Cópia arquivada em 18 de novembro de 2020 
  12. «GNU GRUB – GRUB Legacy». Gnu.org. Consultado em 20 de abril de 2014. Arquivado do original em 20 de abril de 2014 
  13. «GNU GRUB – GRUB 2». Consultado em 18 de abril de 2014. Arquivado do original em 7 de junho de 2008 .
  14. Vladimir 'φ-coder/phcoder' Serbinenko (28 de junho de 2012). «GRUB 2.00 released». grub-devel (Lista de grupo de correio). Consultado em 1 de dezembro de 2012 
  15. Larabel, Michael. «GRUB 2.00 Boot-Loader Officially Released». Phoronix.com. Consultado em 28 de junho de 2012. Cópia arquivada em 13 de setembro de 2016 
  16. Haddon, Tom (26 de janeiro de 2012). «An Introduction to Ubuntu». WebJunction. Consultado em 21 de setembro de 2012. Arquivado do original em 28 de outubro de 2012 
  17. Janssen, Cory. «What is Red Hat Enterprise Linux (RHEL)?». Techopedia. Consultado em 21 de setembro de 2012. Cópia arquivada em 3 de outubro de 2012 
  18. Varghese, Sam (20 de setembro de 2012). «SUSE chief lists progress since privatisation». Consultado em 21 de setembro de 2012. Cópia arquivada em 22 de setembro de 2012 
  19. «9.10 Karmic GRUB version». Distrowatch.com. Consultado em 8 de julho de 2012. Cópia arquivada em 9 de maio de 2012 
  20. «GRUB 2». FedoraProject. 5 de agosto de 2012. Consultado em 1 de dezembro de 2012. Arquivado do original em 5 de agosto de 2012 
  21. «openSUSE:Upcoming features – openSUSE». En.opensuse.org. 20 de setembro de 2012. Consultado em 1 de dezembro de 2012. Arquivado do original em 20 de setembro de 2012 
  22. «Solaris 11.1». Consultado em 19 de junho de 2018. Arquivado do original em 19 de junho de 2018 
  23. Khandelwal, Swati (16 de dezembro de 2015). «You can Hack into a Linux Computer just by pressing 'Backspace' 28 times». thehackernews.com. Consultado em 13 de março de 2017. Cópia arquivada em 30 de abril de 2017 
  24. Marco e, Hector; Ripoll, Ismael (14 de dezembro de 2015). «Back to 28: Grub2 Authentication 0-Day». Consultado em 13 de março de 2017. Cópia arquivada em 17 de maio de 2017 
  25. «x86: Modifying Boot Behavior by Editing the GRUB Menu at Boot Time». Sun Microsystems. Consultado em 19 de julho de 2011. Arquivado do original em 19 de julho de 2011 
  26. «x86: Supported GRUB Implementations». System Administration Guide: Basic Administration. Sun Microsystems. Consultado em 21 de outubro de 2009. Arquivado do original em 21 de outubro de 2009 
  27. Tao, Peng. «Grub4ext4». Consultado em 13 de junho de 2017. Cópia arquivada em 31 de dezembro de 2016 
  28. «2.3 Why does Syllable have its own version of GRUB?». Syllable Documentation. Consultado em 7 de janeiro de 2011. Arquivado do original em 7 de janeiro de 2011 
  29. «TrustedGRUB project». sourceforge.net. 5 de junho de 2013. Consultado em 18 de novembro de 2014. Cópia arquivada em 29 de novembro de 2014 
  30. «BIOS Implementation Test Suite». Official BITS website. Cópia arquivada em 19 de outubro de 2016 
  31. «grub4dos». Google Site. Consultado em 7 de abril de 2019. Cópia arquivada em 7 de abril de 2019 
  32. «GRUB for DOS Introduction». grub4dos.sourceforge.net. Consultado em 7 de abril de 2019. Arquivado do original em 27 de novembro de 2010 
  33. grub4dos no GitHub
  34. «GRUB2 Bootloader Editor». KDE-Apps.org. Cópia arquivada em 7 de setembro de 2015 
  35. «Grub2 KCM». KDE-Apps.org. Cópia arquivada em 6 de setembro de 2015 
  36. «Grub4dos tutorial». Narod.ru. Consultado em 25 de abril de 2015. Cópia arquivada em 3 de maio de 2015 
  37. «GRUB Utilities – Summary». Gna.org. Consultado em 1 de dezembro de 2012. Arquivado do original em 3 de março de 2016 
  38. «Página oficial do Boot-Repair». Sourceforge.net. Consultado em 1 de dezembro de 2012 
  39. «Boot-Repair on Ubuntu Community Help Wiki». Help.ubuntu.com. Consultado em 1 de dezembro de 2012 

Ligações externas editar