Login automático no roteador executando o Busybox

2

Meu roteador executa o Linux com o Busybox incorporado. Eu gostaria de autologin e executar um navegador da web. Aqui está o arquivo /etc/inittab :

# /etc/inittab init(8) configuration for BusyBox
#
# Copyright (C) 1999-2004 by Erik Andersen 
#
#
# Note, BusyBox init doesn't support runlevels.  The runlevels field is
# completely ignored by BusyBox init. If you want runlevels, use sysvinit.
#
#
# Format for each entry: :::
#
# : WARNING: This field has a non-traditional meaning for BusyBox init!
#
#   The id field is used by BusyBox init to specify the controlling tty for
#   the specified process to run on.  The contents of this field are
#   appended to "/dev/" and used as-is.  There is no need for this field to
#   be unique, although if it isn't you may have strange results.  If this
#   field is left blank, it is completely ignored.  Also note that if
#   BusyBox detects that a serial console is in use, then all entries
#   containing non-empty id fields will _not_ be run.  BusyBox init does
#   nothing with utmp.  We don't need no stinkin' utmp.
#
# : The runlevels field is completely ignored.
#
# : Valid actions include: sysinit, respawn, askfirst, wait, once,
#                                  restart, ctrlaltdel, and shutdown.
#
#       Note: askfirst acts just like respawn, but before running the specified
#       process it displays the line "Please press Enter to activate this
#       console." and then waits for the user to press enter before starting
#       the specified process.
#
#       Note: unrecognised actions (like initdefault) will cause init to emit
#       an error message, and then go along with its business.
#
# : Specifies the process to be executed and it's command line.
#
# Note: BusyBox init works just fine without an inittab. If no inittab is
# found, it has the following default behavior:
         ::once:/usr/sbin/usbconsole
         ::sysinit:/etc/init.d/rcS
         ::ctrlaltdel:/sbin/reboot
         ::shutdown:/etc/init.d/rc.shutdown
         ::shutdown:/sbin/swapoff -a
         ::shutdown:/bin/umount -a -r
         ::restart:/sbin/init
#
# if it detects that /dev/console is _not_ a serial console, it will
# also run:
#         tty2::askfirst:/bin/sh
#         tty3::askfirst:/bin/sh
#         tty4::askfirst:/bin/sh
#
# Boot-time system configuration/initialization script.
# This is run first except when booting in single-user mode.
#
# ::sysinit:/etc/init.d/rcS
# ::sysinit:/linuxrc

# /bin/sh invocations on selected ttys
#
# Note below that we prefix the shell commands with a "-" to indicate to the
# shell that it is supposed to be a login shell.  Normally this is handled by
# login, but since we are bypassing login in this case, BusyBox lets you do
# this yourself...
#
# Start an "askfirst" shell on the console (whatever that may be)

::askfirst:-/bin/sh

# Start an "askfirst" shell on /dev/tty2-4
# tty2::askfirst:-/bin/sh
# tty3::askfirst:-/bin/sh
# tty4::askfirst:-/bin/sh

# /sbin/getty invocations for selected ttys
# tty4::respawn:/sbin/getty 38400 tty5
# tty5::respawn:/sbin/getty 38400 tty6

# Example of how to put a getty on a serial line (for a terminal)
#::respawn:/sbin/getty -L ttyS0 115200 vt100

My router runs Linux embedded with Busybox. I'd like to autologin and run a web browser on boot. Here is the '/etc/inittab file':
#
# Example how to put a getty on a modem line.
#::respawn:/sbin/getty 57600 ttyS2

# Stuff to do when restarting the init process
# ::restart:/sbin/init

# Stuff to do before rebooting
# ::ctrlaltdel:/sbin/reboot
# ::shutdown:/bin/umount -a -r
# ::shutdown:/sbin/swapoff -a
    
por unixnewbie 16.04.2015 / 01:43

2 respostas

2

Provavelmente uma resposta tardia ligeiramente , mas decidi adicioná-la assim mesmo.

A suspensão no logotipo da Cisco (ou qualquer outra coisa) é o comportamento esperado no caso em que o arquivo /etc/inittab está vazio. A resposta depende de como você deseja fazer o login na máquina. Descomentando a linha:

::respawn:/sbin/getty -L ttyS0 115200 vt100

permite que você forneça um prompt de login em /dev/ttyS0 . Supondo que você tenha se conectado via serial /dev/ttyS0 (tenha certeza de que essa é sua interface, por exemplo, na minha máquina é /dev/ttyPS0 ), o login automático pode ser realizado adicionando:

ttyPS0::respawn:/bin/login -f <user>

Isso deve fazer o login automático como <user> . A outra abordagem que usa /sbin/getty e o utilitário de login automático customizado é descrita aqui .

Se você quiser fazer login automaticamente usando, por exemplo, /dev/tty3 , pode modificar o exemplo. O início automático do navegador dependerá do X e do navegador que você usa. Eu modificaria o ~/.profile ou ~/.bashrc no seu diretório ${HOME} (normalmente /home/<user> ) adicionando no final algo como:

startx
google-chrome-stable &

Observe, no entanto, que se você estiver conectado ao roteador por algum cabo serial / USB, isso pode não funcionar.

    
por 01.04.2018 / 10:50
0

Eu não tenho um roteador para testar, mas pelo menos no Buildroot + BusyBox + QEMU a seguinte entrada fstab faz o login automaticamente e faz tudo parecer funcionar normalmente:

::respawn:-/bin/sh

como expliquei em: Como se autenticar automaticamente sem digitar o nome de usuário root ou a senha no init do Buildyot BusyBox?

Não se esqueça dos principais - ! Caso contrário, a interação do TTY é um pouco quebrada, por exemplo, você perde a capacidade de fazer Ctrl + C para matar o programa em primeiro plano.

Se você quiser fazer login como outro usuário, use /bin/login , conforme mencionado no link , mas você provavelmente quer adicionar o traço na frente dele, pelo mesmo motivo que /bin/sh :

::respawn:-/bin/login -f user0
    
por 11.10.2018 / 08:37