Линуксойдов помощи прошу! Загрузка модулей!

Nov 03, 2014 12:39

С NEC подключил тяжёлую артилерию и пересобрал ядро самостоятельно. Ничего сложного в этой задаче нет, всё делается по инструкции . После сборки радостно побежал включать систему, тыкать в USB, и ничего не произошло. Каково же было моё удивление, когда lsmod не вывел ничего! Хотя собранные модули я переписал, в нужную папочку. Начал разбираться. За загрузку модулей отвечает скрипт

/etc/init.d/modutils.sh

Содержимое скрипта такое:



#!/bin/sh
LOAD_MODULE=modprobe
[ -f /proc/modules ] || exit 0
[ -f /etc/modules ] || exit 0
[ -e /sbin/modprobe ] || LOAD_MODULE=insmod

if [ ! -e /sbin/depmod ]; then
[ -f /lib/modules/`uname -r`/modules.dep ] || LOAD_MODULE=insmod
else
[ "$VERBOSE" != no ] && echo "Calculating module dependencies ..."
depmod -Ae
fi

[ "$VERBOSE" != no ] && echo -n "Loading modules: "
(cat /etc/modules; echo; ) |
while read module args
do
case "$module" in
\#*|"") continue ;;
esac
[ "$VERBOSE" != no ] && echo -n "$module "
eval "$LOAD_MODULE $module $args >/dev/null 2>&1"
done
[ "$VERBOSE" != no ] && echo
exit 0

Как я понимаю делается deprobe -a , которое уже modprobe указывает где брать модули, а потом в цикле осуществляется их загрузка. Отрабатывает скрипт тихо, вот так:

mobilepro9xx:~# /etc/init.d/modutils.sh
Calculating module dependencies ...
Loading modules:

т.е. ничего не делает. Справедливости ради замечу, несколько моментов, совсем уж тупых:

mobilepro9xx:~# uname -r
2.6.34-mp900c
mobilepro9xx:~# ls /lib/modules/2.6.34-mp900c/
build modules.builtin modules.dep.bin modules.isapnpmap modules.seriomap modules.usbmap
kernel modules.builtin.bin modules.devname modules.ofmap modules.softdep source
modules.alias modules.ccwmap modules.ieee1394map modules.order modules.symbols
modules.alias.bin modules.dep modules.inputmap modules.pcimap modules.symbols.bin
mobilepro9xx:~# cat /lib/modules/2.6.34-mp900c/modules.dep
/lib/modules/2.6.34-mp900c/kernel/drivers/usb/serial/ch341.ko: /lib/modules/2.6.34-mp900c/kernel/drivers/usb/serial/usbserial.ko
....

Т.е. файл есть, он прописан, и даже работает.Сейчас после шаманств:
1.переписал файл /lib/modules/2.6.34-mp900c/modules.dep в /etc/modules/
2. Попробовал немного другой скрипт, взятый из rootfs Psiona

[скрипт]

#! /bin/sh
# /etc/init.d/modutils: loads the appropriate modules in `boot'.

PATH="/sbin:/bin:/usr/sbin:/usr/bin"

[ -f /proc/modules ] || exit 0
[ -e /sbin/depmod ] || exit 0

echo -n "Calculating module dependencies... "
depmod -a > /dev/null
echo "done."

# Loop over every line in /etc/modules.
echo -n 'Loading modules: '
(cat /etc/modules; echo) | # make sure there is a LF at the end
while read module args
do
case "$module" in
\#*|"") continue ;;
esac
echo -n "$module "
modprobe $module $args
done
echo

#
# Just in case a sysadmin prefers generic symbolic links in
# /lib/modules/boot for boot time modules we will load these modules
#
if [ -n "`modprobe -l -t boot`" ]
then
modprobe -a -t boot \*
fi

exit 0



начали грузится некоторые модули, и то я не понимаю как и почему загрузились именно эти модули?

mobilepro9xx:~/tmp# lsmod
Module Size Used by
nls_iso8859_1 3047 1
nls_cp437 4571 1
pxaficp_ir 7545 0
irda 159816 1 pxaficp_ir
isp116x_hcd 17727 0

Хотя

mobilepro9xx:~/tmp# modprobe -l
/lib/modules/2.6.34-mp900c/kernel/drivers/usb/serial/ch341.ko
/lib/modules/2.6.34-mp900c/kernel/drivers/usb/serial/option.ko
/lib/modules/2.6.34-mp900c/kernel/drivers/usb/serial/usbserial.ko
/lib/modules/2.6.34-mp900c/kernel/drivers/usb/host/isp116x-hcd.ko
/lib/modules/2.6.34-mp900c/kernel/drivers/usb/storage/usb-storage.ko
/lib/modules/2.6.34-mp900c/kernel/drivers/usb/class/usblp.ko
/lib/modules/2.6.34-mp900c/kernel/drivers/usb/mon/usbmon.ko
/lib/modules/2.6.34-mp900c/kernel/drivers/i2c/i2c-core.ko
/lib/modules/2.6.34-mp900c/kernel/drivers/i2c/algos/i2c-algo-bit.ko
/lib/modules/2.6.34-mp900c/kernel/drivers/i2c/i2c-dev.ko
/lib/modules/2.6.34-mp900c/kernel/drivers/i2c/busses/i2c-gpio.ko
... УЙМА дров

Такая же хрень, кстати обнаружена в Джорнада. Внимание вопрос:

1. Как загрузить ВСЕ модули в системе? И может я что-то не понимаю, ведь есть обязательные модули, а есть всомогательные (как например usbmon). Как осуществляется их разделение?
2. Какие могут быт причины не загрузки модулей? В общем-то получается, что загруженны какие-то случайные модули, а не весь глобальный их список.
3. Может я чего-то не учитываю, и механизм автозагрузки модулей работает хитрее, чем скрипт /etc/init.d/modules.sh?

UPD. Спасибо коллеге с работы, скрипт загрузки все модулей выглядит вот так:
modprobe -l | while read x; do m='basename "$x"'; m=${m%%.ko}; echo $m; modprobe $m; done

nec, linux

Previous post Next post
Up