rEFInd: inicialização muito lenta ao usar o EFI Stub Loader

1

Após uma re-instalação recente, me deparei com um problema muito estranho com o rEFInd: embora ele detecte tanto o GRUB quanto o vmlinuz na minha partição / boot, usar o último é extremamente lento.

Especificamente, imediatamente após selecionar "Inicializar vmlinuz-4.8.0-53-genérico do volume 191 MiB ext2", mostro uma tela preta com o seguinte texto:

Starting vmlinuz-4.8.0-53-generic
Using load options 'root=UUID=6641e1e2-6829-49cc-bf88-85ba5eefbff8 ro quiet splash nomodeset vt.handoff=7 initrd=\initrd.img-4.8.0-53-generic'

Após cerca de um minuto de espera (!), o Linux inicializa normalmente (e rapidamente).

Se eu selecionar o GRUB, por outro lado, sou levado ao menu de inicialização do GRUB e, depois de selecionar a opção padrão, o Linux imediatamente inicia a inicialização.

Qual poderia ser o motivo disso?

Minha configuração inclui um SSD (onde tenho o Linux e o Windows instalados) e um HDD (onde meu / home é), com uma partição ext2 / boot e a partição EFI (criada pelo Windows inicialmente) montada em / boot / efi. Aqui está meu / etc / fstab:

UUID=6641e1e2-6829-49cc-bf88-85ba5eefbff8 /               ext4    errors=remount-ro 0       1
UUID=3c804805-c41e-4b9d-af02-118b98858ae4 /boot           ext2    defaults        0       2
UUID=8EA5-5319  /boot/efi       vfat    umask=0077      0       1
UUID=bf088ec8-140d-4829-8de7-deb1d375b0e5 /home           ext4    defaults        0       2
UUID=E2A8CA84A8CA5727 /mnt/Windows    ntfs    defaults,umask=007,gid=46 0       0
UUID=3fb0b28d-87d8-4162-b469-1c157a4d00b0 none            swap    sw              0       0
    
por fstanis 24.09.2017 / 19:12

1 resposta

3

Sou o mantenedor do rEFInd.

Este é um problema no driver do sistema de arquivos. Por razões que não entendo completamente, alguns dos drivers do sistema de arquivos do rEFInd (especialmente o driver ext2_x64.efi ) são lentos em alguns computadores. Eu adicionei um cache readahead bruto para o código do driver há vários anos, e isso ajudou muito - no VirtualBox, a velocidade melhorou de cerca de 3 minutos de tempo de carregamento para algumas dezenas de segundos, IIRC. Alguns computadores continuam tendo problemas mesmo com esse cache.

A solução é mudar para outro sistema de arquivos. O driver ext4fs da rEFInd é muito mais rápido do que seu driver ext2 / 3fs, e os drivers Btrfs e ReiserFS são ainda mais rápidos. (Observe que o driver ext4fs pode ler ext2fs, mas fornecerá pouca ou nenhuma melhoria de velocidade dessa maneira; ele precisa ler um sistema de arquivos ext4 real para fornecer uma melhoria de velocidade.) Na pior das hipóteses, você pode usar FAT, que requer nenhum driver especial (é construído em todos os EFIs); ou em um Mac, você poderia usar o HFS +. (Há também um driver HFS + que vem com rEFInd, portanto, em princípio, você poderia usar o HFS + mesmo em um PC não Mac, mas há pouco ou nenhum sentido em fazê-lo.) Entretanto, mover-se para fora de um sistema de arquivos Linux padrão é desaconselhável. O Ubuntu depende de links simbólicos para algumas (mas não todas) atualizações do kernel, tornando o FAT uma má escolha; e embora o HFS + deva funcionar, ele não é oficialmente suportado pelo Ubuntu. Mesmo ReiserFS não é uma opção no instalador do Ubuntu, então eu evitaria isso para o Ubuntu. Isso deixa ext4fs e Btrfs.

A mudança é bastante direta, mas não é isenta de riscos - se você cometer um erro, seu sistema poderá ficar inutilizado. O procedimento básico é:

  1. Copie o novo driver do sistema de arquivos para o subdiretório rEFInd drivers ou drivers_x64 ( /boot/efi/EFI/refind/drivers ou /boot/efi/EFI/refind/drivers_x64 , provavelmente). Remover o antigo arquivo ext2_x64.efi desse local reduzirá o tempo de carregamento de rEFInd em cerca de um segundo.
  2. Desmontar o ESP ( /boot/efi ).
  3. Faça o backup da partição /boot . Você pode usar zip , tar , cp ou alguma outra ferramenta no nível de arquivo para isso.
  4. Desmontar /boot .
  5. Crie um novo sistema de arquivos na partição /boot .
  6. Digite sudo blkid /dev/sda{x} (alterando /dev/sda{x} para o identificador da sua partição /boot ) para saber seu novo valor UUID.
  7. Edite /etc/fstab para alterar o valor UUID e o tipo de sistema de arquivos para a partição /boot .
  8. Digite sudo mount -a para montar a nova partição /boot . (Ele provavelmente reclamará que não há% de ponto de montagem /boot/efi . Você pode ignorar esse aviso.)
  9. Restaure os arquivos /boot de backup para o novo sistema de arquivos /boot .

Neste ponto, você deve poder reinicializar e funcionará melhor. Um erro, no entanto, pode fazer com que o sistema não seja inicializado. Para reduzir esse risco, você pode copiar pelo menos um kernel funcional, um arquivo initrd e refind_linux.conf de /boot para /boot/efi e testar sua capacidade de inicializar o kernel a partir do ESP antes de começar. Isto lhe dará uma maneira alternativa de inicializar no caso de um problema. Se não houver problemas, você pode excluir o kernel do ESP quando terminar.

Para mais informações sobre os drivers do rEFInd, consulte sua documentação sobre este assunto:

link

    
por Rod Smith 07.10.2017 / 19:23