HOW-TO: Сборка ядра Linux Сравнение версий

Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
wiki:сборка_ядра [2012/09/23 10:34]
[Шаг 3. Применение патчей]
wiki:сборка_ядра [2018/12/18 21:10] (текущий)
[Шаг 1. Получение исходного кода ядра]
Строка 3: Строка 3:
  
 ===== Шаг 1. Получение исходного кода ядра ===== ===== Шаг 1. Получение исходного кода ядра =====
-  - Перейдите ​на сайт [[https://www.kernel.org|kernel.org]] +Исходники ядра Ubuntu можно получить [[https://help.ubuntu.com/​community/​Kernel/​Compile|двумя способами]] 
-  ​- Загрузите полный архив необходимой вам версии ядра в домашнюю папку, нажав справа от неё на ссылку [Full Source+  ​* Установив ​архив из репозитория, с автоматическим наложением ​последних официальных патчей. При этом скачается пакет ​размером ~150 Мб в текущую папку. Чтобы получить исходники ядра, ​версия которого установлена на компьютере выполните команду: <​code>​apt-get source linux-image-`uname -r`</​code>​ Или вместо ''​`uname -r`''​ можно указать конкретную версию из имеющихся в репозитории.  
-  ​Распакуйте полученный архив, используя команды:​+<​note>​Список имеющихся в репозитории версий можно увидеть набрав команду: ''"​apt-get source linux-image-"''​ и, не нажимая ''​Enter'',​ нажать два раза клавишу ''​Tab''​. 
 + 
 +Не забудьте включить общий доступ к исходникам в репозитории (''​Параметры ​системы → Программы и обновления → Программное обеспечение Ubuntu → Исходный код''​). Из консоли это сделать можно ​раскомментировав строки начинающиеся с deb-src в файле /​etc/​apt/​sources.list,​ а затем выполнить обновление командой: "sudo apt-get update"​.  
 +</​note>​ 
 +  * Самая свежая версия ядра доступна по [[https://​wiki.ubuntu.com/​Kernel/​Dev/​KernelGitGuide|git]]. Размер скачиваемого ​пакета ~500—800 Мб. <​code>​git clone git://​kernel.ubuntu.com/​ubuntu/​ubuntu-<​release codename>​.git</​code>​ Где <release codename>​ - имя релиза,​ например:​ <​code>​git clone git://​kernel.ubuntu.com/​ubuntu/​ubuntu-xenial.git</​code>​  
 + 
 +**Другие ядра** 
 + 
 +Также существуют ядраработоспособность которых в Ubuntu не гарантируется. Например,​ известна проблема с рядом популярных системных приложений (в частности драйвера NVidia, VirtualBox),​ которые при ​своей установке компилируются под установленное ядро. Поэтому для их установки на ядро, нестандартное для данной версии Ubuntu (например,​ Ubuntu 16.04 идёт ​с ядром 4.4.0), может потребоваться их отдельная ​компиляция вручную или специальные патчи, а последние версии ядер с kernel.org приложение может вообще не поддерживать. 
 + 
 +  * Архив с базовой версий без патчей,​ т.е. например "​4.8.0",​ "​4.8.10":​ <​code>​sudo apt-get install linux-source</​code>​ 
 +  * Ядра тестовой линии ​[[https://​wiki.ubuntu.com/​Kernel/​MainlineBuilds|Mainline]]: http://​kernel.ubuntu.com/​~kernel-ppa/​mainline/​ 
 +  ​* Общие ядра Linux, не адаптированные к Ubuntu: [[https://​www.kernel.org|kernel.org]] 
 + 
 +Распакуйте полученный архив, используя команды:​
 <​code>​cd ~/ <​code>​cd ~/
 tar -xjf linux-2.6.x.y.tar.bz2</​code>​ tar -xjf linux-2.6.x.y.tar.bz2</​code>​
 +Или в случае с linux-source:​
 +<​code>​cd /usr/src
 +tar -xjf linux-source-2.6.x.y.tar.bz2</​code>​
  
 ===== Шаг 2. Получение необходимых для сборки пакетов ===== ===== Шаг 2. Получение необходимых для сборки пакетов =====
Строка 33: Строка 50:
  
 Для установки пакетов,​ необходимых для использования **xconfig** выполните следующую команду:​ Для установки пакетов,​ необходимых для использования **xconfig** выполните следующую команду:​
 +<​note>​До Ubuntu 12.04:
 <​code>​sudo apt-get install qt3-dev-tools libqt3-mt-dev</​code>​ <​code>​sudo apt-get install qt3-dev-tools libqt3-mt-dev</​code>​
 +C Ubuntu 12.10:
 +<​code>​sudo apt-get install libqt4-dev</​code></​note>​
  
 ===== Шаг 3. Применение патчей ===== ===== Шаг 3. Применение патчей =====
-<​note>​Данный шаг не является обязательным</​note>​+<​note>​Данный шаг не является обязательным.  
 + 
 +Официальные патчи уже наложены на исходники,​ если ядро получалось описанной выше командой:​ <​code>​apt-get source linux-image-`uname -r`</​code>​</​note>​ 
 Если вы никогда до этого не применяли патчей к исходному коду, то выполните следующую команду:​ Если вы никогда до этого не применяли патчей к исходному коду, то выполните следующую команду:​
 <​code>​sudo apt-get install patch</​code>​ <​code>​sudo apt-get install patch</​code>​
Строка 60: Строка 83:
 <​code>​patch -p1 -R <​patch-2.6.x.y</​code>​ <​code>​patch -p1 -R <​patch-2.6.x.y</​code>​
 где 2.6.x.y - версия патча и ваших исходников</​note>​ где 2.6.x.y - версия патча и ваших исходников</​note>​
 +
 ===== Шаг 4. Конфигурация будущей сборки ядра ===== ===== Шаг 4. Конфигурация будущей сборки ядра =====
 Перейдите в папку, куда вы распаковали ядро, выполнив команду Перейдите в папку, куда вы распаковали ядро, выполнив команду
Строка 75: Строка 99:
 ===== Шаг 5. Сборка ядра ===== ===== Шаг 5. Сборка ядра =====
 Итак, приготовления завершены. Теперь можно запустить процесс сборки ядра. Чтобы это сделать,​ выполните команду:​ Итак, приготовления завершены. Теперь можно запустить процесс сборки ядра. Чтобы это сделать,​ выполните команду:​
-<​code>​fakeroot make-kpkg --initrd --append-to-version=-custom kernel_image kernel_headers</​code>​ +<​code>​fakeroot make-kpkg ​-j 5 --initrd --append-to-version=-custom kernel_image kernel_headers ​#-j <​количество ядер процессора>​+1</​code>​ 
-<note important>​Сборка ядра может занимать от 20 минут до нескольких часов в зависимости от конфигурации ядра и технических параметров компьютера.</​note>​ +<note important>​Сборка ядра может занимать от 20 минут до нескольких часов в зависимости от конфигурации ядра и технических параметров компьютера. ​Сборка при многодерном процессоре может быть в несколько раз быстрее</​note>​
 ===== Шаг 6. Установка образов и заголовков ядра ===== ===== Шаг 6. Установка образов и заголовков ядра =====
 Когда сборка ядра подошла к концу, в вашей домашней папке появятся два deb-пакета. Их и необходимо установить. Для этого выполните команды:​ Когда сборка ядра подошла к концу, в вашей домашней папке появятся два deb-пакета. Их и необходимо установить. Для этого выполните команды:​
Строка 89: Строка 112:
  
 ===== Шаг 7. Генерация начального RAM-диска ===== ===== Шаг 7. Генерация начального RAM-диска =====
 +<​note>​Внимание! Если вы во время сборки ядра добавили ключ --initrd, этот шаг можно пропустить.</​note>​
 Для корректной работы Ubuntu требует наличия образа начального RAM-диска. Чтобы его создать,​ выполните команду:​ Для корректной работы Ubuntu требует наличия образа начального RAM-диска. Чтобы его создать,​ выполните команду:​
 <​code>​sudo update-initramfs -c -k 2.6.x.y-custom</​code>​ <​code>​sudo update-initramfs -c -k 2.6.x.y-custom</​code>​
 где 2.6.x.y - версия собранного ядра. где 2.6.x.y - версия собранного ядра.
-<​note>​Внимание! Если вы во время сборки ядра добавили ключ --initrd, этот шаг можно пропустить.</​note>​+
 ===== Шаг 8. Обновление конфигурации загрузчика GRUB ===== ===== Шаг 8. Обновление конфигурации загрузчика GRUB =====
 Для того, чтобы новая версия ядра была доступна для выбора при загрузке компьютера,​ выполните следующую команду:​ Для того, чтобы новая версия ядра была доступна для выбора при загрузке компьютера,​ выполните следующую команду:​
Строка 109: Строка 133:
  
 ** На этом процесс сборки и установки завершён,​ поздравляю!** ** На этом процесс сборки и установки завершён,​ поздравляю!**
 +
 +===== Ссылки =====
 +  * https://​help.ubuntu.com/​community/​Kernel/​Compile
 +  * https://​wiki.ubuntu.com/​Kernel/​BuildYourOwnKernel
 +  * https://​wiki.ubuntu.com/​Kernel/​Dev/​KernelGitGuide
  
 ===== ToDo ===== ===== ToDo =====
 +  * Исправить дублирование списка команд ''​make config''​ в двух разделах этой справки (перенести из "​Шаг 2: пакеты для компиляции"​ в "​Шаг 4: конфигурация"​)
   * Написать инструкцию по использованию каждого из интерфейсов конфигурирования (со скриншотами)   * Написать инструкцию по использованию каждого из интерфейсов конфигурирования (со скриншотами)
   * Заснять скринкаст по теме (в рамках проекта [[http://​team.ubuntu.ru/​projects/​videoguide|"​Видеокурс Ubuntu"​]])   * Заснять скринкаст по теме (в рамках проекта [[http://​team.ubuntu.ru/​projects/​videoguide|"​Видеокурс Ubuntu"​]])