Qual é a diferença entre GRUB e SYSLINUX?

13

Esta questão está relacionada à minha descoberta de que o Ubuntu e seus derivados usam os carregadores de inicialização SYSLINUX e GRUB em imagens ISO para versões do Desktop .

Ao inicializar a partir de uma imagem ISO de 32 bits , diz-se que o SYSLINUX lida com o processo de inicialização (a inicialização que mostra uma bela tela inicial, com animação por pontos de progresso).

Porém, ao inicializar a partir de uma imagem ISO de 64 bits , o GRUB é usado (a tela em preto e branco, mostrando claramente GNU GRUB version...na parte superior da tela).

Portanto, para reformular minha pergunta, quais são as diferenças que fizeram o Ubuntu usar o GRUB e o SYSLINUX em suas imagens ISO? Por que não usar um dos dois?

Para esclarecimentos

Esta pergunta foi de alguma forma confusa devido à minha falta de esclarecimento e disponibilidade de hardware. Eu adicionei esta resposta (ou role para baixo) para explicar melhor a imagem ISO de 64 bits.

Qual resposta não é

O tópico de comentário abaixo já deu uma idéia, mas devo esclarecer aqui. A resposta não é porque qualquer um suporta EFI corretamente. Esta pergunta teve como objetivo descobrir mais sobre razões fundamentais, em vez de apenas apoiar a EFI.

Digamos, se isso fosse solicitado de outra maneira, ou seja, "Por que o GRUB e o SYSLINUX são usados ​​nas imagens ISO?" então isso pode dar uma resposta como "O GRUB está incluído para oferecer suporte a sistemas compatíveis com EFI e o SYSLINUX sempre foi incluído e funciona em sistemas somente BIOS" - o que não é minha intenção.

Devo admitir que o apoio da EFI provavelmente faz parte da resposta.

No entanto, sinto que não deve ser a única coisa na resposta. Deve haver mais do que apenas suporte a EFI, o que fez o Ubuntu incluir dois gerenciadores de inicialização em suas imagens ISO, sim? Ou é realmente o suporte da EFI a única diferença? Ajude-me a responder, se houver.

clearkimura
fonte
A animação do ponto de progresso deve ocorrer nos dois casos, assumindo que não há nada errado com os gráficos. E por que você diz Live CD e Live USB em negrito, quando a diferença está entre a imagem UEFI de 64 bits e outras imagens? Você tentou a imagem UEFI em um CD e conseguiu o Syslinux?
muru
Isso aumentaria a confusão, já que o GRUB é usado apenas pela imagem de suporte à UEFI de 64 bits e não pelas outras. Eu sugeriria o outro caminho: solte o texto "live CD / USB" e fique com as imagens que você usou, porque é aí que estão as diferenças.
muru 23/07/2015
1
Certo, substituiu as palavras-chave de acordo: Live CD -> imagem ISO de 32 bits; USB ao vivo -> imagem ISO de 64 bits.
Clearkimura
O Syslinux é um carregador de inicialização do BIOS. Usado para versões de 32 e 64 bits em partições formatadas em FAT32. É um carregador de inicialização do tipo Windows apenas para BIOS. O Grub2 é usado apenas com a inicialização UEFI. Eles provavelmente poderiam usar o grub2 com o BIOS, mas ele sempre foi maior agora e, historicamente, eles usam o syslinux. Não tenho certeza do porquê. Algumas vantagens menores para diferentes gerenciadores de inicialização, para que você saiba de que maneira está inicializando, UEFI ou BIOS.
oldfred
@oldfred O sistema de arquivos da imagem ISO é ISO9660 e não é FAT32. Aparentemente, o Syslinux também funciona em máquinas compatíveis com EFI; então, por que ainda usar o Syslinux e o Grub?
Clearkimura

Respostas:

14

Esta é minha resposta final, que é baseada em informações encontradas por palavras-chave correspondentes em mais de 2000 páginas nesta lista no Ubuntu Wiki . O que eu encontrei foram notas datadas do desenvolvimento e especificações do Ubuntu (leia-se: palavras, palavras, palavras), então demorei algum tempo para chegar a essa resposta.

Ops, nomeação errada

Para começar, a nomeação dos gerenciadores de inicialização deve ser esclarecida:

  • O nome com todas as letras maiúsculas refere-se ao carregador de inicialização (por exemplo, GRUB, SYSLINUX)

  • O nome com letra inicial maiúscula refere-se ao nome do projeto ou a várias ou todas as variantes da família do carregador de inicialização (por exemplo, Syslinux)

  • Em particular, 'Syslinux' é uma coleção de gerenciadores de inicialização que inclui 'SYSLINUX', 'ISOLINUX', 'EXTLINUX' e 'PXELINUX'

