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

Различия

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

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

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
wiki:сборка_ядра [2017/02/28 13:08]
[Шаг 1. Получение исходного кода ядра]
wiki:сборка_ядра [2018/12/18 21:10] (текущий)
[Шаг 1. Получение исходного кода ядра]
Строка 4: Строка 4:
 ===== Шаг 1. Получение исходного кода ядра ===== ===== Шаг 1. Получение исходного кода ядра =====
 Исходники ядра Ubuntu можно получить [[https://​help.ubuntu.com/​community/​Kernel/​Compile|двумя способами]]: ​ Исходники ядра Ubuntu можно получить [[https://​help.ubuntu.com/​community/​Kernel/​Compile|двумя способами]]: ​
-  * Скачать архив из репозитория. Для получения исходников ядра, версия которого установлена на компьютере ввести: <​code>​sudo apt-get source linux-image-`uname -r`</​code>​ Или вместо ''​`uname -r`''​ можно указать конкретную версию из имеющихся в репозитории.  +  * Установив ​архив из репозитория, с автоматическим наложением ​последних официальных патчей. При этом скачается пакет размером ~150 Мб в текущую папку. Чтобы получить ​исходники ядра, версия которого установлена на компьютере выполните команду: <​code>​apt-get source linux-image-`uname -r`</​code>​ Или вместо ''​`uname -r`''​ можно указать конкретную версию из имеющихся в репозитории.  
-<​note>​Список имеющихся в репозитории версий можно увидеть набрав:​ ''"​sudo apt-get source linux-image-"''​ и, не нажимая ''​Enter'',​ нажать два раза клавишу ''​Tab''​.+<​note>​Список имеющихся в репозитории версий можно увидеть набрав ​команду: ''"​apt-get source linux-image-"''​ и, не нажимая ''​Enter'',​ нажать два раза клавишу ''​Tab''​.
  
-Не забудьте включить общий доступ к исходникам в репозитории (''​Параметры системы → Программы и обновления → Программное обеспечение Ubuntu → Исходный код''​).</​note>​ +Не забудьте включить общий доступ к исходникам в репозитории (''​Параметры системы → Программы и обновления → Программное обеспечение Ubuntu → Исходный код''​). ​Из консоли это сделать можно раскомментировав строки начинающиеся с deb-src в файле /​etc/​apt/​sources.list,​ а затем выполнить обновление командой:​ "sudo apt-get update"​.  
-  * Самая свежая версия ядра доступна по [[https://​wiki.ubuntu.com/​Kernel/​Dev/​KernelGitGuide|git]]<​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>​+</​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 не гарантируется:+Также существуют ядра, работоспособность которых в 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>​   * Архив с базовой версий без патчей,​ т.е. например "​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/​+  * Ядра ​тестовой ​линии [[https://​wiki.ubuntu.com/​Kernel/​MainlineBuilds|Mainline]]:​ http://​kernel.ubuntu.com/​~kernel-ppa/​mainline/​
   * Общие ядра Linux, не адаптированные к Ubuntu: [[https://​www.kernel.org|kernel.org]]   * Общие ядра Linux, не адаптированные к Ubuntu: [[https://​www.kernel.org|kernel.org]]
  
Строка 52: Строка 54:
 C Ubuntu 12.10: C Ubuntu 12.10:
 <​code>​sudo apt-get install libqt4-dev</​code></​note>​ <​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>​
Строка 77: Строка 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. Конфигурация будущей сборки ядра =====
 Перейдите в папку, куда вы распаковали ядро, выполнив команду Перейдите в папку, куда вы распаковали ядро, выполнив команду
Строка 92: Строка 99:
 ===== Шаг 5. Сборка ядра ===== ===== Шаг 5. Сборка ядра =====
 Итак, приготовления завершены. Теперь можно запустить процесс сборки ядра. Чтобы это сделать,​ выполните команду:​ Итак, приготовления завершены. Теперь можно запустить процесс сборки ядра. Чтобы это сделать,​ выполните команду:​
-<​code>​fakeroot make-kpkg -j 5 --initrd --append-to-version=-custom kernel_image kernel_headers #-j <​количество ядер>​+1</​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-пакета. Их и необходимо установить. Для этого выполните команды:​
Строка 106: Строка 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 =====
 Для того, чтобы новая версия ядра была доступна для выбора при загрузке компьютера,​ выполните следующую команду:​ Для того, чтобы новая версия ядра была доступна для выбора при загрузке компьютера,​ выполните следующую команду:​
Строка 133: Строка 140:
  
 ===== ToDo ===== ===== ToDo =====
-  * Исправить дублирование списка команд ''​make''​ в двух разделах этой справки+  * Исправить дублирование списка команд ''​make ​config''​ в двух разделах этой справки ​(перенести из "​Шаг 2: пакеты для компиляции"​ в "​Шаг 4: конфигурация"​)
   * Написать инструкцию по использованию каждого из интерфейсов конфигурирования (со скриншотами)   * Написать инструкцию по использованию каждого из интерфейсов конфигурирования (со скриншотами)
   * Заснять скринкаст по теме (в рамках проекта [[http://​team.ubuntu.ru/​projects/​videoguide|"​Видеокурс Ubuntu"​]])   * Заснять скринкаст по теме (в рамках проекта [[http://​team.ubuntu.ru/​projects/​videoguide|"​Видеокурс Ubuntu"​]])