Estou respondendo minha própria pergunta aqui, já que implementei algo um pouco diferente do que foi sugerido.
Eu configurei o grub com esta configuração:
# First we load the current settings
if [ -s $prefix/grubenv ]; then
load_env
fi
set default="DEFAULT ENTRY"
# Load the saved default entry
if [ ${saved_entry} ]; then
echo Found a saved entry: ${saved_entry}
set default="${saved_entry}"
fi
# Reset saved_entry to our boot service
set saved_entry="DEFAULT ENTRY"
save_env saved_entry
echo Selected boot entry is: ${default}
Isso é semelhante à resposta de Daves, exceto que o grub já está redefinindo a entrada de inicialização para um valor padrão. Portanto, o último sistema operacional selecionado não precisa ser inicializado.
A entrada padrão agora inicializa um pequeno sistema operacional com um servidor tcp. Com o servidor tcp eu posso receber um comando de inicialização que chama grub-editenv para selecionar uma entrada de inicialização diferente:
grub-editenv.exe D:\boot\grub\grubenv set saved_entry=NewEntry
Isto também deve assegurar que não corrompa inadvertidamente a configuração do grub.