* [sisyphus] Инструкция по сборке ядра.
@ 2005-02-10 8:30 Alexei V. Mezin
2005-02-10 9:11 ` Alex Yustasov
` (3 more replies)
0 siblings, 4 replies; 11+ messages in thread
From: Alexei V. Mezin @ 2005-02-10 8:30 UTC (permalink / raw)
To: ALT Linux Sisyphus discussion list
[-- Attachment #1: Type: text/plain, Size: 787 bytes --]
Hello ALT,
Опять угораздило подписаться на common@. Опять чуть не утонул в
потоке сообщений. И пришел к выводу, что вопрос о пересборке ядра
все еще актуален. Причем он и в sisyphus@ всплывает периодически. А
рецепты в ответах почти не меняются: посылают читать
альт-кернел-полиси где про сборку ядра практически ничего и нет.
Посмотрел ссылку на ALT FAQ, там почти все написано, но для common@
явно недостаточно.
Решил попробовать написать сам. Сильно не пинайте, я в сборке
официального ядра не участвую, так что официального способа сборки
не знаю.
Написал пока только первую часть. Есть ли смысл писать дальше?
Собирается ли ядро в hasher'е и нужно ли это описывать?
--
Best regards,
Alexei V. Mezin mailto:mezin@ntmdt.ru
[-- Attachment #2: kernel_build_v1.txt --]
[-- Type: text/plain, Size: 10962 bytes --]
Äëÿ íà÷àëà îïðåäåëèì, ÷åãî ìû õîòèì ïîëó÷èòü:
0. Ïîíÿòü, çà÷åì íàì ïåðåñîáèðàòü ÿäðî.
1. Çàäà÷à-ìèíèìóì: ñîáðàòü ïàêåò ñî "ñòàíäàðòíûì"
ÿäðîì/çàãîëîâêàìè. Ò.å. òàêîå æå ÿäðî, êîòîðîå ìîæíî
ïîñòàâèòü èç ðåïîçèòàðèÿ ñ áèíàðíûìè ïàêåòàìè (èëè
äèñòðèáóòèâíûõ äèñêîâ).
1.1. Ñîáðàòü âåðñèþ ïàêåòà ñ äðàéâåðàìè nVidia äëÿ
íîâîãî ÿäðà.
2. Îñíîâíàÿ çàäà÷à: ñîáðàòü ÷óòü ìîäèôèöèðîâàííîå ÿäðî,
ò.å. ñ äîïîëíèòåëüíûìè îïöèÿìè èëè ñ äîïîëíèòåëüíûìè
ïàò÷àìè âçÿòûìè èç Ñèçèôà.
2.1. Ñîáðàòü RPM-ïàêåòû ñ äîïîëíèòåëüíûìè ìîäóëÿìè ÿäðà.
3. Çàäà÷à-ìàêñèìóì: ñîáðàòü ÿäðî ñ ïîñòîðîííèìè ïàò÷àìè.
0. Èòàê, âû ðåøèëè ïåðåñîáðàòü ÿäðî. Çà÷åì? ßäðà â ñèñòåìàõ
îò ALT Linux Team ñîáðàíû òàê, ÷òîáû áûòü óíèâåðñàëüíûìè. Â
íèõ âêëþ÷åíû ìàêñèìóì ôóíêöèé è âîçìîæíîñòåé, ïðè÷åì âñå,
÷òî ìîæíî ñîáðàòü â âèäå ìîäóëåé, èìåííî òàê è ñîáðàíî.
Ïîýòîìó åñëè ó âàñ âîçíèêëè ïðîáëåìû, íàïðèìåð êàêîå-ëèáî
óñòðîéñòâî íå ðàáîòàåò, òàê êàê äëÿ íåãî íå íàéäåí (íå
çàãðóæåí) ìîäóëü, íå ñïåøèòå "ïåðåñîáèðàòü ÿäðî". Âîçìîæíî
ìîäóëü ïðîñòî "íå çàãðóçèëñÿ àâòîìàòè÷åñêè" (åñëè
âîçìîæíîñòü àâòîçàãðóæàòü ìîäóëè âîîáùå êîãäà-íèáóäü
íîðìàëüíî çàðàáîòàåò â Ñèçèôå).
Ñîâåò: èçó÷èòå êîìàíäû depmod, modprobe, modinfo
Èëè ïðîñòî ïàêåò ñ íóæíûì ìîäóëåì íå óñòàíîâëåí.
Ñîâåò: èçó÷èòå êîìàíäó apt-cache search
Åñëè âàì íóæíî ñïåöèôè÷åñêîå ÿäðî, íàïðèìåð ñ ïîääåðæêîé
RealTime, Win4Lin è ò.ï., òî ïðîñòî ïðîâåðüòå àëüòîâñêèé
ðåïîçèòàðèé. Ìîæåò òàì óæå âñå åñòü?
Òàê çà÷åì æå ïåðåñîáèðàòü ÿäðî? Ïðè÷èíû ìîãóò áûòü òàêèìè:
*  ÿäðå íå âêëþ÷åíà (èëè íàîáîðîò) íóæíàÿ îïöèÿ.
* Ïàòîëîãè÷åñêàÿ ïðîáëåìà ñ æåëåçîì, êîòîðàÿ òðåáóåò
ïåðåñáîðêè.
* Äðàéâåðà (íàïðèìåð ALSA) â âàøåé òåêóùåé ñèñòåìå óñòàðåëè
è ïî÷åìó-òî èõ ïåðåñáîðêà íå ìîæåò áûòü ïðîâåäåíà áåç
ïåðåñáîðêè ÿäðà.
* Õî÷åòñÿ ýêçîòè÷åñêèõ ôóíêöèé, êîòîðûå îáåñïå÷èâàþòñÿ
òîëüêî ïîñëå íàëîæåíèÿ ïàò÷åé íà ÿäðî.
1.1. Îïðåäåëèìñÿ.
Äëÿ íà÷àëà îïðåäåëèì, êàêîå ÿäðî ñåé÷àñ çàïóùåíî è ÷òî
èìåííî ìû õîòèì ñîáðàòü:
[alexei@localhost alexei]$ uname -r
2.6.10-std26-smp-alt1
Èòàê, âåðñèÿ è òèï ÿäðà îïðåäåëåíû.
Ïðèìå÷àíèå: âåðñèÿ è òèï ÿäðà â âàøåé ñèñòåìå ñêîðåå
âñåãî íå ñîâïàäàþò ñ âûøåïðèâåäåííûì.
Äëÿ ñáîðêè ÿäðà â ñèñòåìå äîëæíî áûòü óñòàíîâëåíî ìíîæåñòâî
ïàêåòîâ, íàïðèìåð êîìïèëÿòîð, ñêðèïòû äëÿ ñáîðêè RPM è
ò.ï.Äàëåå ïðåäïîëàãàåòñÿ, ÷òî âñå ýòî óæå óñòàíîâëåíî, èëè
âû çíàåòå, êàê äîóñòàíîâèòü íóæíûå ïàêåòû.
FIXME: íàâåðíîå òóò íóæåí ñïèñîê ïàêåòîâ, íåîáõîäèìûõ
äëÿ ñáîðêè ÿäðà.
Êðîìå òîãî, íóæíû
ïàêåòû, ñâÿçàííûå íåïîñðåäñòâåííî ñ êîíêðåòíûì ÿäðîì:
* ïàêåò ñ èñõîäíûìè êîäàìè ÿäðà
* ïàêåòû ñ ïàò÷àìè, èñïðàâëÿþùèìè ñáîðêó è ïðîáëåìû ñ
áåçîïàñíîñòüþ
* ïàêåòû ñ ïàò÷àìè, ðàñøèðÿþùèìè ôóíêöèîíàëüíîñòü
* ïàêåò è êîíôèãóðàöèîííûì ôàéëîì è spec-ôàéëîì äëÿ ñáîðêè.
Óñòàíîâêó íà÷íåì íåñêîëüêî íåòðàäèöèîííî, "ñ êîíöà" è èç-ïîä
ïîëüçîâàòåëÿ:
óñòàíîâèì src-ïàêåò ñ íàñòðîéêàìè ÿäðà è spec-ôàéëîì.
Íàçâàíèå òàêèõ ïàêåòîâ íà÷èíàåòñÿ ñ kernel-image, äàëåå
ñëåäóåò òèï ÿäðà (wks, std, vs, wks26 è ò.ï.) è -up äëÿ
îäíîïðîöåññîðíûõ ñèñòåì è -smp äëÿ ìóëüòèïðîöåññîðíûõ.
Ïðèìå÷àíèå: íå ïóòàéòå kernel-image*.src.rpm è
kernel-image*.rpm
FIXME: íóæíî íîðìàëüíîå îïèñàíèå òèïîâ ÿäåð.
Ò.å. ÷òî òàêîå è â ÷åì îòëè÷èÿ wks/std/vs/ll/rt
è ò.ï.
[alexei@localhost alexei]$ apt-get source kernel-image-std26-smp
×òåíèå ñïèñêîâ ïàêåòîâ... Çàâåðøåíî
Ïîñòðîåíèå äåðåâà çàâèñèìîñòåé... Çàâåðøåíî
Íåîáõîäèìî ïîëó÷èòü 0B/56,6kB èñõîäíûõ àðõèâîâ.
kernel-image-std26-smp #############################################
Ïðèìå÷àíèå: äåëàåì ýòó îïåðàöèþ èìåííî èç-ïîä
ïîëüçîâàòåëÿ, òàê êàê óñòàíîâêà src.rpm
àäìèíèñòðàòîðó çàïðåùåíà ïî ñîîáðàæåíèÿì
áåçîïàñíîñòè.
Ïîñëå ýòîãî ó âàñ â ~/RPM/SPECS ïîÿâèëñÿ ôàéë
kernel-image-std26-smp.spec -- ýòî èíñòðóêöèÿ äëÿ RPM ïî
ñáîðêå ïàêåòîâ ñ ÿäðîì è çàãîëîâêàìè. Â êàòàëîãå
~/RPM/SOURCES ïîÿâèëñÿ ôàéë config-2.6.10-std26-smp -- ýòî
íàñòðîéêè ÿäðà ïî óìîë÷àíèþ.
Çàãëÿíåì â íà÷àëî spec-ôàéëà:
# Fixes:
%add_patch_list kernel-fix-build
%add_patch_list kernel-fix-core
%add_patch_list kernel-fix-acpi
%add_patch_list kernel-fix-fs
%add_patch_list kernel-fix-net
%add_patch_list kernel-fix-drivers-net
%add_patch_list kernel-fix-drivers-usb
%add_patch_list kernel-fix-drivers-ide
%add_patch_list kernel-fix-drivers-ieee1394
%add_patch_list kernel-fix-drivers-sound
#add_patch_list kernel-fix-drivers-serial
%add_patch_list kernel-fix-drivers-parport
%add_patch_list kernel-fix-security
# Feathures:
%add_patch_list kernel-feat-drivers-video-splash
%add_patch_list kernel-feat-drivers-input
%add_patch_list kernel-feat-drivers-lirc
%add_patch_list kernel-feat-drivers-pktcdvd
%add_patch_list kernel-feat-fs-squashfs
%add_patch_list kernel-feat-net-ppp-mppe
%add_patch_list kernel-feat-evms-nodm
Ýòî ñïèñîê ïàêåòîâ, êîòîðûå íåîáõîäèìî óñòàíîâèòü äëÿ ñáîðêè
âàøåãî ÿäðà. Ïåðåéäåì â ðåæèì ñóïåðïîëüçîâàòåëÿ è óñòàíîâèì
ñíà÷àëà èñõîäíèêè ÿäðà:
íàéäåì, ãäå îíè è êàê íàçûâàþòñÿ
[root@localhost root]# apt-cache search kernel-source
kernel-source-2.4.26 - Linux kernel 2.4.26rel sources
kernel-source-2.6.10 - Linux kernel 2.6.10 sources
........
........
è óñòàíîâèì èõ
[root@localhost root]# apt-get install kernel-source-2.6.10
×òåíèå ñïèñêîâ ïàêåòîâ... Çàâåðøåíî
Ïîñòðîåíèå äåðåâà çàâèñèìîñòåé... Çàâåðøåíî
Ñëåäóþùèå ÍÎÂÛÅ ïàêåòû áóäóò óñòàíîâëåíû:
kernel-source-2.6.10
0 áóäåò îáíîâëåíî, 1 íîâûõ óñòàíîâëåíî, 0 ïàêåòîâ áóäåò óäàëåíî è 1 íå áóäåò îáíîâëåíî.
..............
..............
À çàòåì àíàëîãè÷íûì îáðàçîì óñòàíîâèì âñå îñòàëüíûå ïàêåòû
kernel-fix* è kernel-feat* èç âûøåïðèâåäåííîãî ñïèñêà.
FIXME: ìîæíî ëè ñäåëàòü ýòó îïåðàöèþ àâòîìàòè÷åñêè?
Âûéäåòå èç ðåæèìà ñóïåðïîëüçîâàòåëÿ, ò.ê. ñáîðêè
RPM-ïàêåòîâ ïî ñîîáðàæåíèÿì áåçîïàñíîñòè íåâîçìîæíà èç-ïîä
ñóïåðïîëüçîâàòåëÿ. Â ïðèíöèïå óæå âñå ãîòîâî äëÿ ñáîðêè
ÿäðà. Íî âû íàâåðíÿêà çàõîòèòå ïðîäåëàòü íåêîòîðûå
äîïîëíèòåëüíûå íàñòðîéêè.
Îòêðîéòå â âàøåì ëþáèìîì ðåäàêòîðå spec-ôàéë. Èñïðàâüòå
ñòðîêó
%define krelease alt1
çàìåíèâ â íåé "alt1" íà ÷òî-íèáóäü äðóãîå, íàïðèìåð, íà
"myown1". Ýòî íóæíî äëÿ òîãî, ÷òîáû âàøå ÿäðî íå
êîíôëèêòîâàëî ñ ÿäðîì èç äèñòðèáóòèâà. Êðîìå òîãî æåëàòåëüíî
çàìåíèòü ñòðîêó
%make_build oldconfig
íà ñòðîêó
%make_build menuconfig
Ýòî ïîçâîëèò âàì ïåðåä íà÷àëîì ñáîðêè ÿäðà îòðåäàêòèðîâàòü
íàñòðîéêè â ñòèëå êëàññè÷åñêîãî "make menuconfig".
FIXME: ó ìåíÿ íå ñîáèðàþòñÿ ïàêåòû åñëè íå
çàêîììåíòèðîâàòü ñòðîêó
%__cp -a ./scripts/kconfig/conf %buildroot%_prefix/src/linux-%version-%flavour/scripts/kconfig/
Òåïåðü ìîæíî ïðèñòóïèòü ê ñáîðêå:
cd ~/RPM/SPECS
rpm -bb kernel-image-std26-smp.spec
FIXME: íóæíî ëè äëÿ ñáîðêè ïàêåòîâ ïðåäâàðèòåëüíî
ðåäàêòèðîâàòü ~/.rpmmacros?
Åñëè âñå ñëîæèëîñü óäà÷íî, òî áóäóò óäàëåíû ôàéëû, êîòîðûå
ìîãëè îñòàòüñÿ ïîñëå ïðåäûäóùèõ ñáîðîê, ðàñïàêîâàíû
èñõîäíûå êîäû ÿäðà, ïðèëîæåíû âñå íåîáõîäèìûå ïàò÷è è çàïóùåí
òåêñòîâûé èíòåðôåéñ äëÿ íàñòðîéêè ïàðàìåòðîâ ÿäðà. Åñëè
ýòîãî íå ïðîèçîøëî, âíèìàòåëüíî ÷èòàéòå âûâîä â êîíñîëè è
ïðèíèìàéòå ìåðû.
Ïîñëå òîãî, êàê âû ïîêèíåòå êîíôèãóðàòîð ÿäðà, íà÷íåòñÿ
ñáîðêà. Òóò ñàìîå âðåìÿ îòêèíóòüñÿ íà ñïèíêó êðåñëà,
ðàññëàáèòüñÿ è ïîëó÷àòü óäîâîëüñòâèå îò ñîçåðöàíèÿ ýòîãî
çàâîðàæèâàþùåãî ïðîöåññà.
Ïðèìå÷àíèå: òàê êàê ÿäðî ñîáèðàåòñÿ ñî âñåìè äîñòóïíûìè
ìîäóëÿìè, ýòîò ïðîöåññ ìîæåò çàíèìàòü äîâîëüíî
ïðîäîëæèòåëüíîå âðåìÿ (îñîáåííî â ñðàâíåíèè ñî ñáîðêîé
ïî "êëàññè÷åñêîé" òåõíîëîãèè ñ "ðó÷íîé" íàñòðîéêîé îïöèé
ÿäðà). Íàïðèìåð íà Dual P-III 1Gz ñáîðêà ïðîäîëæàåòñÿ
îêîëî 1.5 ÷àñîâ.
Åñëè ñáîðêà ÿäðà è ìîäóëåé ïðîøëà áåç îøèáîê è
RPM-ñêðèïòû îòðàáîòàëè èñïðàâíî, òî â
~/RPM/RPMS/i686
FIXME: ÷òî òóò áóäåò íà äðóãîé àðõèòåêòóðå?
âû îáíàðóæèòå ïàêåòû
kernel-headers-modules-std26-smp-2.6.10-alt1.i686.rpm
kernel-image-std26-smp-2.6.10-alt1.i686.rpm
kernel-headers-std26-smp-2.6.10-alt1.i686.rpm
Òî åñòü âû ïîëó÷èëè ïàêåò ñ ÿäðîì kernel-image è äâà
ïàêåòà ñ çàãîëîâêàìè. Îñòàëîñü òîëüêî óñòàíîâèòü èõ:
ïåðåéäèòå â ðåæèì ñóïåðïîëüçîâàòåëÿ
cd /home/<user-name>/RPM/RPMS/i686
rpm -i ./kernel-image-std26-smp-2.6.10-alt1.i686.rpm
rpm -i ./kernel-headers-std26-smp-2.6.10-alt1.i686.rpm
rpm -i ./kernel-headers-modules-std26-smp-2.6.10-alt1.i686.rpm
FIXME: ý-ý-ý... íóæíî ëè òóò ïðàâèòü êîíôèãè äëÿ
âîçìîæíîñòè óñòàíîâêè ïàðàëëåëüíî íåñêîëüêèõ âåðñèé
ÿäðà?
FIXME: íóæíî íàïèñàòü êîðîòêîå (èëè íå î÷åíü)
ïîÿñíåíèå, êóäà â ALTîâñêèõ ñèñòåìàõ âñòàþò õèäåðû è
êàê áîðîòüñÿ ñ alternatives. À òî â common@ ó
ïîëüçîâàòåëåé ñ ýòèì ñâÿçàíî ìíîãî ïðîáëåì.
Ïðè óñòàíîâêå ÿäðà RPM àâòîìàòè÷åñêè ïðîïèøåò íîâóþ çàïèñü â
/etc/lilo.conf è çàïóñòèò lilo
FIXME: à ÷òî òóò ñ grub?
Òàê ÷òî âàì íàâåðíÿêà çàõî÷åòñÿ çàãëÿíóòü â /etc/lilo.conf è
ïîïðàâèòü òàì ÷òî-íèáóäü (íî è "ïî óìîë÷àíèþ" âñå äîëæíî
õîòû áû çàãðóçèòüñÿ). Ïîñëå ïðàâêè /etc/lilo.conf íå
çàáóäüòå çàïóñòèòü lilo.
Ïðèìå÷àíèå: íîâîå ÿäðî äîáàâëÿåòñÿ â
çàãðóçî÷íîå ìåíþ, íî ïî óìîë÷àíèþ çàãðóçèòñÿ âàøå ñòàðîå
ÿäðî. Òàê ñïîêîéíåå! :)
Ïðèìå÷àíèå: åñëè ó âàñ âèäåîêàðòà nVidia, òî ñ íîâûì
ÿäðîì âèäåîäðàéâåð íå çàãðóçèòñÿ áåç äîïîëíèòåëüíûõ
äåéñòâèé (âîò îí, íåäîñòàòîê çàêðûòûõ äðàéâåðîâ), è
ïîýòîìó ðàçóìíî ñíà÷àëà çàãðóçèòüñÿ â runlevel 3,
óáåäèòüñÿ, ÷òî íîâîå ÿäðî ðàáîòàåò êàê îæèäàåòñÿ,
ïåðåñîáðàòü âèäåîäðàéâåðû, óñòàíîâèòü èõ, è òîëüêî ïîñëå
ýòîãî ïåðåõîäèòü â runlevel 5.
FIXME: äëÿ äðóãèõ âèäåîêàðò ïðîáëåì íåò?
reboot
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [sisyphus] Инструкция по сборке ядра.
2005-02-10 8:30 [sisyphus] Инструкция по сборке ядра Alexei V. Mezin
@ 2005-02-10 9:11 ` Alex Yustasov
2005-02-10 9:31 ` [sisyphus] " Arioch
2005-02-11 8:25 ` Michael Shigorin
2005-02-10 9:41 ` [sisyphus] " Epiphanov Sergei
` (2 subsequent siblings)
3 siblings, 2 replies; 11+ messages in thread
From: Alex Yustasov @ 2005-02-10 9:11 UTC (permalink / raw)
To: sisyphus
> ??? ?????? ?????????, ???? ?? ????? ????????:
> 0. ??????, ????? ??? ???????????? ????.
> 1. ??????-???????: ??????? ????? ?? "???????????"
> ?????/???????????. ?.?. ????? ?? ????, ??????? ?????
> ????????? ?? ??????????? ? ????????? ???????? (???
<skip>
Было бы интересно почитать. Но пока одни вопросы.
^ permalink raw reply [flat|nested] 11+ messages in thread
* [sisyphus] Re: Инструкция по сборке ядра.
2005-02-10 9:11 ` Alex Yustasov
@ 2005-02-10 9:31 ` Arioch
2005-02-11 8:25 ` Michael Shigorin
1 sibling, 0 replies; 11+ messages in thread
From: Arioch @ 2005-02-10 9:31 UTC (permalink / raw)
To: sisyphus
Alex Yustasov пишет:
>
> Было бы интересно почитать. Но пока одни вопросы.
thunderbird reads ok
(i using NNTP gateway to avoid the whole message flood, but i don think
that counts)
^ permalink raw reply [flat|nested] 11+ messages in thread
* [sisyphus] Re: Инструкция по сборке ядра.
2005-02-10 9:11 ` Alex Yustasov
2005-02-10 9:31 ` [sisyphus] " Arioch
@ 2005-02-11 8:25 ` Michael Shigorin
1 sibling, 0 replies; 11+ messages in thread
From: Michael Shigorin @ 2005-02-11 8:25 UTC (permalink / raw)
To: sisyphus
[-- Attachment #1: Type: text/plain, Size: 631 bytes --]
On Thu, Feb 10, 2005 at 11:11:16AM +0200, Alex Yustasov wrote:
> > ??? ?????? ?????????, ???? ?? ????? ????????:
> > 0. ??????, ????? ??? ???????????? ????.
> > 1. ??????-???????: ??????? ????? ?? "???????????"
> > ?????/???????????. ?.?. ????? ?? ????, ??????? ?????
> > ????????? ?? ??????????? ? ????????? ???????? (???
> Было бы интересно почитать. Но пока одни вопросы.
Чарсет не проставлен. В mutt -- v (просмотр вложений), ^E
(редактирование content-type).
Перегнанное в koi8-r прилагается.
--
---- WBR, Michael Shigorin <mike@altlinux.ru>
------ Linux.Kiev http://www.linux.kiev.ua/
[-- Attachment #2: kernel_build_v1.txt --]
[-- Type: text/plain, Size: 10703 bytes --]
Для начала определим, чего мы хотим получить:
0. Понять, зачем нам пересобирать ядро.
1. Задача-минимум: собрать пакет со "стандартным"
ядром/заголовками. Т.е. такое же ядро, которое можно
поставить из репозитария с бинарными пакетами (или
дистрибутивных дисков).
1.1. Собрать версию пакета с драйверами nVidia для
нового ядра.
2. Основная задача: собрать чуть модифицированное ядро,
т.е. с дополнительными опциями или с дополнительными
патчами взятыми из Сизифа.
2.1. Собрать RPM-пакеты с дополнительными модулями ядра.
3. Задача-максимум: собрать ядро с посторонними патчами.
0. Итак, вы решили пересобрать ядро. Зачем? Ядра в системах
от ALT Linux Team собраны так, чтобы быть универсальными. В
них включены максимум функций и возможностей, причем все,
что можно собрать в виде модулей, именно так и собрано.
Поэтому если у вас возникли проблемы, например какое-либо
устройство не работает, так как для него не найден (не
загружен) модуль, не спешите "пересобирать ядро". Возможно
модуль просто "не загрузился автоматически" (если
возможность автозагружать модули вообще когда-нибудь
нормально заработает в Сизифе).
Совет: изучите команды depmod, modprobe, modinfo
Или просто пакет с нужным модулем не установлен.
Совет: изучите команду apt-cache search
Если вам нужно специфическое ядро, например с поддержкой
RealTime, Win4Lin и т.п., то просто проверьте альтовский
репозитарий. Может там уже все есть?
Так зачем же пересобирать ядро? Причины могут быть такими:
* В ядре не включена (или наоборот) нужная опция.
* Патологическая проблема с железом, которая требует
пересборки.
* Драйвера (например ALSA) в вашей текущей системе устарели
и почему-то их пересборка не может быть проведена без
пересборки ядра.
* Хочется экзотических функций, которые обеспечиваются
только после наложения патчей на ядро.
1.1. Определимся.
Для начала определим, какое ядро сейчас запущено и что
именно мы хотим собрать:
[alexei@localhost alexei]$ uname -r
2.6.10-std26-smp-alt1
Итак, версия и тип ядра определены.
Примечание: версия и тип ядра в вашей системе скорее
всего не совпадают с вышеприведенным.
Для сборки ядра в системе должно быть установлено множество
пакетов, например компилятор, скрипты для сборки RPM и
т.п.Далее предполагается, что все это уже установлено, или
вы знаете, как доустановить нужные пакеты.
FIXME: наверное тут нужен список пакетов, необходимых
для сборки ядра.
Кроме того, нужны
пакеты, связанные непосредственно с конкретным ядром:
* пакет с исходными кодами ядра
* пакеты с патчами, исправляющими сборку и проблемы с
безопасностью
* пакеты с патчами, расширяющими функциональность
* пакет и конфигурационным файлом и spec-файлом для сборки.
Установку начнем несколько нетрадиционно, "с конца" и из-под
пользователя:
установим src-пакет с настройками ядра и spec-файлом.
Название таких пакетов начинается с kernel-image, далее
следует тип ядра (wks, std, vs, wks26 и т.п.) и -up для
однопроцессорных систем и -smp для мультипроцессорных.
Примечание: не путайте kernel-image*.src.rpm и
kernel-image*.rpm
FIXME: нужно нормальное описание типов ядер.
Т.е. что такое и в чем отличия wks/std/vs/ll/rt
и т.п.
[alexei@localhost alexei]$ apt-get source kernel-image-std26-smp
Чтение списков пакетов... Завершено
Построение дерева зависимостей... Завершено
Необходимо получить 0B/56,6kB исходных архивов.
kernel-image-std26-smp #############################################
Примечание: делаем эту операцию именно из-под
пользователя, так как установка src.rpm
администратору запрещена по соображениям
безопасности.
После этого у вас в ~/RPM/SPECS появился файл
kernel-image-std26-smp.spec -- это инструкция для RPM по
сборке пакетов с ядром и заголовками. В каталоге
~/RPM/SOURCES появился файл config-2.6.10-std26-smp -- это
настройки ядра по умолчанию.
Заглянем в начало spec-файла:
# Fixes:
%add_patch_list kernel-fix-build
%add_patch_list kernel-fix-core
%add_patch_list kernel-fix-acpi
%add_patch_list kernel-fix-fs
%add_patch_list kernel-fix-net
%add_patch_list kernel-fix-drivers-net
%add_patch_list kernel-fix-drivers-usb
%add_patch_list kernel-fix-drivers-ide
%add_patch_list kernel-fix-drivers-ieee1394
%add_patch_list kernel-fix-drivers-sound
#add_patch_list kernel-fix-drivers-serial
%add_patch_list kernel-fix-drivers-parport
%add_patch_list kernel-fix-security
# Feathures:
%add_patch_list kernel-feat-drivers-video-splash
%add_patch_list kernel-feat-drivers-input
%add_patch_list kernel-feat-drivers-lirc
%add_patch_list kernel-feat-drivers-pktcdvd
%add_patch_list kernel-feat-fs-squashfs
%add_patch_list kernel-feat-net-ppp-mppe
%add_patch_list kernel-feat-evms-nodm
Это список пакетов, которые необходимо установить для сборки
вашего ядра. Перейдем в режим суперпользователя и установим
сначала исходники ядра:
найдем, где они и как называются
[root@localhost root]# apt-cache search kernel-source
kernel-source-2.4.26 - Linux kernel 2.4.26rel sources
kernel-source-2.6.10 - Linux kernel 2.6.10 sources
........
........
и установим их
[root@localhost root]# apt-get install kernel-source-2.6.10
Чтение списков пакетов... Завершено
Построение дерева зависимостей... Завершено
Следующие НОВЫЕ пакеты будут установлены:
kernel-source-2.6.10
0 будет обновлено, 1 новых установлено, 0 пакетов будет удалено и 1 не будет обновлено.
..............
..............
А затем аналогичным образом установим все остальные пакеты
kernel-fix* и kernel-feat* из вышеприведенного списка.
FIXME: можно ли сделать эту операцию автоматически?
Выйдете из режима суперпользователя, т.к. сборки
RPM-пакетов по соображениям безопасности невозможна из-под
суперпользователя. В принципе уже все готово для сборки
ядра. Но вы наверняка захотите проделать некоторые
дополнительные настройки.
Откройте в вашем любимом редакторе spec-файл. Исправьте
строку
%define krelease alt1
заменив в ней "alt1" на что-нибудь другое, например, на
"myown1". Это нужно для того, чтобы ваше ядро не
конфликтовало с ядром из дистрибутива. Кроме того желательно
заменить строку
%make_build oldconfig
на строку
%make_build menuconfig
Это позволит вам перед началом сборки ядра отредактировать
настройки в стиле классического "make menuconfig".
FIXME: у меня не собираются пакеты если не
закомментировать строку
%__cp -a ./scripts/kconfig/conf %buildroot%_prefix/src/linux-%version-%flavour/scripts/kconfig/
Теперь можно приступить к сборке:
cd ~/RPM/SPECS
rpm -bb kernel-image-std26-smp.spec
FIXME: нужно ли для сборки пакетов предварительно
редактировать ~/.rpmmacros?
Если все сложилось удачно, то будут удалены файлы, которые
могли остаться после предыдущих сборок, распакованы
исходные коды ядра, приложены все необходимые патчи и запущен
текстовый интерфейс для настройки параметров ядра. Если
этого не произошло, внимательно читайте вывод в консоли и
принимайте меры.
После того, как вы покинете конфигуратор ядра, начнется
сборка. Тут самое время откинуться на спинку кресла,
расслабиться и получать удовольствие от созерцания этого
завораживающего процесса.
Примечание: так как ядро собирается со всеми доступными
модулями, этот процесс может занимать довольно
продолжительное время (особенно в сравнении со сборкой
по "классической" технологии с "ручной" настройкой опций
ядра). Например на Dual P-III 1Gz сборка продолжается
около 1.5 часов.
Если сборка ядра и модулей прошла без ошибок и
RPM-скрипты отработали исправно, то в
~/RPM/RPMS/i686
FIXME: что тут будет на другой архитектуре?
вы обнаружите пакеты
kernel-headers-modules-std26-smp-2.6.10-alt1.i686.rpm
kernel-image-std26-smp-2.6.10-alt1.i686.rpm
kernel-headers-std26-smp-2.6.10-alt1.i686.rpm
То есть вы получили пакет с ядром kernel-image и два
пакета с заголовками. Осталось только установить их:
перейдите в режим суперпользователя
cd /home/<user-name>/RPM/RPMS/i686
rpm -i ./kernel-image-std26-smp-2.6.10-alt1.i686.rpm
rpm -i ./kernel-headers-std26-smp-2.6.10-alt1.i686.rpm
rpm -i ./kernel-headers-modules-std26-smp-2.6.10-alt1.i686.rpm
FIXME: э-э-э... нужно ли тут править конфиги для
возможности установки параллельно нескольких версий
ядра?
FIXME: нужно написать короткое (или не очень)
пояснение, куда в ALTовских системах встают хидеры и
как бороться с alternatives. А то в common@ у
пользователей с этим связано много проблем.
При установке ядра RPM автоматически пропишет новую запись в
/etc/lilo.conf и запустит lilo
FIXME: а что тут с grub?
Так что вам наверняка захочется заглянуть в /etc/lilo.conf и
поправить там что-нибудь (но и "по умолчанию" все должно
хоты бы загрузиться). После правки /etc/lilo.conf не
забудьте запустить lilo.
Примечание: новое ядро добавляется в
загрузочное меню, но по умолчанию загрузится ваше старое
ядро. Так спокойнее! :)
Примечание: если у вас видеокарта nVidia, то с новым
ядром видеодрайвер не загрузится без дополнительных
действий (вот он, недостаток закрытых драйверов), и
поэтому разумно сначала загрузиться в runlevel 3,
убедиться, что новое ядро работает как ожидается,
пересобрать видеодрайверы, установить их, и только после
этого переходить в runlevel 5.
FIXME: для других видеокарт проблем нет?
reboot
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [sisyphus] Инструкция по сборке ядра.
2005-02-10 8:30 [sisyphus] Инструкция по сборке ядра Alexei V. Mezin
2005-02-10 9:11 ` Alex Yustasov
@ 2005-02-10 9:41 ` Epiphanov Sergei
2005-02-10 9:50 ` [sisyphus] хМЯРПСЙЖХЪ ОН ЯАНПЙЕ ЪДПЮ Anton Farygin
2005-02-10 9:58 ` Re[2]: [sisyphus] Инструкция по сборке ядра Alexei V. Mezin
2005-02-10 10:25 ` Alex Yustasov
2005-02-11 8:24 ` [sisyphus] " Michael Shigorin
3 siblings, 2 replies; 11+ messages in thread
From: Epiphanov Sergei @ 2005-02-10 9:41 UTC (permalink / raw)
To: Alexei V. Mezin, ALT Linux Sisyphus discussion list
По поводу FIXME:
1.FIXME: наверное тут нужен список пакетов, необходимых
для сборки ядра.
FIXME: можно ли сделать эту операцию автоматически?
Смотрите команду apt-get build-dep
2.FIXME: у меня не собираются пакеты если не
закомментировать строку
%__cp -a ./scripts/kconfig/conf
%buildroot%_prefix/src/linux-%version-%flavour/scripts/kconfig/
Хм, у меня всё собиралось...
3.FIXME: нужно ли для сборки пакетов предварительно
редактировать ~/.rpmmacros?
Как хотите. Надо только учесть, что каталог для сборки может
быть /usr/src/RPM, а может ~/RPM в зависимости от настроек .rpmmacros.
4.FIXME: что тут будет на другой архитектуре?
~/RPM/RPMS/<архитектура>:
~/RPM/RPMS/i586
~/RPM/RPMS/pentium4
~/RPM/RPMS/athlon
и.т.д.
5.FIXME: э-э-э... нужно ли тут править конфиги для
возможности установки параллельно нескольких версий
ядра?
Вроде никаких правок.
6.FIXME: нужно написать короткое (или не очень)
пояснение, куда в ALTовских системах встают хидеры и
как бороться с alternatives. А то в common@ у
пользователей с этим связано много проблем.
Заголовки попадают в /usr/include/linux-<версия ядра>. При запуске системы
отрабатывается скрипт kheaders, который перенаправляет /usr/include/linux
на нужные headers.
7.FIXME: а что тут с grub?
Прописывается информация о ядре в /boot/grub/menu.lst
8.FIXME: для других видеокарт проблем нет?
Для ATI тоже необходима сборка модулей (если это fglrx). Если ati или
radeon - нет.
--
С уважением, Епифанов Сергей
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [sisyphus] хМЯРПСЙЖХЪ ОН ЯАНПЙЕ ЪДПЮ.
2005-02-10 9:41 ` [sisyphus] " Epiphanov Sergei
@ 2005-02-10 9:50 ` Anton Farygin
2005-02-10 9:58 ` Re[2]: [sisyphus] Инструкция по сборке ядра Alexei V. Mezin
1 sibling, 0 replies; 11+ messages in thread
From: Anton Farygin @ 2005-02-10 9:50 UTC (permalink / raw)
To: ALT Linux Sisyphus discussion list
Epiphanov Sergei wrote:
>По поводу FIXME:
>
>1.FIXME: наверное тут нужен список пакетов, необходимых
> для сборки ядра.
> FIXME: можно ли сделать эту операцию автоматически?
>
>Смотрите команду apt-get build-dep
>
>
Точно нужно поставить kernel-build-tools
>2.FIXME: у меня не собираются пакеты если не
> закомментировать строку
> %__cp -a ./scripts/kconfig/conf
>%buildroot%_prefix/src/linux-%version-%flavour/scripts/kconfig/
>
>Хм, у меня всё собиралось...
>
>
А нас тоже.
Кстати, там народ в docs@ изобретает incoming для подобных документов..
посмотрите, мне кажется что его стоит туда забросить.
Ну и еще наверное стоит что-то добавить про kernel cvs (мне ядра там
удобнее собирать)
Rgds,
Rider
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re[2]: [sisyphus] Инструкция по сборке ядра.
2005-02-10 9:41 ` [sisyphus] " Epiphanov Sergei
2005-02-10 9:50 ` [sisyphus] хМЯРПСЙЖХЪ ОН ЯАНПЙЕ ЪДПЮ Anton Farygin
@ 2005-02-10 9:58 ` Alexei V. Mezin
2005-02-10 10:25 ` Epiphanov Sergei
2005-02-13 11:24 ` Alexey Borovskoy
1 sibling, 2 replies; 11+ messages in thread
From: Alexei V. Mezin @ 2005-02-10 9:58 UTC (permalink / raw)
To: ALT Linux Sisyphus discussion list
Hello Epiphanov,
Thursday, February 10, 2005, 12:41:14 PM, you wrote:
ES> По поводу FIXME:
ES> 1.FIXME: наверное тут нужен список пакетов, необходимых
ES> для сборки ядра.
ES> FIXME: можно ли сделать эту операцию автоматически?
ES> Смотрите команду apt-get build-dep
Оно уже работает? Осенью этот совет я уже получал. Но неистребимые
глюки скриптов при обработке виртуальных пакетов сводили на нет всю
автоматизацию.
ES> 2.FIXME: у меня не собираются пакеты если не
ES> закомментировать строку
ES> %__cp -a ./scripts/kconfig/conf
ES> %buildroot%_prefix/src/linux-%version-%flavour/scripts/kconfig/
ES> Хм, у меня всё собиралось...
Поэтому и FIXME. Тут какой-то подземный стук. У меня никогда (или
очень-очень издавна) не собирались пакеты с ядром именно из-за этой
строки.
ES> 3.FIXME: нужно ли для сборки пакетов предварительно
ES> редактировать ~/.rpmmacros?
ES> Как хотите. Надо только учесть, что каталог для сборки может
ES> быть /usr/src/RPM, а может ~/RPM в зависимости от настроек .rpmmacros.
Доступ в /usr/src/RPM может быть и для пользователя? Это не
противоречит политике безопасности?
--
Best regards,
Alexei V. Mezin mailto:mezin@ntmdt.ru
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [sisyphus] Инструкция по сборке ядра.
2005-02-10 9:58 ` Re[2]: [sisyphus] Инструкция по сборке ядра Alexei V. Mezin
@ 2005-02-10 10:25 ` Epiphanov Sergei
2005-02-13 11:24 ` Alexey Borovskoy
1 sibling, 0 replies; 11+ messages in thread
From: Epiphanov Sergei @ 2005-02-10 10:25 UTC (permalink / raw)
To: Alexei V. Mezin, ALT Linux Sisyphus discussion list
В сообщении от 10 Февраль 2005 12:58 Alexei V. Mezin написал:
> Hello Epiphanov,
>
> Thursday, February 10, 2005, 12:41:14 PM, you wrote:
>
> ES> По поводу FIXME:
>
> ES> 1.FIXME: наверное тут нужен список пакетов, необходимых
> ES> для сборки ядра.
> ES> FIXME: можно ли сделать эту операцию автоматически?
>
> ES> Смотрите команду apt-get build-dep
> Оно уже работает? Осенью этот совет я уже получал. Но неистребимые
> глюки скриптов при обработке виртуальных пакетов сводили на нет всю
> автоматизацию.
Я могу ошибаться, но, вроде, пробегало, что люди успешно используют эту
команду.
> ES> 2.FIXME: у меня не собираются пакеты если не
> ES> закомментировать строку
> ES> %__cp -a ./scripts/kconfig/conf
> ES> %buildroot%_prefix/src/linux-%version-%flavour/scripts/kconfig/
>
> ES> Хм, у меня всё собиралось..
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [sisyphus] Инструкция по сборке ядра.
2005-02-10 9:58 ` Re[2]: [sisyphus] Инструкция по сборке ядра Alexei V. Mezin
2005-02-10 10:25 ` Epiphanov Sergei
@ 2005-02-13 11:24 ` Alexey Borovskoy
1 sibling, 0 replies; 11+ messages in thread
From: Alexey Borovskoy @ 2005-02-13 11:24 UTC (permalink / raw)
To: Alexei V. Mezin, ALT Linux Sisyphus discussion list
[-- Attachment #1: Type: text/plain, Size: 542 bytes --]
* Четверг 10 Февраль 2005 21:58 "Alexei V. Mezin"
<mezin@ntmdt.ru>
> ES> 3.FIXME: нужно ли для сборки пакетов предварительно
> ES> редактировать ~/.rpmmacros?
> ES> Как хотите. Надо только учесть, что каталог для сборки
> может ES> быть /usr/src/RPM, а может ~/RPM в зависимости от
> настроек .rpmmacros. Доступ в /usr/src/RPM может быть и для
> пользователя? Это не противоречит политике безопасности?
А ядра обычно в hasher собираются.
--
Алексей.
GPG key fingerprint
949B BC0E 2C44 7528 4F63 2753 E37A 9E3F 11F3 BDE1
[-- Attachment #2: signature --]
[-- Type: application/pgp-signature, Size: 189 bytes --]
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [sisyphus] Инструкция по сборке ядра.
2005-02-10 8:30 [sisyphus] Инструкция по сборке ядра Alexei V. Mezin
2005-02-10 9:11 ` Alex Yustasov
2005-02-10 9:41 ` [sisyphus] " Epiphanov Sergei
@ 2005-02-10 10:25 ` Alex Yustasov
2005-02-11 8:24 ` [sisyphus] " Michael Shigorin
3 siblings, 0 replies; 11+ messages in thread
From: Alex Yustasov @ 2005-02-10 10:25 UTC (permalink / raw)
To: sisyphus
On Thu, Feb 10, 2005 at 12:31:18PM +0300, Alexei V. Mezin wrote:
> FIXME: наверное тут нужен список пакетов, необходимых
> для сборки ядра.
Про kernel-build-tools сказали, еще сказать про rpm-build
> установим src-пакет с настройками ядра и spec-файлом.
> Название таких пакетов начинается с kernel-image, далее
> следует тип ядра (wks, std, vs, wks26 и т.п.) и -up для
> однопроцессорных систем и -smp для мультипроцессорных.
>
> Примечание: не путайте kernel-image*.src.rpm и
> kernel-image*.rpm
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
kernel-image*.i586.rpm
И может сказать где они могут быть, в случае DVD Edition.
ftp://ftp.altlinux.ru/pub/distributions/ALTLinux/Master/2.4/SRPMS.main/
или updates
ftp://ftp.altlinux.ru/pub/distributions/ALTLinux/updates/Master/2.4/SRPMS.updates.
> Примечание: если у вас видеокарта nVidia, то с новым
> ядром видеодрайвер не загрузится без дополнительных
> действий (вот он, недостаток закрытых драйверов), и
> поэтому разумно сначала загрузиться в runlevel 3,
> убедиться, что новое ядро работает как ожидается,
> пересобрать видеодрайверы, установить их, и только после
> этого переходить в runlevel 5.
>
> FIXME: для других видеокарт проблем нет?
Сейчас runlevel кажется не актуально, рулит service dm.
Да и ничего страшного не произойдет, только X не загрузятся.
Можно будет в коммандной строке собирать модули. Или
модули собирать и устанавливать до перезагрузки.
^ permalink raw reply [flat|nested] 11+ messages in thread
* [sisyphus] Re: Инструкция по сборке ядра.
2005-02-10 8:30 [sisyphus] Инструкция по сборке ядра Alexei V. Mezin
` (2 preceding siblings ...)
2005-02-10 10:25 ` Alex Yustasov
@ 2005-02-11 8:24 ` Michael Shigorin
3 siblings, 0 replies; 11+ messages in thread
From: Michael Shigorin @ 2005-02-11 8:24 UTC (permalink / raw)
To: ALT Linux Sisyphus discussion list
On Thu, Feb 10, 2005 at 11:30:27AM +0300, Alexei V. Mezin wrote:
> Написал пока только первую часть. Есть ли смысл писать дальше?
Ессно. Сможете применить прозвучавшие замечания и забросить
v1.1? :)
> Собирается ли ядро в hasher'е и нужно ли это описывать?
Собирается, конечно. Можно, если есть желание.
--
---- WBR, Michael Shigorin <mike@altlinux.ru>
------ Linux.Kiev http://www.linux.kiev.ua/
^ permalink raw reply [flat|nested] 11+ messages in thread
end of thread, other threads:[~2005-02-13 11:24 UTC | newest]
Thread overview: 11+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2005-02-10 8:30 [sisyphus] Инструкция по сборке ядра Alexei V. Mezin
2005-02-10 9:11 ` Alex Yustasov
2005-02-10 9:31 ` [sisyphus] " Arioch
2005-02-11 8:25 ` Michael Shigorin
2005-02-10 9:41 ` [sisyphus] " Epiphanov Sergei
2005-02-10 9:50 ` [sisyphus] хМЯРПСЙЖХЪ ОН ЯАНПЙЕ ЪДПЮ Anton Farygin
2005-02-10 9:58 ` Re[2]: [sisyphus] Инструкция по сборке ядра Alexei V. Mezin
2005-02-10 10:25 ` Epiphanov Sergei
2005-02-13 11:24 ` Alexey Borovskoy
2005-02-10 10:25 ` Alex Yustasov
2005-02-11 8:24 ` [sisyphus] " Michael Shigorin
ALT Linux Sisyphus discussions
This inbox may be cloned and mirrored by anyone:
git clone --mirror http://lore.altlinux.org/sisyphus/0 sisyphus/git/0.git
# If you have public-inbox 1.1+ installed, you may
# initialize and index your mirror using the following commands:
public-inbox-init -V2 sisyphus sisyphus/ http://lore.altlinux.org/sisyphus \
sisyphus@altlinux.ru sisyphus@altlinux.org sisyphus@lists.altlinux.org sisyphus@lists.altlinux.ru sisyphus@lists.altlinux.com sisyphus@linuxteam.iplabs.ru sisyphus@list.linux-os.ru
public-inbox-index sisyphus
Example config snippet for mirrors.
Newsgroup available over NNTP:
nntp://lore.altlinux.org/org.altlinux.lists.sisyphus
AGPL code for this site: git clone https://public-inbox.org/public-inbox.git