Opa, eu preciso do nível de execução 1

10

Então, eu tenho um bug em um script no meu diretório init.d e na linha de fundo ... Não consigo inicializar completamente o pi.

Como posso inicializar no nível de execução 1 (modo de usuário único) para corrigir o erro?

Deac Karns
fonte
11
Confira neste link para diversas opções de raspberrypi.org/phpBB3/viewtopic.php?f=28&t=16185
Steve Robillard

Respostas:

16

Essa não é exatamente uma maneira de entrar no nível de execução 1, mas existe a opção de inicialização "modo de segurança" no firmware do raspberry Pi. Para habilitá-lo, você deve inserir um jumper entre os pinos 5 e 6 no cabeçalho P1 (GPIO) durante a inicialização.

Pinos de modo seguro

Se você fizer isso, o carregador de inicialização ignorará o config.txtarquivo (exceto a avoid_safe_modeopção que pode ser usada para desativar esse recurso) e tentará inicializar kernel_emergency.img(se disponível) em vez de kernel.img.

O padrão kernel_emergency.imgpossui uma initramfscompilação de emergência especial e ele inicializa neste sistema operacional baseado no busybox para que você possa corrigir os problemas manualmente no seu sistema operacional (ou alterar os parâmetros de inicialização do kernel para executar o nível de execução 1 na próxima inicialização). Lembre-se de correr syncantes de desligar uma vez rebootou shutdowncomandos podem não funcionar.

Krzysztof Adamski
fonte
Era exatamente o que eu estava procurando.
Deac Karns
5
  • Hit shift ao iniciar.
  • Pressione "e" para editar a configuração
  • guia até cmdline.txt
  • adicione no final da linha

    init=/bin/sh

  • pressione ok e, em seguida, Esc para inicializar ...... ele inicializará você em uma linha de comando

    # /etc/init.d/mountall.sh (isso vai fazer alguma coisa)

    # mount -n -o remount,rw / (isso remontará / para que você possa fazer alterações)

  • agora você deve poder editar o init.d config ......

  • quando você reiniciar novamente .... segure shift e remova o init = / bin / sh
Mike Sandler
fonte
Excelente! Eu encontrei instruções para iniciar sh, mas estava faltando o material de remontagem que eu precisava. Obrigado!
Richard Turner
3

Várias das outras respostas aqui agora estão incorretas:

  • O método de pino de jumper GPIO foi removido do SO upstream, portanto, só funciona agora se você estiver usando uma imagem NOOBS

  • A mudança de Jessie para o systemd quebra o init=/bin/shhack. Quando você faz isso, ele reclama,can't access tty: job control turned off

Felizmente, existe uma solução que funciona, que realmente oferece acesso único a um usuário: adicione um espaço e um 1no final de cmdline.txt, logo após o rootwaitparâmetro.

O menu de inicialização hold-Shift não existe na imagem padrão do Raspbian Jessie OS; portanto, você precisará fazer isso editando /boot/cmdline.txtem outro computador se não estiver usando a imagem NOOBS.

Warren Young
fonte
2

Não consegui encontrar uma maneira de forçar o pi a inicializar no nível de execução 1, então iniciei um disco ao vivo do fedora que eu tinha instalado e usei o terminal para remover o script em questão do diretório /etc/init.d

Deac Karns
fonte
1

Se você deseja acessar e alterar os arquivos de partição Linux do cartão SD no Windows, pode fazê-lo com um desses utilitários .

avra
fonte
Bem-vinda! Por favor, faça o tour e visite o centro de ajuda . Embora isso possa teoricamente responder à pergunta, é preferível incluir aqui as partes essenciais da resposta e fornecer o link para referência. De fato, estamos aplicando essa política : edite para que a resposta seja autônoma, caso o link seja quebrado no futuro. Se não for editado dentro de 48 horas, será convertido em Wiki da Comunidade.
Jacobm001
1
  1. Inicialize no nível de execução 1

    $ sudo init 1
    
  2. Após a inicialização no nível de execução 1

    $ passwd
    

NOTA: para executar o nível 1, altere o arquivo /etc/inittabde id:2:initdefault:para algo semelhante como:id:1:initdefault:

Lowreno
fonte
2
Isso é realmente inicializado no nível de execução 1? Quero dizer, dificilmente pode ser feito se a máquina não for inicializada, pode?
Bex
Não, certamente não é. O que é isso, é alterar o nível de execução em um sistema em execução.
Crusty Barnacle