Компиляция ядра с настройками по умолчанию


8

Предположения:

  • Платформа:
    anisha@linux-dopx:~/> uname -a
    Linux linux-dopx 2.6.34-12-desktop #1 SMP PREEMPT 2010-06-29 02:39:08 +0200 x86_64 x86_64 x86_64 GNU/Linux

  • Загруженное ядро ​​является последней стабильной версией из kernel.org.

  • Мы оставляем значения по умолчанию (без изменений) в настройках make menuconfig.
  • Просто введите make, make install, grub-updateи перезагрузите компьютер.

Теперь, следуя этим предположениям, должны ли мы по-прежнему вносить какие-либо дополнительные изменения в файлы или компилировать некоторые дополнительные драйверы, чтобы обеспечить безошибочную перезагрузку?

Если да, то от чего зависят эти изменения?

РЕДАКТИРОВАТЬ 1:

anisha@linux-dopx:/> sudo /sbin/lspci -n
00:00.0 0600: 8086:29c0 (rev 10)
00:02.0 0300: 8086:29c2 (rev 10)
00:1b.0 0403: 8086:27d8 (rev 01)
00:1c.0 0604: 8086:27d0 (rev 01)
00:1c.1 0604: 8086:27d2 (rev 01)
00:1d.0 0c03: 8086:27c8 (rev 01)
00:1d.1 0c03: 8086:27c9 (rev 01)
00:1d.2 0c03: 8086:27ca (rev 01)
00:1d.3 0c03: 8086:27cb (rev 01)
00:1d.7 0c03: 8086:27cc (rev 01)
00:1e.0 0604: 8086:244e (rev e1)
00:1f.0 0601: 8086:27b8 (rev 01)
00:1f.1 0101: 8086:27df (rev 01)
00:1f.2 0101: 8086:27c0 (rev 01)
00:1f.3 0c05: 8086:27da (rev 01)
01:00.0 0200: 10ec:8136 (rev 01)

Ответы:


7

Не рекомендуется только голым make menuconfig. Требуемый конфиг зависит от трех вещей:

 the hardware being used
 the features used by the OS/distribution
 the features by you (file-systems, raid, ..etc)

Поэтому рекомендуемая конфигурация "по умолчанию" на мой взгляд:

cd your_kernel_src
cp /boot/your-distribution-config .config
make localmodconfig
make menuconfig

Смотрите также Конфигурация ядра для дистрибутивов . Первый абзац:

Настройка ядра когда-то была довольно простым процессом, требующим знания только того, какое оборудование необходимо поддерживать. Со временем все стало более сложным в целом, но дистрибутивы добавили свои собственные наборы зависимостей от конкретных функций ядра - зависимости, которые могут быть трудны для понимания обычными пользователями. Это побудило Линуса Торвальдса выдвинуть предложение RFC о добавлении опций конфигурации ядра для конкретного дистрибутива.


1
Чтобы выразить это более кратко: нет никакого рабочего конфигурации ядра «по умолчанию» или «только то, что предполагал Линус». Если вы просто загружаете и компилируете без какой-либо настройки, ожидается, что у вас будет сломанное и / или едва функционирующее ядро.
Багамат

Конфигурация по умолчанию - только это. Раньше это было то, чем Линус управлял в то время. Получите конфигурацию для своего дистрибутива и используйте ее в качестве отправной точки.
vonbrand

спасибо за ответ, я пытаюсь следовать книге writing linux driversс ядром 2.6. Мой конфиг Fedora 24 имеет много недопустимых значений для ядра 2.6. Любые предложения о том, какую конфигурацию использовать для установки ядра 2.6?
Гидеон

3

Реальное оборудование / дистрибутивы, вероятно, не будут работать должным образом с defconfig

Как упомянуто в этом ответе , все, что не предоставлено поставщиком дистрибутива или оборудования, очень вероятно, потерпит неудачу тонким или менее тонким способом, например:

  • вы можете не создавать поддержку драйверов для какого-то важного оборудования
  • Пакеты дистрибутива могут полагаться на функцию ядра, которую вы не собрали, и потерпеть неудачу

Кроме того, помимо конкретных настроек, поставщики обычно применяют большие наборы патчей поверх ванильного ядра, даже Ubuntu делает это, например.

В частности, для Ubuntu / Debian я описал, как скомпилировать поддерживаемое ядро ​​из исходного кода: /ubuntu/281763/is-there-any-prebuilt-qemu-ubuntu-image32bit-online/1081171# 1081171 Изменение этой стабильной базы ядра - самое разумное, что вы можете сделать в этом случае.

QEMU работает с defconfig

Одна вещь, defconfigкоторая хорошо работает, это загрузиться на QEMU, протестировано на ядре v4.20, QEMU 2.12.

Вот полностью автоматизированный пример с Buildroot .

Как отмечено в этой ссылке, вам нужны следующие параметры для загрузки с диска:

CONFIG_VIRTIO_PCI=y
CONFIG_VIRTIO_BLK=y

хотя они не нужны для initrd.

Для кросс-компиляции в другую арку, например, aarch64, вам нужно:

make ARCH=arm64 defconfig

Но, как объяснено здесь , хотя arm64 загружается на QEMU, оно генерирует супер раздутое ядро, и вы, вероятно, захотите развернуть что-то более минимальное, например, как описано здесь .

Что make defconfigименно?

Мы можем легко увидеть, какой файл конфигурации был использован с подробной сборкой:

make V=1 defconfig

который выводит на v4.19:

make -f ./scripts/Makefile.build obj=scripts/basic
rm -f .tmp_quiet_recordmcount
make -f ./scripts/Makefile.build obj=scripts/kconfig defconfig
scripts/kconfig/conf  --defconfig=arch/x86/configs/x86_64_defconfig Kconfig

из чего мы заключаем, что используемый файл должен быть arch / x86 / configs / x86_64_defconfig .

Смотрите также: /programming/41885015/what-exactly-does-linux-kernels-make-defconfig-do

make helpтакже показывает другие интересные цели по умолчанию, такие как alldefconfigи savedefconfigкоторые могут быть полезны.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.