深入解析Linux操作系统下光驱问题

来源:岁月联盟 编辑:zhuzhu 时间:2009-06-02
深入解析Linux操作系统下光驱问题内容简介:Linux操作系统下光驱的操作方式与Windows操作系统不同。这让一些刚接触Linux操作系统的人员非常的不方便。笔者现在对这问题作一个比较深入的解析,然后再谈谈Linux操作系统下光驱驱动器创建的一个错误。帮助大家提    Linux操作系统下光驱的操作方式与Windows操作系统不同。这让一些刚接触Linux操作系统的人员非常的不方便。笔者现在对这问题作一个比较深入的解析,然后再谈谈Linux操作系统下光驱驱动器创建的一个错误。帮助大家提高在Linux操作系统下对光驱的控制力度。希望大家看了这片文章后有不虚此行的感觉。

  一、开机后自动挂载光驱。

  辛辛苦苦安装完Linux操作系统后,想听听CD上的歌,享受一下成功的喜悦。却发现放进光驱后,CD竟然无法跟微软操作系统那样自动运行。这让系统管理员很是懊恼。原来在Linux操作系统下,默认情况下是不会自动挂载光驱的。系统管理员需要使用光驱的话,需要先把CD盘或者DVD盘放入光驱,然后采用命令mount来挂在光驱驱动器。使用完以后,用户按光驱上的弹出键也不会有任何反应。此时用户需要在命令行后使用unmount命令或者直接使用eject命令来弹出光驱。显然这对于需要频繁使用光驱的用户来说,操作起来非常的不方便。这有其他方便的处理方法吗?

  其实,系统管理员可以修改fstab配置文件,让系统在启动的时候就自动挂载光驱。其实这个配置很简单,只需要在fstab配置文件家加入一行,利用Mount命令挂载挂光驱即可。如此的话,每次Linux操作系统启动后,会在桌面上看到有一个光驱的图标。双击这个图标,就可以打开光驱并查看光驱中的内容。使用完以后,在这个图标上按右键,选择弹出。Linux操作系统就会自动弹出光盘。其实,这个弹出的过程包含两个步骤,操作系统会先卸载光驱驱动器,然后再把光盘弹出。在没有卸载光驱驱动器之前,用户是无法通过光驱上的弹出按钮弹出光盘的。这跟Windows操作系统不同。在Windows操作系统中,即使操作系统正在读取光盘中的内容,用户也可以按光驱上的弹出按钮强制弹出光驱。这虽然方便了用户的操作,但是会对光盘造成比较大的损害,而且也会造成操作系统读取文件的中断。严重的话,还会影响操作系统死机或者蓝屏。所以虽然Linux操作系统的这种保护机制操作起来比较麻烦,但是却可以保护光盘与操作系统文件的安全。笔者是比较推荐这种保护措施的。虽然在培训时可能多次向用户强调,必须要等到光驱停止运转后再弹出光驱,但是大部分性急的员工可能不会这么做。现在Linux操作系统采用了卸载这个方法(如果光驱正在使用中是无法卸载光驱驱动器)来强制实现这个保护措施,那么用户也只有乖乖的遵守了。

  为此笔者对Linux操作系统的这种光驱处理方法的评价是,对其默认情况下不主动挂载光驱的做法感到不解(不过可以通过修改fstab配置文件来实现自动挂载)。但是对其卸载光驱的保护措施表示肯定。这种保护措施能够最大程度上保障光盘的寿命与操作系统的稳定。

  二、挂载时启示设备繁忙错误。

  有时候在挂载光驱的时候,操作系统会提示设备繁忙的错误信息(device is busy)。但是,用户确实没有使用光驱。那么操作系统为什么还会提示这个错误信息呢?该如何处理呢?最简单的方法,就是重新启动操作系统,通常情况下就可以挂载光驱了。但是有时候问题严重的话,重新启动后仍然不能够解决问题。或者需要多次重新启动才可以重新挂载光驱。不过即使采用这种方法可以解决这个光驱挂载的错误,但是处理起来也很麻烦。如每次遇到这个问题时需要重新启动,这无疑会给用户的正常使用带来比较大的困扰。如果这台操作系统是服务器,同时运行了好几个应用服务。此时频繁的启动操作系统显然会跟用户的正常访问带来非常不利的影响。所以,重新启动操作系统不是解决这个问题的最好方法。为此要解决这个问题,还是需要从问题的根源出发。其实,从上面这个错误信息中我们系统管理员还是可以得到一些启示的。系统提示说,设备繁忙无法挂载光驱,那么就肯定是有用户在使用这个设备了。不过这个错误提示也说得有点不明不白。其实这个错误信息有可能是两个原因造成的。首先,Linux操作系统是一个多用户操作系统。虽然本人没有使用光驱,那么是否有其他用户在使用光驱呢?其次,在Linxu操作系统中,光驱驱动器是以文件的形式来管理的。如可能把光驱挂在到/mnt/cdrom上。如果在类似的目录中已经运行了某个进程,如挂载了软驱或者其他分区的话,那么也会遇到这个错误。

  所以说,并不是只要用户自己没有使用这个光驱,就可以正常的挂载与卸载了。还需要考虑其他用户对于这个设备或者目录的占用情况。那么除了重新启动操作系统外,是否还有其他的处理方法呢?答案当然是肯定的。笔者下面就以一个实际的案例模拟一下这个错误,然后谈谈笔者的处理方法。

  第一步:某个用户装入CD盘并挂载光驱驱动器。

  首先,笔者以一个普通用户的身份进入。然后把某张CD光盘放入到光驱中。载在命令行中使用mount命令把光驱挂载到操作系统中。光驱挂载后以后(如把光驱挂载到/mnt/cdrom目录下),可以利用cd命令进入到这个目录,并利用ls等命令来查看光盘中的文件列表等相关的内容。然后再同一个用户下,利用eject命令尝试弹出光驱,一切都正常。然后再把光盘插入光驱驱动器待用。注意,mount光盘挂载命令需要特权用户才可以使用。

  第二步:利用另一个帐户登陆进行eject操作。

  然后笔者再利用终端以第二个用户登录。然后在命令行下尝试使用eject命令弹出光驱,此时系统就会提示设备忙的错误信息。虽然此时第一个用户根本没有在使用这个光驱,但是只要第一个用户没有卸载这个光驱,这后续的用户就无法弹出这个光盘,重新放入新的光盘。
    如果读者有兴趣的话,还可以测试一下,在相关的目录中挂载其他的分区(如挂载软驱或者Windows分区)或者运行其他的进程。则此时挂载光驱或者弹出光驱时也会提示类似的错误信息。虽然此时光驱驱动器可能并没有真正在使用。此时系统管理员首先需要查出到底是谁在使用这个光驱驱动器。要实现这个目的其实也很简单,只需要使用fuser命令就可以找到谁在使用它。这个命令可以这么写:fuser /media/cdrom。

  如果友好一点的话,则可以通知这个用户,让其卸载错误挂载的分区或者关闭相关的进程。如果一时找不到用户的话,那么系统管理员也可以利用特权用户的身份进入到操作系统中,然后不管三七二十一,利用命令fuser带上可选项-k,来随意强制终止用户进程。因为特权用户有至高无上的权力。然后再使用eject或者mount命令来弹出光驱或者重新挂载光驱。通过这种方式,就可以在不重新启动操作系统的情况下,恢复光驱的正常运转。通常情况下,如果在使用光驱的过程中遇到这个错误信息的话,那么系统管理员或者用户可以不用去研究其具体发生的原因(有时候可能不是上面这两个原因所直接造成的)。只要使用这个方法,往往都可以奏效。所以利用fuser –k命令来解决这个问题,对症下药,疗效不错。

  另外有一个小问题,有些Linux操作系统在挂载光驱的时候,虽然顺利挂载上去了,但是查询相关内容的时候,会显示乱码。这主要是字符格式不对称所造成的。如果是自动挂载的话,则只需要在自动挂载的语句中,加入一个参数即可。在对光驱的管理中,Linux系统管理员需要牢记的一个原则即只有root用户才能够挂载光驱。无论是自动挂载还是手工挂载,这个原则都是适用的。