Манипулирование строками в Grub2

1666
deft_code

Одной из новых функций Grub2 является возможность написания сценариев. На моей работе мы используем это, чтобы оказать большое влияние. Тем не менее, я недавно наткнулся на ужасное недопущение. Там нет какой-либо строковой манипуляции или арифметической поддержки.

Моя точная проблема: мне нужно связываться с устройством PCI перед загрузкой. Между setpciи write_dwordя могу легко написать значения, которые мне нужны. Я получаю регистр базового адреса setpci, и 0x18 к нему, и записываю желаемое значение в этот адрес.

Я экспериментировал с математикой в ​​своей голове, но теперь не могу понять, как заставить Grub2 делать ту же математику во время загрузки.

Чтобы добавить оскорбление травмы, адрес PCI всегда заканчивается на 000. Так что в теории я мог бы просто заменить последние два 0 на «18», и это также сработало бы. Еще раз Grub2 подводит меня без поддержки манипуляции со строками.

Есть ли способ получить подстроку в скрипте Grub2?
Есть ли способ выполнить арифметику в скрипте Grub2?

1

1 ответ на вопрос

2
Gilles

Если вам нужна возможность написания сценариев в Grub2, вам нужна поддержка lua, которая не является частью выпущенной версии. Это часть grub-extras, и вы можете получить исходный код из хранилища Bazaar . Вам нужно будет перестроить Grub2 из исходного кода. Я не думаю, что кроме источника есть какая-либо документация, хотя вы можете обратиться за помощью в список рассылки grub-devel . Удачи.

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