Як створити користувацьке ядро ​​з localmodconfig, що підтримує апаратне забезпечення декількох машин?


9

Під час налаштування сервера для виконання одного завдання, наприклад пристрою, може виникнути потреба у створенні спеціального ядра. Наприклад, для економії місця на диску.

Корпоративна файлова система Ubuntu Core 13.10 amd64 - це завантаження 38 Мб , де мета-пакет "linux-image-generic", включаючи необхідні залежності, завантажить 79 МБ архівів, а розмір пакета ядра-зображення-xyz-generic досі становить 14 Мб .

Для побудови ядра, позбавленого модулів, якими не буде користуватися обладнання, make localmodconfigкоманда є правильним інструментом для роботи. Однак ваша віртуальна машина, яка працює на вашому середовищі побудови та тесту, завантажує різні модулі, ніж цільове обладнання для розгортання. І / або через деякий час обладнання для розгортання може стати eol, і використовується інше обладнання. І при частоті випуску оновлень ядра це може стати занадто громіздким для створення спеціального ядра для кожної іншої конфігурації обладнання.

Як швидко створити користувацьке ядро ​​Linux, яке працює на декількох коробках обладнання?

Відповіді:


11

make localmodconfigКоманда по- , як і раніше є правильним інструментом для роботи. Насправді make localmodconfigпрацюєscripts/kconfig/streamline_config.pl .

Введення файлів

Під час читання streamline_config.plвихідного коду (perl) існує недокументована функція, my $lsmod_file = $ENV{'LSMOD'};яка дозволяє вводити файл для виявлення завантаженого модуля замість виводу з lsmodкоманди.

Живий компакт-диск

Оскільки localmodconfig використовує вихід lsmodдля виявлення завантажених модулів. Ми запускаємо компакт-диск Ubuntu Live на кожному з різних апаратних налаштувань, відкриваємо термінал ( Ctrl+ Alt+ T), запускаємо lsmodі зберігаємо його вихід.

З'єднайте вихід

З’єднуючи lsmodвихідні файли, знімаючи послідовні рядки заголовків, ви можете швидко створити вхідний файл, який охоплює всі необхідні модулі ядра. Ми любимо переглядати список модулів вручну і використовувати більш ручний рецепт:

  1. $ cd linux-3.11.0/
    або перейдіть до каталогу, де ви будете виконувати свою команду make

  2. $ lsmod > lsmod.txt
    створює текстовий файл із завантаженими модулями

  3. $ nano lsmod.txt
    відкриє наноредактор тексту, звичайно, ви можете скористатися улюбленою програмою редактора

  4. Додайте потрібні модулі, яких ще немає, до нижньої частини цього файлу (див. Приклад у нижній частині цього анверу) та збережіть його, коли будете готові.
    Примітка: використовуйте пробіли, а не вкладки, щоб відповідати положенням табулятора стовпців.

  5. $ make LSMOD="lsmod.txt" localmodconfig
    це дозволить localmodconfig використовувати ваш файл lsmod.txt як вхід для виявлення завантажених модулів

Що стосується Стівена Ростедта - автора steamline_config.pl - за те, що він запропонував коротше позначення на кроці 5.


Приклад того, що потрібно додати, а не додати до lsmod.txt (крок 4):

Оскільки на головній платі Intel D33217CK є теплові датчики Intel, які ми хотіли б прочитати, ми додаємо наступні рядки:

x86_pkg_temp_thermal   13810  0
intel_powerclamp       14239  0

Але ми не хочемо запускати віртуальні машини на цьому апараті, тому ми пропускаємо ці рядки:

kvm_intel             128218  0
kvm                   364766  1 kvm_intel

До його порту Thunderbolt підключений Gibabit-адаптер для мереж Apple (Broadcom) Gibabit, тому ми додаємо:

tg3                   152066  0
ptp                    18156  1 tg3
pps_core               18546  1 ptp

Ми вважаємо, що нам не потрібно дзеркальне відображення гучності, і для цього не додаємо:

dm_mirror              21715  0
dm_region_hash         15984  1 dm_mirror
dm_log                 18072  2 dm_region_hash,dm_mirror

І нам також не потрібен графічний вихід (текст буде виконуватися на безголовому сервері), тому ми не включаємо:

i915                  589697  3
i2c_algo_bit           13197  1 i915
drm_kms_helper         46867  1 i915
drm                   242354  4 i915,drm_kms_helper

Для іншої машини нам потрібен цей драйвер Ethernet Realtek додатково:

r8169                  61434  0
mii                    13654  1 r8169
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.