Монтаж модули на ядрото

Модули на ядрото [цитат]

Линукс ядрото съдържа много код, който поддържа определена функция или оборудване. Основната част от кода (обикновено кода на процесор подкрепа, паметта и други основни елементи) компилиран в ядрото, и багажника от него, както и част от кода, е необходимо само за някои потребители - драйвери на устройства, файлови системи подкрепа и т.н. - сглобени като модули.

Модулите могат да бъдат свързани с ядрото от потребителя команда (modprobe. Insmod) или автоматично от Удев, и да бъдат изхвърлени или от ядрото или rmmod команда.

Повечето от модулите е в пакета на ядрото, но понякога технически, административни или правни причини, някои модули се събират отделно.

На модули и имена [редактиране]

Както и в хранилището може да бъде няколко ядра, модули са по специален начин: има един пакет с изходния код, и пакети с модули, съставени за определен ядро. В този последен SRPM тя съдържа само .spec и лепенки, и изходния код, получен от монтажни ограничения. По този начин, за модула и ядро ​​версия на модула вкус имаме пакети, чиито имена

  • ядрото източник-модул - то съдържа само източници
  • ядрото модули-модул -flavour - модул модул. вкус сглобени към ядрото (например, ядрото-модули-NVIDIA-STD дефиниция)

пакети Полеви освобождаване пълни с модули така: ALT... където

  • - Освободете самия модул, тоест, ако сме се актуализира името на модула, промените на полето;
  • - версия на ядрото на формата (2 ^ 16) * основен + (2 ^ 8) * средата + незначителни. т.е. 2.6.25 = 132,633. Не се притеснявайте, тя изчислява броя на сценария, описан по-късно;
  • - Освобождаване на пакет ядро.

Например, един модул за ядрото NVIDIA ядрото изображение-STD-деф-2.6.25-alt8 да се нарече ядрото модули-NVIDIA-STD-деф-173.14.12-alt1.132633.8.

Как да се съберат модул локално [редактиране]

Тази фаза е необходимо главно за тестване на модул, и, като цяло, не е задължително, но е полезно за разбирането на процеса.

Това, което трябва [редактиране]

В допълнение към ССЗ, да направи и друг стандарт монтаж на неща, които трябва да ядрото заглавията-модули- (И всичко, което зависи от него). Този пакет съдържа част от изходния код, заглавните файлове, грим файлове и скриптове, които са необходими за сглобяване на основните модули.

Сглобяване [цитат]

Изтеглете и извличане на изходния код на модула, ще открием, че просто обикновено правят не работи. Този проблем е специфичен за Сизиф / ALT Linux и е необходимо за сглобяването на заглавията на ядрото модул, които са търсили в директорията / ИЪ / модули // Build. но те не могат да бъдат намерени там, защото в ALT Linux Сизиф на и достъпа до потребители в / ИЪ / модули / забранени.

За да заобиколите този проблем, трябва да се замени една променлива (обикновено KERNELSOURCE или KSRC) в Makefile. След това стартирайте събрание, например направи KSRC = / ЮЕсАр / SRC / Linux-2.6.25-STD-Def. Обикновено, модулът след това се събира.

В сглобено устройството може да се опита да се зареди чрез insmod. или да го постави другите модули на ядрото в / ИЪ / модули / и натоварване modprobe. Ако модулът е зареден и работи, а след това можете да преминете към следващата част.

Как да се съберат на уреда правилно [редактиране]

Защо предишния метод не е правилно? Защото той nedistributiven. За правилен монтаж, ние трябва:

Шаблони [цитат]

Тъй като точните характеристики на всяка опаковка с модули за всяка версия на ядрото е малко глупаво, схемата е разработена, в която всеки модул създава шаблон и съоръжения (с помощта specsubst директива. Заявявайки ядро ​​вкус) персонализирате този шаблон с конкретна ядрото (включително Той изчислява освобождаването на модула). Останалата част от работата се пада на макро% setup_kernel_module. която изчислява всички останали параметри, които са необходими за монтажа на модула: версията на ядрото, освобождаването на ядрото модул и го пуснете. Сами шаблони, се съхраняват в Git-хранилище, което има много клонки шаблони се наричат ​​шаблон / модул / дистрибуция. където модула - е истинското име на модула (например NVIDIA) и дистрибуция - тя е под която събираме. Обикновено това Сизиф. но и за различни Брънч модели трябва да се променят, можете да инсталирате областта на дистрибуцията на съответната стойност. Обикновено дистрибуции сега е същото като името на брънч.

Получаване на работна директория [редактиране]

Ще се нуждаем от програма км създадете-маркер, за да се изгради модули от опаковката ядрото натрупани средства.

За да използвате шаблоните имат брънч с тях, за да започне на местно ниво, като например:

Сглобяване модул от шаблона (използвайки зъбно specsubst) [правило]

