मैं netconsole
initrd स्टेज के दौरान एक मॉड्यूल (कहना ) को स्पष्ट रूप से लोड करना चाहता हूं , इसी तरह /etc/modules
मुख्य सिस्टम स्टार्टअप प्रक्रिया में।
सबसे पहले, मैंने जाँच की कि मेरे सिस्टम में initrd में पहले से ही वांछित मॉड्यूल है (परिशिष्ट देखें)।
मैंने देखा है /initrd.img
(जो कि एक संकुचित cpio संग्रह है, इसलिए इसमें त्वरित रूप से देखने के लिए, मैंने zcat /initrd.img > initrd.cpio
इसके साथ किया है और अंदर चला गया है mc
)। मैंने modprobe
लिपियों में से किसी भी आह्वान की तलाश की है, और यह पता लगाया है कि इसमें सूचीबद्ध मॉड्यूल /conf/modules
( /
initrd की जड़ है) स्वचालित रूप load_modules()
से फ़ंक्शन द्वारा लोड किया /scripts/functions
जाता है (इसके द्वारा कहा जाता है /init
)।
लेकिन /conf/modules
initrd को अपडेट करने के लिए 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 ..
कमांड यहाँ चित्रित किया गया है।