在为S3C2410或其他平台编译运行Busybox的时候,可能会遇到 can't access tty; job control turned off 的警告,网上关于这个错误的文章很多,完全照搬网上的方法是行不通的,需要找到解决问题的真正方法。
其实这个问题的实质是busybox系统没有使用真正的串口设备,而是使用虚拟控制台。所以我们可以按照以下步骤来解决:(以s3c2410为例)
1. cd busybox; makemenuconfig; 在init菜单里选择Support running commands with a controlling-tty,是busybox在真实的串口设备中运行命令行;
2. 启动嵌入式系统,修改/etc/inittab文件,使命令行运行在真实的串口设备中,
在/etc/inittab写入
console::sysinit:-/etc/rcS
ttySAC0::respawn:/sbin/getty -L ttyS0 115200 vt100
ttySAC0::respawn:/sbin/getty -L ttyS0 115200 vt100
3. 设置好上面的信息后,需要创建串口设备文件(当然你可以使用devfs,不推荐), 在命令行输入: cat /proc/devices
显示如下:
Character devices:
1 mem
2 pty
3 ttyp
204 S3C2410 tty
1 mem
2 pty
3 ttyp
204 S3C2410 tty
10 misc
108 ppp
180 usb
108 ppp
180 usb
Block devices:
8 sd
31 mtdblock
8 sd
31 mtdblock
找到主设备好为204的设备,然后创建设备文件mknod -m 666 /dev/ttySAC0 c 204 64
重新启动系统后,问题就解决了。