save_env e load_env aceitam um parâmetro --file opcionalmente.
Se você pesquisar 00_header em /etc/grub.d, poderá definir uma variável no topo como:
GRUBENV="(hd0, msdos1) / grubenv"
e abaixo na primeira estrofe de eco:
grubenv="$ GRUBENV"
Então você pode encontrar o load_env e torná-lo
load_env --file "\ $ {grubenv}"
E pesquise todos os save_env's e altere-os para
save_env --file "\ $ {grubenv}"
Copiar grubenv de / boot / grub / grubenv para / mnt / myfatpart (onde quer que você monte (hd0,0) no exemplo acima)
update-grub
Exemplo:
...
# You should have received a copy of the GNU General Public License
# along with GRUB. If not, see <http://www.gnu.org/licenses/>.
# Akua - grubenv doesn't survive on ZFS
GRUBENV="(hd0,msdos1)/grubenv"
...
if [ "x${GRUB_TIMEOUT_BUTTON}" = "x" ] ; then
GRUB_TIMEOUT_BUTTON="$GRUB_TIMEOUT" ; fi
cat << EOF
# Akua - grubenv doesn't survive on ZFS
grubenv="$GRUBENV"
# Akua
if [ -s "\${grubenv}" ]; then
set have_grubenv=true
# Akua
load_env --file "\${grubenv}"
fi
...
akua@blackbird:~ 09:08 /
$ grep grubenv /etc/grub.d/00_header
# Akua - grubenv doesn't survive on ZFS
GRUBENV="(hd0,msdos1)/grubenv"
# Akua - grubenv doesn't survive on ZFS
grubenv="$GRUBENV"
if [ -s "\${grubenv}" ]; then
set have_grubenv=true
load_env --file "\${grubenv}"
save_env --file "\${grubenv}" prev_entry
save_env --file "\${grubenv}" next_entry
save_env --file "\${grubenv}" next_entry
save_env --file "\${grubenv}" saved_entry
save_env --file "\${grubenv}" prev_saved_entry
save_env --file "\${grubenv}" saved_entry
if [ -n "${have_grubenv}" ]; then if [ -n "${partuuid}" ]; then
save_env --file "${grubenv}" prev_entry
save_env --file "${grubenv}" initrdfail
if [ -n "\${have_grubenv}" ]; then if [ -z "\${boot_once}" ]; then save_env --file "\${grubenv}" recordfail; fi; fi