您的位置:首页 > 运维架构 > Linux

linux移植过程出现“can't open /dev/tq2440_serial0: No such file or directory”

2016-08-13 15:41 549 查看
解决办法:在文件系统中,/etc/inittab 中 tq2440_serial0::askfirst:-/bin/sh改为console::askfirst:-/bin/sh

原因:1)文件系统中/etc/inittab文件的作用:我们知道在Linux的内核被载入之后,机器就把控制权转交给内核,linux的内核启动之后,做了一些工作,然后找到根文件系统里面的init程序,并执行它,BusyBox会查/etc/inittab文件是否存在,如果此文件不存在,BusyBox会使用缺省的inittab配置,它主要为系统重引导,系统挂起以及init重启动设置缺省的动作,此外它还会为四个虚拟控制台(tty1到tty4)设置启动shell的动作。

 
         2) inittab文件中每一行的格式如下所示:(busybox的根目录下的example文件夹下有详尽的inittab文件范例)
    

               
  id:runlevel:action:process


          A: id在BusyBox的init中具有不同的意义。对BusyBox而言,id用来指定启动进程的控制tty。id并不是随便
              取名字的,这个名字要与/dev/目录下是否有对应的文件对应

          B: action有如下动作选项(部分省略):

             
 respawn:每当相应的进程终止执行便会重新启动

              askfirst:类似respawn,不过它的主要用途是减少系统上执行的终端应用程序的数量。它将会促使init                               在控制台上显示“Please press Enter to active this console”的信息,并在重新启动之前等待                             用户按下enter键

  所以因为系统初始化过程无法在/dev目录下建立

tq2440_serial0可执行目标(脚本),因此inittab中语句 

 
q2440_serial0::askfirst:-/bin/sh将无法执行,而因为一开始我已经在/dev目录中手动创建console的空文件脚本,命令行为# mknod console c 5 1 (注意其中主次设备号5,1是根据内核源码目录下/drivers/serial/samsung.c中有设定),所以当tty是console而不是tq2440_serial0时,其将找到设备文件,故可执行。 
   respawn    每当相应的进程终止执行便会重新启动

 
              askfirst类似respawn,不过它的主要用途是减少系统上执行的终端应用程序的数量。它将会促使init在控制台上显示“Please press Enter to active this console”的信息,并在重新启动之前等待用户按下enter键
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