При събиране на местно ниво с цел тестване, е удобно, за да инсталирате параметър gear.specsubst.kflavour в ядрото си:

След това можете да се съберат на модула с командата:

Създаване на етикети за сглобяване на git.alt (схема скоростна specsubst) [правило]

Например, за да създадете етикет за модул NVIDIA, сглобени с основната станд дефиниция:

Или, за да създадете маркери за всички модули, които могат да се извършват:

Сглобяване модули git.alt [правило]

След това можете да се бутам получи Брънч и маркери за git.alt.

и се добавят към списъка с модули миналата task'u (който вероятно вече е добавен за да се сглоби подходящо ядро ​​изображението):

Следва обаче да се има предвид, че updatemodules и км създадете тагове не се трият изчиствам / taglist файл и трябва да го направите ръчно.

Ако актуализирате ядрото, но не възнамерява да актуализира на модула за шаблони, можете да направите:

$ Ssh git.alt задача да добавим [брой работни места] kmodules станд дефиниция

тя ще добави към работата (която вероятно вече е добавен за да се сглоби подходящо ядро-образ), всички модули, събрани за ядро ​​станд дефиниция.

Някои момент [правило]

  • Ако хранилище: ядро-образ-STD-деф-3.0.4-alt0.M60P.1.i586.rpm
  • След това, в името на пакета: ядрото модули-emlog-STD-деф-0,51-alt2.196612.0.M60P.1.i586.rpm

Версията за освобождаване на модула е пълен + освобождаване ядро. SCARY?

Rebuild един модул сам [редактиране]

Да речем, че трябва да се възстанови хранилището в един модул, без възстановяване на ядрото и всички модули.

  1. Промяна клон шаблон / rt3070 / Сизиф, задължава ни промени
  2. км създадете тагове -k станд дефиниция rt3070
  3. проверка на монтажа нещо като: предавка -t $ (Git, опишете) --hasher - HSH $ TMP /

новия модул възел [редактиране]

Сглобяване на ядрото източник-модул [правило]

Първо, трябва да се изгради източник пакет модул. Този пакет е проста, и в действителност съдържа опакован само изходен код, и неговото сглобяване е само zapakovke. Например, по-добре да се вземе нещо по-просто и конфекция, например, направете следното:

Редактирайте по образ и подобие на ядрото източник-модул .spec - обикновено това е необходимо да се замени името на модула, версия, описанието, и ChangeLog, и себе си изгради обикновено не може да се докосне.

На следващо място, ние събираме пакет с предавката. В резултат на това на опаковката трябва да бъде само един файл, а именно, / ЮЕсАр / SRC / ядро ​​/ източници / ядрото източник-модул .tar.bz2

Моля, имайте предвид, че някои пакети с изходен код в името си съдържа версията. например, ядрото източник kdbus-5.0.0.31-5.0.0.31-alt1. Това се прави с цел да бъде в състояние да бъде в състояние да събере различни ядки с различни версии на модулите (например, новите модули няма да 2.6.18).

Създаване на нов шаблон [редактиране]

След сглобяването на пакетите с изходния код, ние трябва да се създаде нов клон в хранилището с модулите:

където модула - името на вашия модул.

Сега редактирате спекулация, да промените име, версия, описанието, cheyndzhlog може да се наложи да настроите опциите за сглобяване. И се ангажират:

Забележка горната влизането на промените трябва да остане непроменен и да се състои от онези ужасни макроси, от които е във всеки модул на ядрото във всеки действителен хранилище ALT

Как да поставите модул в хранилище [редактиране]

Поставянето на модулите не се различава от конвенционалната пакети vykladyvaniya.

Поставете самия модул:

Все още е необходимо пакети през git.alt.

Важна забележка: за да може събрание се проведе правилно, ядрото източник-модул трябва да бъде съставена, за да се изгради ядрото модули-модул.

Препоръки за взаимодействие с ядра поддържаща [цитат]

За нормална съвместната работа се препоръчва:

  • При актуализиране модул за актуализиране на събранието по максималния брой ядра
  • Своевременно актуализиране на шаблоните в хранилището на git.alt
  • Уведоми хората от поддръжката на ядки (раз-ядрото пощенски списък), че това е вашето устройство,
  • Конфигуриране на Git отдалечени ядрото модули на другите, които ги подържат,
  • Speck ядрото модули-Полето опаковъчна настроите ядрото подържат екип.

За symvers и модули зависят от други модули [редактиране]

Понякога това се случва, че един пакет с модулите трябва да се събират под различен пакет с модулите. Например prosihodit с gspca и v4l. За правилен монтаж, ние се нуждаем две неща: първо, правото да остави в зависимост от заглавията (от v4l има своите заглавия), и второ, трябва да импортирате symvers на файловете. В gscpca проблем е решен чрез добавяне на следните редове до gspca пакети% препаративна фаза модул: