मैं netconsoleinitrd स्टेज के दौरान एक मॉड्यूल (कहना ) को स्पष्ट रूप से लोड करना चाहता हूं , इसी तरह /etc/modulesमुख्य सिस्टम स्टार्टअप प्रक्रिया में।
सबसे पहले, मैंने जाँच की कि मेरे सिस्टम में initrd में पहले से ही वांछित मॉड्यूल है (परिशिष्ट देखें)।
मैंने देखा है /initrd.img(जो कि एक संकुचित cpio संग्रह है, इसलिए इसमें त्वरित रूप से देखने के लिए, मैंने zcat /initrd.img > initrd.cpioइसके साथ किया है और अंदर चला गया है mc)। मैंने modprobeलिपियों में से किसी भी आह्वान की तलाश की है, और यह पता लगाया है कि इसमें सूचीबद्ध मॉड्यूल /conf/modules( /initrd की जड़ है) स्वचालित रूप load_modules()से फ़ंक्शन द्वारा लोड किया /scripts/functionsजाता है (इसके द्वारा कहा जाता है /init)।
लेकिन /conf/modulesinitrd को अपडेट करने के लिए Ubuntu सिस्टम में मानक टूल क्या होगा ?
(बीटीडब्लू, उबंटू के initrd के कोड के अपने अध्ययन के दौरान, मैंने देखा कि स्क्रिप्ट netconsoleमें कुछ विशेष समर्थन है /init, जो मैं अपनी आवश्यकताओं के लिए काम कर सकता हूं, लेकिन वैसे भी, मेरा प्रश्न अधिक सामान्य है, किसी भी अन्य कस्टम मॉड्यूल के विषय में ।)
अनुबंध
जैसा कि मैंने ऊपर कहा था: पहले, मैंने जाँच की कि मेरे सिस्टम में initrd में पहले से ही वांछित मॉड्यूल (अर्थात् netconsole) है। इस तरह से:
# zcat /initrd.img | cpio --extract --verbose --list | fgrep netconsole
-rw-r--r-- 1 root root 25372 Aug 31 20:59 lib/modules/3.19.0-28-generic/kernel/drivers/net/netconsole.ko
109504 blocks
#
और मैंने यह भी जाँच की कि इसमें पहले से ही आवश्यक नेटवर्क ड्राइवर शामिल है:
# ls -ld /sys/class/net/eth0/device/driver
lrwxrwxrwx 1 root root 0 Sep 21 15:34 /sys/class/net/eth0/device/driver -> ../../../../bus/pci/drivers/sky2
# zcat /initrd.img | cpio --extract --verbose --list | fgrep sky2
-rw-r--r-- 1 root root 92948 Aug 31 20:49 lib/modules/3.19.0-28-generic/kernel/drivers/net/ethernet/marvell/sky2.ko
109504 blocks
#
lsinitramfsइसमेंinitramfs-toolsउसी तरह के बारे में शामिल किया गया है जैसे किzcat /initrd.img ..कमांड यहाँ चित्रित किया गया है।