?

Log in

No account? Create an account
  Journal   Friends   Calendar   User Info   Memories
 

Электронный миссионер

3rd November, 2014. 12:39 pm. Линуксойдов помощи прошу! Загрузка модулей!

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

/etc/init.d/modutils.sh

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

modutils.shCollapse )

Как я понимаю делается 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

Read 3 Notes -Make Notes

Back A Day - Forward A Day