LINUX.ORG.RU

Отключить ненужное в ядре

 , ,


0

4

Доброго времени, уважаемые пользователи Линукс и посетители форума!

Пытаюсь отключить ненужное в ядре.

Скачал под Фанту gentoo-sources 4.15.12, создал симлинк /usr/src/linux-4.15.12-gentoo на /usr/src/linux

Запустил в папке /usr/src/linux `genkernel --menuconfig all`

Загрузил конфиг из /usr/src/linux-debian-sources, который поставлялся из коробки.

Отключил ненужные драйверы графических карт, оставив только Intel Graphics, как описано тут: https://wiki.gentoo.org/wiki/Intel#Kernel

И сохранил конфиг туда же: /usr/src/linux/.config

Но теперь наблюдаю все что отключал включенным:

# cat /usr/src/linux/.config
...
#
# Graphics support
#
CONFIG_AGP=y
CONFIG_AGP_AMD64=y
CONFIG_AGP_INTEL=y
CONFIG_AGP_SIS=y
CONFIG_AGP_VIA=y
CONFIG_INTEL_GTT=y
CONFIG_VGA_ARB=y
CONFIG_VGA_ARB_MAX_GPUS=16
CONFIG_VGA_SWITCHEROO=y
CONFIG_DRM=m
CONFIG_DRM_MIPI_DSI=y
# CONFIG_DRM_DP_AUX_CHARDEV is not set
# CONFIG_DRM_DEBUG_MM_SELFTEST is not set
CONFIG_DRM_KMS_HELPER=m
CONFIG_DRM_KMS_FB_HELPER=y
CONFIG_DRM_FBDEV_EMULATION=y
CONFIG_DRM_FBDEV_OVERALLOC=100
CONFIG_DRM_LOAD_EDID_FIRMWARE=y
CONFIG_DRM_TTM=m
CONFIG_DRM_VM=y

Однозначно ставил количество gpu 4, так как ядер в Леново Г 50-30 всего 4.

Как в этом разобраться? Также подскажите, что еще можно отключить?

Всего в конфиге 8000 строк.

# wc -l /usr/src/linux/.config
8028 /usr/src/linux/.config
★★

Также подскажите, где после компиляции искать установленные драйверы графических карт?

znavko ★★
() автор топика

Если ты хочешь быть уверенным, что ядро соберётся именно с твоим конфигом, то собирай ядро в ручную посредством make, а посредством genkernel - только initramfs.

eselect kernel list
eselect kernel set номер_исходников
cd /usr/src/linux
make menuconfig
make -jN bzImage
make -jN modules
make install
make INSTALL_MOD_STRIP=1 modules_install
где N - число потоков сборки.

При сборке просто genkernel без настройки ядро собирается в один поток. Strip - выкидывание из модулей отладочной информации для уменьшения их размера.

где после компиляции искать установленные драйверы графических карт?

Ядерная част модуля, т.е. модуль ядра, находится в директории с модулями ядра /lib/modules/версия_ядра/. Файлы драйвера для xorg-server`а в /usr/lib64/xorg/modules/drivers/ или /usr/lib/xorg/modules/drivers/.

Удачи.

kostik87 ★★★★★
()
Ответ на: комментарий от kostik87

спасибо, а где в ваших командах фигурирует конфиг? по умолчанию используется файл .config текущей директории сборки?

куда кладутся bzimage и modules? если в /boot, то они заменяют предыдущие компиляции ядра с тем же именем или кладут с суффиксом "-2"?

нужно ли монтировать /boot, если он автоматически не монтируется?

znavko ★★
() автор топика
Ответ на: комментарий от znavko

где в ваших командах фигурирует конфиг?

Если у тебя есть конфиг от старого ядра, прошлой версии, но не сильно отстоящей от новой, то можешь в начале сделать

make oldconfig
и разобраться с опциями, которые появились в новой версии ядра. А потом запусти
make menuconfig
и настрой как тебе надо.

Если конфига старого ядра нет или ты хочешь сконфигурировать с нуля, то получи конфиг по умолчанию:

make defconfig
a потом запусти
make menuconfig
и настрой как тебе надо.

куда кладутся bzimage и modules?

bzImage - копируется в /boot/vmlinuz-версия_ядра. Ну а про модули я тебе уже ответил, смотри в прошлом сообщении. Ты читаешь написанное?

они заменяют предыдущие компиляции ядра

Старый файл ядра той же версии и той же local_version будет переменован в vmlinuz-версия.old, модули от прошлой сборки ядра той же версии и той же local_version лучше удалить. Т.е. если ты до этого собирал ядро 4.14, потом очистил директорию с исходными кодами этой версии ядра и хочешь собрать заново, то модули от прошлой сборки предварительно удали.

нужно ли монтировать /boot

Если /boot на отдельной файловой системе, то перед выполнением 'make install' его нужно смонтировать. make`у - инструмент для сборки, ему всё равно на отдельной файловой системе у тебя /boot или нет.

