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

Различия

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

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

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
wiki:сборка_ядра [2017/02/28 11:36]
[ToDo]
wiki:сборка_ядра [2018/12/18 21:10] (текущий)
[Шаг 1. Получение исходного кода ядра]
Строка 3: Строка 3:
  
 ===== Шаг 1. Получение исходного кода ядра ===== ===== Шаг 1. Получение исходного кода ядра =====
-Исходники ядра можно получить [[https://​help.ubuntu.com/​community/​Kernel/​Compile|двумя способами]]:​  +Исходники ядра ​Ubuntu ​можно получить [[https://​help.ubuntu.com/​community/​Kernel/​Compile|двумя способами]]:​  
-  * Получить свежую ​версию по [[https://​wiki.ubuntu.com/​Kernel/​Dev/​KernelGitGuide?​action=show&​redirect=KernelTeam%2FKernelGitGuide|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-precise.git</​code>​ +  * Установив архив из репозитория, с автоматическим наложением последних официальных патчей. При этом скачается пакет ​размером ~150 Мб в текущую ​папку. Чтобы получить исходники ядра, версия которого установлена на компьютере выполните команду: <​code>​apt-get source linux-image-`uname -r`</​code>​ Или вместо ''​`uname -r`''​ можно указать ​конкретную версию ​из имеющихся в репозитории. ​ 
-  * Скачать архив из репозитория. Для ​получения исходников ядра, версия которого установлена на компьютере ввести: <​code>​sudo apt-get source linux-image-`uname -r`</​code>​ Или вместо ''​`uname -r`''​ можно указать нужную версию имеющуюся в репозитории. ​Узнать,​ какие версии есть в репозитории можно набрав ''"​sudo apt-get source linux-image-"''​ и, не нажимая ''​Enter'',​ нажать два раза клавишу ''​Tab''​. Не забудьте включить общий доступ к исходникам в репозитории (''​Параметры системы → Программы и обновления → Программное обеспечение Ubuntu → Исходный код''​).+<​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 приложение может вообще не поддерживать.
  
-Также существуют ядра, работоспособность которых в Ubuntu в гарантируется:​ 
   * Архив с базовой версий без патчей,​ т.е. например "​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]]
  
Строка 47: Строка 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>​
Строка 72: Строка 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. Конфигурация будущей сборки ядра =====
 Перейдите в папку, куда вы распаковали ядро, выполнив команду Перейдите в папку, куда вы распаковали ядро, выполнив команду
Строка 87: Строка 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-пакета. Их и необходимо установить. Для этого выполните команды:​
Строка 101: Строка 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 =====
 Для того, чтобы новая версия ядра была доступна для выбора при загрузке компьютера,​ выполните следующую команду:​ Для того, чтобы новая версия ядра была доступна для выбора при загрузке компьютера,​ выполните следующую команду:​
Строка 128: Строка 140:
  
 ===== ToDo ===== ===== ToDo =====
-  * Исправить дублирование списка команд ''​make''​ в двух разделах этой справки+  * Исправить дублирование списка команд ''​make ​config''​ в двух разделах этой справки ​(перенести из "​Шаг 2: пакеты для компиляции"​ в "​Шаг 4: конфигурация"​)
   * Написать инструкцию по использованию каждого из интерфейсов конфигурирования (со скриншотами)   * Написать инструкцию по использованию каждого из интерфейсов конфигурирования (со скриншотами)
   * Заснять скринкаст по теме (в рамках проекта [[http://​team.ubuntu.ru/​projects/​videoguide|"​Видеокурс Ubuntu"​]])   * Заснять скринкаст по теме (в рамках проекта [[http://​team.ubuntu.ru/​projects/​videoguide|"​Видеокурс Ubuntu"​]])