Como inicializar um sistema Linux sem servidor gráfico

4

Gostaria de saber o que deve ser feito para inicializar um sistema Linux em um ambiente CLI, sem iniciar também o servidor gráfico X.

Estou interessado em uma solução apenas temporária, idealmente

  • um comando ou uma série de comandos que podem ser executados no terminal do Grub (aquele que você obtém quando pressiona C );
  • ou adicionando uma entrada no menu do KDM onde você seleciona um ambiente de área de trabalho;

ao invés de uma mudança permanente no sistema (o comportamento padrão deve ser para inicializar com a interface gráfica padrão).

Conforme solicitado, estou adicionando o conteúdo relevante de /boot/grub2/grub.cgf

menuentry 'openSUSE 13.2' --class opensuse --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-179689d2-d2f3-4ec8-9cc3-01ec946c6b11' {
    load_video
    set gfxpayload=keep
    insmod gzio
    insmod part_msdos 
    insmod ext2
    set root='hd0,msdos5'
    if [ x$feature_platform_search_hint = xy ]; then
      search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos5 --hint-efi=hd0,msdos5 --hint-baremetal=ahci0,msdos5 --hint='hd0,msdos5'  179689d2-d2f3-4ec8-9cc3-01ec946c6b11
    else
      search --no-floppy --fs-uuid --set=root 179689d2-d2f3-4ec8-9cc3-01ec946c6b11
    fi
    echo    'Loading Linux 3.16.7-24-desktop ...'
    linux   /boot/vmlinuz-3.16.7-24-desktop root=UUID=179689d2-d2f3-4ec8-9cc3-01ec946c6b11   quiet quiet liveinstall lang=it_IT resume=/dev/disk/by-id/ata-WDC_WD5000BEVT-00A0RT0_WD-WXL1AC0U9725-part7 splash=silent quiet showopts vga=803
    echo    'Loading initial ramdisk ...'
    initrd  /boot/initrd-3.16.7-24-desktop
}
    
por Sekhemty 18.09.2015 / 14:37

4 respostas

11

O que você está pedindo não está completamente claro para mim, então eu lhe darei várias respostas possíveis, esperando encontrar o que você está interessado.

  1. Você pode desativar o servidor X na próxima inicialização acessando /etc/default/grub , encontrando a linha

    GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
    

    e modificando-o em

    GRUB_CMDLINE_LINUX_DEFAULT="text"
    

    Agora você precisa atualizar o grub,

    update-grub
    

    e você está feito.

Você pode fazer o vice-versa para reativar o servidor X.

  1. Você pode desativar o Gerenciador de Janelas: supondo que esteja usando systemd , o que a maioria das distribuições Linux faz atualmente,

    systemctl disable kdm
    

    ou gdm , lightdm , o que você usa.

  2. Se você acha que pode querer mudar de ideia, ocasionalmente, a inicialização de após foi iniciada, adicione ao arquivo /etc/grub.d/40_custom a seguinte entrada manual:

     menuentry 'Ubuntu (Text mode)' --class ubuntu {
     recordfail
     insmod gzio
     insmod part_msdos
     insmod ext2
     set root='hd0,msdos1'
     linux   /vmlinuz root=/dev/sda1 ro   text
     initrd  /initrd.img
     }
    

    (certifique-se de adaptar /dev/sda1 e msdos1 à configuração ). Isso produz apenas uma entrada no menu do GRUB2 que você pode querer usar ocasionalmente.

  3. Se tudo que você quiser é um login de texto, mesmo quando uma sessão gráfica tiver iniciado, lembre-se que a combinação Ctrl + Alt + F1 (ou F2 - F6 ) lhe dará exatamente isso, um login textual. Além disso, você pode desativar seu Gerenciador de Janelas dentro deste login textual,

    sudo systemctl stop gdm
    

    (ord kdm, lightdm, sddm, , ou o que você usa), e você tem um login puramente textual, sem sessão gráfica em execução.

  4. Por último, você pode querer recorrer a uma inicialização somente texto quando for atingido por algum erro inesperado em sua configuração gráfica (uma atualização que deu errado?), que não o pegou ( ie , sem ter preparado para solução 3 ). Se você está preso no prompt de comando no grub, você pode usar sugestão de Terdon modificado adequadamente, porque, como está, ele faz < strong> not funciona nos meus sistemas Debian e Arch Linux, mas faz o seguinte: em vez de acrescentar text à linha linux no Grub, como sugerido por Terdon, digite 3 (three); por exemplo,

    linux   /boot/vmlinuz-4.0.0-1-amd64 root=UUID=5e285652 ro  quiet 3
    

    Isso fará com que você inicie com sucesso no nível de execução 3, que é CLI com rede mas sem gerenciador de exibição.

por 18.09.2015 / 14:58
3

Bem, a abordagem mais simples para uma inicialização única para o modo texto seria selecionar a entrada do kernel que você quer inicializar quando na tela do GRUB2, teclar E , descer até linux line e adicione text ao final. Por exemplo:

linux   /boot/vmlinuz-4.0.0-1-amd64 root=UUID=5e285652 ro  quiet text

Em seguida, pressione F10 ou Ctrl + X para inicializar.

    
por 18.09.2015 / 14:52
1

Por favor, dê uma olhada neste artigo: Como usar o Grub2 para inicializar o Linux manualmente

Inicialização indireta por chainloading

Para o Grub1, se você quiser abrir um sistema operacional, que pode ser qualquer Dos, MS Windows, BSD, Solaris ou Linux, instalado na segunda partição do primeiro disco, os comandos do Grub Legacy serão Código:

root (hd0,1)
chainloader +1
boot

Para o Grub2, os comandos são ligeiramente diferentes e as alterações são destacadas em vermelho Código:

set root=(hd0,2)
chainloader +1
boot

Inicialização direta nomeando o kernel e os arquivos initrd

...

Digamos que se meu Linux tiver o subdiretório vmlinuz-2.6.18-6-686 e initrd.img-2.6.18-6-686 in /boot , pode-se inicializar o Linux com comandos Grub1 de Código:

root (hd0,1)
kernel  /boot/vmlinuz-2.6.18-6-686 root=/dev/sda11 ro 
initrd   /boot/initrd.img-2.6.18-6-686
boot

Para o Grub2, os comandos correspondentes serão Código:

set root=(hd0,2)
linux  /boot/vmlinuz-2.6.18-6-686 root=/dev/sda11  
initrd   /boot/initrd.img-2.6.18-6-686
boot
    
por 18.09.2015 / 14:46
1

Copie e cole em / etc / inittab:

# systemd uses 'targets' instead of runlevels. By default, there are two main targets:
#
# multi-user.target: analogous to runlevel 3
# graphical.target: analogous to runlevel 5
#
# To view current default target, run:
# systemctl get-default
#
# To set a default target, run:
# systemctl set-default TARGET.target
#

Por isso, você pode definir:

systemctl set-default multi-user.target

para executar apenas o CLI

    
por 10.05.2018 / 14:48