Яку користь я міг побачити, якщо скомпілювати ядро Linux? Чи є якась ефективність, яку ви могли б створити, налаштувавши її на обладнання?
Яку користь я міг побачити, якщо скомпілювати ядро Linux? Чи є якась ефективність, яку ви могли б створити, налаштувавши її на обладнання?
Відповіді:
На мій погляд, єдина користь, яку ви справді отримуєте від компіляції власного Linux ядра:
Ви дізнаєтеся, як скласти власне ядро Linux.
Це не те, що потрібно робити для більшої швидкості / пам’яті / ххх що завгодно. Це важливо зробити, якщо це етап, який ти відчуваєш, що ти перебуваєш у своєму розвитку. Якщо ви хочете глибше зрозуміти, про що йдеться у всьому, що стосується "відкритого коду", про те, як і якими є різні частини ядра, тоді вам слід спробувати. Якщо ви просто хочете прискорити час завантаження на 3 секунди, то ... який сенс ... зайдіть, придбайте ssd. Якщо вам цікаво, якщо ви хочете навчитися, то складання власного ядра - прекрасна ідея, і ви, ймовірно, отримаєте багато з цього.
Зважаючи на це, є деякі конкретні причини, коли було б доцільно скласти власне ядро (як декілька людей вказали в інших відповідях). Як правило, вони виникають із конкретної потреби у конкретному результаті, наприклад:
Проблема полягає в тому, що ми маємо певну користь у складанні власного ядра, коли все вже працює так, як належить, і я не думаю, що це є. Хоча ви можете витрачати незліченну кількість годин на відключення речей, які вам не потрібні, і налаштування речей, які можна налаштувати, факт полягає в тому, що ядро Linux вже досить добре налаштоване (за допомогою вашого розповсюдження) для більшості ситуацій користувача.
Більшості користувачів не потрібно збирати власне ядро, їх розповсюдження зробило цю роботу для них. Зазвичай дистрибутиви включатимуть набір патчів для інтеграції з певними частинами способу роботи дистрибутива, підтримкою драйверів пристроїв та виправленнями з новіших, але не випущених версій ядра чи функцій, які вони новаторські у своїх користувачів.
Коли ви збираєте власне ядро, у вас є пара варіантів, ви можете скласти офіційне ядро Лінуса Торвальдса, це не буде включати жодних патчів чи налаштувань, які були додані вашим дистрибутивом (що може бути добре чи погано), або ви можете використовуйте інструмент відновлення дистрибуції для створення власного ядра.
Причини, через які ви хочете відновити своє ядро, включають:
Багато розробників використовують його для створення також спеціалізованих версій ядра для вбудованих систем або ящиків для встановлення, де їм потрібні спеціальні драйвери пристроїв, або вони хочуть видалити функціонал, який їм не потрібен.
bisect
щоб дізнатися, куди було введено помилку ...
Самостійне складання ядра дозволяє включати лише ті частини, які стосуються вашого комп'ютера, що робить його меншим та потенційно швидшим, особливо під час завантаження. Загальні ядра повинні включати підтримку якомога більшої кількості апаратних засобів; під час завантаження вони виявляють, яке обладнання приєднано до вашого комп'ютера і завантажує відповідні модулі, але для цього потрібно час, і потрібно завантажити динамічні модулі, а не запекти код прямо в ядро. Немає підстав для того, щоб ваше ядро підтримувало 400 різних процесорів, коли на вашому комп’ютері є лише один, або підтримувати Bluetooth-миші, якщо у вас його немає, це все витрачене місце ви можете звільнити
Я не можу повірити, що прийнята відповідь тут починається з того, що "це не те, що вам потрібно зробити для більшої швидкості / пам'яті / ххх що завгодно".
Це абсолютно помилково. Я звичайно будую свої ядра, щоб видаляти непотрібний код, а також включати код для підвищення продуктивності, що стосується, головним чином, обладнання. Наприклад, я запускаю деяке старіше обладнання та можу досягти певного підвищення продуктивності, ввімкнувши рідко ввімкнені драйвери Kernel, такі як підтримка чіпсетів HPT36x для деяких старих MoBos, у яких цей вбудований.
Інший приклад, BIG SMP під Slackware є типовим типом, а в Dell 2800, наприклад, буде витрачено значне друк для запуску таких речей, як GFSD (не як модуль ядра), який, до речі, споживає тикет CPU для чогось я не потрібно. Так само і для NFSD та інших загальних програм, щоб порадувати всіх менталітетів, це добре, якщо ви просто намагаєтеся отримати Linux на коробці і працює, але якщо вам все одно важливо "швидкість / пам'ять / ххх що завгодно", то ці речі мають значення і працюють .
Усі мої виробничі коробки - це власні ядра. Якщо я використовую таке обладнання, як апарат Dell (2800, 2850, 2900, і т. Д. ...), це просто питання копіювання файлу .config ядра навколо кожного вікна та компіляції ядра та встановлення.
Ось кілька ситуацій, коли компіляція власного ядра піде вам на користь:
Ядро з вимкненим завантаженням модуля є більш безпечним. Це вимагатиме від вас вибрати потрібні вам модулі та включити їх до складу ядра, на відміну від компіляції їх як модулів.
Відключення підтримки / dev / kmem або калікування її відповідним варіантом компілятора - це корисна річ для безпеки. Я думаю, що більшість дистрибутивів роблять це за замовчуванням зараз.
Я вважаю за краще не використовувати initrd's, коли це можливо. Налаштування вашого ядра до обладнання, яке воно завантажується, виключає initrd.
Іноді пізніша версія ядра матиме необхідні функції, але це сьогодні дуже рідко. Я пам’ятаю, коли я вперше почав використовувати Debian, він використовував 2.4 ядра, але мені було потрібно 2.6 ядра для підтримки udev.
Відключення мережевих протоколів / опцій, які вам не потрібні, може пришвидшити роботу TCP / IP.
Вимкнення параметрів, які вам не потрібні, знижує слід пам'яті ядра, що важливо в умовах низької оперативної пам'яті. Якщо ви використовуєте оперативну пам’ять 256 Мб в якості маршрутизатора, це допомагає.
Я вважаю, що всі "tty" пристрої в / dev дратують у системах, де я зазвичай входжу лише через serial або ssh.
Компіляція власного ядра дозволяє брати участь у процесі розробки ядра, будь то простий матеріал, такий як постачання ідентифікаторів PCI / USB для існуючого драйвера, який може змусити новіші пристрої працювати для вас, щоб глибше втягнутись у бій ядра розвиток ядра.
Це також дозволяє протестувати ядра розробки на вашому апаратному забезпеченні та надавати зворотній зв'язок, якщо ви помітили будь-які регресії. Це може бути особливо корисним для вас та інших, якщо у вас є незвичайна частина обладнання. Якщо ви чекаєте ядра дистрибутива, може знадобитися певний час, щоб виправлення з ваших звітів про проблему перетворилися на новий випуск ядра дистрибутива.
Я також особисто люблю компілювати власні ядра, щоб включати підтримку лише обладнання, яке я маю. Запускаючи дистрибутивні ядра та дивлячись на вихід lsmod(8)
, ви бачите безліч модулів, завантажених для обладнання, якого у вас немає. Це може забруднити список модулів, / proc, / sys та ваших журналів, таким чином, коли ви шукаєте щось, воно може сховатися серед шуму; Ви також не можете бути на 100% впевнені, що ці модулі не сприяють проблемі, яку ви намагаєтеся діагностувати.
Я другий відповідь gabe. (Мій коментар занадто довгий, тому я публікую як відповідь).
Якщо у вас немає вузькоспеціалізованої мети (наприклад, вбудовані машини, суворе профілювання безпеки), я не бачу ніякої практичної користі для складання власного ядра, крім того, щоб побачити, як це робиться. Методично розглядаючи варіанти, бачачи, як вони взаємодіють один з одним для побудови системи - це прекрасний спосіб зрозуміти, як працює ваша система. Дивно, що ви дізнаєтесь, намагаючись видалити компоненти, які, здається, не мають жодної мети для завдань, які ви намагаєтеся виконати.
Але будьте попереджені - чому стрибки в кролячу нору, безсумнівно, хвилюють, це відсмоктуватиме більше ночей і вихідних, ніж ви вважали можливим!
У роботі ми використовуємо вручну прокручені ядра для того, щоб застосувати патчі поза деревом, такі як vserver та unionfs.
Вдома я збираю вручну прокручені ядра, щоб знайти, з якою програмою введено помилку, яку я відчуваю. Після того, як я закінчу це, я, мабуть, дотримуватимуся ручного ядра, поки помилка не буде виправлена в моєму дистрибутиві (Debian), і тоді я знову повернуся до їх ядер.
Ця тема вже вікова і все ще діє сьогодні, як і коли було задано питання!
Відповідь: Ви збираєте Linux ядро на ваш вибір відповідно до ваших потреб та вимог.
Чимало можливих сценаріїв:
Ви інженер і вимагаєте, щоб ваша збірка відповідала вимогам / вимогам / вимогам безпеки для вашої системи, ви перекомпілювали, щоб відповідати та / або перевершувати задані критерії.
Ви звичайний користувач і маєте стару систему, яку ви хочете продовжувати, поки ви можете перекомпілювати, щоб додати / видалити компоненти, щоб оптимізувати стару систему.
Ви звичайний користувач із найновішим найшвидшим обладнанням, в ньому є більш ніж достатньо пам'яті / оперативної пам’яті. Не потрібно перекомпілювати, але ви все одно можете, якщо вам цікаво дізнатися більше про вашу систему.
Ви просто хочете бути схожим на щоденний користувач Microsoft та / або Mac, не перекомпілюйте та просто переходьте на оновлення з вашого дистрибутива за течією.
Тримайте сценарії :-)
На відміну від користувачів Mac / Windows, Linux надає вибір. Вибір зробити це легко або оптимізувати систему під ваші вимоги.
Для більшості застосувань загальні ядра корисні практично для будь-якого обладнання. Крім того, вони зазвичай містять (ed) патчі, характерні для розповсюдження, тому компіляція власного ядра може (може) спричинити проблеми.
Резоном для складання власного ядра є:
Якби я не використовував джерело дистрибутива, я б взагалі не збирав ядро.
Інший випадок, окрім багатьох згаданих тут випадків, коли створені спеціально створені ядра - це налаштування спеціалізованих мережевих завантажувальних середовищ, де завантаження модулів неможливе і вам доведеться передавати повністю працюючі ядра на конкретні машини для виконання конкретних завдань.
Я здивований, що ніхто не згадав цю причину для складання користувацького ядра:
тому що ви хочете використовувати інший компілятор C / c ++. GCC досить хороший для компіляції ядра Linux. Але є надзвичайно чудові компілятори там! Оптимізація GCC трохи відстає від компілятора C / C ++ від Intel. І Intel постачає первісні бібліотеки продуктивності, і інструмент vtune, які обоє незамінні при створенні високопродуктивного ядра Linux. Поки що ви можете дістатися лише за допомогою GCC та G ++. Практично, незалежно від того, що ви робите, результат буде обмежений компілятором. Отже, я використовую компілятор Intel і бібліотеки продуктивності. Він трохи великий - завантаження 1,5 Гб, але це дає трохи уявлення про те, що все міститься в хорошому компіляторі.
Компілятор C / C ++ від Intel доступний безкоштовно для некомерційного використання. Але простіше переглядати сторінку завантаження некоммерчної ліцензії компілятора Intel c ++ на веб-сайті Intel. Я зазвичай не використовую GCC / G ++ ні для чого. І не потрібно бути програмістом. Ви просто встановите своє оточення та зміните два рядки у файлі make, щоб вказати на компілятор Intel.
Тоді ви можете отримати деяку серйозну швидкість!
What are the pros and cons of compiling your own kernel?
мінуси = непросто, у багатьох ситуаціях без доданої вартості. Плюси = безпека, продуктивність, якщо ви знаєте, чим займаєтесь, пристрої NAS, наприклад, використовуючи Linux, щоб зробити апаратну роботу та мати мережеві та графічні можливості.