LINUX.ORG.RU

Поучите пользоваться patch: как накатить патчи к ядру к разным версиям?

 ,


0

2

Есть ядро версии 4.9, к его дефолтному конфигу есть config-4.9.patch, который я сделал так:

diff -u .config.orig .config > config-4.9.patch

Что-то выключил, что-то включил.

Потом я применяю так: patch -p0 < config-4.9.patch

Ядро обновили до 4.12, соответственно патч больше не накладывается, потому что сдвинулись номера строк.

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

Наверняка уже тысячи людей делали подобное.

Как мне правильно поддерживать мои изменения к конфигу ядра?

Как мне правильно поддерживать мои изменения к конфигу ядра?

Через Git, вместо патча юзать cherry-pick.

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

для этого мне надо загрузить весь .config, а я бы хотел не копировать конфиг со старого ядра, а лишь влить мои изменения.

В новом ядре могут приехать новые опции и я не хочу их трогать. Пусть будут дефолтными.

max_lapshin ★★★★★
() автор топика
Ответ на: комментарий от max_lapshin
yes $'\n' | make oldconfig

Но лучше так не делать. Значения по умолчанию часто довольно случайные.

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

Это как раз ваш подход, я думаю не правильный.

Я брал config старого ядра, ложил его в новое ядро, делал make oldconfig и разбирался с новыми параметрами. По окончании процедуры получал обновленый config. Вот дальше уже можно автоматизировать, пусть собирается, пакетируется и т.п.

irton ★★★★★
()

Макс, ну мог-бы сообразить.

Примерно так:

  1. Берешь новое ядро и старый оригинальный (не кастомизированный тобой) конфиг. Делаешь make oldconfig и сохраняешь обновленный новым ядром конфиг в conf1.
  2. Берешь новое ядро и твой кастомный старый конфиг. Аналогично делаешь make oldconfig и сохраняешь в conf2.
  3. Получаешь diff -u conf1 conf2 и применяешь к дефолтовому конфигу нового ядра.

Большей автоматизации примерно не получить, но может быть (или не быть) удобным использование git add -p при выборе отдельных изменений.

Deleted
()

Я сделал примерно следующее.

Дефольтный конфиг со всеми выключенными опциями:

make allnoconfig

Долгий процесс с включением нужных мне опций до работоспособного состояния

echo 'CONFIG_xxx=yyy' >> my_allnoconfig
make KCONFIG_ALLCONFIG=my_allnoconfig allnoconfig

# посмотреть, что получилось
make menuconfig
# можно еще собрать установить и протестировать
make && make install && make modules_install

В итоге получается свой набор опций в my_allnoconfig, практически переносимый между версиями.

Я пошел дальше и my_allnoconfig переделал список файлов с именем опции и значением. Пример <опция>: <значение>

$ find . -printf '%f: ' -exec cat {} \;
64BIT: y
ACPI: y
ACPI_AC: m
ACPI_BUTTON: m
ACPI_FAN: m
CMDLINE: mitigations=off

Написал скрипт, собирающий этот список файлов в один конфиг my_allnoconfig. Директорию с файлами-опциями положил в гит.

anonymous
()
Ответ на: комментарий от Deleted

3. Получаешь diff -u conf1 conf2 и применяешь к дефолтовому конфигу нового ядра.

scripts/diffconfig
scripts/kconfig/merge_config.sh

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