Имеется задача создания диска, быстро устанавливающего Линукс (RHEL 4up4) + несколько сложных приложений на (почти)любой сервер. Надо для максимально быстрого восстановления системы на сервере в случае его физической смерти, клонирования сервера для тестов и т.д. В общем, нужно.
Сделано как развертывание tar-gzip'а рабочей системы с правкой конфиг-файлов. Всё замечательно работало, пока не столкнулся с контроллером SRCS28X, при создании initrd с его модулями (megaraid_mbox)
При загрузке с диска я подгружаю все модули, на которые показывает lspci+modules.pcimap+modules.dep - соответсвенно подгружаются всякие сетевые карты, звуковые и прочая фигня. После этого, для создания initrd под новую копию системы, читаю /sys/class/scsi_host/host*/proc_name, где, как я до сих пор считал, для каждого присутсвующего в системе scsi-контроллера указано название его модуля. Далее нехитрые комбинации с modules.dep приводят к вполне жизнеспособному initrd.
Но megaraid в /sys/class/scsi_host/host0/proc_name содержит не "megaraid_mbox", а просто "megaraid" (файла megaraid.ko в системе нет).... :( Выдернуть vendor-id + device-id для повторного просмотра pcimap тоже оттуда не получилось. Тупо скрещивать слово megaraid с результатами lsmod или find - нельзя, т.к. кроме megaraid_mbox есть еще файлики megaraid_mm и megaraid_sas
Господа! Научите корректно читать /sys, чтобы выдирать имена модулей для присутсвующих в системе устройств, или ткните носом в какой-нибудь man-howto, чтобы сделать это другим способом.