Adicione o item de menu do GRUB para inicializar no terminal

2

OK, é isso que estou tentando alcançar:

Tenha uma opção de menu separada no GRUB, para que eu possa selecioná-la e inicializar diretamente na linha de comando - ou seja: sem um gerenciador de desktop, mas deixando o item de menu existente intacto (para inicializar o Ubuntu).

Eu olhei em /etc/default/grub , mas parece que não há nada para fazer lá. E também /boot/grub/grub.cfg , que é gerado automaticamente, então não acho que seja uma boa ideia editá-lo diretamente.

Como devo fazer isso? Alguma idéia?

Atualização: A resposta existente (sugerindo que essa pergunta era uma duplicata) estava obsoleta. Para a solução correta, consulte a resposta aceita abaixo, que funciona lindamente. (pelo menos para 16.04+ como parece)

    
por Dr.Kameleon 28.04.2018 / 20:00

1 resposta

2

Um

Abra o arquivo /boot/grub/grub.cfg e encontre a seção que inicializa seu Ubuntu "regular".

Para mim, isso é:

menuentry 'Ubuntu' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-b8f25f1e-a169-4aaa-9f05-90e49359d865' {
        recordfail
        load_video
        gfxmode $linux_gfx_mode
        insmod gzio
        if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
        insmod part_gpt
        insmod ext2
        set root='hd0,gpt2'
        if [ x$feature_platform_search_hint = xy ]; then
          search --no-floppy --fs-uuid --set=root --hint-bios=hd0,gpt2 --hint-efi=hd0,gpt2 --hint-baremetal=ahci0,gpt2  b8f25f1e-a169-4aaa-9f05-90e49359d865
        else
          search --no-floppy --fs-uuid --set=root b8f25f1e-a169-4aaa-9f05-90e49359d865
        fi
        linux   /boot/vmlinuz-4.13.0-39-generic.efi.signed root=UUID=b8f25f1e-a169-4aaa-9f05-90e49359d865 ro  
        initrd  /boot/initrd.img-4.13.0-39-generic
}

Copie essa seção para um novo arquivo, digamos textmode.txt .

Dois

Vá para /etc/grub.d e crie (ou edite) o arquivo 40_custom .

Copie o seguinte "cabeçalho" para o arquivo:

#!/bin/sh
exec tail -n +3 $0
# This file provides an easy way to add custom menu entries.  Simply type the
# menu entries you want to add after this comment.  Be careful not to change
# the 'exec tail' line above.

Adicione o menuentry de textmode.txt ao arquivo, mas altere alguns valores (veja abaixo):

menuentry 'Ubuntu (text mode)' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-b8f25f1e-a169-4aaa-9f05-90e49359d865' {
        recordfail
        load_video
        gfxmode $linux_gfx_mode
        insmod gzio
        if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
        insmod part_gpt
        insmod ext2
        set root='hd0,gpt2'
        if [ x$feature_platform_search_hint = xy ]; then
          search --no-floppy --fs-uuid --set=root --hint-bios=hd0,gpt2 --hint-efi=hd0,gpt2 --hint-baremetal=ahci0,gpt2  b8f25f1e-a169-4aaa-9f05-90e49359d865
        else
          search --no-floppy --fs-uuid --set=root b8f25f1e-a169-4aaa-9f05-90e49359d865
        fi
        linux   /vmlinuz root=UUID=b8f25f1e-a169-4aaa-9f05-90e49359d865 systemd.unit=multi-user.target ro
        initrd  /initrd.img
}

Os valores que devem ser alterados são:

  • O texto menuentry : altere de 'Ubuntu' para 'Ubuntu (text mode)' (ou o que você quiser que apareça no menu)
  • A linha linux : altere para linux /vmlinuz root=UUID=... systemd.unit=multi-user.target ro . Certifique-se de que o UUID permaneça o mesmo.
  • A linha initrd : altere para /initrd.img

Verifique se você tem links simbólicos no diretório / de /vmlinuz e /initrd.img para as versões atuais. Este é o padrão, de qualquer forma.

Três

Executar

sudo update-grub

A diferença entre essa abordagem e esta resposta para uma pergunta muito semelhante é que em versões recentes do Ubuntu a linha

linux   /boot/vmlinuz-3.8.0-31-generic root=UUID=... ro quiet splash $vt_handoff

precisa ser substituído por

linux   /vmlinuz root=UUID=... systemd.unit=multi-user.target ro

Não tenho certeza do que recente significa, mas acho que é 16.04 quando o systemd foi introduzido.

    
por PerlDuck 28.04.2018 / 20:36