Обновление до определенной версии LTS

Он должен быть последним.

Параметры обрабатываются с помощью init/main.c, который использует parse_args()из kernel/params.c, который сканирует их последовательно. Для каждого из них он вызывает parse_one(), что в конечном итоге вызывает обратный вызов в зависимости от параметра.

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

Для nohzпараметр регистрируется и обрабатывается kernel/time/time-sched.c:

.
__setup("nohz=", setup_tick_nohz);

static int __init setup_tick_nohz(char *str)
{
    return (kstrtobool(str, &tick_nohz_enabled) == 0);
}

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

Разработчики ядра — разумные люди, и они не стали бы добавлять параметры, поведение которых зависит от порядка их передачи, поэтому я предполагаю, что в большинстве случаев расстояние между ними не будет играть роли.

... но...

parse_args()также есть чек:

    if (irq_was_disabled && !irqs_disabled())
        pr_warn("%s: option '%s' enabled irq's!\n",
            doing, param);

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

Эта логика/сканирование также проверяет параметры модуля (, то есть параметры ядра в форме имя_модуля.flag=xxx ), и я бы не стал слепо доверять тому, что выбирают модули.

1
19.01.2021, 10:56
1 ответ

do-release-upgrade выпускается по одному LTS-релизу за раз; ничего другого не поддерживается. Так что на самом деле ваш единственный поддерживаемый вариант — перейти с 14.04 на 16.04.

Если вы хотите идти дальше, вы должны делать это шаг за шагом.

Стоит прочитать раздел «Обновление» примечаний к выпуску 16.04 .

1
18.03.2021, 22:35

Теги

Похожие вопросы