Какой простой способ перекомпилировать ядро?

Я заинтересован в компиляции нового ядра под Ubuntu 12.04 x86 64 bit.

Я нашел эту вики-страницу, которая в основном является зеркалом для этого блога, и есть много шагов (мерзавец и т. Д.), Которые кажутся мне бесполезными.

В более ранних выпусках / дистрибутивах я использовал для создания .config подать и изменить Makefile если мне нужно, то просто беги make и это сделано.

Есть ли простой способ сделать это под Ubuntu?

3 ответа

Решение

1. Используйте apt-get source скачать версию ядра Ubuntu

apt-get source linux-image-$(uname -r)

дает папку, которая содержит, например:

linux-3.2.0 linux_3.2.0-26.41.dsclinux_3.2.0-26.41.diff.gz linux_3.2.0.orig.tar.gz

Дифференциал с жирным шрифтом включает в себя все настройки Ubuntu/Debian.

2. Собрать стоковое ядро ​​со своим .config, используйте "старомодный" Debian make-kpkg метод

Это альтернативный старомодный способ, описанный в вики:

sudo apt-get install kernel-package

Если вы собираете ядро ​​впервые:

sudo apt-get build-dep linux-image-$(uname -r)

затем cd в исходный каталог (здесь, linux-3.2.0) и либо беги make oldconfig создавать .config файл с конфигурацией вашего работающего ядра, или скопируйте третью часть .config в этот каталог.

В зависимости от того, хотите ли вы текстовую или графическую конфигурацию, установите:

(Текст)

sudo apt-get install libncurses5 libncurses5-dev

(Графический)

sudo apt-get install qt3-dev-tools libqt3-mt-dev

А затем запустите:

(Текст)

make menuconfig

(Графический)

make xconfig

Когда закончите, просто запустите:

fakeroot make-kpkg -j N --initrd --append-to-version=my-very-own-kernel kernel-image kernel-headers

где N количество параллельных заданий (обычно это количество процессоров у вас) и my-very-own-kernel пользовательская строка для идентификации этой сборки.

Когда все будет готово, образ ядра и файлы заголовков будут готовы в качестве debs в родительском каталоге; Вы можете установить их с sudo dpkg -i, который также позаботится о добавлении записей GRUB и т. д.

Вот шаги. Эта процедура основана на том, как nixCraft : Скомпилировать ядро ​​Linux 2.6 - но значительно модернизировано.

Скачайте и распакуйте исходный код ядра, которое вы хотите собрать.

Вы можете получить исходный исходный код ядра на http://kernel.org/. Версия 3.16.1 (последнее стабильное ядро ​​на момент написания статьи) будет использоваться здесь. Поэтому вам может потребоваться изменить эти команды, если вы используете другую версию.

Исходный код ядра в настоящее время предоставляется в. смола архивы xz, поэтому нажмите ссылку "tar.xz" для любой версии:

снимок экрана с сайта kernel.org, доступный для скачивания исходные архивы ядра

После cd Зайдя в каталог, в который вы скачали архив, вы можете извлечь его с помощью tar:

tar xf linux-3.16.1.tar.xz

Установите необходимые инструменты сборки и выполните настройку ядра.

Чтобы получить набор инструментов Ubuntu (gcc, make и т. д.) установите build-essential Установите build-essential метапакет:

sudo apt-get update
sudo apt-get install build-essential

Два достаточно удобных для пользователя способа настройки того, что входит в ваше ядро, предоставляются make цели xconfig а также menuconfig,

xconfig запускает утилиту графической конфигурации, а menuconfig основан на тексте (т. е. его интерфейс полностью отображается в вашем терминале). Каждый требует некоторого дополнительного программного обеспечения, не предоставленного build-essential Установите build-essential,

Для графической настройки установите libqt4-dev Установите libqt4-dev и pkg-config Установите pkg-config и беги make xconfig:

sudo apt-get install libqt4-dev pkg-config
make xconfig

Для настройки в терминале установите libncurses5-dev (спасибо Hannu за эту информацию) и бежать make menuconfig:

sudo apt-get install libncurses5-dev
make menuconfig

Соберите настроенное ядро.

Сначала запустите это, чтобы скомпилировать ядро ​​и создать vmlinuz:

make

vmlinuz это "ядро". В частности, это образ ядра, который будет распакован и загружен в память GRUB или любым другим используемым вами загрузчиком.

Затем создайте загружаемые модули ядра:

make modules

Установите ваше новое ядро.

Предполагая те make Команды завершены успешно, пришло время установить новое ядро. Сначала установите модули:

sudo make modules_install

Затем установите само ядро:

sudo make install

Это ставит vmlinuz-3.16.1 (копия vmlinuz), config-3.16.1 (текстовый файл, хранящий параметры конфигурации ядра), и System.map-3.16.1 ( таблица поиска символов ядра) в /boot, Для получения более подробной информации см. Этот пост comp.os.linux.misc от Hadron и man installkernel,

Окончательная настройка, чтобы ядро ​​можно было запустить и загрузить систему:

Этот раздел частично основан на информации в Kernel / Compile.

Теперь, когда ядро ​​находится там, где оно должно быть, оно должно:

Создайте ваши initramfs с mkinitramfs:

cd /boot
sudo mkinitramfs -ko initrd.img-3.16.1 3.16.1

Когда вы обновляете конфигурацию загрузчика GRUB2, который был установлен по умолчанию в Ubuntu с 9.10, он должен автоматически обнаружить новое ядро и добавить опцию загрузки с него.

sudo update-grub

Попробуйте свое ядро.

Теперь вы можете перезагрузиться, чтобы протестировать ваше новое ядро. Возможно, вам придется удерживать нажатой клавишу Shift или нажать клавишу Esc во время загрузки, чтобы увидеть меню загрузки GRUB, где вы можете выбирать между различными установленными ядрами.

Чтобы сделать ядро ​​(или другое) по умолчанию, см. Раздел Как изменить порядок загрузки GRUB?

Краткие инструкции по сборке ядра Ubuntu (в отличие от vanilla) можно найти здесь: https://wiki.ubuntu.com/Kernel/BuildYourOwnKernel.

Я не буду копировать всю вики, но я перечислю минимальные шаги для компиляции версии ядра Ubuntu, которое вы в настоящее время установили. (Чтобы получить самую последнюю версию, клонируйте репозиторий git для ядра в следующем выпуске Ubuntu.) Протестировано в Ubuntu 16.04.

# Get source code
apt-get source linux-image-$(uname -r)

# Install dependencies
sudo apt-get build-dep linux-image-$(uname -r)

# Compile
cd linux-4.4.0
fakeroot debian/rules clean
fakeroot debian/rules binary

# Install (obviously the versions will be different)
cd ..
sudo dpkg -i linux-image-4.4.0-38-generic_4.4.0-38.57_amd64.deb linux-headers-4.4.0-38_4.4.0-38.57_all.deb linux-headers-4.4.0-38-generic_4.4.0-38.57_amd64.deb

Репозиторий ядра Ubuntu git

Следуя идеям из https://help.ubuntu.com/community/Kernel/Compile и с подробным разъяснением того, почему я считаю, что эта конфигурация выглядит правильно, в разделе Где я могу получить файл.config ядра 11.04?:

git clone git://kernel.ubuntu.com/ubuntu/ubuntu-bionic.git linux
cd linux
git checkout Ubuntu-4.15.0-36.39
fakeroot debian/rules clean
debian/rules updateconfigs
fakeroot debian/rules build-generic
cp debian/build/build-generic/.config .
make -j `nproc`

Протестировано в Ubuntu 18.04.

Другие вопросы по тегам