Различия
Здесь показаны различия между двумя версиями данной страницы.
Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия Следующая версия Следующая версия справа и слева | ||
wiki:сборка_ядра [2017/02/28 12:18] [Шаг 1. Получение исходного кода ядра] |
wiki:сборка_ядра [2017/05/26 15:26] [Шаг 5. Сборка ядра] |
||
---|---|---|---|
Строка 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-xenial.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 → Исходный код'').</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: | Строка 53: | ||
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: | Строка 82: | ||
<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: | Строка 98: | ||
===== Шаг 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: | Строка 111: | ||
===== Шаг 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: | Строка 139: | ||
===== ToDo ===== | ===== ToDo ===== | ||
- | * Исправить дублирование списка команд ''make'' в двух разделах этой справки | + | * Исправить дублирование списка команд ''make config'' в двух разделах этой справки (перенести из "Шаг 2: пакеты для компиляции" в "Шаг 4: конфигурация") |
* Написать инструкцию по использованию каждого из интерфейсов конфигурирования (со скриншотами) | * Написать инструкцию по использованию каждого из интерфейсов конфигурирования (со скриншотами) | ||
* Заснять скринкаст по теме (в рамках проекта [[http://team.ubuntu.ru/projects/videoguide|"Видеокурс Ubuntu"]]) | * Заснять скринкаст по теме (в рамках проекта [[http://team.ubuntu.ru/projects/videoguide|"Видеокурс Ubuntu"]]) |