Iniciando Ubuntu em modo texto
Atualização (11/06/2011): no Ubuntu 11.04, a configuração para iniciar em modo texto é bem simples:sudo vi /etc/default/grub # Trocar a linha abaixo de GRUB_CMDLINE_LINUX_DEFAULT="quiet splash" # para GRUB_CMDLINE_LINUX_DEFAULT="text"Depois, atualizar o grub e reiniciar:
sudo update-grub sudo rebootO que fizeram é basicamente a solução que sugeri no texto original - criar e checar por parâmetro específico na carga do gdm, via /etc/init/gdm.conf. Já facilita bastante a vida (não precisa mais criar entradas novas no grub), mas ainda não é possível trocar estados sem reiniciar a máquina...
Para alterar o modo de inicialização do Linux pra não carregar o ambiente gráfico (por exemplo, quando precisar de uma série de boots pra testar mudanças de configuração de memória), temos que trocar seu run level para 3:
sudo vi /etc/init/rc-sysinit.conf # localizar e alterar o valor da linha abaixo: env DEFAULT_RUNLEVEL=3
Na próxima carga do sistema operacional, o nível indicado será acatado. Os valores possíveis e seus significados:
| 0 | System Halt | Usar o comando shutdown -h* |
| 1 | Rescue Mode | Single user, interface texto, somente login como root |
| 2 | Graphic Multi-User | Modo default de operação |
| 3 | Text Multi-User | Ambiente funcional, mas sem carregar X (Gnome, KDE, etc.) |
| 4 | Não utilizado | |
| 5 | Não utilizado | |
| 6 | System Restart | Usar o comando shutdown -r* |
Se já estiver com o sistema carregado e quiser trocar o modo de execução sem reiniciar a máquina, o comando é esse:
sudo telinit 3
Essa é a teoria geral. No Ubuntu (e outros derivados do Debian), especificamente, o modo 3 comporta-se da mesma forma que o 2, que é o default!
Achei várias sugestões pra mudar esse comportamento, tentei várias, nenhuma foi satisfatória. Mesmo colocando regras explícitas pra que o gdm (Gnome Desktop Manager) não seja carregado, isso não aconteceu.
O que fiz foi criar uma nova opção no boot loader do Ubuntu, grub, passando um parâmetro específico, que é checado no script do upstart, mecanismo responsável pela carga do sistema e seus serviços.
- 1. Habilitar exibição das opções de boot. O padrão do grub é não exibir o menu de opções. Então, se você tiver certeza que sempre ficará com o SHIFT pressionado durante sua carga (logo depois da exibição do splash screen da BIOS da máquina), não precisa executar esse passo. Eu recomendo, pelo menos nas primeiras vezes...
sudo vi /etc/default/grub # comentar a linha abaixo: GRUB_HIDDEN_TIMEOUT=0
- 2. Criar a nova opção de inicialização. A versão do grub disponível no Ubuntu 10 mudou um tanto a estrutura dos arquivos de configuração (pra quem conhece, não existe mais menu.lst). As opções ficam no arquivo /boot/grub/grub.cfg, mas não podemos editá-lo - devemos incluir nosso script em outro arquivo, /etc/grub.d/40_custom.
sudo vi /etc/grub.d/40_custom # incluir as linhas abaixo menuentry "Ubuntu, with Linux 2.6.32-22-generic (text-only mode)" { set root='(hd0,5)' linux /boot/vmlinuz-2.6.32-22-generic \ root=UUID=69093b74-33e4-4063-a1fc-f06be98bc49f ro text-mode initrd /boot/initrd.img-2.6.32-22-generic }
Gerei o bloco acima a partir da entrada recovery do /boot/grub/grub.cfg. O importante é o "text-mode" inserido na penúltima linha - esse é o parâmetro que será checado no script de carga do ambiente gráfico.
Pra constar, o bloco que usei como base:
menuentry 'Ubuntu, with Linux 2.6.32-22-generic (recovery mode)' --class ubuntu --class gnu-linux --class gnu --class os { recordfail insmod ext2 set root='(hd0,5)' search --no-floppy --fs-uuid --set 69093b74-33e4-4063-a1fc-f06be98bc49f linux /boot/vmlinuz-2.6.32-22-generic \ root=UUID=69093b74-33e4-4063-a1fc-f06be98bc49f ro single initrd /boot/initrd.img-2.6.32-22-generic }
Com a nova opção criada, atualizar o arquivo lido pelo grub executando o comando:
sudo update-grub
- 3. Checar existência do parâmetro text-mode. Só falta verificar se o valor esperado foi passado e, se for o caso, não carregar o gdm.
Pra isso, aproveitei a checagem que o upstart já faz - se estiver iniciando em modo recovery, a carga do gdm é cancelada. Só precisamos ajustar o teste existente:
sudo vi /etc/init/gdm.conf # encontrar o trecho abaixo e incluir o valor "text-mode" na comparação: case "${ARG}" in (-s|s|S|single) plymouth quit || : # We have the ball here exit 0 ;; # fica assim: case "${ARG}" in (-s|s|S|single|text-mode)
Curiosidade: o plymouth é o responsável pelo gráfico que mostra uma barra de progresso ou animação similar, indicando a carga do sistema. Se essa instrução "quit" não fosse executada, o terminal usado pelo modo gráfico (Ctrl+Alt+F7) ficaria direto executando a tal animação.
É isso, tudo configurado, agora é só reiniciar o sistema e selecionar a nova entrada.
Funciona, mas não é o mundo ideal por duas razões: não conseguimos "trocar" de estado sem reiniciar a máquina (o que seria possível se a troca de runlevel fosse suficiente), e também estamos atrelados ao kernel indicado na nova entrada do grub - quando uma nova versão for instalada, esse script deve ser ajustado, ou continuará usando o kernel antigo.
Referências:
- http://ubuntuforums.org/showthread.php?t=1195275
- http://ubuntuforums.org/showthread.php?t=664199
- http://www.debian-administration.org/articles/212
- http://www.debianadmin.com/debian-and-ubuntu-linux-run-levels.html
- http://www.debian.org/doc/debian-policy/#contents
- http://www.linuxquestions.org/questions/linux-server-73/ubuntu-11-04-text-mode-882981/
Abraço!
Posted by Fabio Mazanatti
at
May 08, 2010 - 18:30
Tags: linux