LINUX.ORG.RU

grub2-mkconfig, как сделать два варианта загрузки для каждого ядра?

 , , ,


0

1

Дистрибутив - fedora, но это несущественно, я думаю.

В /etc/default/grub можно прописать параметры ядра, их подхватывает grub2-mkconfig, генерирует запись для каждого ядра. Классно, но мне нужно по две, отличающиеся только один параметром ядра.

Впрочем, может быть существует решение с другой стороны, буду рад советам. grub - не принципиален.

Есть две видюхи: nvidia gt 710 и rtx 2080. Нужно запускать разные виртуалки, пробросив либо одну, либо другую. Вариант с тремя видюхами - рабочий, так оно и работает сейчас, но приходится hdmi провод между видюхами перетыкать. Было бы удобнее ребутнуться, т.к. бОльшую часть времени совершенно без разницы, какая именно карта используются, но среди виртуалок есть оффтопик для игр, в которую имеет смысл пробрасывать только 2080, и есть OSX Catalina, в которой работает только 710.


Ознакомься с содержимым каталога /etc/grub.d, там точно есть то что тебе нужно.

eternal_sorrow ★★★★★ ()

А если в modprobe устанавливать этот параметр? Скажем выгрузить модуль и загрузить его снова с другим параметром? Может тогда и не надо перезагружаться будет. А дефолтный поставить в modprobe.conf.

cocucka ★★★★★ ()

Скрипты в /etc/grub.d я изучаю. Правда, не понятно, на сколько они предназначены для правок.

Вариант с 40_custom рассматривался в первую очередь, но ядер-то несколько установлено, а переписывать его (40_custom) всякий раз, когда ядро обновляется, такое себе.

Выгрузить-загрузить модуль с другими параметрами не выйдет, речь о vfio-pci, который должен захватить карту и не дать запустить на ней иксы. Более того, для варианта загрузки с 710 нужно еще что-то вроде efifb=off добавлять, т.к. она primary GPU с точки зрения BIOS.

В любом случае спасибо, если найду элегантное решение - отпишусь.

ZigBee ()

По-моему systemd-boot (gummiboot) - самое простое.

Можно наделать сколько угодно /efi/loader/entries/[на_свой_вкус].conf с разными ядрами и параметрами.

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

Вариант с 40_custom рассматривался в первую очередь, но ядер-то несколько установлено, а переписывать его (40_custom) всякий раз, когда ядро обновляется, такое себе.

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

Vsevolod-linuxoid ★★★★★ ()
Ответ на: комментарий от ZigBee

Что мешает сделать один скрипт для двух ядер? Или на худой конец сделать два скрипта?

mxfm ()

В федоре конфиги ядер по-умолчанию обрабатываются не grub2-mkconfig, а через bls. Соответственно, записи о ядрах находятся в /boot/loader/entries/, там же хранятся и опции загрузки этих ядер.

Я бы накостылил какой-нибудь скрипт, который будет на каждую такую запись добавлять запись $name-rtx2080.conf и тупо sed’ом добавлять в options то, что нужно.

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

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

Вот как раз до этого bls добрался. Похоже, это будет наименее костыльный вариант - генерировать конфиг в /boot/loader/entries/ через grubby --add-kernel XXX для каждого ядра. Благо, все равно использую самосборные.

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

В интернетах пишут, что можно туда-сюда перебрасывать ГПУ даже без перезапуска Хов.

echo "1002 6719" > /sys/bus/pci/drivers/vfio-pci/new_id
echo "0000:01:00.0" > /sys/bus/pci/devices/0000:01:00.0/driver/unbind
echo "0000:01:00.0" > /sys/bus/pci/drivers/vfio-pci/bind
echo "1002 6719" > /sys/bus/pci/drivers/vfio-pci/remove_id

echo "1002 aa80" > /sys/bus/pci/drivers/vfio-pci/new_id
echo "0000:01:00.1" > /sys/bus/pci/devices/0000:01:00.1/driver/unbind
echo "0000:01:00.1" > /sys/bus/pci/drivers/vfio-pci/bind
echo "1002 aa80" > /sys/bus/pci/drivers/vfio-pci/remove_id
cocucka ★★★★★ ()
Ответ на: комментарий от Binkledum

Да даже если и так. Можно потушить Х-ы, переключить видюхи и запустить их снова. Быстрее будет, чем перезагружаться.

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

Быстрее будет, чем перезагружаться.

Даже если быстрее, то не намного. А нажатий клавиш раз в 10 больше.

Binkledum ()
Ограничение на отправку комментариев: только для зарегистрированных пользователей