grub-devel
[Top][All Lists]
Advanced

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

Re: [GRUB PARTUUID PATCH V10 4/4] Update grub script template files


From: Daniel Kiper
Subject: Re: [GRUB PARTUUID PATCH V10 4/4] Update grub script template files
Date: Tue, 17 Apr 2018 19:18:50 +0200
User-agent: Mutt/1.3.28i

On Tue, Apr 17, 2018 at 08:20:45AM -0700, Nick Vinson wrote:
> On 04/17/2018 06:36 AM, Daniel Kiper wrote:
> > On Mon, Apr 16, 2018 at 10:36:26PM -0700, Nicholas Vinson wrote:
> >> Update grub-mkconfig.in and 10_linux.in to support grub-probe's new
> >> partuuid target.  Update grub.texi documentation.  The following table
> >> shows how GRUB_DISABLE_LINUX_UUID, GRUB_DISABLE_LINUX_PARTUUID, and
> >> initramfs detection interact:
> >>
> >> Initramfs  GRUB_DISABLE_LINUX_PARTUUID  GRUB_DISABLE_LINUX_UUID  Linux Root
> >> detected   Set                          Set                      ID Method
> >>
> >> false      false                        false                    part UUID
> >> false      false                        true                     part UUID
> >> false      true                         false                    dev name
> >> false      true                         true                     dev name
> >> true       false                        false                    fs UUID
> >> true       false                        true                     part UUID
> >> true       true                         false                    fs UUID
> >> true       true                         true                     dev name
> >>
> >> Note: GRUB_DISABLE_LINUX_PARTUUID and GRUB_DISABLE_LINUX_UUID equate to
> >>       'false' when unset or set to any value other than 'true'.
> >>       GRUB_DISABLE_LINUX_PARTUUID defaults to 'true'.
> >> Signed-off-by: Nicholas Vinson <address@hidden>
> >> ---
> >>  docs/grub.texi              | 67 ++++++++++++++++++++++++++++++++++---
> >>  util/grub-mkconfig.in       |  3 ++
> >>  util/grub.d/10_linux.in     | 22 ++++++++++--
> >>  util/grub.d/20_linux_xen.in | 22 ++++++++++--
> >>  4 files changed, 104 insertions(+), 10 deletions(-)
> >>
> >> diff --git a/docs/grub.texi b/docs/grub.texi
> >> index 0f2ab91fc..6aa65552f 100644
> >> --- a/docs/grub.texi
> >> +++ b/docs/grub.texi
> >> @@ -1214,10 +1214,11 @@ GRUB is configured using @file{grub.cfg}, usually 
> >> located under
> >>  need to write the whole thing by hand.
> >>
> >>  @menu
> >> -* Simple configuration::        Recommended for most users
> >> -* Shell-like scripting::        For power users and developers
> >> -* Multi-boot manual config::    For non-standard multi-OS scenarios
> >> -* Embedded configuration::      Embedding a configuration file into GRUB
> >> +* Simple configuration::            Recommended for most users
> >> +* Root Identifcation Heuristics::   Summary on how the root file system 
> >> is identified.
> >> +* Shell-like scripting::            For power users and developers
> >> +* Multi-boot manual config::        For non-standard multi-OS scenarios
> >> +* Embedded configuration::          Embedding a configuration file into 
> >> GRUB
> >>  @end menu
> >>
> >>
> >> @@ -1425,6 +1426,17 @@ the Linux kernel, using a @samp{root=UUID=...} 
> >> kernel parameter.  This is
> >>  usually more reliable, but in some cases it may not be appropriate.  To
> >>  disable the use of UUIDs, set this option to @samp{true}.
> >>
> >> address@hidden GRUB_DISABLE_LINUX_PARTUUID
> >> +If @command{grub-mkconfig} cannot identify the root filesystem via its
> >> +universally-unique indentifier (UUID), @command{grub-mkconfig} can use 
> >> the UUID
> >> +of the partition containing the filesystem to identify the root 
> >> filesystem to
> >> +the Linux kernel via a @samp{root=PARTUUID=...} kernel parameter.  This 
> >> is not
> >> +as reliable as using the filesystem UUID, but is more reliable than using 
> >> the
> >> +Linux device names. When @samp{GRUB_DISABLE_LINUX_PARTUUID} is set to
> >> address@hidden, the Linux kernel version must be 2.6.37 (3.10 for systems 
> >> using
> >> +the MSDOS partition scheme) or newer.  This option defaults to 
> >> @samp{true}.  To
> >> +enable the use of partition UUIDs, set this option to @samp{false}.
> >> +
> >>  @item GRUB_DISABLE_RECOVERY
> >>  If this option is set to @samp{true}, disable the generation of recovery
> >>  mode menu entries.
> >> @@ -1556,6 +1568,53 @@ edit the scripts in @file{/etc/grub.d} directly.
> >>  menu entries; simply type the menu entries you want to add at the end of
> >>  that file, making sure to leave at least the first two lines intact.
> >>
> >> address@hidden Root Identifcation Heuristics
> >> address@hidden Root Identifcation Heuristics
> >> +If the target operating system uses the Linux kernel, 
> >> @command{grub-mkconfig}
> >> +attempts to identify the root file system via a heuristic algoirthm.  This
> >> +algorithm selects the identification method of the root file system by
> >> +considering three factors.  The first is if an initrd for the target 
> >> operating
> >> +system is also present.  The second is @samp{GRUB_DISABLE_LINUX_UUID} and 
> >> if set
> >> +to @samp{true}, prevents @command{grub-mkconfig} from identifying the 
> >> root file
> >> +system by its UUID.  The third is @samp{GRUB_DISABLE_LINUX_PARTUUID} and 
> >> if set
> >> +to @samp{true}, prevents @command{grub-mkconfig} from identifying the 
> >> root file
> >> +system via the UUID of its enclosing partition.  If the variables are 
> >> assigned
> >> +any other value, that value is considered equivalent to @samp{false}.  The
> >> +variables are also considered to be set to @samp{false} if they are not 
> >> set.
> >> +
> >> +When booting, the Linux kernel will delegate the task of mounting the root
> >> +filesystem to the initrd.  Most initrd images determine the root file 
> >> system by
> >> +checking the Linux kernel's command-line for the @samp{root} key and use 
> >> its
> >> +value as the identification method of the root file system.  To improve 
> >> the
> >> +reliability of booting, most initrd images also allow the root file 
> >> system to be
> >> +identified by its UUID.  Because of this behavior, the 
> >> @command{grub-mkconfig}
> >> +command will set @samp{root} to @samp{root=UUID=...} to provide the 
> >> initrd with
> >> +the filesystem UUID of the root file system.
> >> +
> >> +If no initrd is detected or @samp{GRUB_DISABLE_LINUX_UUID} is set then
> >
> > s/set/set to @samp{true}/?
>
> Yes.  Thanks.
>
> >
> >> address@hidden will identify the root filesystem by setting the kernel
> >> +command-line variable @samp{root} to @samp{root=PARTUUID=...} unless
> >> address@hidden is also set to @samp{true}.  If
> >> address@hidden is also set to @samp{true},
> >> address@hidden will identify by its LInux device name.
> >
> > s/LInux/Linux/g
>
> ack.
>
> >
> >> +
> >> +The following table summarizes the behavior of the @command{grub-mkconfig}
> >> +command.
> >> +
> >> address@hidden {detected} {GRUB_DISABLE_LINUX_PARTUUID} 
> >> {GRUB_DISABLE_LINUX_UUID} {Linux Root}
> >> address@hidden Initrd detected @tab GRUB_DISABLE_LINUX_PARTUUID Set To 
> >> @tab GRUB_DISABLE_LINUX_UUID Set To @tab Linux Root ID Method
> >> address@hidden false         @tab false                       @tab false   
> >>                 @tab part UUID
> >> address@hidden false         @tab false                       @tab true    
> >>                 @tab part UUID
> >
> > I hope that you have tested these two settings and they work. If yes then
> > I am happy with all the patches. If there are no objections I will commit
> > all of them in a week or so. I will fix both nitpicks listed above just
> > before commit.
>
> I did.  I've added a test script and its output at the bottom of this email.

LGTM, thank you for doing the work.

Daniel



reply via email to

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