Какой простой способ перекомпилировать ядро?
Я заинтересован в компиляции нового ядра под 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" для любой версии:
После cd
Зайдя в каталог, в который вы скачали архив, вы можете извлечь его с помощью tar
:
tar xf linux-3.16.1.tar.xz
Установите необходимые инструменты сборки и выполните настройку ядра.
Чтобы получить набор инструментов Ubuntu (gcc
, make
и т. д.) установите build-essential метапакет:
sudo apt-get update
sudo apt-get install build-essential
Два достаточно удобных для пользователя способа настройки того, что входит в ваше ядро, предоставляются make
цели xconfig
а также menuconfig
,
xconfig
запускает утилиту графической конфигурации, а menuconfig
основан на тексте (т. е. его интерфейс полностью отображается в вашем терминале). Каждый требует некоторого дополнительного программного обеспечения, не предоставленного build-essential ,
Для графической настройки установите libqt4-dev и 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.
Теперь, когда ядро находится там, где оно должно быть, оно должно:
запись в конфигурации загрузчика, так что вы можете выбрать и загрузить из нее.
исходная файловая система RAM, среда, из которой ядро загружает драйверы и монтирует
/
файловая система.(Если вы устанавливаете старое ядро или настроили свое ядро на использование devfs вместо более нового udev, вам может потребоваться или вы захотите вместо этого установить начальный ramdisk. Если вы знаете, что вам это нужно, см.
man initrd
.)
Создайте ваши 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.