yī、 shénme shì Modules?
Modules de zì miàn yì sī jiù shì mó kuài, zài cǐ zhǐ de shì kernelModules; jiǎn dān lái shuō, yī gè mó kuài tí gōng liǎo yī gè gōng néng, rú isofs、 minix、 nfs、 lp děng děng。 chuán tǒng lái jiǎng, mó kuài huà yòu liǎng gè fāng fǎ jiě jué。 shè jì zhě kě yǐ bǎ gè xiàng gōng néng fēn lí dào dān dú de jiào zuò xiàn chéng de chǔlǐ zhōng qù, huò zhě shì jiāng nèi hé
yǐ bāo hán / pái chú yī xiē gōng néng de fāng shì chóngxīn biān yì。 rú guǒ bǎ gōng néng fēn lí dào xiàn chéng zhōng qù, nà me nèi hé jiù jiào zuò “ wēi nèi hé ” (micro-kernel), zhè zhǒng jiě jué fāng fǎ zēng jiā liǎo xiàn chéng jiān xié diào gōng zuò de tōng xìn kāi xiāo。 jiù xiàng míng zì 'àn shì de nà yàng, zhè zhǒng jiě jué fāng 'àn de yōu diǎn zài yú nèi hé de dà xiǎo。
Linux de jiě jué fāng 'àn shì bāo hán nèi hé mó kuài, zhè xiē mó kuài shì kě yǐ 'àn xū yào suí shí zhuāng rù hé xiè xià de。 zhè yàng zuò kě yǐ shǐ dé nèi hé de dà xiǎo hé tōng xìn liàng dū dá dào zuì xiǎo。 jiāng mó kuài cóng nèi hé zhōng dú lì chū lái, bù bì yù xiān 『 bǎng 』 zài kernelcodes zhōng。 zhè yàng zuò yòu sān zhǒng yōu diǎn: dì yī, jiāng lái xiū gǎi kernel shí, bù bì quán bù chóngxīn compile, kě jié shěng bù shǎo shí jiān; dì 'èr, ruò xū yào 'ān zhuāng xīn de Modules, bù
bì chóngxīn compilekernel, zhǐ yào chā rù ( tōng guò insmode zhǐ lìng ) duì yìng de Modules jí kě; dì sān, jiǎn shǎo nèi hé duì xì tǒng zī yuán de zhàn yòng, nèi hé kě yǐ jí zhōng jīng lì zuò zuì jī běn de shì qíng, bǎ yī xiē kuò zhǎn gōng néng dū jiāo yóu Modules shí xiàn。
mó kuài yě kě yǐ yòng lái cháng shì xīn de nèi hé dài mǎ 'ér bù xū yào měi cì dū chuàng jiàn hé zhòng jī huó nèi hé。 dàn shì, zhè yàng zuò dài lái de wèn tí shì: shǐ yòng nèi hé mó kuài tōng cháng huì qīng wēi de zēng jiā xìng néng hé nèi cún kāi zhī。 yī gè kě jiā zài mó kuài kěn dìng huì chǎn shēng gèng duō de dài mǎ, zhè zhǒng dài mǎ hé 'é wài de shù jù jié gòu huì zhàn yòng gèng duō yī diǎn de nèi cún。 lìng wài yīn wéi jiànjiē fǎng wèn nèi hé zī yuán yě ràng mó kuài de xiàolǜ qīng wēi jiàng dī。
mó kuài huà de sī xiǎng yǐ jīng bèi guǎng fàn jiē shòu, zhù yào de yuán yīn zài yú tā kě yǐ kuò zhǎn xì tǒng de gōng néng, yòng hù kě yǐ líng huó de pèi zhì xì tǒng。 Apache yě cǎi qǔ liǎo zhè zhǒng gōng néng kuò zhǎn fāng shì, zài běn wén zhōng zhù yào tǎo lùn shì nèi hé de mó kuài 'ān zhuāng yǔ xiè zài, Apache mó kuài de 'ān zhuāng qǐng cān zhào Apapce de xiāng guān wén dàng。
èr、 rú hé jiā zài mó kuài?
jiā zài nèi hé mó kuài de fāng fǎ yòu liǎng zhǒng。 dì yī zhǒng shǐ yòng insmod mìng lìng shǒu gōng bǎ tā chā rù dào nèi hé。 lìng yī gè gèng zhì néng de fāng fǎ shì zài xū yào de shí hòu jiā zài zhè gè mó kuài ︰ zhè jiào zuò 'àn xū jiā zài( demandloading)。 dāng nèi hé fā xiàn xū yào yī gè mó kuài de shí hòu, lì rú dāng yòng hù 'ān zhuāng yī gè bù zài nèi hé de wén jiàn xì tǒng de shí hòu, nèi hé huì qǐng qiú nèi hé shǒu hù jìn chéng( kerneld) shì tú jiā zài hé shì de mó kuài。
shuō dào zhè lǐ jiù bù néng bù tí dào nèi hé shǒu hù jìn chéng kerneld liǎo, tā fēi cháng de cōng míng, néng gòu zhù dòng de bǎ nín xū yào de Modules zì dòng chā rù kernel, jiāng méi yòng dào de module cóng kernel zhōng qīng tuì。 Kerneld yóu liǎng gè dú lì de bù fēn gòu chéng: yī bù fēn gōng zuò yú Linux de nèi hé, fù zé xiàng daemon fā sòng qǐng qiú; lìng yī bù fēn gōng zuò yú xì tǒng de yòng hù shù jù qū, fù zé diào rù yóu nèi hé qǐng qiú zhǐ dìng de Modules。 ruò shǎo liǎo zhè gè
kerneld, jiù zhǐ néng tōng guò shǒu gōng de fāng shì , yòng insmode huò modeprobe mìng lìng jìn xíng jiā zài。
sān、 Modules de xiāng guān mìng lìng jiè shào
yǔ Modules yòu guān de mìng lìng yòu:
lsmode: liè chū yǐ jīng bèi nèi hé diào rù de mó kuài
insmode: jiāng mǒu gè module chā rù dào nèi hé zhōng
rmmod: jiāng mǒu gè module cóng nèi hé zhōng xiè zài
depmod: shēng chéng yǐ lài wén jiàn, gào sù jiāng lái de insmod yào cóng nǎ 'ér diào rù Modules。 zhè gè yǐ lài wén jiàn jiù zài /lib/Modules/[ nín de kernel bǎn běn ]/Modules.dep。
Kerneld: fù zé zì dòng de jiāng mó kuài diào rù nèi hé hé bǎ mó kuài cóng nèi hé zhōng xiè zài。
sì、 biān yì yī gè zuì xiǎo de Linux nèi hé
mó kuài yī bān yòng lái zhī chí nà xiē bù jīng cháng shǐ yòng de gōng néng。 lì rú, tōng cháng qíng kuàng xià nǐ jǐn shǐ yòng bō hào wǎng luò, yīn cǐ wǎng luò gōng néng bìng bù shì rèn hé shí hòu dū xū yào de, nà me jiù yīnggāi shǐ yòng kě zhuāng rù de mó kuài lái tí gōng zhè gè gōng néng。 jǐn zài nǐ jìn xíng bō hào lián jiē de shí hòu, gāi mó kuài cái bèi zhuāng rù。 ér zài nǐ duàn diào lián jiē de shí hòu tā huì bèi zì dòng xiè xià。 zhè yàng huì shǐ nèi hé shǐ yòng nèi cún de liàng zuì xiǎo, jiǎn xiǎo xì tǒng de fùhè。
dāng rán, nà xiē xiàng yìng pán fǎng wèn zhè yàng shí shí kè kè dū xū yào de gōng néng, zé bì xū zuò zài nèi hé lǐ。 rú guǒ nǐ dā yī tái wǎng luò gōng zuò zhàn huò web fú wù qì, nà me wǎng luò gōng néng shì shí kè dū xū yào de, nǐ jiù yīnggāi kǎo lǜ bǎ wǎng luò gōng néng biān yì dào nèi hé lǐ。 lìng wài yī gè fāng fǎ shì zài qǐ dòng de shí hòu jiù zhuāng rù wǎng luò mó kuài。 zhè zhǒng fāng fǎ de yōu diǎn shì nǐ bù xū yào chóngxīn biān yì nèi hé。 ér quē diǎn shì wǎng luò gōng néng bù néng tè bié gāo xiào。
àn zhào yǐ shàng de yuán zé, wǒ men shǒu xiān liè chū yī zhāng qīng dān, kàn kàn kernel zhōng nǎ xiē xuǎn xiàng shì fēi yòu bù kě de, yě jiù shì shuō, zhè xiē dōng xī shì bì xū bèi biān yì dào nèi hé zhōng de。 jiāng nà xiē fēi bì xū de mó kuài tī chú dào nèi hé yǐ wài。
dì yī gè shì root suǒ zài de yìng pán pèi zhì。 nǎ guǒ nín de yìng pán shì IDE jiē kǒu, jiù bǎ ide de xuǎn xiàng biāo jì xià lái。 rú guǒ shì SCSI jiē kǒu, qǐng bǎ nín de jiē kǒu cān shù jí SCSIid jì biāo xià lái。
dì 'èr gè shì xuǎn zé shǐ yòng nǎ yī gè wén jiàn xì tǒng。 Linux de mò rèn wén jiàn xì tǒng shì shì ext2, nà me jiù yī dìng yào bǎ tā biāo jì xià lái。 rú guǒ jī qì zhōng hái qí tā de cāo zuò xì tǒng, rú win98 huò windowsNT, nín hái huì kě néng xuǎn zé FAT32 huò NTFS de zhī chí, bù guò hòu miàn nǐ kě yǐ tōng guò shǒu gōng jiā zài de fāng shì lái jiā rù xīn de mó kuài zhī chí。
dì sān gè shì xuǎn zé Linux suǒ zhī chí de kě zhí xíng wén jiàn gé shì。 zhè lǐ yòu liǎng zhǒng gé shì kě gōng xuǎn zé:
elf: zhè shì dāng qián Linux pǔ biàn zhī chí de kě zhí xíng wén jiàn gé shì, bì xū biān yì dào nèi hé zhōng。
a.out: zhè shì jiù bǎn de Linux de kě zhí xíng wén jiàn gè hán shù kù de gé shì, rú guǒ nǐ què rèn kěn dìng yòng bù dào zhè zhǒng gé shì de kě zhí xíng wén jiàn, nà me jiù kě yǐ bù bǎ tā biān yì dào nèi hé dāng zhōng。
yǐ shàng zhè xiē nèi róng, shì bì xū yào biān yì dào nèi hé zhōng de。 qí tā de nèi róng fán shì suǒ yòu xuǎn xiàng zhōng m tí shì de, dū xuǎn zé m, zhè yàng kě yǐ tōng guò shǒu gōng de fāng shì tiān jiā gāi mó kuài。
**Loadablemodulesupport*Enableloadablemodulesupport(CONFIG_Modules)[Y/n/?]Setversion
informationonallsymbolsforModules(CONFIG_MODVERSIONS)[N/y/?]Kerneldaemonsupport(e.g.
autoloadofModules)(CONFIG_KERNELD)[Y/n/?]
fēn bié huí dá Y,N,Y。 qí zhōng CONFIG_KERNELD de default zhí shì N, suǒ yǐ yào zhù yì xuǎn zé Y。
makeconfig wán hòu, réng jiù shì makedep;makeclean。
jiē xià lái yào makezlilo huò makezImage。
rán hòu makeModules;makeModules_install。 wán chéng zhī hòu, jiù biān yì chū yī gè méi yòu diào rù duō yú mó kuài de yī gè“ gān jìng de” nèi hé yìng xiàng wén jiàn liǎo。
wǔ、 rú hé shǒu gōng jiā zài Modules?
rú guǒ yào yǐ shǒu gōng de fāng shì jiā zài mó kuài , jiàn yì zuì hǎo shǐ yòng modprobe, yīn wéi tā kě yǐ jiě jué mó kuài zhī jiān de yǐ lài xìng wèn tí, yǐ shēng kǎ de bù fēn lái shuō, yǐ soundblaster wéi lì qí zǒng gòng yòu yǐ xià mó kuài:
sb336520(autoclean)
uart40161600(autoclean)[sb]
sound564920(autoclean)[sbuart401]
soundcore23725(autoclean)[sbsound]
zhè xiē mó kuài dōuyào jiā zài shàng lái, zhěng gè shēng kǎ cái néng gōng zuò, ér qiě tā men zhī jiān shì yòu yǐ lài xìng guān xì de。 zuì hé xīn de soundcore bì xū shǒu xiān zhuāng rù , zuì hòu zhuāng rù sb。 dàn yī bān rén shì bù zhī dào qí xiān hòu shùn xù de。 yīn cǐ, modprobe jiù shì yòng lái jiě jué zhè gè wèn tí yòng de。
tōng cháng wǒ men zhǐ yào
modprobesb
tā jiù huì zì dòng de zhǎo chū sb yòng dào de suǒ yòu de mó kuài , jiāng tā men yī yī de jiā zài jìn lái, gù yī bān shǐ yòng zhě jiù bù yòng qù shāng nǎo jīn liǎo。
nà me nèi hé shì zěn me zhī dào zhè xiē mó kuài jiān de yǐ lài xìng guān xì de ní? yuán lái, zài xì tǒng qǐ dòng jiǎo běn lǐ yòu yī tiáo 'depmod-a' mìng lìng, huì gěi xì tǒng zhōng de suǒ yòu kě yòng de mó kuài chuàng jiàn yī gè yǐ lài guān xì de liè biǎo。 ér 'modprobemodule-name' huì shǐ yòng zhè gè liè biǎo, zài zhuāng rù zhǐ dìng de
mó kuài qián xiān zhuāng rù nà xiē shì xiān zhuāng rù de mó kuài。 rú guǒ zài zhè gè cóng shǔ liè biǎo zhōng zhǎo bù dào 'module-name' de huà, tā huì gěi chū xiāng yìng de chū cuò xìn xī。
dàn ruò shǐ yòng insmod, tā kě bù huì zì dòng wán chéng qí tā mó kuài de diào rù。 bǐ rú shuō, wǒ men yào jiā rù PPP mó kuài, yòng zhè gè mìng lìng:
root/root>insmodppp
root/root>
rú guǒ cāo zuò chéng gōng, xì tǒng chū xiàn cāo zuò tí shì fú。 rú guǒ méi yòu chéng gōng, kě néng chū xiàn xià liè xìn xī:
/lib/Modules/2.2.10/net/ppp.o:unresolvedsymbolslhc_init_Rsmp_1ca65fca
/lib/Modules/2.2.10/net/ppp.o:unresolvedsymbolslhc_compress_Rsmp_cfd3a418
/lib/Modules/2.2.10/net/ppp.o:unresolvedsymbolslhc_free_Rsmp_b99033d9
/lib/Modules/2.2.10/net/ppp.o:unresolvedsymbolslhc_toss_Rsmp_a152cec0
/lib/Modules/2.2.10/net/ppp.o:unresolvedsymbolslhc_remember_Rsmp_07972313
/lib/Modules/2.2.10/net/ppp.o:unresolvedsymbolslhc_uncompress_Rsmp_3bb36b01
[root/root]#
zhè shuō míng, PPP mó kuài méi yòu jiā zài chéng gōng, cuò wù tí shì zhōng de unresolvedsymbol shuō míng, PPP mó kuài suǒ xū yào de yī xiē mó kuài hái méi yòu zài rù。 cuò wù tí shì dì yīháng de nèi róng shì: slhc_init_Rsmp_1ca65fca, zhè shì nǎ gè mó kuài? zhè qí zhōng kě néng xū yào yī xiē jīng yàn lái zuò pàn duàn, tā shì yǐ slhc kāi tóu de, jiù shì shì slhc bā。
root/root>insmodslhc yī qiē zhèng cháng, rán hòu wǒ men zài jiā zài PPP mó kuài
root/root>insmodppp
root/root>
zhè huí méi yòu shénme fǎn huí xìn xī, shuō míng PPP mó kuài jiā zài chéng gōng liǎo。
liù、 cóng nèi cún zhōng xiè zài yī gè Modules.
yào xiè zài yī gè mó kuài, shǒu xiān yòng lsmod kàn kàn gāi mó kuài shì fǒu què shí yǐ jīng jiā zài shàng lái, rán hòu zài zuò cāo zuò。 chú cǐ zhī wài, zài pèng dào yòu yǐ lài guān xì de mó kuài shí, cóng nèi hé zhōng xiè zài mó kuài de guò chéng yǔ zài rù de guò chéng qià hǎo xiāng fǎn, tā zūn xún“ firstinlastout“ de zhǔn zé, jí zài yī xì liè yòu yǐ lài guān xì de mó kuài zhōng, bì xū xiān xiè zài zuì hòu jiā zài jìn lái de mó kuài, zuì hòu xiè zài zuì xiān jiā zài jìn lái de mó kuài。 bǐ rú: rú guǒ yào yòng rmmod yí chú zhèng zài shǐ yòng zhōng de mó kuài ( rú shàng lì, yào xiè zài slhc, dàn réng yòu PPP mó kuài zài shǐ yòng tā ) huì chū xiàn cuò wù tí shì: Deviceorresourcebusy。 suǒ yǐ, zài jiāng PPP mó kuài cóng nèi cún zhōng xiè zài hòu, cái kě néng jiāng slhc mó kuài cóng nèi cún zhōng xiè zài。
zǒng zhī, zài xiè zài mó kuài shí, duì yú kě néng chū xiàn de mó kuài jiān yǐ lài xìng wèn tí, Linux huì gěi nǐ tí shì zú gòu de xìn xī, zǎi xì chá kàn zhè xiē xìn xī, shì néng gòu wéi nǐ cǎi qǔ xiāng yìng de cāo zuò bìng zuì zhōng jiě jué wèn tí tí gōng bāng zhù de。 |
|
|