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

Различия

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

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

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
wiki:сборка_ядра [2017/04/28 14:50]
[Шаг 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|двумя способами]]: ​
-  * Установив архив из репозитория,​ с автоматическим наложением последних официальных патчей. При этом скачается пакет размером ~150 Мб в "​домашнюю папку" ~/. Чтобы получить исходники ядра, версия которого установлена на компьютере выполните команду:​ <​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"​.  
 +</​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> ​   * Самая свежая версия ядра доступна по [[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 приложение может вообще не поддерживать.+Также существуют ядра, работоспособность которых в 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]]
  
Строка 57: Строка 58:
 <​note>​Данный шаг не является обязательным. ​ <​note>​Данный шаг не является обязательным. ​
  
-Официальные патчи уже наложены на исходники,​ если ядро получалось описанной выше командой:​ <​code>​sudo apt-get source linux-image-`uname -r`</​code></​note>​+Официальные патчи уже наложены на исходники,​ если ядро получалось описанной выше командой:​ <​code>​apt-get source linux-image-`uname -r`</​code></​note>​
  
 Если вы никогда до этого не применяли патчей к исходному коду, то выполните следующую команду:​ Если вы никогда до этого не применяли патчей к исходному коду, то выполните следующую команду:​
Строка 82: Строка 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. Конфигурация будущей сборки ядра =====
 Перейдите в папку, куда вы распаковали ядро, выполнив команду Перейдите в папку, куда вы распаковали ядро, выполнив команду
Строка 97: Строка 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-пакета. Их и необходимо установить. Для этого выполните команды:​
Строка 111: Строка 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 =====
 Для того, чтобы новая версия ядра была доступна для выбора при загрузке компьютера,​ выполните следующую команду:​ Для того, чтобы новая версия ядра была доступна для выбора при загрузке компьютера,​ выполните следующую команду:​
Строка 138: Строка 140:
  
 ===== ToDo ===== ===== ToDo =====
-  * Исправить дублирование списка команд ''​make''​ в двух разделах этой справки+  * Исправить дублирование списка команд ''​make ​config''​ в двух разделах этой справки ​(перенести из "​Шаг 2: пакеты для компиляции"​ в "​Шаг 4: конфигурация"​)
   * Написать инструкцию по использованию каждого из интерфейсов конфигурирования (со скриншотами)   * Написать инструкцию по использованию каждого из интерфейсов конфигурирования (со скриншотами)
   * Заснять скринкаст по теме (в рамках проекта [[http://​team.ubuntu.ru/​projects/​videoguide|"​Видеокурс Ubuntu"​]])   * Заснять скринкаст по теме (в рамках проекта [[http://​team.ubuntu.ru/​projects/​videoguide|"​Видеокурс Ubuntu"​]])