Как я применяю параметры к определенным ядрам с GRUB 2?

У меня есть несколько ядер в /boot. Один из них, linux-cc, для тяжелого вычисления, т.е. 100 Гц, никакого вытеснения, никакой графики. Я создал a systemd цель, названная compute.target, то единственное поднимает систему и затем запускается ssh сервер. Я использую GRUB2, и я хотел бы добавить systemd.unit=compute параметр только к упомянутому ядру.

Я читал, Как я добавляю xen параметры начальной загрузки ядра в grub2?, но это не относится к моей ситуации (я попытался добавить GRUB_CMDLINE_LINUX_CC="systemd.unit=compute/etc/default/grub, но это не работало).

Кто-либо знает, как сделать это? Я использую ArchLinux, и я хотел бы продолжать использовать grub-mkconfig если это возможно.

P.S.: Возможно, я мог добавить этот параметр как трудно кодированную опцию ядра, но это не кажется очень гибким.

2
13.04.2017, 15:13
2 ответа

Я нахожу, поддерживаете ли Вы несколько ядер с различными вариантами ее более легкое к самокрутке /boot/grub/grub.cfg вместо того, чтобы использовать grub2-mkconfig.

Запись в качестве примера:

menuentry 'Linux 3.10.17 (sde) kernel-3.10.17-g' {
    root=hd0,1
    linux /boot/kernel-3.10.17-g domdadm dolvm root=/dev/md3
    initrd /boot/initrd-3.10.17-g
}

Где все после названия Вашего ядра на linux строка является параметрами загрузки, которые Вы хотите передать тому определенному ядру. Очевидно, Ваша установка будет отличаться, чем моя, но это, демонстрируют, что ручная установка grub2 действительно очень не отличается, чем личинка.

Если Вы хотите объединить этот метод с "grub2 путь", можно поместить пользовательские записи в /etc/grub.d/XX_custom или эквивалентная установка на Вашем дистрибутиве и grub2-mkconfig сценарий вытянет их в сгенерированный конфигурационный файл.

3
27.01.2020, 21:57
  • 1
    Спасибо, это - то, что я закончил тем, что делал. Проблема состоит в том, что файл мог бы быть переопределен в будущем с обновлениями, но, ну, в общем, это справедливо systemd.unit=compute.target. –  Kalrish 08.12.2013, 21:58
  • 2
    @Kalrish я сомневаюсь так. 99_custom не становится измененным при обновлении никакого пакета личинки (по крайней мере, не debian's). –  Braiam 08.12.2013, 22:00
  • 3
    @Braiam - о, но, изображение ядра автоматически обнаруживается личинкой-mkconfig. Если я включил пользовательскую запись 99_custom, как Вы предполагаете, разве это не было бы позже дублировано? (Спасибо). –  Kalrish 08.12.2013, 22:01
  • 4
    Да, но действительно ли меньшее является злым, нет? просто назовите запись с чем-то, что GRUB не придумает, и Вы будете в порядке ;). –  Braiam 08.12.2013, 22:02
  • 5
    @Braiam хорошо! Я попробую его. Увидимся в следующей начальной загрузке, спасибо :) –  Kalrish 08.12.2013, 22:04

Неофициальный метод взлома

Когда GRUB 2 вышел, это отличалось в этом grub.conf как больше предполагалось, не был отредактирован пользователем; диспетчер пакетов дистрибутива сделал бы то, что и затем там, как предполагалось, был средством для пользователя внести изменениями с помощью некоторого инструмента, который не был зарегистрирован в то время (я уверен, что у них есть много хороших документов для него теперь, конечно; |).

Я полагаю, что часть цели должна была упростить вещи путем добавления слоя абстракции. Я не так уверен, как хорошо, который удался, и (полное раскрытие), я никогда не потрудился делать вещи личинка 2 "правильных пути". "Неправильный" способ является просто слишком простым, и он будет работать на Вас здесь:

Несмотря на предупреждение наверху файла, можно отредактировать его. Установщик дистрибутива изменит его, когда ядро будет обновлено и оставит Ваши записи в покое (по крайней мере, на Fedora, Ubuntu, и я - вполне уверенный Debian), хотя это может добавить тот к вершине и сделать это значением по умолчанию, поэтому когда это происходит, необходимо будет переместить некоторые записи или изменить индекс в set default. Это может также произойти, который, если установщик находит, изменил файл, это не добавит новых записей (Fedora), таким образом наблюдайте за этим, если Вы хотите получить доступ к обновленным ядрам дистрибутива в меню личинки.

Легко сказать путем рассмотрения файла (/boot/grub2/grub.conf) как это структурировано относительно меню личинки, Вы видите при начальной загрузке. Каждый menuentry блок имеет строку как это где-нибудь:

linux /boot/vmlinuz-3.11 root=/dev/sda1 resume=/dev/sda3 fbcon=scrollback:512k

Это будет, вероятно, иметь root=UUID=... и не узлы устройства. Если Вы не будете использовать initramfs, то это будет последняя строка, иначе это будет сопровождаться initrd строка.

Так или иначе это - командная строка ядра; /boot/vmlinuz-3.11 путь к ядру в корневой файловой системе, и все после этого - параметры, переданные ядру.

2
27.01.2020, 21:57