Após a convenção de nomenclatura , a questão está realmente se referindo a "ISOLINUX" para o gerenciador de inicialização "El Torito no-emulation", e não "SYSLINUX". Talvez o último seja usado de forma intercambiável com o antigo nos velhos tempos. Deixa pra lá então.

Breve história

2005: O ISOLINUX é escolhido para o carregador de inicialização do CD do Ubuntu, em vez do GRUB.

O GRUB foi sugerido anteriormente como um possível carregador de inicialização de substituição, mas essa abordagem foi tentada no live CD do Warty, onde observamos regressões significativas na capacidade de inicialização em comparação ao CD de instalação usando o ISOLINUX. Consideramos que aderir a soluções baseadas no ISOLINUX é a abordagem mais apropriada para uma versão com suporte a longo prazo.

- do CdBootloader - Ubuntu Wiki

2006: gfxboot foi adicionado; Isso suporta informações citadas em 2010.

No Dapper, adicionamos o gfxboot às nossas imagens de CD amd64 e i386, fornecendo um menu gráfico de inicialização amigável, como a primeira coisa que os usuários veem ao inicializar imagens de CD do Ubuntu nessas arquiteturas [...]

- do PortableGfxboot - Ubuntu Wiki

2009: O ISOLINUX (conhecido como SYSLINUX) ainda é usado para inicializar o CD do Ubuntu.

Os live CDs do Ubuntu ainda são inicializados usando o SYSLINUX, que não inclui suporte para iniciar o kernel no modo gráfico. Isso significa que os CDs ao vivo exibem um menu de inicialização gráfico, depois retornam ao modo de texto para iniciar o kernel e, em seguida, retornam normalmente ao modo gráfico mais tarde. Como resultado, os live CDs atualmente piscarão mais do que os sistemas instalados normais no momento da inicialização.

- a partir de BootGraphicsArchitecture - Ubuntu Wiki

2010: ISOLINUX foi usado, mas o GRUB 2 é necessário para o suporte à UEFI.

Os CDs atuais do Ubuntu usam o ISOLINUX, com as extensões gfxboot do SuSE implementando menus gráficos.

Isso provou ser bastante difícil de manter, com apenas uma pessoa no Ubuntu que entende o código de tema envolvido [...]

[Como] o GRUB 2 recentemente adicionou suporte gráfico de menu a montante, passando para o que tem o potencial de reduzir nossa carga de manutenção. Parece provável que precisaremos usar o GRUB 2 de qualquer maneira para oferecer suporte à EFI, e ter que configurar dois carregadores de inicialização diferentes em nossos CDs seria indesejável.

- do FoundationsTeam / Specs / MaverickCDBoot - Ubuntu Wiki

De acordo com o foundations-m-grub2-boot-framebuffer, precisaremos examinar nossa capacidade de oferecer suporte a menus de inicialização gráficos no EFI. O GRUB tem algum nível de suporte para gráficos UGA e GOP.

Isso requer o uso do GRUB para inicialização por CD, ou pelo menos ter o mínimo de configuração para suportá-lo.

- da FoundationsTeam / Specs / MaverickUefiSupport - Ubuntu Wiki

Diferenças encontradas ou não

Após um breve histórico, agora entendemos que:

  • O ISOLINUX foi o preferido porque o GRUB teve regressões na época (2005)

  • O ISOLINUX ainda era o preferido, apesar da falta de suporte para iniciar o kernel no modo gráfico que causa oscilações durante a transição de inicialização (2009)

  • O ISOLINUX foi usado com o gfxboot para fornecer menu gráfico, que não foi implementado ou não era possível com o GRUB naquela época (2010)

  • O GRUB foi adicionado posteriormente para inicializar com o suporte UEFI desde o Maverick (pós-2010)

Então, eu percebi que é não a diferença entre o GRUB e SYSLINUX que fez Ubuntu live CD incluem dois carregadores de inicialização.

Razões fundamentais

Na minha leitura, esses fatos de fato sugeriram que:

  1. O live CD do Ubuntu usa um gerenciador de inicialização específico que oferece melhor suporte para fornecer menu e tema gráficos e uma transição suave para mostrar o splash da inicialização. Nesse caso, SYSLINUX (precisamente ISOLINUX).

  2. Quando os sistemas UEFI se tornaram cada vez mais comuns, apenas o Ubuntu incluiu o GRUB (precisamente o GRUB 2) no CD ao vivo do Ubuntu para inicializar com o suporte UEFI.

