Obtendo a consistência da ordem de inicialização do UEFI BIOS ao conectar / removendo USB?

2

Estou tentando usar um USB para determinar qual sistema operacional deve ser carregado; Ou seja, quando o USB está conectado, o Windows deve carregar, e quando não estiver conectado, o Ubuntu deve carregar. A inicialização da respectiva mídia funciona bem, mas estou tendo problemas com as configurações de ordem de inicialização do BIOS. Quando o USB está conectado, consigo definir a ordem de inicialização para:

  1. USB (grub)
  2. SSD (grub)
  3. Inicialize diretamente no Ubuntu
  4. Inicialize diretamente no Windows

e esse pedido é consistente, desde que o pen drive esteja inserido. No entanto, quando faço os seguintes passos:

  1. [com o computador desligado] Desanexar USB.
  2. Ligue o computador e inicialize no Ubuntu ou no Windows.
  3. Desligue o computador.
  4. Inserir USB.
  5. Ligue o computador.

a ordem de inicialização muda para

  1. SSD (grub)
  2. Inicialize diretamente no Ubuntu
  3. Inicialize diretamente no Windows
  4. USB (grub)

Existe alguma maneira de evitar o BIOS alterando a ordem de inicialização, ou explicitamente dizer-lhe qual posição USB procurar?

Minha placa-mãe é uma ASUS Z97-A, com o utilitário ASUS BIOS da ASUS, versão 2.16.1240.

Me ajude usuários de superusuários, você é minha única esperança.

    
por hassanbot 20.03.2016 / 18:07

1 resposta

3

Infelizmente, não há nenhuma padronização em como as EFIs lidam com esse tipo de coisa, mas o comportamento que você descreve é bastante comum, na minha experiência. O problema é que as EFIs são muito "mais inteligentes" na identificação de dispositivos de inicialização do que as BIOS, e muitas EFIs removem entradas de inicialização inválidas quando são identificadas como tal. Assim, quando você desconectar uma unidade USB e iniciar o computador novamente, ele notará que há uma entrada de inicialização inválida para a unidade USB e a excluirá da lista de inicialização. Não conheço nenhuma solução in-EFI para esse tipo de problema.

Isso não quer dizer que não há soluções alternativas, no entanto. Especificamente, você pode instalar um gerenciador de inicialização EFI em seu disco interno que faça o que quiser - ou seja, inicializar o Windows quando a unidade flash USB não estiver conectada e inicializar o Ubuntu a partir da unidade USB quando estiver conectado. Em seguida, deixe este gerenciador de inicialização definido como o programa de inicialização padrão.

Infelizmente, o GRUB do AFAIK Ubuntu não pode ser configurado dessa forma, então você precisa procurar em outro lugar. A regra que você quer seguir é simples o suficiente para que um programa realmente simples possa ser escrito para fazer o trabalho, mas o que eu sei pode fazer é muito mais complexo: o gerenciador de inicialização do rEFInd. Eu recomendo que você tente instalá-lo e configurá-lo da seguinte maneira:

  1. Inicialize no Ubuntu.
  2. Verifique se o que (se houver) está montado em /boot/efi . (Digitar df -h permitirá que você veja as partições atualmente montadas.)
  3. Se /boot/efi corresponder a uma partição na unidade USB, desmonte-a e monte a partição do sistema EFI (ESP) do seu disco rígido. (Como observado no link, o ESP é uma partição FAT com um código de tipo específico. Talvez seja necessário rastreá-lo com gdisk , parted ou GParted.)
  4. Instale o pacote Debian rEFInd na página de downloads do rEFInd. Não instale o PPA; instale o pacote Debian (ou use o arquivo .zip e execute refind-install manualmente).
  5. Edite /boot/efi/EFI/refind/refind.conf e faça as seguintes alterações:
    • Opcionalmente, defina timeout -1 . Se isso estiver definido, o menu rEFInd não aparecerá, a menos que você mantenha pressionada uma tecla enquanto o rEFInd inicia. Você pode querer adiar a configuração até que você tenha testado a instalação.
    • Defina default_selection "vmlinuz,Microsoft" . Isso faz com que o rEFInd inicialize o Linux se encontrar um kernel Linux e Windows se o kernel do Linux não estiver presente - isto é, se a unidade USB do Linux estiver desconectada. A substituição de vmlinuz por grub também deve funcionar e vale a pena tentar se vmlinuz não funcionar.
  6. Reinicialize e teste o sistema.

Se você tentar sem definir o valor timeout , deverá ver o menu rEFInd e destacar a opção Windows (que pode ser a única opção) se a unidade USB estiver desconectada; mas a opção do Ubuntu deve ser destacada por padrão se a unidade USB estiver conectada. Se isso funcionar, definir timeout -1 causará uma inicialização direta no sistema operacional desejado.

Se o rEFInd não detectar a instalação do Ubuntu com a unidade USB conectada, tente pressionar Esc. Se uma opção do Ubuntu aparecer, tente definir scan_delay 1 (ou possivelmente algum valor mais alto).

O maior problema com o uso do rEFInd é que haverá um atraso quando ele for inicializado, varrer os sistemas operacionais e assim por diante. Isso deve levar apenas um ou dois segundos quando a unidade USB não estiver conectada e talvez outros dois ou três segundos quando a unidade USB estiver conectada. Um gerenciador de inicialização mais especializado para lidar com essa tarefa específica pode ser capaz de fazer o trabalho com menos de um atraso, mas eu não sei de qualquer programa desse tipo.

    
por 21.03.2016 / 15:27

Tags