解决方法1:
在为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
3. 设置好上面的信息后,需要创建串口设备文件(当然你可以使用devfs,不推荐), 在命令行输入: cat /proc/devices
显示如下:
Character devices:
1 mem
2 pty
3 ttyp
204 S3C2410 tty
10 misc
108 ppp
180 usb
Block devices:
8 sd
31 mtdblock
找到主设备好为204的设备,然后创建设备文件mknod -m 666 /dev/ttySAC0 c 204 64
重新启动系统后,问题就解决了。
使用busybox建立嵌入式linux时遇到如题问题,解决如下:
解决方法2:
根据说明,这个问题是shell运行在/dev/console上造成的,可以让shell运行在/dev/tty1活/dev/ttyS0上解决。
我是这样解决的:
1、删除原有/dev/console这个设备节点
rm /dev/console
2、用tty1代替
mknod -m 600 tty1 c 4 1
ln -s /dev/tty1 /dev/console
==========================
busybox提示can't access tty.job control turned off 解决方法
/etc/inittab写法如下
对于X86:
tty1::respawn:/sbin/getty 38400 tty1
tty2::respawn:/sbin/getty 38400 tty2
对于ARM:
首先确保在/dev/ttyS0存在,否则自己在/linuxrc或/etc/rcS或/urs/local/rc.local中加入
ln -s /dev/tts/0 /dev/ttyS0
ln -s /dev/vc/0 /dev/tty0
ln -s /dev/vc/1 /dev/tty1
ln -s /dev/vc/2 /dev/tty2
注意:确保在执行下面的语句前在/dev下建立ttyS0
方法1:
/etc/inittab写入
console::sysinit:-/etc/rcS
ttyS0::respawn:/sbin/getty -L ttyS0 115200 vt100
方法2:
/etc/inittab写入
console::sysinit:-/etc/rcS
ttyS0::respawn:-/bin/sh
前者需要登陆验证,会出现提示输入用户名和密码,后者不会
方法3:
修改内核源码
在内核源码drivers/char/tty_io.c中将
noctty = 1
改为
noctty = 0
然后
/etc/inittab可以使用默认的,也可以写成:
console::sysinit:-/etc/rcS
console::respawn:/sbin/getty console 115200 ttyS0
阅读(7054) | 评论(0) | 转发(0) |