日期:2014-05-16  浏览次数:21537 次

linux驱动模块 卸载失败的问题
本意是想通过shell脚本实现u盘自动升级应用程序,
Assembly code

  cp /mnt/udisk1/app/* /app/
  sync
  killall -9 client 
  killall -9 mginit

  rmmod ps2
  rmmod ctlio
  rmmod mcp251xcan
  rmmod spi_ps2
  
  cd /lib/modules/usrmodules/
  insmod ctlio.ko
  insmod mcp251xcan.ko
  insmod spi_ps2.ko
  insmod ps2.ko
  cd /app
  ./mginit &
  cd ../



两个进程都有使用驱动模块,本想先cp u盘的应用程序到app目录,在kill掉进程后,在rmmod模块,在insomd后,在启动应用程序,
运行这段脚本后,终端会提示以下警告信息:
rmmod: remove 'ps2': Resource temporarily unavailable
rmmod: remove 'ctlio': Resource temporarily unavailable
rmmod: remove 'mcp251xcan': Resource temporarily unavailable
insmod: can't insert 'ctlio.ko': File exists
insmod: can't insert 'mcp251xcan.ko': File exists
insmod: can't insert 'ps2.ko': File exists

但是如果上面脚本的步骤,通过在shell终端中手动一步一步输入,则不会出现任何警告信息?
不知道这两种方式有神马区别,怎样实现从u盘自动更新进程文件呢??


------解决方案--------------------
这样rmmod删除得不够彻底,在已挂载的目录下还有相应的驱动名,所以后面是加载不上的
------解决方案--------------------
驱动如果在使用中你是删除不掉的,只能强行删进程。