Одной из новых функций Grub2 является возможность написания сценариев. На моей работе мы используем это, чтобы оказать большое влияние. Тем не менее, я недавно наткнулся на ужасное недопущение. Там нет какой-либо строковой манипуляции или арифметической поддержки.
Моя точная проблема: мне нужно связываться с устройством PCI перед загрузкой. Между setpci
и write_dword
я могу легко записать значения, которые мне нужны. Я получаю регистр базового адреса из setpci
и 0x18 к нему, и записываю нужное значение в этот адрес.
Я экспериментировал с математикой в своей голове, но теперь не могу понять, как заставить Grub2 делать ту же математику во время загрузки.
Чтобы добавить оскорбление травмы, адрес PCI всегда заканчивается на 000. Так что в теории я мог бы просто заменить последние два 0 на "18", и это тоже сработало бы. Еще раз Grub2 подводит меня без поддержки манипуляции со строками.
Есть ли способ получить подстроку в скрипте Grub2?
Есть ли способ выполнить арифметику в скрипте Grub2?