Como adicionar uma entrada de menu GRUB2 para inicializar o Ubuntu instalado em uma unidade USB?

23

Não estou perguntando como inicializar o LiveCD a partir de um USB.

Eu tenho 2 instalações Ubuntu, uma no disco rígido interno do meu computador e outra em uma unidade USB.

Existe uma maneira de adicionar uma entrada de menu GRUB2 (ao GRUB no meu disco rígido interno) para inicializar o Ubuntu OS que eu instalei na unidade flash USB e fazer com que essa mesma entrada de menu ainda funcione depois de atualizar o kernel do Linux na instalação USB?

kiri
fonte

Respostas:

33

Cada vez que você atualiza o kernel no externo, é possível executá-lo para atualizar a sub-rotina de inicialização no grub na unidade interna.

sudo update-grub

Mas você também pode adicionar uma estrofe de inicialização ao 40_custom do grub2 que inicializa a partição, não o kernel específico. O Ubuntu instala links em / (root) para inicializar a instalação mais recente. Ajuste o exemplo abaixo, se necessário, para sua unidade e partição. A unidade de inicialização com o grub é sempre hd0, mas outras unidades estão na ordem relatada do BIOS, que pode variar.

Edite com:

gksudo gedit /etc/grub.d/40_custom

em seguida, adicione:

menuentry "Install on sdb1" {
    set root=(hd1,1)
    linux /vmlinuz root=/dev/sdb1 ro quiet splash
    initrd /initrd.img
}

Enquanto os trabalhos acima funcionam, acho que a unidade pode mudar ao conectar uma unidade flash ou qualquer outro dispositivo USB. Então, eu estou convertendo para usar rótulos.

menuentry "Cosmic 18.10 on sdb12 test" {
    search --set=root --label cosmic_b --hint hd2,gpt12
    configfile /boot/grub/grub.cfg 
}
oldfred
fonte
1
Existe uma maneira de usar o UUID da partição em vez de /dev/sdb1?
kiri
sudo update-grub funcionou muito bem, obrigado!
Sergiy Migdalskiy
2
como você deve descobrir o que deve estar no lugar de (hd1,1)? de onde você tira esses números para que eles se encaixem? Talvez eu precise disso para corrigir
matt
4
O primeiro número é a unidade, conforme relatado pela BIOS. Mas a unidade de inicialização é sempre hd0, portanto, a ordem da unidade pode mudar. Então o segundo número é o número da partição. Onde sda3 é hd0,3 se você inicializar a partir da unidade que é sda. Mas se você inicializar a partir do sdb, pode ser hd1,3. Às vezes você apenas tem que experimentar.
02
sudo update-grub obras com a adição de entradas janelas bem
superl2
9

Descobri como usar o UUID da unidade, útil se você tiver várias unidades conectadas no momento da inicialização. Créditos ao oldfred por sua anotação /vmlinuxe /initrd.imglinks simbólicos.

Adicione isso ao arquivo /etc/grub.d/40_custom, substituindo UUID=XXXX-YYYYpela partição UUID (obtenha UUID com o comando blkid)

menuentry "Boot from USB Drive" {
    set root=UUID=XXXX-YYYY
    linux /vmlinuz root=UUID=XXXX-YYYY ro quiet splash
    initrd /initrd.img
}
kiri
fonte
8
Definitivamente, essa não é a resposta para a pergunta acima. Você deveria ter aceitado a resposta do oldfred.
Demis Palma #
1
@kiri: É uma prática recomendada copiar a resposta de outra pessoa e dar crédito a si mesmo. Sim, mesmo se você adicionou a parte UUID.
Lennart Rolland
2

Para inicializar a partir do Ubuntu Live USB, a entrada de menu /etc/grub.d/40_customdeve ter a seguinte aparência ( Substitua DRIVE_UUIDpelo uuid da sua partição ):

menuentry "Boot from LIVE USB Drive" {
   search --set=root --fs-uuid DRIVE_UUID
   linux ($root)/casper/vmlinuz boot=casper quiet splash --
   initrd ($root)/casper/initrd.lz
}

Para aplicar as alterações, execute:

sudo update-grub
wiktor.2200
fonte