As etapas que você deu estão próximas de funcionar, mas deixe-me comentar sobre cada etapa.
mkdir -p /media/GRUB2_RESCU/boot/grub
Isso está completamente correto.
sudo cp /usr/lib/grub/i386-pc/* /media/GRUB2_RESCU/boot/grub
Isso não é necessário, mas não deve doer nada (o grub-install faz isso automaticamente)
echo '(hd0) /dev/sda' > /media/GRUB2_RESCU/boot/grubdevice.map
Isso também não é necessário, e também não deve machucar nada. O GRUB2 na maioria das vezes não precisa mais de um device.map.
sudo grub-install --root-directory=/media /dev/sdb
Eu não sei se isso foi apenas um erro de digitação quando você estava escrevendo sua pergunta ou se este é realmente o comando que você executou, mas deve ser "--root-directory / media / GRUB2_RESCU /". Caso contrário, o grub instalará seus módulos e procurará pelo grub.cfg, em / media / boot / grub (que não está na unidade flash) em vez de / media / GRUB2_RESCU / boot / grub /. Isso poderia explicar por que o que você tentou não funcionou.
sudo grub-mkconfig -o /media/GRUB2_RESCU/boot/grub/grub.cfg
Isso deve funcionar, mas você terá que executar o grub-mkconfig manualmente toda vez que houver uma atualização do kernel para obter um menu atualizado. Em vez disso, eu recomendaria escrever um manual grub.cfg que apenas carrega o grub.cfg da sua unidade interna, assim:
root=(hd0,1)
configfile /boot/grub/grub.cfg
Para ter certeza de que isso funciona mesmo quando as unidades são movidas, substitua
root=(hd0,1)
com
search --set --fs-uuid UUID_GOES_HERE
Você pode encontrar o UUID com este comando de terminal:
sudo grub-probe --target=fs_uuid --device /dev/sda1