Здравствуйте! Я сейчас занимаюсь изучением книги Linux Device Drivers 3 и столкнулся с проблемой запуска простейшего символьного драйвера-примера из этой книги. Драйвер называется scull, его исходники лежат тут. Это офф ссылка данная в книге. Сборка прошла успешно, все файлы, получаемые при сборке модулей появились (sсull.ko + объектные файлы). Однако я не могу этот драйвер запустить. Всего существует два варианта запуска:
- скриптом scull.init с параметрами start, stop, restart и т.п. В этом случае я получаю следующую ошибку: Первая и последняя части выводящегося сообщения(до insmod и FAILED) выводятся скриптом.
sudo ./scull.init start Loading scull (loading file ./scull.o)insmod: error inserting './scull.o': -1 Invalid module format FAILED!
- Скриптами scull_load и scull_unload (для остановки драйвера). При попытке запуска scull_load я получаю следующую ошибку:
sudo ./scull_load insmod: error inserting './scull.ko': -1 File exists
По словам авторов книги скрипт scull.init заменяет функционал scull_load и scull_unload, поэтому я в основном сосредоточился на нем, но в принципе это не важно - лишь бы работало. Так как сборка прошла успешно, то проблема именно в скриптах, причем проблема скорее всего дурацкая, тк я совсем новичек и очень плохо разбираюсь в скриптах.
Помогите мне пожалуйста запустить этот драйвер и понять, что не так в этих скриптах!
P.S. В коде scull.init есть следующий участок:
#FIXME: it looks like there is no misc section. Where should it be?
MODDIR="/lib/modules/${KERNEL}/kernel/drivers/${SECTION}"
if [ ! -d $MODDIR ]; then MODDIR="/lib/modules/${KERNEL}/${SECTION}"; fi
Заранее спасибо!