Російський корабель йди нах*й!

Ніякі послуги не надаються але ви можете вибрати мову!!!

Компіляція ядра linux 3.18.1 на ubuntu 14.10 gnome 3.14

Предмова перед компіляцією ядра linux

Компіляція ядра linux ubuntu (та інших debian linux систем) часто цікавить користувачів питання, яким набридло просто користуватися ubuntu, kubuntu та інших debian linux з коробки, захотілося досягти вище швидкостей роботи і скоротити споживання пам'яті комп'ютера шляхом викидання всього непотрібного з ядра лінукс, на кшталт як набридли свій час часті установки windows швидше за все і це спонукало їх перейти на ubuntu linux або іншу debian складання, в інтернеті маса статей як виконується компіляція ядра linux, але більшість із них були написані для старих версій ядер та дистрибутивів, що часто заводить недосвідчених користувачів у глухий кут, доводиться довго шукати щось розумне та експериментувати. На момент написання статті найновішою була версія ubuntu 14.10, яку я відразу завантажив з графічною оболонкою gnome 3.14, яка теж на момент написання була найновішою версією, аж надто вона мені подобається. Все вищеперелічене можна було зробити і на віртуальній машині, але отож прийшов уже час апгрейдитися тому все погнав крім по сусідству встановленого Windows 7 та розділу /home і тепер пишу, що роблю. Дане ядро збиратиметься на ноутбуку Acer Aspire E1-531G і розраховано на максимальну продуктивність ноутбука, якої вдасться досягти, надалі буде зібрано ще одне для мінімального енергоспоживання, але це вже така стаття. Відразу хочу уточнити, що після встановлення дистрибутива було видалено всі іграшки та інший мотлох, яким я ніколи не користуюсь і встановлені ряд корисних програм, але вони відношення до компіляції ядра linux не мають, тому перераховувати не буду, принтерів і сканерів у мене теж ні, тому вони будуть викидатися з ядра linux, по суті, цей ноутбук повинен швидко працювати в інтернеті, підтримувати по роботі багато флешок USB та під картридер, а також працювати з файловими системами NTFS і Fat32 та Fat16, також на ньому буде запущено віртуальний сервер для розробки сайтів.

Встановлення Windows 7, 8, 8.1, 10, xp, linux у Києві, Вишневому, Броварах, Борисполі, Бортничах.

Компіляція ядра linux!

Перш ніж приступити до компіляції ядра linux, необхідно завантажити саме ядро linux на сайті kernel.org. На момент збирання останнє стабільне ядро linux 3.18.1, але, як показує практика, можна брати не стабільні, у бета версіях жодних проблем, після компіляції ядра linux теж не спостерігалося. Поки ядро linux гойдається зайдемо до центру додатків ubuntu і встановимо менеджер пакетів Synaptic та програму Terminator у якій зручніше працювати ніж у терміналі, є можливість запуску кількох терміналів в одному вікні, що іноді спрощує роботу.

Ще заходимо в джерела додатків, вводимо пароль суперкористувача та виставляємо сервер "Основний сервер" і за бажанням по інших вкладках також можете змінити налаштування. Далі до компіляції ядра linux оновлюємо систему, виконавши в терміналі:

sudo apt-get update
sudo apt-get upgrade

Для компіляції ядра linux нам знадобляться додаткові пакети, які встановимо також, якщо вони відсутні:

sudo apt-get install install libgtk2.0-dev libglib2.0-dev libglade2-dev libncurses5-dev gcc g++ kernel-package

Запускаємо Synaptic вбиваємо в пошук qt і відзначаємо пакети qt4-dev-tools та libqt4-qt3support, і всі вони за собою підтягнуті самі, без них не запускається конфігурація ядра лінукс і отже ні про яку подальшу його компіляції ядра linux не може бути мови, якщо при запуску одного з редакторів конфігураційного файлу все-таки з'явиться помилка і буде щось написано про QT3 або QT4, поверніться та доустановіть пакети з відповідними частинами імені (на практиці в різних версіях linux ubuntu та kubuntu дистрибутивів іноді з'являлися помилки при спробі конфігурувати ядро linux, рішення яких зазвичай описано в тексті помилки, часто це відсутність необхідного пакета, встановлення або зміна версії якого вирішує всі проблеми).
На даному етапі виконаємо перезавантаження після всіх оновлень.
Переходимо до папки зі скачаним ядром linux командою:

cd /home/user_name/Загрузки

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

sudo cp /linux-3.18.1.tar.xz /usr/src

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

sudo cd /usr/src
sudo tar -xvf linux-3.18.1.tar.xz

Створимо символічне посилання на папку

sudo ln -s linux-3.18.1 linux

Перейдемо в неї

sudo cd linux

Скопіюємо конфігураційний файл поточного ядра linux

sudo make oldconfig

На цьому етапі термінал почне запитувати нас, що робити з новими пунктами, що з'явилися. у новому ядрі linux і відсутніми в конфізі старого, я на цьому етапі просто пропускаю їх, затискаючи кнопку Enter, щоб надалі не читати по другому колу, але Ви можете і відповідати півгодини, відзначаючи кожне запитання ;)
Для моїх цілей можна було б скористатися командами localmodconfig і localyesconfig і потім просто включити те, чим планую користуватися в майбутньому, але, як показала практика, через якийсь час це створює проблему, можна упустити, щось важливе і по суті підходить тільки для конфігурації ядра linux серверів, у яких на момент компіляції ядра linux, вже все, що буде в майбутньому використовуватися, запущено і всі пристрої працюють в даний момент, на звичайних комп'ютерах це призводить до неможливості підключення різних флеш носіїв, телефонів, запуску віртуальних машин, деяких додатків та багатьох інших.