За подробностями почитай вывод:

make help
находясь в корне с директорией исходных кодов ядра.

Ну и если ты ставишь Gentoo, то почитай пожалуйста Gentoo Handbook, есть русская версия, там всё расписано и в частности сборка ядра посредством genkernel и сборка полностью руками.

Если не хочешь читать документацию и разбираться, то мой совет - оставь Gentoo в покое, только зря потратишь время.

Удачи.

kostik87 ★★★★★
()
Ответ на: комментарий от kostik87

Я не понимаю, вот те кто ставят генту и собирают свое ядро - они вообще осознают реальный возможный профит? Четкий конкретный выигрыш, который можно оценить.

I-Love-Microsoft ★★★★★
()
~ $ wc -l /usr/src/linux/.config
3365 /usr/src/linux/.config
Deleted
()
Ответ на: комментарий от kostik87

Забыл уточнить, что oldconfig нужно делать скопировав конфиг от старого ядра в директорию с исходными кодами нового.

kostik87 ★★★★★
()
Ответ на: комментарий от I-Love-Microsoft

Хоть я и на арче, но собираю mainline ядро чтобы использовать новые фичи. Конфиг под конкретную машину сильно сокращает время компиляции.

feanor ★★★
()
Ответ на: комментарий от feanor

это хорошо. то есть, например, я не пользуюсь ethernet разъемом, а пользуюсь wifi, можно удалить очень много всего. также по молчанию включены драйвера xen, scsi, isdn, драйвера графических карт и беспроводных устройств (вайфай), также сетевых карт разных производителей и прочее, типа Dell Bios update.

На вики.генту мануалы разбросаны по разным записям, как например, эта: https://wiki.gentoo.org/wiki/Traffic_shaping

Сложно бывает найти значение того или иного флага настройки ядра.

Где можно найти мануал сборки под конкретную архитектуру и конкретные задачи?

znavko ★★
() автор топика

Я собираю ванильное ядро с kernel.org. Использую make defconfig как основу, дефолты там вроде неплохие, иногда смотрю в дебиановский/арчевский конфиг ядра. Отрубаю все драйвера и начинаю включать по одному, смотря в вывод lsmod. На выходе получается довольно компактное ядро (5.5 мб + 3.1 мб модули).

p.s. Ну и, кстати, список оптимизаций под процессор в конфиге ядра скудный: GENERIC, Core 2 Duo, Atom и еще несколько. Поэтому я вручную добавляю -march=skylake в Makefile.

Kron4ek ★★★★★
()
Последнее исправление: Kron4ek (всего исправлений: 1)
Ответ на: комментарий от Kron4ek

На выходе получается довольно компактное ядро (5.5 мб + 3.1 мб модули).

Крутяк. На двухгигабайтной флэшке живёшь?

anonymous
()
Ответ на: комментарий от I-Love-Microsoft

Я не понимаю, вот те кто ставят генту и собирают свое ядро - они вообще осознают реальный возможный профит? Четкий конкретный выигрыш, который можно оценить.

Только те кто делают это в здравом уме и четкой памяти.

init_6 ★★★★★
()
Ответ на: комментарий от znavko

Когда я только начинал я пользовался вещами типа Ядерная физика для домохозяек. А кроме этого чтение документации и кода ядра.

В целом то что оно про ядро 3.6 не должно сильно влиять, фундаментальные подсистемы с тех пор не поменялись, а набор драйверов зависит от конкретной машины. Для начала можно воспользоваться выводом lsmod во время работы универсального дистрибутивного ядра.

feanor ★★★
()
Ответ на: комментарий от feanor

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

RazrFalcon ★★★★★
()
Ответ на: комментарий от RazrFalcon

Это должно быть возможно, используя ACPI для PCI и VID:PID для USB, но я не знаю сделал ли кто-то это.

feanor ★★★
()
Ответ на: комментарий от Kron4ek

Это понятно. Думал может есть какая-то надстройка над ним.

RazrFalcon ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.