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

37

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

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

С более ранними версиями / дистрибутивами я использовал файл .config и изменял Makefile , если мне это нужно, а затем просто запустил make , и это было сделано.

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

    
задан user827992 13.07.2012 в 23:40
источник

3 ответа

34

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

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

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

linux-3.2.0                linux_3.2.0-26.41.dsc
linux_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 и т. д.

    
ответ дан izx 14.07.2012 в 03:09
источник
16

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

Загрузите и извлеките исходный код ядра, которое вы хотите создать.

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

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

После cd ing в каталог, в который вы загрузили архив, вы можете извлечь его с помощью < a href="http://manpages.ubuntu.com/manpages/man1/tar.1.html"> tar :

tar xf linux-3.16.1.tar.xz

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

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

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

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

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

Чтобы настроить графически , установите libqt4-dev < img src="https://hostmar.co/software-small"> и pkg-config < img src="https://hostmar.co/software-small"> и запустите 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 во время загрузки, чтобы увидеть меню загрузки GRUB, где вы можете выбрать между различными установленными ядрами.

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

    
ответ дан Novice 19.08.2014 в 08:18
2

Быстрые инструкции по созданию ядра Ubuntu (в отличие от ванили) можно найти здесь: Ссылка .

Я не буду копировать всю wiki, но я перечислю минимальные шаги для компиляции версии ядра 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
    
ответ дан Aleksandr Dubinsky 28.09.2016 в 14:33