Linux Kernel HOWTO
Brian Ward, [email protected], ïåðåâîä Alex Ott [email protected] v0.80, 26 Ìàÿ 1997 üÔÏ ÄÅÔÁÌØÎÏÅ ÒÕËÏ×ÏÄÓÔ×Ï ÐÏ ÎÁÓÔÒÏÊËÅ ÑÄÒÁ, ÅÇÏ ËÏÍÐÉÌÑÃÉÉ, ÏÂÎÏ×ÌÅÎÉÑÍ É ÒÁÚÒÅÛÅÎÉÀ ÐÒÏÂÌÅÍ ÎÁ ÓÉÓÔÅÍÁÈ ÐÏÓÔÒÏÅÎÎÙÈ ÎÁ ÂÁÚÅ ix86.
Ñîäåðæàíèå
1 Ââåäåíèå 1 2 Âàæíûå âîïðîñû è îòâåòû íà íèõ 2 3 Êàê íàñòðàèâàòü ÿäðî 4 4 Êîìïèëÿöèÿ ÿäðà 8 5 Èñïðàâëåíèå ÿäðà ñ ïîìîùüþ çàïëàòîê 10 6 Äîïîëíèòåëüíûå ïàêåòû 12 7 Íåêîòîðûå ëîâóøêè 12 8 Çàìå÷àíèå äëÿ îáíîâëåíèÿ äî âåðñèè 2.0.x 17 9 Ìîäóëè 17 10 Äðóãèå îïöèè íàñòðîéêè 18 11 Ñîâåòû è ïðèåìû 18 12 Äðóãèå HOWTO, êîòîðûå ìîãóò áûòü ïîëåçíûìè 19 13 Ðàçíîå 20 Ïðèìå÷àíèå ïåðåâîä÷èêà:Øëèòå ìíå ëþáûé êîììåíòàðèè è çàìå÷àíèÿ, äàæå íåáîëüøèå.1
Ââåäåíèå
Äîëæíû ëè âû ÷èòàòü ýòîò äîêóìåíò? Äà, åñëè ó âàñ îäèí èç ñëåäóþùèõ ñèìïòîìîâ: • “Âàõ! Ýòîò ïàêåò wizzo-46.5.6 ãîâîðèò, ÷òî åìó íóæíî ÿäðî 1.8.193, à ÿ âñå åùå ïîëüçóþñü âåðñèåé 1.0.9!” •  îäíîì èç áîëåå íîâûõ ÿäåð ñóùåñòâóåò äðàéâåð íåîáõîäèìîãî âàì óñòðîéñòâà. • Âû íå çíàåòå êàê êîìïèëèðîâàòü ÿäðî • “ äåéñòâèòåëüíîñòè ëè â ôàéëå README íàõîäèòñÿ âñå îïèñàíèå?” • Âû ñòàðàëèñü, âû ïûòàëèñü, à ýòî íå ðàáîòàåò • Âàì íóæíî ÷òî-òî äàòü ëþäÿì, êîòîðûå ïðîñÿò âàñ óñòàíîâèòü ÿäðà äëÿ íèõ2. Âàæíûå âîïðîñû è îòâåòû íà íèõ 2
1.1
Ïðî÷èòàéòå ýòî ñíà÷àëà! (ß ýòî ïîäðàçóìåâàþ)
Íåêîòîðûå èç ïðèìåðîâ â ýòîì äîêóìåíòå ïðåäïîëàãàþò, ÷òî ó âàñ åñòü GNU tar, find, è xargs. Ýòè ïðîãðàììû äîâîëüíî ñòàíäàðòíû; ýòî íå äîëæíî âûçâàòü ïðîáëåì. Òàê æå ïðåäïîëàãàåòñÿ, ÷òî âû çíàåòå ñòðóêòóðó âàøåé ôàéëîâîé ñèñòåìû; åñëè âû íå çíàåòå ýüëãë, òî âû äîëæíû ñîõðà-íèòü êîïèþ âûâîäà êîìàíäû mount ïðè îáû÷íûõ ñèñòåìíûõ îïåðàöèÿõ (èëè ñîäåðæèìîå ôàéëà /etc/fstab, åñëè âû ìîæåòå ÷èòàòü åãî). Ýòà èíôîðìàöèÿ ÿâëÿåòñÿ âàæíîé, è íå èçìåíÿåòñÿ äî ïåðåðàçáèâêè âàøåãî äèñêà, äîáàâëåíèÿ íîâîãî, ïåðåñòàíîâêè âàøåé ñèñòåìû èëè ÷åãî-òî ïîäîá-íîãî. Ïîñëåäíåé “ñòàáèëüíîé (production)” âåðñèåé ÿäðà âî âðåìÿ íàïèñàíèÿ ýòîãî äîêóìåíòà áûëà âåð-ñèÿ 2.0.30, ýòî îçíà÷àåò, ÷òî âñå ññûëêè è ïðèìåðû îòíîñÿòñÿ ê ýòîé âåðñèè. Äàæå õîòÿ ÿ ïûòàëñÿ ñäåëàòü ýòîò äîêóìåíò êàê íå çàâèñÿùèé îò âåðñèè íàñêîëüêî ýòî âîçìîæíî, âñå ðàâíî ÿäðà ïîñòî-ÿííî íàõîäÿòñÿ â ðàçâèòèè, òàê ÷òî åñëè âû ïîëó÷èëè íîâóþ âåðñèþ, òî îíà íåèçáåæíî áóäåò èìåòü íåêîòîðûå îòëè÷èÿ. Âîîáùå ýòî íå äîëæíî âûçâàòü áîëüøèõ ïðîáëåì, íî ìîæåò ñîçäàòü íåêîòîðûå îñëîæíåíèÿ. Ñóùåñòâóåò äâå âåðñèè èñõîäíîãî êîäà ÿäðà linux, “ñòàáèëüíàÿ (production)” è “ðàçðàáàòûâàåìàÿ (development)”. Ñòàáèëüíûå âåðñèè íà÷àëèñü ñ 1.0.x è â íàñòîÿùåå âðåìÿ îíè èäóò ñ ÷åòíûìè íî-ìåðàìè; 1.0.x ÿâëÿþòñÿ ñòàáèëüíûìè, 1.2.x ÿâëÿþòñÿ ñòàáèëüíûìè, òàê æå êàê è 2.0.x. Ýòè ÿäðà ñ÷èòàþòñÿ áîëåå ñòàáèëüíûìè è ñâîáîäíûìè îò îøèáîê âåðñèÿìè âî âðåìÿ èõ âûïóñêà. Ðàçðà-áàòûâàåìûå ÿäðà (1.1.x, 1.3.x, è ò.ï.) ÿâëÿþòñÿ ÿäðàìè äëÿ òåñòèðîâàíèÿ, äëÿ ëþäåé æåëàþùèõ ïðîòåñòèðîâàòü íîâûå, âîçìîæíî ñ îøèáêàìè, ÿäðà. ß âàñ ïðåäóïðåäèë!
1.2
Îäíî ñëîâî î ñòèëå
ôÅËÓÔ, ËÏÔÏÒÙÊ ×ÙÇÌÑÄÉÔ ×ÏÔ ÔÁË – ýòî ëèáî òî, ÷òî ïîÿâèòñÿ íà âàøåì ýêðàíå, ëèáî èìÿ ôàéëà, ëèáî òî, ÷òî ìîæåò áûòü ïðÿìî íàáðàíî, íàïðèìåð êîìàíäà, èëè îïöèè êîìàíäû (åñëè âû ÷èòàåòå ýòî êàê ïðîñòîé òåêñò, òî ýòî ðàçëè÷èå íå âèäíî). Êîìàíäû è äðóãîé ââîä ÷àñòî âçÿòû â êàâû÷êè (ñ ïîìîùüþ ‘ ’), ÷òî âûçûâàåò êëàññè÷åñêóþ ïðîáëåìó ïóíêòóàöèè: Åñëè òàêîé ïóíêò ïîÿâ-ëÿåòñÿ â êîíöå ïðåäëîæåíèÿ â êàâû÷êàõ, òî ëþäè ÷àñòî íàáèðàþò ‘.’ âìåñòå ñ êîìàíäîé, ïîòîìó-÷òî Àìåðèêàíñêèé ñòèëü öèòèðîâàíèÿ çàñòàâëÿåò ïîìåùàòü òî÷êó âíóòðè êàâû÷åê. Äàæå åñëè çäðàâûé ñìûñë (è ê ñîæàëåíèþ, ýòî ïðåäïîëàãàåò, ÷òî ëþäè ñî “çäðàâûì ñìûñëîì)” áóäóò èñïîëüçîâàòü àìåðèêàíñêèé ñòèëü öèòèðîâàíèÿ) ãîâîðèò êîìó-òî, ÷òî íàäî îòáðîñèòü ñíà÷àëà çíàêè ïóíêòóàöèè, ìíîãî ëþäåé ïðîñòî ýòîãî íå ïîìíÿò, òàê ÷òî ÿ áóäó â òàêèõ ñëó÷àÿõ ïîìåùàòü çíàêè ïóíêòóàöèè âíå êàâû÷åê. Äðóãèìè ñëîâàìè, êîãäà íàäî ïîêàçàòü, ÷òî âû äîëæíû íàáðàòü “make config”, òî ÿ áóäó ïèñàòü ‘make config’, à íå ‘make config.’2
Âàæíûå âîïðîñû è îòâåòû íà íèõ
2.1
×òî âîîáùå äåëàåò ÿäðî?
ßäðî Unix âûñòóïàåò êàê ïîñðåäíèê ìåæäó âàøåé ïðîãðàììîé è âàøèì îáîðóäîâàíèåì. Ñíà÷àëà îíî äåëàåò (èëè ïîäãîòàâëèâàåòñÿ ê) îáñëóæèâàíèþ/ðàñïðåäåëåíèþ ïàìÿòè êîìïüþòåðà äëÿ âñåõ çàïóùåííûõ ïðîãðàìì (ïðîöåññîâ), è óáåæäàåòñÿ, ÷òî âñå îíè ÷åñòíî (èëè íå÷åñòíî, åñëè âû ýòîãî æåëàåòå) ðàçäåëÿþò âðåìÿ ïðîöåññîðà.  äîáàâëåíèå ê ýòîìó îíî îáåñïå÷èâàåò âåëèêîëåïíûé, äîâîëüíî ïåðåíîñèìûé èíòåðôåéñ äëÿ îáùåíèÿ ïðîãðàìì ñ îáîðóäîâàíèåì. Êîíå÷íî ó ÿäðî âûïîëíÿåò áîëüøå äåéñòâèé, ÷åì ìû çäåñü ïåðå÷èñëèëè, íî ýòè îñíîâíûå ôóíêöèè íåîáõîäèìî çíàòü.2.2
Ïî÷åìó ÿ äîëæåí îáíîâëÿòü ìîå ÿäðî?
Áîëåå íîâûå ÿäðà â îáùåì ïîääåðæèâàþò áîëüøåå êîëè÷åñòâî òèïîâ îáîðóäîâàíèÿ (îíè èìåþò áîëüøå äðàéâåðîâ óñòðîéñòâ), îíè ìîãóò èìåòü óëó÷øåííîå óïðàâëåíèå ïðîöåññàìè, îíè ìîãóò âûïîëíÿòüñÿ áûñòðåå, ÷åì áîëåå ñòàðûå âåðñèè, îíè ìîãóò áûòü áîëåå ñòàáèëüíûìè, ÷åì ñòàðûå2. Âàæíûå âîïðîñû è îòâåòû íà íèõ 3
âåðñèè, è îíè èñïðàâëÿþò ãëóïûå îøèáêè â áîëåå ñòàðûõ âåðñèÿõ. Áîëüøèíñòâî ëþäåé îáíîâëÿþò ÿäðî, ïîòîìó-÷òî îíè õîòÿò èñïîëüçîâàòü íîâûå äðàéâåðà óñòðîéñòâ è èñïðàâèòü îøèáêè.
2.3
Êàêèå òèïû îáîðóäîâàíèÿ ïîääåðæèâàþò íîâûå ÿäðà?
Ñìîòðèòå Hardware-HOWTO.  êà÷åñòâå àëüòåðíàòèâû âû ìîæåòå ïîñìîòðåòü ôàéë ‘config.in’ â èñõîäíûõ òåêñòàõ ÿäðà linux source, èëè ïðîñòî íàéòè íóæíîå óñòðîéñòâî çàïóñòèâ ‘make config’. Îíè ïîêàçûâàþò âñå îáîðóäîâàíèå ïîääåðæèâàåìîå äèñòðèáóòèâîì ÿäðà, íî íå âñå, êîòîðîå ïîä-äåðæèâàåò linux; ìíîãî äðàéâåðîâ îáùèõ óñòðîéñòâ (òàêèõ êàê äðàéâåðà PCMCIA è íåêîòîðûå äðàéâåðà ëåíòî÷íûõ óñòðîéñòâ) ÿâëÿþòñÿ çàãðóæàåìûìè ìîäóëÿìè ñîïðîâîæäàþòñÿ è ðàñïðîñòðà-íÿþòñÿ îòäåëüíî.
2.4
Êàêèå âåðñèè gcc è libc ìíå íóæíû?
Ðåêîìåíäàöèè Linus ïî âåðñèè gcc íàõîäÿòñÿ â ôàéëå README, âêëþ÷åííîì â èñõîäíûå òåêñòû linux. Åñëè ó âàñ íåò ýòîé âåðñèè, òî äîêóìåíòàöèÿ ïî ðåêîìåíäóåìîé âåðñèè gcc äîëæíà ñîîáùèòü âàì âñå ñâåäåíèÿ, åñëè âàì íåîáõîäèìî îáíîâèòü âàøó âåðñèþ libc. Ýòî íå òðóäíàÿ ïðîöåäóðà, íî âàæíî ñëåäîâàòü èíñòðóêöèÿì.2.5
×òî òàêîå çàãðóæàåìûé ìîäóëü?
Ýòî êóñî÷êè êîäà ÿäðà, êîòîðûå íå âêëþ÷åíû ïðÿìî â ÿäðî. Îíè êîìïèëèðóþòñÿ îòäåëüíî è çàòåì ìîãóò âñòàâëÿòü è óäàëÿòü èõ â çàïóùåííîå ÿäðî ïî÷òè â ëþáîå âðåìÿ. Âñëåäñòâèè èõ ãèáêîñòè, ñåé÷àñ ýòî ïðåäïî÷òèòåëüíûé ñïîñîá êîäèðîâàíèÿ íåêîòîðûõ ñðåäñòâ ÿäðà. Ìíîãî ïîïóëÿðíûõ äðàéâåðîâ óñòðîéñòâ, òàêèõ êàê äðàéâåðà PCMCIA è äðàéâåðà ëåíòî÷íûõ óñòðîéñòâ QIC-80/40, ÿâëÿþòñÿ çàãðóæàåìûìè ìîäóëÿìè.2.6
Ñêîëüêî ìåñòà íà äèñêå ìíå íàäî?
Ýòî çàâèñèò îò êîíôèãóðàöèè âàøåé ñèñòåìû. Ïåðâîå, ýòî ñæàòûå èñõîäíûå òåêñòû ÿäðà, ïðèìåð-íî 6 ìåãàáàéò äëÿ âåðñèè 2.0.10. Íà ìïðèìåð-íîãèõ ìàøèíàõ ýòîò ôàéë õðàíÿò äàæå ïîñëå ðàñïàêîâêè.  ðàñæàòîì âèäå èñõîäíûå òåêñòû çàíèìàþò äî 24 ìåãàáàéò. Íî ýòî íå êîíåö – âàì íóæíî áîëüøå äëÿ êîìïèëÿöèè ÿäðà. Òðåáóåìûé ðàçìåð çàâèñèò îò òîãî, êàê âû íàñòðîèëè âàøå ÿäðî. Íàïðèìåð, íà îäíîé ìàøèíå ó ìåíÿ íàñòðîåíà ðàáîòà ñåòè, äðàéâåð 3Com 3C509, è òðè ôàéëîâûå ñèñòåìû, ýòî âñå çàíèìàåò ïðèìåðíî 30 ìåãàáàéò äèñêîâîãî ïðîñòðàíñòâà. Äîáàâèâ ñæàòûå èñõîäíûå òåê-ñòû, âàì ïîíàäîáèòüñÿ îêîëî 26 Ìá äëÿ òàêîé êîíôèãóðàöèè. Íà äðóãîé ñèñòåìå, áåç ïîääåðæêè äðàéâåðà ñåòåâîé êàðòû (íî âñå ðàâíî ñ ïîääåðæêîé ñåòè) è çâóêîâîé êàðòîé, âñå çàíèìàåò áîëüøå ïðîñòðàíñòâà. Òàêæå, áîëåå íîâûå ÿäðà èìåþò áîëåå áîëüøîå äåðåâî èñõîäíûõ òåêñòîâ, òàê ÷òî â îáùåì, åñëè åñëè ó âàñ äîâîëüíî ìíîãî óñòðîéñòâ, òî óáåäèòåñü, ÷òî ó âàñ äîñòàòî÷íî áîëüøîé æåñòêèé äèñê (ïðè ñåãîäíÿøíèõ öåíàõ, ÿ íå ìîãó ïîìî÷ü âàì, íî ÿ ðåêîìåíäóþ âçÿòü äðóãîé äèñê êàê îòâåò íà âàøó ïðîáëåìó îòñóòñòâèÿ ñâîáîäíîãî ïðîñòðàíñòâà).2.7
Êàê äîëãî ýòîò ïðîöåññ èäåò?
Äëÿ áîëüøèíñòâà ëþäåé îòâåò áóäåò òàêîé: “äîâîëüíî äîëãî”. Ñêîðîñòü âàøåé ìàøèíû è êîëè÷åñòâî èìåþùåéñÿ ïàìÿòè îïðåäåëÿþò ýòî âðåìÿ, íî íåêîòîðàÿ ÷àñòü îïðåäåëÿåòñÿ, òåì êàê âû âêëþ÷èëè â ÿäðî. Íà ìàøèíå 486DX4/100 ñ 16 ÌÁ ÎÇÓ, íà ÿäðå âåðñèè 1.2 ñ ïÿòüþ ôàéëîâûìè ôàéëîâûìè ñèñòåìàìè, ïîääåðæêîé ñåòè è äðàéâåðîì çâóêîâîé êàðòû, êîìïèëÿöèÿ çàéìåò ïðèìåðíî 20 ìèíóò. Íà 386DX/40 (8 MÁ ÎÇÓ) ñ ïðèìåðíî òàêîé æå êîíôèãóðàöèåé, êîìïèëÿöèÿ ïðîäîëæàåòñÿ îêîëî 1.5 ÷àñîâ.  îáùåì ðåêîìåíäóåì âûïèòü êîôå, ïîñìîòðåòü òåëåâèçîð, ïîâÿçàòü èëè ïîäåëàòü ÷òî-íèáóäü ïîäîáíîå ïîêà âàøà ìàøèíà êîìïèëèðóåò ÿäðî.3. Êàê íàñòðàèâàòü ÿäðî 4
3
Êàê íàñòðàèâàòü ÿäðî
3.1
Ïîëó÷åíèå èñõîäíûõ òåêñòîâ
Âû ìîæåòå ïîëó÷èòü èñõîäíûå òåêñòû ñ ïîìîùüþ àíîíèìíîãî ftp ñ ftp.funet.fi â äèðåêòî-ðèè /pub/Linux/PEOPLE/Linus, ñ åãî çåðêàëà, èëè ñ äðóãîãî ñåðâåðà. Îíè îáû÷íî îáîçíà÷åíû êàê linux-x.y.z.tar.gz, ãäå x.y.z íîìåð âåðñèè. Áîëåå íîâûå (ëó÷øèå?) âåðñèè è çàïëàòêè (patches) îáû÷íî íàõîäÿòñÿ â ïîääèðåêòîðèÿõ, òàêèõ êàê ‘v1.1’ è ‘v1.2’. Ñàìûé áîëüøîé íîìåð èìååò ïîñëåäíÿÿ âåðñèÿ è îáû÷íî ÿâëÿåòñÿ “òåñòîâîé âåðñèåé”, ýòî çíà÷èò, ÷òî åñëè âû íåëåãêî ïëîõî ÷óâñòâóåòå ñåáÿ ñ àëüôà èëè áåòà âåðñèÿìè, òî âû äîëæíû èñïîëüçîâàòü ñòàáèëüíóþ âåðñèþ. ß íàñòîÿòåëüíî ðåêîìåíäóþ âàì èñïîëüçîâàòü ñåðâåðà-çåðêàëà âìåñòî èñïîëüçîâàíèÿ ftp.funet.fi. Çäåñü ïðèâåäåí êîðîòêèé ñïèñîê ñåðâåðîâ-çåðêàë è äðóãèõ ñåðâåðîâ: USA: sunsite.unc.edu:/pub/Linux/kernel USA: tsx-11.mit.edu:/pub/linux/sources/system UK: sunsite.doc.ic.ac.uk:/pub/unix/Linux/sunsite.unc-mirror/kernel Austria: ftp.univie.ac.at:/systems/linux/sunsite/kernel Germany: ftp.Germany.EU.net:/pub/os/Linux/Local.EUnet/Kernel/Linus Germany: sunsite.informatik.rwth-aachen.de:/pub/Linux/PEOPLE/Linus France: ftp.ibp.fr:/pub/linux/sources/system/patches Australia: sunsite.anu.edu.au:/pub/linux/kernel  îáùåì çåðêàëî ñåðâåðà sunsite.unc.edu ÿâëÿåòñÿ õîðîøèì ìåñòîì, ãäå ìîæíî âçÿòü èñõîäíûå òåêñòû ÿäðà. Ôàéë /pub/Linux/MIRRORS ñîäåðæèò ñïèñîê èçâåñòíûõ ñåðâåðîâ-çåðêàë. Åñëè ó âàñ íåò äîñòóïà ê ftp, òî ñïèñîê ñèñòåì BBS, êîòîðûå ðàñïðîñòðàíÿþò linux ïåðèîäè÷åñêè ïîñûëàåòñÿ â ãðóïïó comp.os.linux.announce; ïîñòàðàéòåñü ïîëó÷èòü åãî. Åñëè âû èùåòå îáùóþ èíôîðìàöèþ î Linux è åãî äèñòðèáóòèâàõ, òî ïîñìîòðèòå íà http://www.linux.org.3.2
Ðàñïàêîâêà èñõîäíûõ òåêñòîâ
Âîéäèòå â ñèñòåìó êàê àäìèíèñòðàòîð èëè âûïîëíèòå êîìàíäó su, è ïåðåéäèòå â äèðåêòîðèþ /usr/src.Åñëè âû óñòàíàâëèâàëè èñõîäíûå òåêñòû ÿäðà ïðè óñòàíîâêå linux (êàê äåëàåò áîëü-øèíñòâî), òî òîì ó âàñ óæå åñòü äèðåêòîðèÿ íàçâàííàÿ ‘linux’, êîòîðàÿ ñîäåðæèò ïîëíîå äåðåâî óñòàðåâøèõ èñõîäíûõ òåêñòîâ. Åñëè ó âàñ åñòü ñâîáîäíîå äèñêîâîå ïðîñòðàíñòâî, òî âû ìîæåòå ñî-õðàíèòü ýòó äèðåêòîðèþ. Õîðîøàÿ èäåÿ – îïðåäåëèòü êàêàÿ âåðñèÿ ÿäðà çàïóùåíà è ñîîòâåòñòâåí-íî ïåðåèìåñîîòâåòñòâåí-íîâàòü äèðåêòîðèþ. Êîìàíäà ‘uname -r’ âûäàåò ñîîòâåòñòâåí-íîìåð òåêóùåé âåðñèè ÿäðà. Ïîýòîìó, åñëè êîìàíäà ‘uname -r’ âûäàëà ‘1.0.9’, òî âû äîëæíû ïåðåèìåíîâàòü (ñ ïîìîùüþ ‘mv’) ‘linux’ â ‘linux-1.0.9’. Åñëè âû íå ÷óâñòâóåòå, ÷òî ïîñòóïàåòå îïðîìåò÷èâî, òî ïðîñòî ñîòðèòå âñþ äè-ðåêòîðèþ.  ëþáîì ñëó÷àå óáåäèòåñü, ÷òî íèêàêîé äèðåêòîðèè ‘linux’ â /usr/src äî ðàñïàêîâêè ïîëíîãî èñõîäíîãî êîäà ÿäðà. Òåïåðü ðàñïàêóéòå â /usr/src èñõîäíûå òåêñòû, ïîëüçóÿñü êîìàíäîé ‘tar zxpvf linux-x.y.z.tar.gz’ (åñëè âû ïîëó÷èëè ïðîñòî ôàéë .tar áåç ðàñøèðåíèÿ .gz íà êîíöå, òî ðàáîòàåò êîìàíäà ‘tar xpvf linux-x.y.z.tar’). Ñîäåðæèìîå àðõèâà áóäåò ðàñïàêîâàíî. Ïîñëå îêîí÷àíèÿ ïðîöåññà, áóäåò ñóùåñòâîâàòü íîâàÿ äèðåêòîðèÿ ‘linux’ â /usr/src. Ïåðåéäèòå linux è ïîñìîòðèòå ôàéë README. Òàì áóäåò ðàçäåë ñ çàãîëîâêîì ‘INSTALLING the kernel (õÓÔÁÎÏ×ËÁ ÑÄÒÁ)’. Âûïîëíèòå ñîîòâåòñòâóþùèå èíñòðóêöèè – ñèìâîëè÷åñêèå ññûëêè äîëæíû áûòü íà ñâîåì ìåñòå, óäàëèòå ñòàðûå .o ôàéëû, è ò.ï.3. Êàê íàñòðàèâàòü ÿäðî 5
3.3
Íàñòðîéêà ÿäðà
Çàìå÷àíèå: Íåêîòîðîå èç ýòîãî ÿâëÿþòñÿ ïîâòîðåííèÿìè/ïîÿñíåíèÿìè ïîäîáíîãî ðàçäåëà ôàéëà READMEïîñòàâëÿåìîãî Linus.
Êîìàíäà ‘make config’ âûïîëíåííàÿ â /usr/src/linux çàïóñêàåò ñêðèïò íàñòðîéêè, êîòîðàÿ çàäàåò âàì ìíîãî âîïðîñîâ. Îíà òðåáóåò íàëè÷èÿ bash, òàê ÷òî ïðîâåðüòå ÷òî bash íàõîäÿòñÿ â /bin/bash, /bin/sh, èëè $BASH.
Ñóùåñòâóþò íåêîòîðûå àëüòåðíàòèâû êîìàíäå ‘make config’ è âû ìîæåòå íàéòè èõ áîëåå óäîá-íûìè è ëåãêèìè äëÿ èñïîëüçîâàíèÿ. Òå, êòî ðàáîòàåò â X ìîãóò ïîïðîáîâàòü ‘make xconfig’, åñëè ó âàñ óñòàíîâëåí Tk (‘click-o-rama’ - Nat). ‘make menuconfig’ – ýòî äëÿ òåõ, ó êîãî óñòàíîâëåí (n)curses è ïðåäïî÷èòàåò òåêñòîâûå ìåíþ. Ýòè èíòåðôåéñû èìåþò îäíî ÿâíîå ïðåèìóùåñòâî: åñëè âû ñäåëàëè íåïðàâèëüíûé âûáîð â òå÷åíèè íàñòðîéêè, òî î÷åíü ëåãêî âåðíóòüñÿ è èñïðàâèòü åå. Òåïåðü âû ãîòîâû îòâå÷àòü íà âîïðîñû, îáû÷íî îòâåòû âûãëÿäÿò êàê ‘y’ (äà) èëè ‘n’ (íåò). Äðàéâåðà óñòðîéñòâ îáû÷íî èìåþò îïöèþ ‘m’. Ýòî îçíà÷àåò “module (ìîäóëü)”, îáîçíà÷àÿ, ÷òî ñèñòåìà áóäåò êîìïèëèðîâàòü ýòîò äðàéâåð, íî íå âñòàâèò åãî ïðÿìî â ÿäðî, à ñäåëàåò çàãðóæàåìûì ìîäóëåì. Áîëåå êîìè÷íî ýòà îïöèÿ îïèñûâàåòñÿ êàê “maybe (ìîæåò áûòü)”. Íåêîòîðûå áîëåå ÿñíûå è íåêðèòè÷íûå îïöèè çäåñü íå îïèñàíû; ñìîòðèòå ðàçäåë “Äðóãèå îïöèè íàñòðîéêè” äëÿ èõ êðàòêîãî îïèñàíèÿ.  âåðñèÿõ 2.0.x è áîëåå ïîçäíèõ, ñóùåñòâóåò îïöèÿ ‘?’, êîòîðàÿ îáåñïå÷èâàåò êðàòêîå îïèñàíèå ïàðàìåòðà íàñòðîéêè. Ýòà èíôîðìàöèÿ ñêîðåå âñåãî íàèáîëåå ñâåæàÿ. 3.3.1 Ýìóëÿöèÿ ìàòåìàòè÷åñêèõ ôóíêöèé ÿäðîì Åñëè ó âàñ íåò ìàòåìàòè÷åñêîãî ñîïðîöåññîðà (ó âàñ ãîëûé 386 èëè 486SX), òî âû äîëæíû îòâåòèòü ‘y’ íà ýòîò âîïðîñ. Åñëè ó âàñ åñòü ñîïðîöåññîð è âû âñå ðàâíî îòâåòèëè ‘y’, òî íå áåñïîêîéòåñü – ñîïðîöåññîð âñå ðàíî áóäåò èñïîëüçîâàòüñÿ, à ýìóëÿöèÿ áóäåò ïðîèãíîðèðîâàíà. Åäèíñòâåííîå ñëåäñòâèå ýòîãî â òîì, ÷òî ÿäðî áóäåò áîëüøå (ðàñõîä ÎÇÓ). ß óïîìèíàë î òîì, ÷òî ýìóëÿöèÿ î÷åíü ìåäëåíà; õîòÿ ýòî íå î÷åíü ÷àñòî âëèÿåò, íî âñå ðàâíî âñïîìíèòå ýòî, åñëè ñòîëêíåòåñü ñ ìàëîé ïðîèçâîäèòåëüíîñòüþ ñèñòåìû X-windos. 3.3.2 Ïîääåðæêà îáû÷íûõ (MFM/RLL) äèñêîâ è äèñêîâ/cdrom IDE Âàì âåðîÿòíî íåîáõîäèìà ýòà ïîääåðæêà; ýòî îçíà÷àåò, ÷òî ÿäðî áóäåò ïîääåðæèâàòü ñòàíäàðòíûå æåñòêèå äèñêè PC, êîòîðûå èìååò áîëüøèíñòâî ëþäåé. Ýòîò äðàéâåð íå âêëþ÷àåò ïîääåðæêó SCSI äèñêîâ; èõ âûáîð èäåò äàëåå â íàñòðîéêå.
Çàòåì ó âàñ ñïðîñÿò î äðàéâåðàõ “old disk-only (òîëüêî ñòàðûõ äèñêîâ)” è “new IDE (íîâûõ IDE)”. Âû çàõîòèòå âûáðàòü îäèí èç íèõ; îñíîâíîå îòëè÷èå â òîì, ÷òî ñòàðûå äèñêè ïîääåðæèâàþò òîëü-êî äâà äèñêà íà îäíîì èíòåðôåéñå, à íîâûå ïîääåðæèâàþò âòîðè÷íûé (secondary) èíòåðôåéñ è íàêîïèòåëè IDE/ATAPI cdrom. Íîâûé äðàéâåð íà 4k áîëüøå ñòàðîãî è òàêæå ïðåäïîëîæèòåëüíî “óëó÷øåí”, óáèðàÿ íåêîòîðîå êîëè÷åñòâî îøèáîê, îí ìîæåò óëó÷øèòü ïðîèçâîäèòåëüíîñòü âàøåãî äèñêà, îñîáåííî åñëè ó âàñ íîâîå îáîðóäîâàíèå (òèïà EIDE). 3.3.3 Ïîääåðæêà ñåòè  ïðèíöèïå âû äîëæíû îòâåòèòü ‘y’, åñëè âàøà ìàøèíà ïîäêëþ÷åíà ê ñåòè, òàêîé êàê internet, èëè âû õîòèòå èñïîëüçîâàòü SLIP, PPP, term è ò.ï. äëÿ dial up äîñòóïà ê internet. Îäíàêî ìíîãî ïàêåòîâ (òàêèõ êàê îêîííàÿ ñèñòåìà X) òðåáóåò ïîääåðæêó ñåòè, äàæå åñëè âû íå ïîäêëþ÷åíû íè ê êàêîé ñåòè, âû äîëæíû ñêàçàòü ‘y’. Ïîçæå ó âàñ ñïðîñÿò, õîòèòå ëè âû ïîääåðæêó TCP/IP; äàëåå ñêàæèòå ‘y’, åñëè âû àáñîëþòíî óâåðåíû â ñâîåì âûáîðå. 3.3.4 Îãðàíè÷èòü ïàìÿòü äî ìåíåå 16MB Ñóùåñòâóþò ðàáîòàþùèå ñ îøèáêàìè êîíòðîëåðû DMA íà ìàøèíàõ ñ ïðîöåññîðîì 386, êîòîðûå èìåþò ïðîáëåìû ñ àäðåñàöèåé áîëüøå 16 Ìá ÎÇÓ; âû ìîæåòå îòâåòèòü ‘y’ â ñëó÷àå (ðåäêîì) åñëè
3. Êàê íàñòðàèâàòü ÿäðî 6
ó âàñ òàêîé êîíòðîëëåð.
3.3.5 System V IPC
Îäíî èç ëó÷øèõ îïðåäåëåíèé IPC (Interprocess Communication, Ìåæïðîöåññíîãî ñîîáùåíèÿ) äàíîâ â ãëîññàðèè êíèãè ïî Perl. Íå óäèâèòåëüíî, ÷òî íåêîòîðûå ïðîãðàììèñòû íà Perl èñïîëüçóþò ýòîò ìåõàíèçì ÷òîáû ïîçâîëèòü ïðîöåññó îáùàòüñÿ ñ äðóãèìè ïðîöåññàìè, òàê æå êàê è äðóãèå ïàêåòû (ñàìûé çàìåòíûé èç íèõ ýòî DOOM), òàê ÷òî îòâåò n íå ÿâëÿåòñÿ õîðîøåé èäååé, ïîêà âû íå áóäåòå òî÷íî óâåðåíû â òîì, ÷òî âû äåëàåòå. 3.3.6 Òèï ïðîöåññîðà (386, 486, Pentium, PPro) (â ñòàðûõ ÿäðàõ: èñïîëüçóéòå ôëàã -m486 äëÿ îïòèìèçàöèè äëÿ ïðîöåññîðà 486) Òðàäèöèîííî, ýòî äåëàåò íåêîòîðóþ îïòèìèçàöèþ äëÿ âûáðàííîãî ïðîöåññîðà; ÿäðà ðàáîòàþò áû-ñòðåå, íî ÿäðî ìîæåò áûòü íåñêîëüêî áîëüøå.  íîâûõ ÿäðàõ, ýòî îäíàêî áîëüøå íå ÿâëÿåòñÿ ïðàâäîé, òàê ÷òî âû äîëæíû ââåñòè ïðîöåññîð äëÿ êîòîðîãî âû êîìïèëèðóåòå ÿäðî. ßäðî äëÿ “386” áóäåò ðàáîòàòü íà âñåõ ìàøèíàõ. 3.3.7 Ïîääåðæêà SCSI Åñëè ó âàñ åñòü óñòðîéñòâà SCSI, òî îòâåòüòå ‘y’. Ó âàñ çàïðîñÿò äîïîëíèòåëüíóþ èíôîðìàöèþ, òàêóþ êàê ïîääåðæêó CD-ROM, äèñêîâ, è êàêîé òèï àäàïòåðà SCSI ó âàñ èìååòñÿ. Ñìîòðèòå SCSI-HOWTO äëÿ äîïîëíèòåëüíîé èíôîðìàöèè. 3.3.8 Ïîääåðæêà ñåòåâûõ óñòðîéñòâ Åñëè ó âàñ åñòü ñåòåâàÿ êàðòà, èëè âû õîòèòå èñïîëüçîâàòü SLIP, PPP, èëè àäàïòåð ïàðàëëåëüíîãî ïîðòà äëÿ ïîäêëþ÷åíèÿ ê Internet, òî îòâåòüòå ‘y’. Ñêðèïò íàñòðîéêè çàïðîñèò ó âàñ òèï êàðòû è êàêèå ïðîòîêîëû âû õîòèòå èñïîëüçîâàòü. 3.3.9 Ôàéëîâûå ñèñòåìû Çàòåì íàñòðîå÷íûé ñêðèïò çàïðîñèò ó âàñ ïîääåðæêó äëÿ êàêèõ ôàéëîâûõ ñèñòåì âû õîòèòå èìåòü â ñâîåé ñèñòåìå: Ñòàíäàðòíàÿ (minix) - Áîëåå íîâûå äèñòðèáóòèâû íå ñîçäàþò ôàéëîâûå ñèñòåìû minix, è ìíîãî ëþ-äåé íå èñïîëüçóþò åå, íî âñå ðàâíî õîðîøàÿ èäåÿ íàñòðîèòü åå. Íåêîòîðûå ïðîãðàììû ñ “äèñêàìè äëÿ âîññòàíîâëåíèÿ (rescue disk)” èñïîëüçóþò åå è âñå åùå ìíîãî ãèáêèõ äèñêîâ ìîãóò èñïîëüçîâàòü ôàéëîâóþ ñèñòåìó minix, ïîñêîëüêó ôàéëîâàÿ ñèñòåìà minix ìåíåå ìó÷èòåëüíàÿ äëÿ èñïîëüçîâàíèÿ íà ãèáêèõ äèñêàõ. Extended fs - ýòî áûëà ïåðâàÿ âåðñèÿ ðàñøèðåííîé ôàéëîâîé ñèñòåìû, êîòîðàÿ ñåé÷àñ íå ÿâëÿåòñÿ øèðîêî èñïîëüçóåìîé. Åñëè âû íå çíàåòå òî÷íî, ÷òî îíà âàì íóæíà è ñîìíåâàåòåñü, òî ñêîðåå âñåãî îíà âàì íå íóæíà. Second extended - ýòà ôàéëîâàÿ ñèñòåìà øèðîêî èñïîëüçóåòñÿ â íîâûõ äèñòðèáóòèâàõ. Ó âàñ ñêîðåå âñåãî îíà åñòü è âàì íóæíî îòâåòèòü ‘y’. ôàéëîâàÿ ñèñòåìà xiafs - îäíî âðåìÿ îíà íå áûëà íåîáû÷íî, íî âî âðåìÿ íàïèñàíèÿ ýòîãî äîêóìåíòà ÿ íå çíàë íèêîãî èñïîëüçóþùåãî ýòó ôàéëîâóþ ñèñòåìó. msdos - åñëè âû õîòèòå èñïîëüçîâàòü ðàçäåëû âàøåãî æåñòêîãî äèñêà ñ MS-DOS, èëè ìîíòèðîâàòü ãèáêèå äèñêè, îòôîðìàòèðîâàííûå ïîä MS-DOS, òî îòâåòüòå ‘y’. umsdos - ýòà ôàéëîâàÿ ñèñòåìà ðàñøèðÿåò âîçìîæíîñòè ôàéëîâîé ñèñòåìû MS-DOS îáû÷íûìè Unix-ïîäîáíûìè âîçìîæíîñòÿìè, òàêèìè êàê äëèííûå èìåíà. Ýòî íå ÿâëÿåòñÿ ïîëåçíûì äëÿ ëþäåé (òàêèõ êàê ÿ), êòî “íå ðàáîòàåò â DOS.” /proc - îäíà èç âåëè÷àéøèõ âåùåé ñî âðåìåí èçîáðåòåíèÿ ïîðîøêîâîãî ìîëîêà (ÿ òàê ïðåäïîëà-ãàþ, èäåÿ áûëà áåññòûäíî óêðàäåíà ó Bell Labs). Îíà íå ñîçäàåò ôàéëîâóþ ñèñòåìó proc íà äèñêå;
3. Êàê íàñòðàèâàòü ÿäðî 7
îíà ÿâëÿåòñÿ èíòåðôåéñîì â âèäå ôàéëîâîé ñèñòåìû ê ÿäðó è ïðîöåññàì. Ìíîãî ïðîãðàìì, âûäà-þùèõ ñïèñîê ïðîöåññîâ (òàêèõ êàê ‘ps’) èñïîëüçóþò åå. Êàê íèáóäü ïîïðîáóéòå âûïîëíèòü ‘cat /proc/meminfo’ èëè ‘cat /proc/devices’. Íåêîòîðûå êîìàíäíûå ïðîöåññîðû (â ÷àñòíîñòè rc) èñïîëüçóþò /proc/self/fd (èçâåñòíûé êàê /dev/fd â äðóãèõ ñèñòåìàõ) äëÿ ââîäà/âûâîäà. Âû äîëæíû ïî÷òè âñåãäà îòâåòèòü ‘y’ íà ýòîò âîïðîñ; ìíîãî âàæíûõ óòèëèò äëÿ linux çàâèñÿò îò ýòîãî âûáîðà.
NFS - åñëè âàøà ìàøèíà ðàáîòàåò â ñåòè è âû õîòèòå èñïîëüçîâàòü ôàéëîâûå ñèñòåìû íàõîäÿùèåñÿ íà äðóãèõ ìàøèíàõ ñ ïîìîùüþ NFS, òî îòâåòüòå ‘y’.
ISO9660 - èìååòñÿ íà áîëüøèíñòâå CD-ROM. Åñëè ó âàñ åñòü ïðèâîä CD-ROM è âû õîòèòå èñïîëü-çîâàòü åãî â Linux, òî îòâåòüòå ‘y’.
OS/2 HPFS - âî âðåìÿ íàïèñàíèÿ ðàáîòàåò êàê ôàéëîâàÿ ñèñòåìà òîëüêî äëÿ ÷òåíèÿ äëÿ OS/2 HPFS. System V è Coherent - äëÿ ðàçäåëîâ ìàøèí ñ System V è Coherent (ýòî äðóãèå âàðèàíòû Unix äëÿ PC).
Íî ÿ íå çíàþ êàêèå ôàéëîâûå ñèñòåìû ìíå íóæíû! Õîðîøî, íàáåðèòå êîìàíäó ‘mount’. Åå âûâîä áóäåò âûãëÿäåòü ïðèìåðíî òàê:
blah# mount
/dev/hda1 on / type ext2 (defaults) /dev/hda3 on /usr type ext2 (defaults) none on /proc type proc (defaults) /dev/fd0 on /mnt type msdos (defaults)
Ïîñìîòðèòå íà êàæäóþ ñòðîêó; ñëîâî èäóùåå çà ñëîâîì ‘type (ÔÉÐ)’ ÿâëÿåòñÿ òèïîì ôàéëîâîé ñèñòåìû.  ìîåì ïðèìåðå ìîè ôàéëîâûå ñèñòåìû / è /usr ÿâëÿþòñÿ ôàéëîâûìè ñèñòåìàìè òèïà second extended, ÿ èñïîëüçóþ /proc, è åñòü ãèáêèé äèñê ñìîíòèðîâàííûé èñïîëüçóÿ ôàéëîâóþ ñèñòåìó msdos. Âû ìîæåòå ïîïðîáîâàòü âûïîëíèòü ‘cat /proc/filesystems’, åñëè ó âàñ â íàñòîÿùåå âðåìÿ ðàçðå-øåíî èñïîëüçîâàíèå /proc; ýòà êîìàíäà ïåðå÷èñëèò ôàéëîâûå ñèñòåìû, ïîääåðæêó êîòîðûõ èìååò âàøå ÿäðî. Íàñòðîéêà ðåäêî èñïîëüçóåìûõ, íå êðèòè÷åñêèõ ôàéëîâûõ ñèñòåì ìîæåò âûçâàòü ðàçäóâàíèå âà-øåãî ÿäðà; ñìîòðèòå ðàçäåë î ìîäóëÿõ ÷òîáû èçáåæàòü ýòîãî è ðàçäåë “Ëîâóøêè” î òîì, ïî÷åìó ðàçäóâøååñÿ ÿäðî ÿâëÿåòñÿ íåæåëàòåëüíûì. 3.3.10 Ñèìâîëüíûå óñòðîéñòâà  ýòîì ðàçäåëå âû âûáèðàåòå äðàéâåðà äëÿ âàøåãî ïðèíòåðà (ïàðàëëåëüíîãî ïðèíòåðà), øèííîé ìûøè, ìûøè äëÿ PS/2 (ìíîãèå notebook èñïîëüçóþò ïðîòîêîë ìûøè PS/2 äëÿ ñâîèõ âñòðîåííûõ òðåêáîëîâ), íåêîòîðûå ëåíòî÷íûå íàêîïèòåëè è äðóãèå òàêèå æå “ñèìâîëüíûå” óñòðîéñòâà. Îòâåòü-òå ‘y’ ãäå íåîáõîäèìî. Çàìå÷àíèå: Selection ýòî ïðîãðàììà, êîòîðàÿ ïîçâîëÿåò âàì èñïîëüçîâàòü ìûøü âíå ñèñòåìû X window äëÿ âûðåçàíèÿ è âñòàâêè ìåæäó âèðòóàëüíûìè êîíñîëÿìè. Îíà ðàáîòàåò äîâîëüíî õîðîøî, åñëè ó âàñ ìûøü äëÿ ïîñëåäîâàòåëüíîãî ïîðòà, ïîòîìó-÷òî îíà õîðîøî ðàáîòàåò ñ X, íî âàì íåîá-õîäèìî âûïîëíèòü íåêîòîðûå äåéñòâèÿ, äëÿ òîãî ÷òîáû ðàáîòàëè äðóãèå òèïû ìûøåé. Ïîääåðæêà Selection îäíî âðåìÿ áûëà îïöèåé íàñòðîéêè, íî ñåé÷àñ îíà ÿâëÿåòñÿ ñòàíäàðòîì. Çàìå÷àíèå 2: Ñåé÷àñ Selection ñ÷èòàåòñÿ óñòàðåâøåé. Èìÿ íîâîé ïðîãðàììû “gpm”. Îíà ìîæåò äå-ëàòü áîëåå ôàíòàñòè÷åñêèå âåùè, òàêèå êàê òðàíñëÿöèþ ïðîòîêîëà ìûøè, ðàáîòàòü ñ íåñêîëüêèìè ìûøàìè, .. 3.3.11 Çâóêîâûå êàðòû åñëè âû ÷óâñòâóåòå îãðîìíîå æåëàíèå ñëûøàòü ðÿâêàíüå biff, òî îòâåòüòå ‘y’, è äàëåå äðóãàÿ ïðîãðàììà íàñòðîéêè áóäåò ñêîìïèëèðîâàíà è áóäåò çàäàâàòü âàì âîïðîñû î âàøåé çâóêîâîé êàðòå.
4. Êîìïèëÿöèÿ ÿäðà 8 (Ïðèìå÷àíèå î íàñòðîéêå çâóêîâîé êàðòû: êîãäà ïðîãðàììà ñïðîñèò ó âàñ óñòàíàâëèâàòü ëè ïîëíóþ âåðñèþ äðàéâåðà, òî îòâåòüòå ‘n’ è ñîõðàíèòå íåêîòîðîå êîëè÷åñòâî ïàìÿòè â ÿäðå âûáîðîì òîëüêî íåîáõîäèìûõ âîçìîæíîñòåé äðàéâåðà). ß ñèëüíî ðåêîìåíäóþ âàì ïîñìîòðåòü â Sound-HOWTO äëÿ áîëåå äåòàëüíîé èíôîðìàöèè î ïîääåðæêå çâóêà, åñëè ó âàñ åñòü çâóêîâàÿ êàðòà. 3.3.12 Äðóãèå îïöèè íàñòðîéêè Íå âñå îïöèè íàñòðîéêè ïåðå÷èñëåíû çäåñü ïîòîìó-÷òî îíè ñëèøêîì ÷àñòî ìåíÿþòñÿ èëè ÿâëÿ-þòñÿ î÷åâèäíûìè (íàïðèìåð, ïîääåðæêà 3Com 3C509 äëÿ êîìïèëÿöèè äðàéâåðà äëÿ äàííîé êàðòû ethernet). Ñóùåñòâóåò äîâîëüíî ïîëíûé ñïèñîê âñåõ îïöèé (ïëþñ ñïîñîá ïîìåñòèòü èõ â ñêðèïò Configure), êîòîðûé ñîáðàí Axel Boldt ([email protected]) ïî ñëåäóþùåìó àäðåñó:
http://math-www.uni-paderborn.de/~axel/config_help.html èëè ÷åðåç àíîíèìíûé FTP ïî àäðåñó: ftp://sunsite.unc.edu/pub/Linux/kernel/config/krnl_cnfg_hlp.x.yz.tgz ãäå x.yz ýòî íîìåð âåðñèè. Äëÿ ïîñëåäíèõ ÿäåð (2.0.x è áîëåå ïîçäíèõ), ýòîò ñïèñîê áûë èíòåãðèðîâàí â äåðåâî èñõîäíûõ òåêñòîâ. 3.3.13 Ðàáîòà íàä ÿäðîì (Kernel hacking) Èç Linus README: äåéñòâèå îïöèè íàñòðîéêè “kernel hacking” îáû÷íî ïðîÿâëÿåòñÿ â áîëåå áîëüøîì èëè ìåäëåííîì ÿäðå (èëè îáà ñèìïòîìà), è ìîæåò äàæå ñäåëàòü ÿäðî ìåíåå ñòàáèëüíûì èç-çà íàñòðîéêè íåêîòîðûõ ïîäïðîãðàìì íà ïîïûòêó àêòèâíî ñëîìàòü ïëîõîé êîä, ÷òîáû íàéòè ïðîáëåìû ñ ÿäðîì (kmalloc()). Òàêèì îáðàçîì âàì ñêîðåå âñåãî íàäî îòâåòèòü ‘n’ íà ýòîò âîïðîñ äëÿ “production” ÿäåð.
3.4
×òî òåïåðü? (Makefile)
Ïîñëå òîãî êàê make config âûäàñò ñîîáùåíèå î òîì, ÷òî âàøå ÿäðî áûëî íàñòðîåíî, âû ìîæåòå “ïðîâåðèòü (íàñòðîèòü) îñíîâíîé Makefile äëÿ äîïîëíèòåëüíûõ íàñòðîåê”, è ò.ï. Òåïåðü âû ìîæåòå ïîñìîòðåòü â Makefile. Âàì âåðîÿòíî íå ïîíàäîáèòñÿ èçìåíÿòü åãî, íî âû íå ïîâðåäèòå åãî åñëè ïîñìîòðèòå. Âû ìîæåòå òàêæå èçìåíèòü îïöèè â íåì ñ ïîìîùüþ êîìàíäû ‘rdev’ ïîñëå òîãî êàê ïîìåñòèòå ÿäðî íà åãî ìåñòî.4
Êîìïèëÿöèÿ ÿäðà
4.1
Î÷èñòêà è ñîçäàíèå çàâèñèìîñòåé
Êîãäà íàñòðîå÷íûé ñêðèïò çàêîí÷èò ñâîþ ðàáîòó, îí òàêæå ñêàæåò âàì, ÷òîáû âû âûïîëíèëè ‘make dep’ è (âåðîÿòíî) ‘clean’. Òàê ÷òî âûïîëíèòå ‘make dep’. Îí îáåñïå÷èò, ÷òîáû âñå çàâèñèìîñòè, òàêèå êàê ôàéëû çàãîëîâêîâ, íàõîäÿòñÿ íà ìåñòå. Ýòà ïðîöåäóðà íå äëèòüñÿ äîëãî, åñëè ó âàñ íå ìåäëåííûé êîìïüþòåð. Äëÿ áîëåå ñòàðûõ âåðñèé ÿäåð, ïðè îêîí÷àíèè âû äîëæíû âûïîëíèòü ‘make clean’. Ýòà ïðîöåäóðà óäàëÿåò âñå îáúåêòíûå ôàéëû è íåêîòîðûå äðóãèå âåùè îñòàâøèåñÿ îò ïðåäûäóùåé êîìïèëÿöèè.  ëþáîì ñëó÷àå, íå çàáûâàéòå âûïîëíèòü ýòîò øàã äî íà÷àëà ïåðåêîìïè-ëÿöèè ÿäðà.4. Êîìïèëÿöèÿ ÿäðà 9
4.2
Âðåìÿ êîìïèëÿöèè
Ïîñëå âûïîëíåíèÿ dep è clean, âû ìîæåòå âûïîëíÿòü ‘make zImage’ èëè ‘make zdisk’ (ýòà ÷àñòü ïðîöåññà çàíèìàåò äëèòåëüíîå âðåìÿ). ‘make zImage’ ñêîìïèëèðóåò ÿäðî è îñòàâèò â äèðåêòîðèè arch/i386/boot ôàéë íàçâàííûé ‘zImage’ (ñðåäè äðóãèõ âåùåé). Ýòî íîâîå ñæàòîå ÿäðî. ‘make zdisk’ äåëàåò òîæå ñàìîå, íî òàêæå ïîìåùàåò íîâûé ôàéë zImage íà ãèáêèé äèñê, êîòîðûé âû äîëæíû âñòàâèòü â óñòðîéñòâî “A:”. ‘zdisk’ ÿâëÿåòñÿ äîâîëüíî óäîáíûì äëÿ òåñòèðîâàíèÿ íîâûõ ÿäåð; åñëè îíî íå çàãðóæàåòñÿ (èëè ïðîñòî ðàáîòàåò íåïðàâèëüíî), òî ïðîñòî âûòàùèòå äèñêåòó èç äèñêîâîäà è çàãðóçèòåñü ñî ñòàðûì ÿäðîì. Ýòî ìîæåò áûòü òàêæå óäîáíûì â òîì ñëó÷àå, åñëè âû ñëó÷àéíî óäàëèëè ÿäðî (èëè ñäåëàëè ÷òî-íèáóäü ïîäîáíîå ïî ñâîåìó ðàçðóøèòåëüíîìó äåéñòâèþ). Âû òàêæå ìîæåòå èñïîëüçîâàòü åãî äëÿ óñòàíîâêè íîâûõ ñèñòåì, â òîì ñëó÷àå êîãäà âû ïðîñòî äåëàåòå äàìï ñ îäíîãî äèñêà íà äðóãîé(“ýòî âñå è áîëüøå! Òåïåðü, ñêîëüêî âû ìîãëè áû êóïèòü?”). Âñå, äàæå ñðàâíèòåëüíî íåäàâíèå ÿäðà ÿâëÿþòñÿ ñæàòûìè, ïîýòîìó îíè èìåþò áóêâó ‘z’ â íà÷àëå èìåíè. Ñæàòîå ÿäðî àâòîìàòè÷åñêè ðàçæèìàåòñÿ ïðè âûïîëíåíèè.
4.3
Äðóãèå âåùè, ìîæíî ñäåëàòü ñ ïîìîùüþ “make”
‘make mrproper’ âûïîëíèò áîëåå èíòåíñèâíóþ î÷èñòêó äåðåâà èñõîäíûõ òåêñòîâ. Èíîãäà îíà ÿâ-ëÿåòñÿ íåîáõîäèìîé; âû ìîæåòå âûïîëíÿòü ýòó êîìàíäó ïîñëå êàæäîãî íàëîæåíèÿ çàïëàòîê. ‘make mrproper’ òàêæå óäàëèò âàøè ôàéëû êîíôèãóðàöèè, òàê ÷òî âû ìîæåòå çàõîòåòü ñîõðàíèòü ðå-çåðâíóþ êîïèþ âàøåãî ôàéëà (.config), åñëè âû ñ÷èòàåòå åãî öåííûì. ‘make oldconfig’ ïîïûòàåòñÿ íàñòðîèòü âàøå ÿäðî èñïîëüçóÿ ñòàðûé ôàéë íàñòðîåê; îí ïðîäåëàåò ïóòü ïî ïðîöåññó êîíôèãóðàöèè ‘make config’ âìåñòî âàñ. Åñëè ó âàñ íåò ñêîìïèëèðîâàííîãî ÿäðà èëè ó âàñ íåò ñòàðîãî ôàéëà íàñòðîåê, òî âàì ñêîðåå âñåãî íå íàäî äåëàòü ýòîé îïåðàöèè, ïîñêîëüêó âû âåðîÿòíî çàõîòèòå èçìåíèòü íàñòðîéêè ïî óìîë÷àíèþ. Ñìîòðèòå ðàçäåë î ìîäóëÿõ äëÿ îïèñàíèÿ îïåðàöèè ‘make modules’.4.4
Óñòàíîâêà ÿäðà
Ïîñëå òîãî êàê âû óñòàíîâèëè, ÷òî íîâîå ÿäðî ðàáîòàåò òàê êàê âàì íàäî, íàñòóïàåò âðåìÿ åãî óñòàíîâêè. Áîëüøèíñòâî ëþäåé äëÿ ýòîãî èñïîëüçóåò LILO (Çàãðóç÷èê Linux). Êîìàíäà ‘make zlilo’ óñòàíîâèò íîâîå ÿäðî, çàïóñòèò äëÿ íåãî LILO, è âñå áóäåò ãîòîâî ê ïåðåçàãðóçêå, ÍÎ ÒÎËÜÊÎ åñëè lilo íàñòðîåíî ïðàâèëüíî â âàøåé ñèñòåìå: ÿäðî ðàñïîëàãàåòñÿ â ôàéëå /vmlinuz, lilo íàõîäèòñÿ â äèðåêòîðèè /sbin, è âàø êîíôèãóðàöèîííûé ôàéë lilo (/etc/lilo.conf) îòðàæàåò ýòè óñëîâèÿ. Èíà÷å âàì ïðèäåòñÿ èñïîëüçîâàòü LILO íåïîñðåäñòâåííî. Ýòî äîâîëüíî ëåãêèé â óñòàíîâêå è â ðàáîòå ïàêåò, íî îí èìååò òåíäåíöèþ ââîäèòü â çàìåøàòåëüñòâî ëþäåé ñâîèì êîíôèãóðàöèîííûì ôàéëîì. Ïîñìîòðèòå êîíôèãóðàöèîííûé ôàéë (ëèáî /etc/lilo/config äëÿ ñòàðûõ âåðñèé ëèáî /etc/lilo.confäëÿ áîëåå íîâûõ âåðñèé), è ïîñìîòðèòå òåêóùèå íàñòðîéêè. Êîíôèãóðàöèîííûé ôàéë âûãëÿäèò ïðèìåðíî òàê: image = /vmlinuz label = Linux root = /dev/hda1 ... ‘image =’ óêàçûâàåò íà óñòàíîâëåííîå â íàñòîÿùåå âðåìÿ ÿäðî. Áîëüøèíñòâî ëþäåé èñïîëüçóþò /vmlinuz. ‘label’ èñïîëüçóåòñÿ äëÿ îïðåäåëåíèÿ êàêîå ÿäðî èëè îïåðàöèîííàÿ ñèñòåìà áóäåò çà-ãðóæàòüñÿ, è ‘root’ ýòî êîðíåâîé ðàçäåë îòäåëüíîé îïåðàöèîííîé ñèñòåìû. Ñäåëàéòå ðåçåðâíóþ êîïèþ âàøåãî ÿäðà è ñêîïèðóéòå òîëüêî ÷òî ñäåëàííîå ÿäðî íà åãî ìåñòî (âû äîëæíû âûïîëíèòü êîìàíäó ‘cp zImage /vmlinuz’ åñëè âû èñïîëüçóåòå ‘/vmlinuz’). Çàòåì ïåðåçàïóñòèòå lilo – íà áîëåå íîâûõ ñèñòåìàõ âû ìîæåòå ïðîñòî çàïóñòèòü ‘lilo’, íî íà ñòàðûõ âû äîëæíû âûïîëíèòü /etc/lilo/install èëè äàæå /etc/lilo/lilo -C /etc/lilo/config.5. Èñïðàâëåíèå ÿäðà ñ ïîìîùüþ çàïëàòîê 10
Åñëè âû õîòèòå çíàòü áîëüøå î íàñòðîéêå LILO èëè ó âàñ åãî íåò, òî âîçüìèòå ñàìóþ íîâóþ åãî âåðñèþ ñ âàøåãî ëþáèìîãî ñåðâåðà ftp è ñëåäóéòå èíñòðóêöèÿì.
Äëÿ çàãðóçêè îäíîãî èç âàøèõ ñòàðûõ ÿäåð íà æåñòêîì äèñêå (åùå îäèí ñïîñîá îáåçîïàñèòü ñåáÿ ïðè èñïîëüçîâàíèè íîâîãî ÿäðà), ñêîïèðóéòå íèæåïðèâåäåííûå ñòðîêè (è âêëþ÷èòå) ‘image = xxx’ â ôàéë êîíôèãóðàöèè LILO â êîíöå ôàéëà, è èçìåíèòå ‘image = xxx’ íà ‘image = yyy’, ãäå ‘yyy’ ýòî ïîëíûé ïóòü âàøåãî ñòàðîãî ÿäðà. Çàòåì èçìåíèòå ‘label = zzz’ íà ‘label = linux-backup’ è ïåðåçàïóñòèòå lilo. Âàì ìîæåò áûòü áóäåò íåîáõîäèìî ïîìåñòèòü ñòðîêó â êîíôèãóðàöèîííûé ôàéë, êîòîðàÿ âûãëÿäèò òàê ‘delay=x’, ãäå x ýòî êîëè÷åñòâî äåñÿòûõ äîëåé ñåêóíäû, íà êîòîðîå LILO çàäåðæèòñÿ äî çàãðóçêè, òàê ÷òî âû ìîæåòå ïðåðâàòü åãî âûïîëíåíèå (íàïðèìåð ïðè ïîìîùè êëàâèøè shift), è íàáðàòü ìåòêó èìÿ ñîõðàíåííîãî îáðàçà çàãðóçêè (â ñëó÷àå, åñëè ïðîèçîéäóò ðàçíûå íåïðèÿòíûå âåùè).
5
Èñïðàâëåíèå ÿäðà ñ ïîìîùüþ çàïëàòîê
5.1
Íàëîæåíèå çàïëàòîê
Íàêëàäûâàþùèåñÿ îáíîâëåíèÿ ÿäðà ðàñïðîñòðàíÿþòñÿ â âèäå çàïëàòîê. Íàïðèìåð, åñëè ó âàñ âåð-ñèÿ 1.1.45, è âàñ îïîâåñòèëè, ÷òî âûïóùåí ‘patch46.gz’ äëÿ íåãî, ýòî îçíà÷àåò, ÷òî âû ìîæåòå îáíîâèòü ÿäðî äî âåðñèè 1.1.46 ïðèëîæèâ ýòó çàïëàòêó. Âû ìîæåòå çàõîòåòü ñíà÷àëà ñäåëàòü ðå-çåðâíóþ êîïèþ äåðåâà èñõîäíûõ òåêñòîâ ÿäðà (ñíà÷àëà ‘make clean’ è çàòåì ‘cd /usr/src; tar zcvf old-tree.tar.gz linux’ ñîçäàñò äëÿ ñæàòûé àðõèâíûé ôàéë ñ ðåçåðâíîé êîïèåé).Òàê, ïðîäîëæàÿ ïðèìåð, ïðèâåäåííûé âûøå, ïðåäïîëîæèì, ÷òî ó âàñ ôàéë ‘patch46.gz’ ðàñïîëî-æåí â äèðåêòîðèè /usr/src. Âûïîëíèì cd â /usr/src è âûïîëíèì ‘zcat patch46.gz | patch -p0’ (èëè ‘patch -p0 < patch46’ åñëè ýòà çàïëàòêà íå ÿâëÿåòñÿ ñæàòîé). Âû óâèäèòå íåêîòîðûå âåùè ìåëüêàþùèå íà ýêðàíå, êîòîðûå ñîîáùàþò âàì, ÷òî ïðîãðàììà ïûòàåòñÿ ïðèëîæèòü êóñêè çàïëàòêè íà íóæíûå ôàéëû è èíôîðìàöèþ î òîì, óäà÷íà äàííàÿ îïåðàöèÿ èëè íåò. Îáû÷íî ýòîò ïðîöåññ èäåò ñëèøêîì áûñòðî, ÷òîáû âû ìîãëè ïðî÷èòàòü è âû ìîæåòå íå áûòü óâåðåííûìè, óäà÷-íà ýòà îïåðàöèÿ èëè íåò, â ýòîì ñëó÷àå âû ìîæåòå èñïîëüçîâàòü îïöèþ -s äëÿ ïðîãðàììû patch, êîòîðàÿ çàñòàâëÿåò patch âûäàâàòü òîëüêî ñîîáùåíèå îá îøèáêàõ (âû íå ïîëó÷èòå ñîîáùåíèÿ “ýé, ìîé êîìïüþòåð äåéñòâèòåëüíî ÷òî-òî äåëàåò!”, íî åñëè âû ýòî ïðåäïî÷èòàåòå..). Äëÿ òîãî, ÷òîáû âçãëÿíóòü íà òî êàêèå ðàçäåëû íå ïðîøëè ãëàäêî, ïåðåéäèòå â äèðåêòîðèþ /usr/src/linux è ïîñìîòðèòå ôàéëû ñ ðàñøèðåíèåì .rej. Íåêîòîðûå âåðñèè ïðîãðàììû patch (ñòàðûå âåðñèè, êî-òîðûå ìîãëè áûòü ñêîìïèëèðîâàíû íà áîëåå õóäøèõ ôàéëîâûõ ñèñòåìàõ) îñòàâëÿþò îòêëîíåííûå ôàéëû ñ ðàñøèðåíèåì #. âû ìîæåòå èñïîëüçîâàòü êîìàíäó ‘find’ äëÿ òîãî ÷òîáû íàéòè ýòè ôàéëû:
find . -name ’*.rej’ -print
ýòà êîìàíäà ïå÷àòàåò ñïèñîê âñåõ ôàéëîâ, êîòîðûå íàõîäÿòñÿ â òåêóùåé äèðåêòîðèè è åå ïîääè-ðåêòîðèÿõ è èìåþò ðàñøèðåíèå .rej íà ñòàíäàðòíûé âûâîä.
åñëè âñå ïðîøëî ïðàâèëüíî, òî âûïîëíèòå êîìàíäû ‘make clean’, ‘config’, è ‘dep’ êàê îïèñàíî â ðàçäåëàõ 3 è 4. Ñóùåñòâóåò åùå íåñêîëüêî îïöèé äëÿ êîìàíäû patch. Êàê áûëî îòìå÷åíî âûøå, patch -s çàïðåòèò âûâîä âñåõ ñîîáùåíèé çà èñêëþ÷åíèåì ñîîáùåíèé îá îøèáêàõ. Åñëè âû õðàíèòå âàøå ÿäðî ãäå-òî â äðóãîì ìåñòå, îòëè÷íîì îò /usr/src/linux, ãäå-òî âûïîëíåíèå patch -p1 (â ýãäå-òîé äèðåêãäå-òîðèè) ïðàâèëüíî âûñòàâèò çàïëàòêó. Äðóãèå îïöèè êîìàíäû patch õîðîøî îïèñàíû â åå ñïðàâî÷íîé ñòðàíèöå.
5.2
Åñëè ÷òî-òî íåïðàâèëüíî
(Çàìå÷àíèå: ýòîò ðàçäåë îòíîñèòñÿ ê áîëüøèíñòâó ñòàðûõ ÿäåð).5. Èñïðàâëåíèå ÿäðà ñ ïîìîùüþ çàïëàòîê 11 Íàèáîëåå ÷àñòàÿ ïðîáëåìà âîçíèêàåò êîãäà çàïëàòêà ìîäèôèöèðóåò ôàéë, íàçûâàåìûé ‘config.in’ è îí íå âûãëÿäèò äîñòàòî÷íî ïðàâèëüíî, ïîòîìó-÷òî âû èçìåíèëè åãî îïöèè äëÿ âàøåé ìàøèíû. Ýòî áûëî èñïðàâëåíî, íî ýòà ïðîáëåìà ìîæåò âîçíèêíóòü ñî ñòàðûìè âûïóñêàìè ÿäðà. Äëÿ èñ-ïðàâëåíèÿ ýòîé ïðîáëåìû ïîñìîòðèòå â ôàéë config.in.rej, è ïîñìîòðèòå ÷òî îñòàëîñü ñäåëàòü îðèãèíàëüíîé çàïëàòêå. Èçìåíåíèÿ îáû÷íî îáîçíà÷àþòñÿ ñèìâîëàìè ‘+’ è ‘-’ â íà÷àëå ñòðîêè. Ïîñìîòðèòå ñòðîêè, êîòîðûå îêðóæàþò ýòè ñèìâîëû è çàïîìíèòå ãäå óñòàíîâëåíî ‘y’ èëè ‘n’. Òå-ïåðü îòðåäàêòèðóéòå ôàéë config.in, è èçìåíèòå ‘y’ íà ‘n’ è ‘n’ íà ‘y’ ãäå ýòî íóæíî. Âûïîëíèòå êîìàíäó patch -p0 < config.in.rej è åñëè îíà âûäàëà, ÷òî îïåðàöèÿ ïðîâåäåíà óäà÷íî (áåç îøèáîê), òî âû ìîæåòå ïðîäîëæàòü ðàáîòó âûïîëíÿÿ íàñòðîéêó ÿäðà è åãî êîìïèëÿöèþ. Ôàéë config.in.rej âñå ðàâíî îñòàíåòñÿ, íî âû ìîæåòå óäàëèòü åãî. åñëè ó âàñ âñå ðàâíî ñóùåñòâóþò ïðîáëåìû, òî ýòî çíà÷èò, ÷òî âû ìîãëè óñòàíîâèòü çàïëàòêó íå ñ òåì íîìåðîì. Åñëè ïðîãðàììà patch ñîîáùàåò ‘previously applied patch detected: Assume -R? (ÏÂÎÁÒÕÖÅÎÁ ÐÒÅÄÙÄÕÝÁÑ ÚÁÐÌÁÔËÁ: ÉÓÐÏÌØÚÏ×ÁÔØ ÏÐÃÉÀ -R?’, òî âû ñêîðåå âñåãî ïûòà-åòåñü ïðèëîæèòü çàïëàòêó ñ íîìåðîì ìåíüøèì, ÷åì íîìåð âåðñèè âàøåãî ÿäðà; åñëè âû îòâåòèòå ‘y’, òî ïðîãðàììà ïîïûòàåòñÿ âåðíóòü âàøè èñõîäíûå òåêñòû ê ïðåäûäóùåé âåðñèè, è ñêîðåå âñåãî ýòî âûçîâåò îøèáêó; ïîýòîìó âàì ïîíàäîáèòñÿ óñòàíîâèòü çàíîâî âñå äåðåâî èñõîäíûõ òåêñòîâ (÷òî ìîæåò áûòü íå òàêîé óæ ïëîõîé èäååé). Äëÿ òîãî ÷òîáû óáðàòü èçìåíåíèÿ âíåñåííûå çàïëàòêîé, èñïîëüçóéòå êîìàíäó ‘patch -R’ ñ îðèãè-íàëüíîé çàïëàòêîé. Ëó÷øå âñåãî â ñëó÷àå, êîãäà çàïëàòêè äåëàþò ÷òî-òî íåïðàâèëüíî, íà÷àòü ïðèìåíÿòü åå ñ íîâûì äåðåâîì èñõîäíûõ òåêñòîâ (íàïðèìåð èçâëå÷åííûì èç îäíîãî èç ôàéëîâ linux-x.y.z.tar.gz), è çàïóñòèò ïðîöåññ çàíîâî.
5.3
Èçáàâëÿåìñÿ îò ôàéëîâ .orig
Ïîñëå âñåãî íåñêîëüêèõ çàïëàòîê ó âàñ íàêîïèòñÿ êó÷à ôàéëîâ ñ ðàñøèðåíèåì .orig. Íàïðèìåð îäíî ÿäðî 1.1.51, êîòîðîå áûëî ïîñëåäíèé ðàç ïî÷èùåíî ïðè âåðñèè 1.1.48. Óäàëåíèå .orig ôàéëîâ ñîõðàíèëî ïðèìåðíî ïîëîâèíó ìåãàáàéòà äèñêîâîé ïàìÿòè.find . -name ’*.orig’ -exec rm -f {} ’;’
ýòà êîìàíäà ïîçàáîòèòñÿ î âàñ. Âåðñèè ïðîãðàììû patch, êîòîðûå èñïîëüçóþò çíàê # äëÿ îòêëî-íåííûõ ôàéëîâ èñïîëüçóþò çíàê òèëüäû âìåñòî .orig.
Ñóùåñòâóåò ëó÷øèé ñïîñîá èçáàâèòñÿ îò .orig ôàéëîâ, êîòîðûé çàâèñèò îò GNU ïðîãðàììû xargs:
find . -name ’*.orig’ | xargs rm
èëè “äîâîëüíî áåçîïàñíûé, íî íåñêîëüêî áîëåå ìíîãîñëîâíûé” ìåòîä: find . -name ’*.orig’ -print0 | xargs null rm
--5.4
Äðóãèå çàïëàòêè
Òàêæå ñóùåñòâóþò äðóãèå çàïëàòêè (ÿ áóäó íàçâàòü èõ “íåñòàíäàðòíûìè”), êðîìå ïîñòàâëÿåìûõ Linus. Åñëè âû íàêëàäûâàåòå òàêèå çàïëàòêè, òî çàïëàòêè îò Linus ìîãóò ðàáîòàòü íåïðàâèëüíî è âû äîëæíû áóäåòå ëèáî óáðàòü èõ, èçìåíèòü èñõîäíûå òåêñòû èëè çàïëàòêó, ëèáî óñòàíîâèòü íîâîå äåðåâî èñõîäíûõ òåêñòîâ, èëè âûïîëíèòü êîìáèíàöèþ îïèñàííûõ äåéñòâèé. Ýòî ìîæåò áûòü î÷åíü ðàññòðàèâàþùèì, òàê ÷òî åñëè âû íå õîòèòå èçìåíÿòü èñõîäíûå òåêñòû (ñ âîçìîæíî ïëîõèì ðåçóëüòàòîì), òî óäàëèòå íåñòàíäàðòíûå çàïëàòêè äî ïðèëîæåíèÿ çàïëàòîê ïîëó÷åííûõ îò Linus,6. Äîïîëíèòåëüíûå ïàêåòû 12 èëè ïðîñòî óñòàíîâèòå íîâîå äåðåâî èñõîäíûõ òåêñòîâ. Çàòåì âû ìîæåòå ïîñìîòðåòü ðàáîòàþò ëè íåñòàíäàðòíûå çàïëàòêè. Åñëè îíè íå ðàáîòàþò, òî âû ëèáî çàäåðæàëèñü ñ èñïîëüçîâàíèåì ñòàðîãî ÿäðà, ïîèãðàéòåñü ñ èñõîäíûìè òåêñòàìè èëè èçìåíèòå çàïëàòêó, ëèáî ïðîñòî äîæäèòåñü âûõîäà íîâîé âåðñèè íåñòàíäàðòíîé çàïëàòêè. Êàêèå ñóùåñòâóþò çàïëàòêè íå âõîäÿùèå â ñòàíäàðòíûé äèñòðèáóòèâ? Âû âåðîÿòíî ñëûøàëè î íèõ. ß èñïîëüçóþ òàêóþ çàïëàòêó äëÿ òîãî, ÷òîáû êóðñîð íà ìîåé êîíñîëè íå ìèãàë, ÿ íåíàâèæó ìèãàþùèå êóðñîðû (Ýòà çàïëàòêà ÷àñòî îáíîâëÿåòñÿ (èëè ïî êðàéíåé ìåðå îáíîâëÿëàñü) ïî ìåðå âûïóñêà íîâûõ âåðñèé ÿäðà. Äëÿ áîëüøèíñòâà íîâûõ óñòðîéñòâ äðàéâåðà ðàçðàáàòûâàþòñÿ êàê çàãðóæàåìûå ìîäóëè è ÷àñòîòà èñïîëüçîâàíèÿ íåñòàíäàðòíûõ çàïëàòîê çíà÷èòåëüíî óìåíüøàåòñÿ.
6
Äîïîëíèòåëüíûå ïàêåòû
Âàøå ÿäðî èìååò ìíîãî âîçìîæíîñòåé, êîòîðûå íå îáúÿñíÿþòñÿ â èñõîäíûõ òåêñòàõ ÿäðà; ýòè âîçìîæíîñòè îáû÷íî èñïîëüçóþòñÿ ÷åðåç èñïîëüçîâàíèå âíåøíèõ ïàêåòîâ. Íåêîòîðûå èç íàèáîëåå îáùèõ ïàêåòîâ ïåðå÷èñëåíû çäåñü.6.1
kbd
Êîíñîëü linux âåðîÿòíî èìååò áîëüøå âîçìîæíîñòåé, ÷åì îíà çàñëóæèâàåò. Ñðåäè íèõ âîçìîæíîñòü ïåðåêëþ÷åíèÿ øðèôòîâ, èçìåíåíèÿ ðàñêëàäêè êëàâèàòóðû, ïåðåêëþ÷åíèå âèäåîðåæèìîâ (â áîëåå íîâûõ ÿäðàõ) è ò.ï. Ïàêåò kbd èìååò ïðîãðàììû, êîòîðûå ïîçâîëÿþò ñäåëàòü âñå ýòî, è â äîïîëíåíèå ìíîãî øðèôòîâ è ðàñêëàäîê êëàâèàòóðû äëÿ áîëüøèíñòâà êëàâèàòóð è îí äîñòóïåí ñ òåõ æå ñàìûõ ñåðâåðîâ, êîòîðûå ðàñïðîñòðàíÿþò èñõîäíûå òåêñòû ÿäðà.6.2
util-linux
Rik Faith ([email protected]) ñîáðàë âìåñòå áîëüøîé íàáîð óòèëèò äëÿ linux, êîòîðûé ïî ñòðàí-íîìó ñîâïàäåíèþ íàçûâàåòñÿ util-linux. Â íàñòîÿùåå âðåìÿ ýòîò íàáîð ñîïðîâîæäàåòñÿ Nicolai Langfeldt ([email protected]). Îí äîñòóïåí ïî àíîíèìíîìó ftp ñ sunsite.unc.edu â äèðåêòî-ðèè /pub/Linux/system/misc, îí ñîäåðæèò òàêèå ïðîãðàììû êàê setterm, rdev, è ctrlaltdel, êîòîðûå èìåþò îòíîøåíèå ê ÿäðó. Êàê ñêàçàë Rik, íå óñòàíàâëèâàéòå èõ áåç ðàçäóìèé; âàì íå íóæíî óñòàíàâëèâàòü âåñü ïàêåò, è ó âàñ ìîãóò âîçíèêíóòü ñåðüåçíûå ïðîáëåìû, åñëè âû ñäåëàåòå ýòî.
6.3
hdparm
Êàê è ìíîãî äðóãèõ ïàêåòîâ, ðàíüøå ýòî áûë ïàêåò èç çàïëàòêè íà ÿäðî è ïðîãðàìì ïîääåðæêè. Ñåé÷àñ ýòè çàïëàòêè âêëþ÷åíû â îôèöèàëüíîå äåðåâî èñõîäíûõ òåêñòîâ ÿäðà è ïðîãðàììû äëÿ îïòèìèçàöèè è íàñòðîéêè âàøåãî æåñòêîãî äèñêà ïîñòàâëÿþòñÿ îòäåëüíî.6.4
gpm
gpm ýòî îáîçíà÷åíèå äëÿ ìûøè îáùåãî íàçíà÷åíèÿ (general purpose mouse). Ýòà ïðîãðàììà ïîç-âîëÿåò âàì âûðåçàòü è âñòàâëÿòü òåêñò ìåæäó âèðòóàëüíûìè êîíñîëÿìè, à òàêæå äåëàòü äðóãèå äåéñòâèÿ ñ áîëüøèì êîëè÷åñòâîì ìûøåé ðàçíûõ òèïîâ.
7
Íåêîòîðûå ëîâóøêè
7.1
make clean
Åñëè íîâîå ÿäðî äåëàåò êàêèå-òî ñòðàííûå âåùè ïîñëå òåêóùåãî åãî îáíîâëåíèÿ, òî åñòü áîëüøàÿ âåðîÿòíîñòü, ÷òî âû çàáûëè âûïîëíèòü make clean äî êîìïèëÿöèè íîâîãî ÿäðà. Ñèìïòîìû ìîãóò7. Íåêîòîðûå ëîâóøêè 13 áûòü ëþáûìè îò ïîëíîãî êðàõà âàøåé ñèñòåìû, ñòðàííûõ ïðîáëåì ñ ââîäîì/âûâîäîì äî ìàëîé ïðîèçâîäèòåëüíîñòè. Óáåäèòåñü òàêæå, ÷òî âû ñäåëàëè make dep.
7.2
Áîëüøèå èëè ìåäëåííûå ÿäðà
Åñëè âàøå ÿäðî ïîãëîùàåò äîñòàòî÷íîå êîëè÷åñòâî ïàìÿòè, ñëèøêîì áîëüøîå è/èëè ïðîñòî äîëãî êîìïèëèðóåò, äàæå êîãäà âû çàñòàâèëè âàø íîâûé 786DX6/440 ðàáîòàòü ñ íèì, òî âû âåðîÿòíî ïîëó÷èëè íàáîð íåíóæíûõ âàì âåùåé (äðàéâåðîâ óñòðîéñòâ, ôàéëîâûõ ñèñòåì è ò.ï.). Åñëè âû íå èñïîëüçóåòå èõ, òî íå íàñòðàèâàéòå èõ, ïîòîìó, ÷òî ýòî çàíèìàåò ïàìÿòü ìàøèíû. Íàèáîëåå î÷åâèäíûé ñèìïòîì ðàçäóòèÿ ÿäðà, ýòî èíòåíñèâíîå ñâàïèðîâàíèå ïàìÿòè íà äèñê è ñ äèñêà; åñëè âàø äèñê ñîçäàåò øóì è îí íå îäèí èç ñòàðûõ âèí÷åñòåðîâ Fujitsu Eagles, ÷åé çâóê íàïîìèíàë çâóê âûêëþ÷àåìîãî äâèãàòåëÿ ðåàêòèâíîãî ñàìîëåòà, òî ïîñìîòðèòå â êîíôèãóðàöèþ ÿäðà. Âû ìîæåòå óçíàòü ñêîëüêî îïåðàòèâíîé ïàìÿòè çàíèìàåò ÿäðî âçÿâ îáùåå êîëè÷åñòâî ïàìÿòè íà ìàøèíå è âû÷òÿ èç íåãî êîëè÷åñòâî “îáùåé ïàìÿòè” â ôàéëå /proc/meminfo èëè âûâîä êîìàí-äû ‘free’. Âû ìîæåòå òàêæå îïðåäåëèòü ýòî âûïîëíèâ êîìàíäó ‘dmesg’ (èëè ïîñìîòðåâ â ôàéë ïðîòîêîëà ÿäðà, åñëè îí åñòü â âàøåé ñèñòåìå). Òàì áóäåò ñòðîêà, êîòîðàÿ âûãëÿäèò ïðèìåðíî òàê: Memory: 15124k/16384k available (552k kernel code, 384k reserved, 324k data) Ìîÿ ìàøèíà ñ ïðîöåññîðîì 386 (êîòîðàÿ áûëà íàñòðîåíà ñ ìåíüøèì êîëè÷åñòâî îïöèé) âûäàåò ñëåäóþùåå:Memory: 7000k/8192k available (496k kernel code, 384k reserved, 312k data)
Åñëè ó âàñ ïðîñòî ïîëó÷àåòñÿ áîëüøîå ÿäðî, íî ñèñòåìà íå ïîçâîëÿåò âàì ýòî, òî âû ìîæåòå ïîïû-òàòüñÿ âûïîëíèòü ‘make bzimage’. Âàì òàêæå ìîæåò ïîíàäîáèòüñÿ óñòàíîâèòü íîâóþ âåðñèþ LILO ÷òîáû ñäåëàòü ýòî.
7.3
ßäðî íå êîìïèëèðóåòñÿ
Åñëè ÿäðî íå êîìïèëèðóåòñÿ, òî ñêîðåå âñåãî ïðîèçîøåë ñáîé ïðè íàêëàäûâàíèè çàïëàòêè èëè âàøè èñõîäíûå òåêñòû áûëè ïîâðåæäåíû êàêèì-ëèáî îáðàçîì. Ó âàñ òàêæå ìîæåò áûòü íåïðàâèëü-íàÿ âåðñèÿ gcc èëè òàêæå ìîæåò áûòü ïîâðåæäåíà (íàïðèìåð âêëþ÷àåìûå ôàéëû ìîãóò áûòü ñ îøèáêàìè). Óáåäèòåñü, ÷òî ñèìâîëè÷åñêèå ññûëêè, êîòîðûå îïèñûâàåò Linus â ôàéëå README óñòà-íîâëåíû ïðàâèëüíî.  îáùåì, åñëè ñòàíäàðòíîå ÿäðî íå êîìïèëèðóåòñÿ, òî ó ÷àñ ÷òî-òî ñåðüåçíîå ñ ñèñòåìîé è âåðîÿòíî íåîáõîäèìà ïåðåóñòàíîâêà íåêîòîðûõ óòèëèò. èëè âîçìîæíî âû êîìïèëèðóåòå ÿäðî 1.2.x ïðè ïîìîùè ELF êîìïèëÿòîðà (gcc 2.6.3 è âûøå). Åñëè âû ïîëó÷èëè íàáîð îøèáîê òèïà so-and-so undefined â òå÷åíèè êîìïèëÿöèè, òî ñêîðåå âñåãî ó âàñ òàêàÿ ïðîáëåìà. Èñïðàâëåíèå â áîëüøèíñòâå ñëó÷àåâ î÷åíü ïðîñòî. Äîáàâüòå ýòè ñòðîêè â íà÷àëî ôàéëà arch/i386/Makefile: AS=/usr/i486-linuxaout/bin/as LD=/usr/i486-linuxaout/bin/ld -m i386linuxCC=gcc -b i486-linuxaout -D__KERNEL__ -I$(TOPDIR)/include
Çàòåì çàíîâî âûïîëíèòå make dep è zImage.
 ðåäêèõ ñëó÷àÿõ gcc ìîæåò íå ðàáîòàòü èç-çà àïïàðàòíûõ ïðîáëåì. Ñîîáùåíèå îá îøèáêå áóäåò ïðèìåðíî òàêîå “xxx exited with signal 15” è ýòî â îáùåì áóäåò âûãëÿäåòü î÷åíü çàãàäî÷íî. ß âåðî-ÿòíî íå äîëæåí áûë çäåñü ýòî óïîìèíàòü, çà èñêëþ÷åíèåì òîãî ÷òî ýòî ñî ìíîé îäíàæäû ñëó÷èëîñü – ó ìåíÿ áûëà èñïîð÷åííàÿ êýø-ïàìÿòü è êîìïèëÿòîð âðåìÿ îò âðåìåíè íå ðàáîòàë. Ïîïðîáóéòå ñíà÷àëà ïåðåñòàâèòü gcc, åñëè ó âàñ åñòü òàêàÿ ïðîáëåìà. ÂÛ äîëæíû ñòàòü ïîäîçðèòåëüíûì òîëü-êî åñëè âàøå ÿäðî íîðìàëüíî òîëü-êîìïèëèðóåòñÿ ñ îòêëþ÷åííûì âíåøíèì êýøåì, ñ óìåíüøåííûì êîëè÷åñòâî îïåðàòèâíîé ïàìÿòè è ò.ï. Ýòî èìååò ñêëîííîñòü áåñïîêîèòü ëþäåé, êîãäà îíè ïðåäïîëàãàþò, ÷òî èõ îáîðóäîâàíèå íå â ïîðÿäêå. Õîðîøî, ÿ íå áóäó äåëàòü ýòî. Îá ýòîì ñóùåñòâóåò FAQ – îí íàõîäèòñÿ íà http://www.bitwizard.nl/sig11/.
7. Íåêîòîðûå ëîâóøêè 14
7.4
Íå âèäíî ÷òîáû íîâàÿ âåðñèÿ ÿäðà ãðóçèëàñü
Âû íå çàïóñòèëè LILO, èëè îí íå íàñòðîåí ïðàâèëüíî. Îäíà âåùü êîòîðàÿ ñëó÷èëîñü îäíàæäû ñî ìíîé ýòî áûëà ïðîáëåìà â ôàéëå êîíôèãóðàöèè; òàì ãîâîðèëîñü ‘boot=/dev/hda1’ âìåñòî ‘boot=/dev/hda’ (Ýòî ìîæåò áûòü ðàçäðàæàþùèì â íà÷àëå, íî êîãäà âû ñäåëàåòå ðàáî÷èé ôàéë êîíôèãóðàöèè, òî âàì íå íóæíî áóäåò åãî áîëüøå èçìåíÿòü).7.5
Âû çàáûëè çàïóñòèòü LILO, èëè ñèñòåìà ïðîñòî íå ãðóçèòñÿ
Îõõõ! Ëó÷øàÿ âåùü, êîòîðóþ âû ìîæåòå ñäåëàòü â ýòîì ñëó÷àå ýòî çàãðóçèòüñÿ ñ äèñêåòû ïîäãîòî-âèòü äðóãîé çàãðóçî÷íûé äèñê (òàêîé êàêîé äîëæíà ñäåëàòü êîìàíäà ‘make zdisk’). Âàì íåîáõîäèìî çíàòü ãäå íàõîäèòñÿ âàøà êîðíåâàÿ ôàéëîâàÿ ñèñòåìà (/) è êàêîé òèï îíà èìååò (íàïðèìåð second extended, minix).  íèæåïðèâåäåííîì ïðèìåðå, âàì òàêæå íåîáõîäèìî çíàòü íà êàêîé ôàéëîâîé ñèñòåìå íàõîäèòñÿ äåðåâî èñõîäíûõ òåêñòîâ /usr/src/linux, åå òèï è ãäå îíà îáû÷íî ìîíòèðó-åòñÿ.  ñëåäóþùåì ïðèìåðå, / íàõîäèòñÿ íà /dev/hda1, à ôàéëîâàÿ ñèñòåìà, êîòîðàÿ ñîäåð-æèò /usr/src/linux íàõîäèòñÿ íà /dev/hda3, îáû÷íî ñìîíòèðîâàííîé êàê /usr. Îáå îò-íîñÿòñÿ ê òèïó second extended ôàéëîâûõ ñèñòåì. Ðàáî÷åå ÿäðî íàõîäèòñÿ â äèðåêòîðèè /usr/src/linux/arch/i386/bootè íàçûâàåòñÿ zImage. Èäåÿ çàêëþ÷àåòñÿ â òîì, ÷òî åñëè åñòü ðàáîòàþùåå ÿäðî, òî ìîæíî èñïîëüçîâàòü åãî äëÿ ñîçäàíèÿ íîâîãî çàãðóçî÷íîãî ãèáêîãî äèñêà. Äðóãîé âàðèàíò, êîòîðûé ìîæåò ðàáîòàòü ëó÷øå (à ìîæåò è íå ðàáîòàòü, ýòî çàâèñèò îò êîíêðåòíîãî ìåòîäà êîòîðûì âû ñëîìàëè ñâîþ ñèñòåìó) îáñóæäàåòñÿ äàëüøå ïîñëå ïðèìåðà. Ñ íà÷àëà çàãðóçèìñÿ ñ êîìáèíàöèè çàãðóçî÷íîãî/êîðíåâîãî äèñêîâ èëè ñïàñàòåëüíîãî (rescue) äèñ-êà, è ñìîíòèðóåì ôàéëîâóþ ñèñòåìó, êîòîðàÿ ñîäåðæèò ðàáîòàþùåå ÿäðî: mkdir /mntmount -t ext2 /dev/hda3 /mnt
Åñëè mkdir ñîîáùàåò âàì, ÷òî äèðåêòîðèÿ óæå ñóùåñòâóåò, òî ïðîñòî ïðîèãíîðèðóéòå ýòî ñîîáùå-íèå. Çàòåì ïåðåéäèòå â òó äèðåêòîðèþ, ãäå íàõîäèòñÿ ðàáîòàþùåå ÿäðî. Çàìåòèì, ÷òî
/mnt + /usr/src/linux/arch/i386/boot - /usr = /mnt/src/linux/arch/i386/boot
Ïîìåñòèòå îòôîðìàòèðîâàííóþ äèñêåòó â ïðèâîä “A:” (òîëüêî íå çàãðóçî÷íóþ äèñêåòó è íå äèñêåòó ñ êîðíåâîé ôàéëîâîé ñèñòåìîé!), è ïåðåáðîñüòå ÿäðî íà äèñêåòó è íàñòðîéòå åãî íà âàøó êîðíåâóþ ôàéëîâóþ ñèñòåìó:
cd /mnt/src/linux/arch/i386/boot dd if=zImage of=/dev/fd0
rdev /dev/fd0 /dev/hda1
ïåðåéäèòå â / è îòìîíòèðóéòå îáû÷íóþ ôàéëîâóþ ñèñòåìó /usr: cd / umount /mnt Òåïåðü âû äîëæíû èìåòü âîçìîæíîñòü ïåðåçàãðóçèòü âàø êîìïüþòåð êàê îáû÷íî ñ ñîçäàííîé äèñêåòû. Íå çàáóäüòå ïåðåçàïóñòèòü lilo (èëè âûïîëíèòü òî, ÷òî âû ñäåëàëè íå ïðàâèëüíî) ïîñëå ïåðåçàãðóçêè! Êàê áûëî óïîìÿíóòî âûøå, ñóùåñòâóåò äðóãàÿ îáùàÿ àëüòåðíàòèâà. Åñëè ó âàñ ê ñ÷àñòüþ èìååòñÿ ðàáî÷åå ÿäðî íàõîäÿùååñÿ íà ðàçäåëå / (íàïðèìåð /vmlinuz), òî âû ìîæåòå èñïîëüçîâàòü åãî äëÿ çàãðóçî÷íîé äèñêåòû. Ïðåäïîëàãàÿ âñå âûøåïðèâåäåííûå óñëîâèÿ, è ÷òî íàøå ÿäðî íàõîäèòñÿ â /vmlinuz, òî ïðîñòî ñäåëàéòå èçìåíåíèÿ â âûøåïðèâåäåííîì ïðèìåðå: èçìåíèòå /dev/hda3 íà