最近在移植Linux3.0.35内核时,发现在内核启动完时需要输入登录账号。
此处省略N多开机打印信息...
Synthesizing initial hotplug events
Setting the hostname to freescale
Mounting filesystems
cp: write error: No space left on device
cp: write error: No space left on device
cp: write error: No space left on device
cp: write error: No space left on device
cp: write error: No space left on device
cp: write error: No space left on device
mount: mounting usbfs on /proc/bus/usb failed: No such file or directory
starting pid 3114, tty '': '/etc/rc.d/rc_gpu.S'
starting pid 3120, tty '': '/etc/rc.d/rc_mxc.S'
arm-none-linux-gnueabi-gcc (Freescale MAD -- Linaro 2011.07 -- Built at 2016/08/10 09:20) 4.6.2 20160630 (prerelease)
root filesystem built on Sun, 6 Dec 2016 14:27:16 +0800
Freescale Semiconductor, Inc.
freescale login:
输入root就可以进入到根目录,这样很麻烦,而且暂时也不需要这功能,所以就打算取消掉。
从打印信息看肯定是运行了login命令,但在etc目录下搜索怎么也找不到任何关于login的信息...网上找了很久才发现原来还有getyy这命令会运行登录命令。
查看etc/inittab文件
# see busybox-1.00rc2/examples/inittab for more examples
::sysinit:/etc/rc.d/rcS
::respawn:/etc/rc.d/rc_mxc.S
::sysinit:/etc/rc.d/rc_gpu.S
::ctrlaltdel:/sbin/reboot
::shutdown:/etc/rc.d/rcS stop
::restart:/sbin/init
继续查看rc_mxc.S
#!/bin/bash
#
if grep -sq ttymxc0 /proc/cmdline; then
/sbin/getty -L ttymxc0 115200 vt100
elif grep -sq ttymxc1 /proc/cmdline; then
/sbin/getty -L ttymxc1 115200 vt100
elif grep -sq ttymxc2 /proc/cmdline; then
/sbin/getty -L ttymxc2 115200 vt100
elif grep -sq ttymxc3 /proc/cmdline; then
/sbin/getty -L ttymxc3 115200 vt100
else
sleep 1000
fi
在这里就运行了getty这个命令
想要跳过启动登录直接进入根目录,只需要修改etc/inittab即可
# see busybox-1.00rc2/examples/inittab for more examples
::sysinit:/etc/rc.d/rcS
#::respawn:/etc/rc.d/rc_mxc.S
ttymxc0::askfirst:-/bin/sh
::sysinit:/etc/rc.d/rc_gpu.S
::ctrlaltdel:/sbin/reboot
::shutdown:/etc/rc.d/rcS stop
::restart:/sbin/init
其中
::askfirst:-/bin/sh是以普通用户身份进入系统(bin前面有一横杆)
::askfirst:/bin/sh是以root身份进入系统
以上两种方法进入系统是没问题的,但在运行程序时不能使用 Ctrl+C 强制中断程序,因为console端口和我登录的默认端口是不一致的
所以还需要在前面加上ttymxc0
ttymxc0::askfirst:-/bin/sh