我正在开发一个嵌入式 Linux 系统(kernel-5.10.24),使用 busybox 作为init
.
内核日志在串行控制台中被禁用,无需console=
在内核命令行中进行设置。由 启动的 init 脚本的日志也是如此/etc/init.d/rcS
。
现在/etc/inittab
设置如下,我想启用root自动登录系统。
# /etc/inittab
#
# Copyright (C) 2001 Erik Andersen <[email protected]>
#
# 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: <id>:<runlevels>:<action>:<process>
#
# id == tty to run on, or empty for /dev/console
# runlevels == ignored
# action == one of sysinit, respawn, askfirst, wait, and once
# process == program to run
# now run any rc scripts
::sysinit:/etc/init.d/rcS
# Put a getty on the serial port
##OK##::respawn:/sbin/getty -L ttyS0 115200 vt100
ttyS0::respawn:-/bin/login -f root
#no login
#::respawn:-/bin/sh
# Stuff to do for the 3-finger salute
::ctrlaltdel:/sbin/reboot
# Stuff to do before rebooting
null::shutdown:/etc/init.d/rcK
null::shutdown:/bin/umount -a -r
null::shutdown:/sbin/swapoff -a
ttyS0::respawn:-/bin/login -f root
我在 中设置了行/etc/inittab
,但在串行控制台中看不到登录提示。
那么在内核命令行没有设置有效控制台的情况下,如何在正确的串行控制台上自动登录系统呢?
或者有没有办法在用户空间中动态设置系统控制台(不使用getty -L
)?
答案1
经过谷歌和测试的多次搜索,我终于从这个链接中找到了第一个问题的答案https://www.vjiot.net/typecho/index.php/archives/50/, 它来了。
在 中/etc/inittab
,使用以下行
ttyS0::respawn:/sbin/getty -L ttyS0 115200 -n -l /bin/autologin
并创建/bin/autologin
如下,
#!/bin/sh
/bin/login -f root
通过这些更改,root 自动登录就完成了!
现在,我仍然需要找出第二个问题的答案:“busybox 的 init 是如何设置/使用控制台的,是否可以在用户空间中动态设置控制台?”