自动登录运行 Busybox 的路由器

自动登录运行 Busybox 的路由器

我的路由器运行带有嵌入式 Busybox 的 Linux。我想自动登录并运行网络浏览器。这是/etc/inittab文件:

# BusyBox 的 /etc/inittab init(8) 配置
#
# 版权所有 (C) 1999-2004,作者:Erik Andersen
#
#
# 注意,BusyBox init 不支持运行级别。运行级别字段是
# BusyBox init 完全忽略了它。如果您需要运行级别,请使用 sysvinit。
#
#
# 每个条目的格式::::
#
# : 警告:该字段对于 BusyBox init 具有非传统含义!
#
# BusyBox init 使用 id 字段来指定控制 tty
# 要运行的指定进程。该字段的内容是
# 附加到“/dev/”并按原样使用。这个字段不需要
# 是唯一的,但如果不是,你可能会得到奇怪的结果。如果这
# 字段留空,它被完全忽略。另请注意,如果
# BusyBox 检测到串行控制台正在使用,则所有条目
# 包含非空 id 字段将不会运行。 BusyBox init 确实
# utmp 没有任何内容。我们不需要臭的 utmp。
#
# :运行级别字段被完全忽略。
#
# :有效操作包括:sysinit、respawn、askfirst、wait、once、
# 重新启动、ctrlaltdel 和关闭。
#
# 注意:askfirst 的行为就像重生一样,但在运行指定的之前
# process 它显示行“请按 Enter 激活此
# console." 然后等待用户按 Enter 键后再开始
# 指定进程。
#
# 注意:无法识别的操作(如 initdefault)将导致 init 发出
# 一条错误消息,然后继续处理它的业务。
#
# :指定要执行的进程及其命令行。
#
# 注意:BusyBox init 在没有 inittab 的情况下也能正常工作。如果没有 inittab
#发现,它有以下默认行为:
         ::一次:/usr/sbin/usbconsole
         ::sysinit:/etc/init.d/rcS
         ::ctrlaltdel:/sbin/reboot
         ::关机:/etc/init.d/rc.shutdown
         ::关机:/sbin/swapoff -a
         ::关机:/bin/umount -a -r
         ::重新启动:/sbin/init
#
# 如果它检测到 /dev/console _不是_ 串行控制台,它将
# 还运行:
# tty2::askfirst:/bin/sh
# tty3::askfirst:/bin/sh
# tty4::askfirst:/bin/sh
#
# 启动时系统配置/初始化脚本。
# 除非以单用户模式启动,否则首先运行。
#
#::sysinit:/etc/init.d/rcS
#::sysinit:/linuxrc

# 对选定的 tty 进行 /bin/sh 调用
#
# 请注意,下面我们在 shell 命令前面加上“-”来指示
# shell 它应该是一个登录 shell。通常这是由
# 登录,但由于我们在本例中绕过登录,BusyBox 可以让您这样做
#这个你自己...
#
# 在控制台上启动“askfirst”shell(无论是什么)

::首先询问:-/bin/sh

# 在 /dev/tty2-4 上启动“askfirst”shell
# tty2::askfirst:-/bin/sh
# tty3::askfirst:-/bin/sh
# tty4::askfirst:-/bin/sh

# 对选定的 tty 进行 /sbin/getty 调用
# tty4::respawn:/sbin/getty 38400 tty5
# tty5::respawn:/sbin/getty 38400 tty6

# 如何在串行线路上放置 getty 的示例(对于终端)
#::respawn:/sbin/getty -L ttyS0 115200 vt100

我的路由器运行嵌入了 Busybox 的 Linux。我想自动登录并在启动时运行网络浏览器。这是“/etc/inittab 文件”:
#
# 如何在调制解调器线路上放置 getty 的示例。
#::respawn:/sbin/getty 57600 ttyS2

# 重启init进程时要做的事情
#::重新启动:/sbin/init

# 重启前要做的事情
#::ctrlaltdel:/sbin/reboot
#::shutdown:/bin/umount -a -r
# ::shutdown:/sbin/swapoff -a

答案1

大概是一个轻微地迟到的答案,但我还是决定添加它。

悬挂在思科徽标(或其他任何东西)上的是预期的文件为空时的行为/etc/inittab。答案取决于您想要如何登录计算机。取消注释该行:

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

允许您在 上提供登录提示/dev/ttyS0。假设您已通过串行连接/dev/ttyS0(确保这实际上是您的接口,例如,在我的机器是的/dev/ttyPS0),自动登录可以通过添加:

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

这应该会自动将您登录为<user>。另一种方法是使用/sbin/getty定制的自动登录实用程序,如下所示这里

如果您想使用自动登录,例如/dev/tty3,可以修改示例。浏览器的自动启动将取决于 X 和您使用的浏览器。我会通过在末尾添加类似以下内容来修改您的目录中~/.profile的 或(通常):~/.bashrc${HOME}/home/<user>

startx
google-chrome-stable &

但请注意,如果您通过某些串行/USB 电缆连接到路由器,则这可能不起作用。

答案2

我没有要测试的路由器,但至少在 Buildroot + BusyBox + QEMU 上,以下 fstab 条目会自动让您登录并使一切看起来正常工作:

::respawn:-/bin/sh

正如我所解释的:如何在 Buildroot BusyBox init 中无需输入 root 用户名或密码而自动登录?

不要忘记领先-!否则,TTY 交互会有点中断,例如,您将无法使用 Ctrl + C 来终止前台程序。

如果您想以其他用户身份登录,您可以/bin/login按照以下提到的方式使用https://unix.stackexchange.com/a/434799/32558但您可能还想在其前面添加破折号,原因如下/bin/sh

::respawn:-/bin/login -f user0

相关内容