Um dos novos recursos do Grub2 é a capacidade de script. No meu trabalho, estamos usando isso para um grande efeito. No entanto, eu recentemente tropeçou em uma curta vinda terrível. Não há qualquer manipulação de string ou suporte aritmético.
Meu problema exato: preciso mexer em um dispositivo PCI antes de inicializá-lo. Entre setpci
e write_dword
, posso escrever facilmente os valores de que preciso. Eu recebo o registro de endereço básico de setpci
e 0x18 para ele e escrevo o valor desejado para esse endereço.
Eu fiz as contas na minha cabeça enquanto fazia experiências, mas agora não consigo descobrir como fazer com que o Grub2 faça a mesma matemática no momento da inicialização.
Para piorar ainda mais, o endereço PCI sempre termina em 000. Então, em teoria, eu poderia simplesmente substituir os dois últimos 0s por "18" e isso também funcionaria. Mais uma vez, o Grub2 me falha, sem suporte à manipulação de strings.
Existe uma maneira de obter uma substring no script Grub2?
Existe uma maneira de realizar aritmética no script Grub2?