- 芯片平台: imx6ull
- 编译器: arm-linux-gnueabihf-gcc 4.9
- 内核版本: 4.1.15
- 根文件系统制作: buildroot + busybox
一般嵌入式产品要求开机后显示logo并自动启动应用程序, 但是根文件系统默认是进入登陆控制台. 这就需要进行必要的设置让系统自动登陆某账号并且运行相关应用
一. 启动流程
执行 /etc/inittab,
# Put a getty on the serial port
console::respawn:/sbin/getty -L console 0 vt100 # GENERIC_SERIAL
根据/etc/inittab规则, 启动时通过getty进行登陆(/etc/inittab文件详解)
# getty命令
Usage: getty [OPTIONS] BAUD_RATE[,BAUD_RATE]... TTY [TERMTYPE]
Open TTY, prompt for login name, then invoke /bin/login
-h Enable hardware RTS/CTS flow control
-L Set CLOCAL (ignore Carrier Detect state)
-m Get baud rate from modem's CONNECT status message
-n Don't prompt for login name
-w Wait for CR or LF before sending /etc/issue
-i Don't display /etc/issue
-f ISSUE_FILE Display ISSUE_FILE instead of /etc/issue
-l LOGIN Invoke LOGIN instead of /bin/login
-t SEC Terminate after SEC if no login name is read
-I INITSTR Send INITSTR before anything else
-H HOST Log HOST into the utmp file as the hostname
BAUD_RATE of 0 leaves it unchanged
可以看到, getty 默认做三件事
- 打开指定的TTY
- 提示要登陆的用户名
- 调用 /bin/login
/bin/login的用法
Usage: login [-p] [-h HOST] [[-f] USER]
Begin a new session on the system
-f Don't authenticate (user already authenticated)
-h HOST Host user came from (for network logins)
-p Preserve environment
二. 修改启动参数
我们要做的这两件事
2.1 getty不提示用户名
直接在getty后面添加 -n
2.2 编写登陆脚本并替换getty默认调用
新建脚本文件 /autologin.sh, 内容如下
#!/bin/sh
/bin/login -f root
通过chmod修改该文件权限
2.3 修改/etc/inittab
将原控制台脚本替换为如下, 保存重启就完成了自动登陆
# Put a getty on the serial port
# console::respawn:/sbin/getty -L console 0 vt100
console::respawn:/sbin/getty -n -l /autologin.sh console 0 vt100
登陆完成后, 系统执行/etc/profile中内容, 应用脚本加入到这里即可完成登陆自动启动