Acima de tudo, acredito que isso responda à pergunta que eu tive por mais de um ano e essa resposta finalmente deixou minha curiosidade em dúvida.

TL; DR GRUB e ISOLINUX são ambos usados ​​no live CD do Ubuntu por razões exclusivas; Ambos foram incluídos no live CD para melhor experiência de inicialização e suporte de hardware.

clearkimura
fonte
Boa pesquisa. Informações sobre o grub antes de 2009/10 com o Ubuntu eram legadas do grub. O Ubuntu então mudou para o grub2 como padrão. Eu não acho que o legado do grub funcionou com UEFI, embora muitos recursos para que o legado do grub funcione com sistemas mais recentes muitas vezes foram feitos por uma distribuição.
oldfred
6

Esta é a minha resposta preliminar, que faz com que parte da minha pergunta seja entendida melhor, mas ainda não responde à pergunta em si.

Alguns esclarecimentos abaixo:

  • Diferentemente da imagem ISO de 32 bits, a imagem ISO de 64 bits inclui o GRUB e o SYSLINUX (isso é confirmado por /boot/grube os /isolinuxdiretórios são encontrados na imagem ISO)
  • O GRUB é mostrado quando a imagem ISO é inicializada em uma máquina compatível com EFI.
  • O SYSLINUX é mostrado quando a imagem ISO é inicializada em uma máquina somente BIOS.
  • Plymouth lida com a animação de ponto de progresso, independentemente do GRUB ou SYSLINUX ser mostrado (isso foi sugerido corretamente por @muru no primeiro comentário)

Experiência de inicialização : escrevi "compatível com EFI" porque até minha máquina implementou a EFI, desativei o recurso "Secure Boot" (1,2) para inicializar o Ubuntu (Xubuntu 14.04 no meu caso) a partir do Live USB.

  1. A versão de 64 bits do Xubuntu 14.04 pode inicializar enquanto o Secure Boot está ativado, depois de instalado no disco local (não no Live USB).

  2. A versão de 64 bits do Xubuntu 16.04 pode inicializar enquanto o Secure Boot está ativado.

Método tentado: Em vez de tentar com mídia física de DVD e inicializar a partir de uma unidade óptica externa, usei o software de virtualização (VirtualBox 4.3 no meu caso) para provar os casos acima.

  • O VirtualBox 4.3 já possui uma opção de alternar entre o sistema EFI e o BIOS. Pode ser encontrado em Máquina> Configurações> Sistema> Placa-mãe - Recursos estendidos: Ative o EFI (somente sistemas operacionais especiais) . Por padrão, a opção está desmarcada (3).

  • Uma máquina virtual deve ser criada usando a versão de 64 bits do VirtualBox, executando no sistema host de 64 bits. Uma imagem ISO do Xubuntu 14.04 de 64 bits é usada nas minhas tentativas a seguir.

  • Primeira tentativa: executei a imagem ISO com as configurações padrão (isso pressupõe um sistema BIOS). A máquina virtual mostrará fundo roxo com ícones na parte inferior. Este é o SYSLINUX .

  • Segunda tentativa: fechei a máquina e fui para as configurações, marquei a opção (3) para ativar o EFI. Usando a mesma imagem ISO, iniciei a máquina virtual novamente. Desta vez, levou algum tempo até aparecer GNU GRUB version...com texto monocromático. Este é o GRUB .

  • Nas duas tentativas, o processo de inicialização do processo mostrará uma animação de pontos em andamento durante a inicialização.

  • Esta seção da página no Ubuntu Wiki incluiu capturas de tela para descrever os dois casos acima.

Isenção de responsabilidade : Esta resposta pretende esclarecer a experiência de inicialização e o método experimentado. No entanto, esta não é a resposta final para minha pergunta. A resposta final será publicada separadamente, se eu conseguir responder a pergunta automaticamente.

clearkimura
fonte
Obrigado por esta informação! Eu consegui iniciar a inicialização a partir do usb somente ao usar rufos a imagem .iso que criou o syslinux na inicialização, mas não com o comando "dd <iso>" - o qual notei que ele não cria o syslinux. O problema é que o ubuntu do hdd tem grub. Então, eu não entendo, por que o grub funciona com HDD, mas não com USB.
Ransh 23/02
@ransh Você pode entender "qual método instala qual carregador de inicialização" e esse controle de qualidade não trata disso. Você deve fazer a sua como nova pergunta , pois o comentário não é para discussão.
clearkimura