Различия
Здесь показаны различия между двумя версиями данной страницы.
Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия Последняя версия Следующая версия справа и слева | ||
wiki:сборка_ядра [2017/04/28 14:40] |
wiki:сборка_ядра [2018/12/17 22:09] [Шаг 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 → Исходный код''). |
+ | |||
+ | **__FixMe: Как это сделать из консоли? На Ubuntu Server нет Параметров системы.__** | ||
+ | </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 приложения могут потребовать специальные патчи, а последние версии ядер с 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: | Строка 60: | ||
<note>Данный шаг не является обязательным. | <note>Данный шаг не является обязательным. | ||
- | Официальные патчи уже наложены на исходники, если ядро получалось описанной выше командой: <code>sudo apt-get source linux-image-`uname -r`</code></note> | + | Официальные патчи уже наложены на исходники, если ядро получалось описанной выше командой: <code>apt-get source linux-image-`uname -r`</code></note> |
Если вы никогда до этого не применяли патчей к исходному коду, то выполните следующую команду: | Если вы никогда до этого не применяли патчей к исходному коду, то выполните следующую команду: | ||
Строка 82: | Строка 85: | ||
<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: | Строка 101: | ||
===== Шаг 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: | Строка 114: | ||
===== Шаг 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: | Строка 142: | ||
===== ToDo ===== | ===== ToDo ===== | ||
- | * Исправить дублирование списка команд ''make'' в двух разделах этой справки | + | * Исправить дублирование списка команд ''make config'' в двух разделах этой справки (перенести из "Шаг 2: пакеты для компиляции" в "Шаг 4: конфигурация") |
* Написать инструкцию по использованию каждого из интерфейсов конфигурирования (со скриншотами) | * Написать инструкцию по использованию каждого из интерфейсов конфигурирования (со скриншотами) | ||
* Заснять скринкаст по теме (в рамках проекта [[http://team.ubuntu.ru/projects/videoguide|"Видеокурс Ubuntu"]]) | * Заснять скринкаст по теме (в рамках проекта [[http://team.ubuntu.ru/projects/videoguide|"Видеокурс Ubuntu"]]) |