我的路由器运行带有嵌入式 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