Construa o kernel do Linux para inicializar no Terminal

1

Estou apenas começando no Kernel hacking e quero criar um kernel que não inicie uma GUI do OS, mas apenas vá para um prompt de comando do terminal. Esta é uma tentativa de depurar um problema que estou tendo. Não tenho certeza de quais configurações eu deveria estar olhando para tentar fazer isso. Eu fui incapaz de encontrar esta informação por conta própria, alguém poderia por favor me apontar na direção certa? Além disso, dicas sobre o grepping através dos arquivos do Kconfig para tentar encontrar essas informações no futuro também seriam apreciadas.

Obrigado.

    
por Tyler 23.02.2016 / 15:33

5 respostas

1

Isso não é determinado pelo kernel. É uma opção de boot. Se o seu sistema estiver usando systemd, use o comando systemctl para definir o destino de inicialização. Não contorne o comando systemd adequado e faça modificações no sistema de arquivos para fazer isso. Em vez disso, como root, use:

systemctl set-default multi-user.target

Você pode voltar ao seu destino da GUI com:

systemctl set-default graphical.target
    
por 23.02.2016 / 19:06
6

Qual GUI é iniciado na inicialização não depende da compilação do kernel, qualquer kernel pode fazer isso. Dependendo da sua distribuição, o ambiente GUI é carregado por algum gerenciador de serviços ou por um conjunto de scripts de inicialização.

No caso de systemd você pode remover /usr/lib/systemd/system/multi-user.target link e você será carregado em um chamado shell enviornment na inicialização.

    
por 23.02.2016 / 16:14
3

Uma resposta complementar se você estiver usando systemd (muitas distribuições recentes):

ln -sf /usr/lib/systemd/system/multi-user.target /etc/systemd/system/default.target

multi-user significa que você obterá um ambiente com terminais de login e a maioria dos serviços (portanto, logins SSH são possíveis), apenas sem o servidor gráfico. É um equivalente próximo de runlevel 3 em% sistemas baseados emsysvinit

    
por 23.02.2016 / 16:03
1

Para conseguir isso, você precisa definir seu initdefault para executar o nível 3. Você pode fazer isso da seguinte maneira:

cp /etc/inittab /etc/inittab.bak #good idea to make a backup of /etc/inittab  
sed -i 's/id:5:initdefault:/id:3:initdefault:/' /etc/inittab
    
por 23.02.2016 / 15:41
1

Tente adicionar o argumento de linha de comando do kernel init=/bin/bash e veja o que acontece ... (você provavelmente precisará usar o comando editar no grub , digitando e no momento certo durante a inicialização - quando exibe o menu grub )

    
por 24.02.2016 / 00:35