Я надаю перевагу xconfig - графічному (X) інтерфейсу ручної конфігурації ядра linux, хоч можна зробити також і через gconfig і menuconfig, запускаємо команду:

sudo make xconfig

Далі можемо спокійно вибирати мишкою, що ми хочемо включити в наше майбутнє ядро linux, а що ні, цей етап описувати докладно не буду, там ДУЖЕ багато пунктів і в кожній версії ядра з'являється щось нове, але дам кілька порад, які допомагають підвищити продуктивність, насамперед можна вибрати правильний тип процесора у списку та відключити практично все, що відноситься до інших виробників процесорів, більшість із цих речей включаються не модульно, а вантажаться з ядром при старті ПК (скажімо якщо у Вас стоїть процесор від Intel, то нема чого в ядрі робити драйверам на AMD та інші процесори). Потім можна вказати в якому режимі потрібно працювати, я завжди вказую performance, не люблю дивитися як ноутбук тупить, уповільнює жорсткий диск для економії енергії тощо. Далі відкриваємо новий термінал та вводимо команду:

lspci

яка виведе всі працюючі пристрої ноутбука і виходячи з цих даних можна відключати підтримку зайвих відео та аудіокарт, мережевих дротових та бездротових карт, якщо не використовуєте також можете відключити ТВ приставки, джойстики, акселерометри, магнітометри, набори драйверів на ноутбуки інших виробників та інший мотлох який впевнені, що не використовуватимете. Я волію прибирати зайві пристрої не за один раз, якщо відключити їх кілька сотень і потім скомпілювати ядро linux і завантажитися з нього, іноді виявляється, що щось не працює і доводиться довго шукати по пунктах, що-небудь зайве відключили або не включили, тому зазвичай спочатку виконую більш чорнову компіляцію ядра linux, в якому точно впевнений, що відключив лише непотрібні пристрої та виставив підтримку свого процесора та багато іншого, а потім вже завантажившись з нього і перевіривши всі пристрої копіюю його конфігураційний файл і продовжую шукати та відключати далі непотрібне, при цьому процес компіляції ядра linux також проходить швидше. Навіть така чернова складання власного ядра linux дає зниження оперативної пам'яті, що витрачається, близько 200Мб.

Після того, як все зроблено, можна натискати на дискетку для збереження конфігураційного файлу ядра і запускати його компіляцію, але спершу проводимо очищення від попередніх компіляцій ядер linux

sudo make-kpkg clean

приступаємо до компіляції ядра linux, виконаємо команду, яка сильно прискорить весь процес (3-це кількість ядер +1, тобто процесор у даному випадку двох ядерний, custom1-назва майбутнього ядра, яке надалі допоможе виділити його серед інших)

fakeroot make-kpkg -j 3 --initrd --append-to-version=-custom1 kernel_image kernel_headers

і просто чекаємо, якщо ніде не натупили в конфігураційному файлі, ядро linux має зібрати без помилок, якщо ні-видасть помилку в процесі та зупинить процес компіляції, у мене процес складання ядра зайняв близько 3-х годин. Коли ядро зібралося в папці /usr/src, повинні з'явитися 2 файли image і headers з розширеннями .deb, які потрібно встановити у вказаному порядку повернувшись до цього каталогу:

cd /usr/src
dpkg -i linux-image-3.18.1-custom2_3.18.1-custom2-10.00.Custom_amd64.deb
dpkg -i linux-headers-3.18.1-custom2_3.18.1-custom2-10.00.Custom_amd64.deb

Виконаємо перезавантаження та перевіримо працездатність ядра linux, якщо щось не працює перезапускаємось і вибираємо пункт Advanced options і вибираємо робоче ядро linux. Чекаємо на запуск і в менеджері пакетів Synaptic вбиваємо в пошук linux-image, а потім linux-headers і шукаємо наші два пакети з написами custom1 або що Ви там вказали та відзначаємо для видалення.
Перевірити яка зараз запущена версія ядра можна командою:

uname -r

Для експерименту до і після складання ядра linux було виміряно завантаження оперативної пам'яті, складання кастомного ядра дала виграш у 200мб, при тому, що продуктивність системи в цілому значно зросла, без втрати функціональності, далі для експерименту було виконано ще одну конфігурацію ядра linux за допомогою команди localyesconfig яка дала додатковий виграш в оперативній пам'яті лише 10-20мб і призвела до виникненню проблем із подальшим запуском віртуальної машини, з флеш накопичувачами та багатьом іншим, що говорить про недоцільність подальшого вдосконалення зібраного першого ядра та витрати багатьох годин часу на це.
До речі, забув уточнити, що більшість параметрів в ядрі відзначаються галочкою і тоді вони завантажуватимуться в оперативну пам'ять під час запуску linux або при встановленні навпроти них літери Їх завантаження буде проходити модульно, в той момент коли вони потрібні не споживаючи оперативну пам'ять, при знятті та галочки та М дана функція ядра стає недоступною надалі, також іноді доводиться вказувати числове значення або вибирати зі списку пункт який використовуватиметься замість виставленого за замовчуванням, будьте обережні при повному вимкненні деяких драйверів, автоматично можуть вимкнутись та сховатися пункти які ви не планували відключати, якщо не впевнені, краще залишити модульне завантаження, варто звертати увагу відключаєте ви пристрій якогось виробника чи чіп, вони як правило знаходяться в тих-таки списках і, скажімо, знаючи виробника своєї відеокарти, починаєш відключати все в списку де немає її назви, а потім після встановлення ядра linux виявляється, що ви відключили, потрібне та виникають проблеми з обладнанням.

На цьому все.