help-grub
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Reading File Name or Contents


From: Marc Smith
Subject: Re: Reading File Name or Contents
Date: Mon, 20 Jul 2015 10:44:50 -0400

Just an update for anyone else reading this thread in the future: Using 'source' with an external file containing "set ver_str=0.x.x" works perfectly. Thanks again!


--Marc

On Sat, Jul 18, 2015 at 11:30 AM, Arbiel (gmx) <address@hidden> wrote:
Ubuntu's /etc/grub.d directory contains a 41_custom file which reads

#!/bin/sh
cat <<EOF
if [ -f  \${config_directory}/custom.cfg ]; then
  source \${config_directory}/custom.cfg
elif [ -z "\${config_directory}" -a -f  \$prefix/custom.cfg ]; then
  source \$prefix/custom.cfg;
fi
EOF

The generated code, included into grub.cfg, reads, if it exists, the
custom.cfg file.

You can hand-write this custom.cfg file to either "source" or
"configfile" your file. The path to your file can have been stored into
an environment variable (grub-editenv).

"sourcing" the file will add menu entries into the regular grub menu,
"configfiling" it will drop the regular menu and replace it by a brand
new menu, defined by the "menuentry" lines of your hand-written file.

Arbiel

Le 18/07/2015 05:33, Marc Smith a écrit :
> Ah, 'source' as in 'source' used with the shell... just figured they
> would label it as a command for the minimal GRUB shell, but doesn't
> appear they do (and maybe they don't list others as well). I'll try it
> soon, thanks again.
>
> --Marc
>
>
>
> On Fri, Jul 17, 2015 at 11:16 PM, Marc Smith <address@hidden
> <mailto:address@hidden>> wrote:
>
>     JoÄ o Ricardo Sares Teles de Matos: Thank you for the idea, but
>     using an already generated grub.cfg file is a requirement (using
>     grub-mkconfig isn't an option).
>
>
>     On Fri, Jul 17, 2015 at 6:11 PM, Jordan Uggla
>     <address@hidden <mailto:address@hidden>> wrote:
>
>         On Fri, Jul 17, 2015 at 7:12 AM, Marc Smith
>         <address@hidden <mailto:address@hidden>> wrote:
>         > Hi,
>         >
>         > Looking for any possibility of reading the contents of a
>         file (or even just
>         > the file name) into a variable in a GRUB config file? I've
>         read that command
>         > substitution is not supported and no plans to add it, but is
>         there any other
>         > way?
>         >
>         > I've tried a couple other methods without success (in the
>         grub.cfg file):
>         > --snip--
>         > while read ver_str;
>         > do
>         >     something_with ${ver_str}
>         > done < /version_file
>         > --snip--
>         >
>         > OR
>         >
>         > --snip--
>         > cat /version_file | while read ver_string;
>         > do
>         >     something_with ${ver_str}
>         > done
>         > --snip--
>
>         To get the version number from a file named "version_*", where
>         the '*'
>         is actually the version string, you could do something like this:
>
>         insmod regexp
>         filename=/directory/containing/file/version_*
>
>         # Now we can, if we want to, extract just the version string
>         regexp --set=version_string
>         '/directory/containing/file/version_(.*)'
>         "$filename"
>
>         # Now $version_string contains just the version string.
>
>         Please note that I'm not in a position to actually test the above
>         code, so it likely contains mistakes.
>
>
>     Thanks Jordan, I'll give it a shot.
>
>     Â
>
>
>         >
>         > The goal is to read a "version string" from a file at boot
>         with GRUB to
>         > display different menu entries for different versions, but
>         I'd even take
>         > just getting the string from the file name at this point.
>         Any ideas? My last
>         > resort is to just use sed to modify grub.cfg when a new
>         version of the OS is
>         > installed (for a new GRUB menu entry), but I'd prefer not to
>         do that unless
>         > I have to.
>         >
>         > Or what about including another grub.cfg file and then in
>         the included GRUB
>         > config file just have the line "set ver_str=0.1.1" -- I was
>         thinking using
>         > the 'configfile' command would do this, but doesn't seem to
>         work as I
>         > expected.
>
>         That method would also work fine, you just need to use
>         "source" rather
>         than configfile. The configfile command is used to load a file
>         which
>         will populate an entirely new grub menu whereas source in
>         grub, much
>         like in bash, executes commands in the current context.
>
>
>     Okay, I'd prefer this method and I'll try it, but I don't see it
>     in the GRUB documentation:
>     http://www.gnu.org/software/grub/manual/grub.html
>
>     Is that part of GRUB 2.00 or is it a feature in a newer version,
>     or am I just missing?
>
>
>     --Marc
>
>     Â
>
>
>         --
>         Jordan Uggla (Jordan_U on irc.freenode.net
>         <http://irc.freenode.net>)
>
>
>
>
>
> _______________________________________________


reply via email to

[Prev in Thread] Current Thread [Next in Thread]