Это старая версия документа.
Содержание
В данном пошаговом руководстве вы узнаете, как правильно собрать и установить ядро ветвей >2.6 в семействе ОС Ubuntu.
Шаг 1. Получение исходного кода ядра
Исходники ядра Ubuntu можно получить двумя способами:
- Скачать архив из репозитория. Для получения исходников ядра, версия которого установлена на компьютере ввести:
sudo apt-get source linux-image-`uname -r`
Или вместо
`uname -r`
можно указать конкретную версию из имеющихся в репозитории.
«sudo apt-get source linux-image-»
и, не нажимая Enter
, нажать два раза клавишу Tab
.
Не забудьте включить общий доступ к исходникам в репозитории (Параметры системы → Программы и обновления → Программное обеспечение Ubuntu → Исходный код
).
- Самая свежая версия ядра доступна по git:
git clone git://kernel.ubuntu.com/ubuntu/ubuntu-<release codename>.git
Где <release codename> - имя релиза, например:
git clone git://kernel.ubuntu.com/ubuntu/ubuntu-xenial.git
Другие ядра
Также существуют ядра, работоспособность которых в Ubuntu не гарантируется:
- Архив с базовой версий без патчей, т.е. например «4.8.0», «4.8.10»:
sudo apt-get install linux-source
- Ядра линии Mainline, которые ещё находятся в разработке: http://kernel.ubuntu.com/~kernel-ppa/mainline/
- Общие ядра Linux, не адаптированные к Ubuntu: kernel.org
Распакуйте полученный архив, используя команды:
cd ~/ tar -xjf linux-2.6.x.y.tar.bz2
Или в случае с linux-source:
cd /usr/src tar -xjf linux-source-2.6.x.y.tar.bz2
Шаг 2. Получение необходимых для сборки пакетов
Выполните следующие команды для установки основных пакетов:
sudo apt-get update sudo apt-get build-dep linux sudo apt-get install kernel-package
Далее всё зависит от того, каким способом вы хотите произвести конфигурацию ядра. Это можно сделать несколькими способами.
- config - традиционный способ конфигурирования. Программа выводит параметры конфигурации по одному, предлагая вам установить для каждого из них свое значение. Не рекоммендуется для неопытных пользователей.
- oldconfig - файл конфигурации создаётся автоматически, основываясь на текущей конфигурации ядра. Рекомендуется для начинающих.
- defconfig - файл конфигурации создаётся автоматически, основываясь на значениях по-умолчанию.
- menuconfig - псевдографический интерфейс ручной конфигурации, не требует последовательного ввода значений параметров. Рекомендуется для использования в терминале.
- xconfig - графический (X) интерфейс ручной конфигурации, не требует последовательного ввода значений параметров.
- gconfig - графический (GTK+) интерфейс ручной конфигурации, не требует последовательного ввода значений параметров. Рекомендуется для использования в среде GNOME.
- localmodconfig - файл конфигурации, создающийся автоматически, в который включается только то, что нужно данному конкретному устройству. При вызове данной команды большая часть ядра будет замодулирована
- localyesconfig - файл конфигурации, похожий на предыдущий, но здесь большая часть будет включена непосредственно в ядро. Идеальный вариант для начинающих.
В случае, если вы хотите использовать config, oldconfig, defconfig, localmodconfig или localyesconfig, вам больше не нужны никакие дополнительные пакеты. В случае же с оставшимися тремя вариантами необходимо установить также дополнительные пакеты.
Для установки пакетов, необходимых для использования menuconfig выполните следующую команду:
sudo apt-get install libncurses5-dev
Для установки пакетов, необходимых для использования gconfig выполните следующую команду:
sudo apt-get install libgtk2.0-dev libglib2.0-dev libglade2-dev
Для установки пакетов, необходимых для использования xconfig выполните следующую команду:
sudo apt-get install qt3-dev-tools libqt3-mt-dev
C Ubuntu 12.10:
sudo apt-get install libqt4-dev
Шаг 3. Применение патчей
Если вы никогда до этого не применяли патчей к исходному коду, то выполните следующую команду:
sudo apt-get install patch
Эта команда установит программу patch, необходимую для, как можно догадаться, применения патчей. Теперь скачайте файл патча в папку, куда вы распаковали ядро. Это может быть либо архивный файл (напр. Bzip2 или Gzip), либо несжатый patch-файл.
На данный момент подразумевается, что вы уже сохранили файл в ту папку, куда ранее распаковали ядро, и установили программу patch.
Если скачанный вами файл был в формате Gzip (*.gz), тогда выполните следующую команду для распаковки содержимого архива:
gunzip patch-2.6.x.y.gz
Если скачанный вами файл был в формате Bzip2 (*.bz2), тогда выполните следующую команду для распаковки содержимого архива:
bunzip2 patch-2.6.x.y.bz2
где 2.6.x.y - версия патча ядра. Соответствующие команды распакуют файл патча в папку с исходным кодом ядра. Прежде чем применить патч, необходимо удостовериться, что он заработает без ошибкок. Для этого выполните команду:
patch -p1 -i patch-2.6.x.y --dry-run
где 2.6.x.y - версия патча ядра. Эта команда сымитирует применение патча, не изменяя сами файлы.
Если при её выполнении не возникнет ошибок, то изменения можно смело внедрять в сами файлы. Для этого выполните команду:
patch -p1 -i patch-2.6.x.y
где 2.6.x.y - версия патча ядра. Если не было никаких ошибок, значит к исходному коду был успешно применён патч.
patch -p1 -R <patch-2.6.x.y
где 2.6.x.y - версия патча и ваших исходников
Шаг 4. Конфигурация будущей сборки ядра
Перейдите в папку, куда вы распаковали ядро, выполнив команду
cd ~/linux-2.6.x.y
где 2.6.x.y - версия загруженного вами ядра.
На данный момент вы уже должны были определиться с методом конфигурации ядра (если нет, то ознакомьтесь с ними в разделе «Получение необходимых для сборки пакетов». В зависимости от этого, выполните следующую команду для запуска выбранного вами способа конфигурации:
- config - традиционный способ конфигурирования. Программа выводит параметры конфигурации по одному, предлагая вам установить для каждого из них свое значение. Вызывается командой
make config
.
- oldconfig - файл конфигурации создаётся автоматически, основываясь на текущей конфигурации ядра. Рекомендуется для начинающих. Вызывается командой
make oldconfig
- defconfig - файл конфигурации создаётся автоматически, основываясь на значениях по-умолчанию для данной конкретной архитектуры. Вызывается командой
make defconfig
- menuconfig - псевдографический интерфейс ручной конфигурации, не требует последовательного ввода значений параметров. Рекомендуется для использования в терминале. Вызов:
make menuconfig
- gconfig и xconfig - графические конфигураторы для ручной настройки. Вызов:
make gconfig
и
make xconfig
соответственно
- localmodconfig и localyesconfig - автоматические конфигураторы. Конфиг создается на основе вызванных в данных момент модулей и запущенного ядра. Разница между этими двумя конфигураторами в количестве модулей. В первом случае их будет не менее 50% ядра, а во-втором не больше 2 модулей. Вызов:
make localmodconfig
и
make localyesconfig
соответственно
После вызова соответствующая программа конфигурации будет запущена. Произведите необходимые настройки в соответствии с вашими потребностями, сохраните файл конфигурации и переходите к следующему шагу.
Шаг 5. Сборка ядра
Итак, приготовления завершены. Теперь можно запустить процесс сборки ядра. Чтобы это сделать, выполните команду:
fakeroot make-kpkg -j 5 --initrd --append-to-version=-custom kernel_image kernel_headers #-j <количество ядер>+1
Шаг 6. Установка образов и заголовков ядра
Когда сборка ядра подошла к концу, в вашей домашней папке появятся два deb-пакета. Их и необходимо установить. Для этого выполните команды:
cd ~/ sudo dpkg -i linux-image-2.6.x.y-custom_2.6.x.y-custom-10.00.Custom_arc.deb sudo dpkg -i linux-headers-2.6.x.y-custom_2.6.x.y-custom-10.00.Custom_arc.deb
где 2.6.x.y - версия собранного ядра, arc - архитектура процессора (i386 - 32-бит, amd64 - 64-бит).
Если вы не знаете точного названия пакета, выведите список файлов в домашнем каталоге командой
ls -l
и найдите эти самые два пакета.
Шаг 7. Генерация начального RAM-диска
Для корректной работы Ubuntu требует наличия образа начального RAM-диска. Чтобы его создать, выполните команду:
sudo update-initramfs -c -k 2.6.x.y-custom
где 2.6.x.y - версия собранного ядра.
Шаг 8. Обновление конфигурации загрузчика GRUB
Для того, чтобы новая версия ядра была доступна для выбора при загрузке компьютера, выполните следующую команду:
sudo update-grub
Файл menu.lst (для GRUB версии 1) или grub.cfg (для GRUB версии 2) обновится в соответствии с наличием установленных операционных систем и образов ядер.
Шаг 9. Проверка ядра
Сборка и установка ядра успешно выполнены! Теперь перезагрузите компьютер и попробуйте загрузить систему с новым ядром. Чтобы удостовериться, что система запущена с новым ядром, выполните команду
uname -r
Она выведет на экран используемую версию ядра.
Если всё сделано правильно, то вы можете удалить архивы с исходным кодом и весь каталог linux-2.6.x.y в вашей домашней папке. Это освободит около 5 ГБ на вашем жёстком диске (размер освобождаемого пространства зависит от параметров сборки).
На этом процесс сборки и установки завершён, поздравляю!
Ссылки
ToDo
- Исправить дублирование списка команд
make
в двух разделах этой справки - Написать инструкцию по использованию каждого из интерфейсов конфигурирования (со скриншотами)
- Заснять скринкаст по теме (в рамках проекта "Видеокурс Ubuntu")
- Написать раздел вроде FAQ или Troubleshooting