Пытаюсь собрать initrd для ядра std-def из-под ядра el-smp. Проблема в том, что не добавляется модуль scsi_mod т.к. в el-smp он встроенный. Не работает даже MODULES_PRELOAD="scsi_mod" make-initrd -v -k 3.3.5-std-def-alt1 с сообщением "add-module: Builtin module "scsi_mod""
Created attachment 5457 [details] make-initrd -v -k 3.3.5-std-def-alt1 bug-report
Проблема в следующем: # depinfo --set-version 3.3.5-std-def-alt1 scsi_mod builtin scsi_mod # find /lib/modules/3.3.5-std-def-alt1/ -name "scsi_mod.ko" /lib/modules/3.3.5-std-def-alt1/kernel/drivers/scsi/scsi_mod.ko т.е. depinfo работает некорректно
Вот не оставляют шансов создатели kmod полюбить их. kmod_module_get_initstate() лезет в /sys если модуля нет в modules.builtin. Все функции для работы с базой modules.builtin приватные. kmod_module_get_path() возвращает неинициализированный указатель если модуль builtin. И нет никаких путей получить эту информацию, хотя она есть. Предётся вернуть старый код, который делает отдельный а-ля: grep '/modname.ko$' modules.builtin.
А не мог бы ты выполнить на этой машине: $ runas modinfo /bin/kmod -k 3.3.5-std-def-alt1 scsi_mod $ modinfo -k 3.3.5-std-def-alt1 scsi_mod ?
(В ответ на комментарий №5) > А не мог бы ты выполнить на этой машине: > > $ runas modinfo /bin/kmod -k 3.3.5-std-def-alt1 scsi_mod > $ modinfo -k 3.3.5-std-def-alt1 scsi_mod У меня на этой машине не был установлен kmod. Если установить, то получим следующее: # runas modinfo /bin/kmod -k 3.3.5-std-def-alt1 scsi_mod filename: /lib/modules/3.3.5-std-def-alt1/kernel/drivers/scsi/scsi_mod.ko license: GPL description: SCSI core srcversion: 9F74F6882E1F8B530A14AF9 depends: intree: Y vermagic: 3.3.5-std-def-alt1 SMP mod_unload modversions parm: dev_flags:Given scsi_dev_flags=vendor:model:flags[,v:m:f] add black/white list entries for vendor and model with an integer value of flags to the scsi device info list (string) parm: default_dev_flags:scsi default device flag integer value (int) parm: max_luns:last scsi LUN (should be between 1 and 2^32-1) (uint) parm: scan:sync, async or none (string) parm: max_report_luns:REPORT LUNS maximum number of LUNS received (should be between 1 and 16384) (uint) parm: inq_timeout:Timeout (in seconds) waiting for devices to answer INQUIRY. Default is 20. Some devices may need more; most need less. (uint) parm: scsi_logging_level:a bit mask of logging levels (int) # modinfo -k 3.3.5-std-def-alt1 scsi_mod filename: /lib/modules/3.3.5-std-def-alt1/kernel/drivers/scsi/scsi_mod.ko license: GPL description: SCSI core srcversion: 9F74F6882E1F8B530A14AF9 depends: intree: Y vermagic: 3.3.5-std-def-alt1 SMP mod_unload modversions parm: dev_flags:Given scsi_dev_flags=vendor:model:flags[,v:m:f] add black/white list entries for vendor and model with an integer value of flags to the scsi device info list (string) parm: default_dev_flags:scsi default device flag integer value (int) parm: max_luns:last scsi LUN (should be between 1 and 2^32-1) (uint) parm: scan:sync, async or none (string) parm: max_report_luns:REPORT LUNS maximum number of LUNS received (should be between 1 and 16384) (uint) parm: inq_timeout:Timeout (in seconds) waiting for devices to answer INQUIRY. Default is 20. Some devices may need more; most need less. (uint) parm: scsi_logging_level:a bit mask of logging levels (int)
Не мог бы ты попробовать версию make-initrd из моего git ?
make-initrd-0.7.8-alt1 -> sisyphus: * Mon May 14 2012 Alexey Gladkov <legion@altlinux> 0.7.8-alt1 - Fix detection of builtin modules (ALT#27321). - Add guess-modules option. - Add --no-depmod option.