From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1f8UFx-0004LD-9C for mharc-grub-devel@gnu.org; Tue, 17 Apr 2018 13:19:01 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:57212) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1f8UFu-0004KN-9g for grub-devel@gnu.org; Tue, 17 Apr 2018 13:18:59 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1f8UFq-00060g-3D for grub-devel@gnu.org; Tue, 17 Apr 2018 13:18:58 -0400 Received: from boksu.net-space.pl ([185.15.1.105]:51481) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_3DES_EDE_CBC_SHA1:24) (Exim 4.71) (envelope-from ) id 1f8UFp-00060A-J2 for grub-devel@gnu.org; Tue, 17 Apr 2018 13:18:54 -0400 Received: (from localhost user: 'dkiper' uid#4000 fake: STDIN (dkiper@boksu.net-space.pl)) by router-fw-old.local.net-space.pl id S1836497AbeDQRSu (ORCPT ); Tue, 17 Apr 2018 19:18:50 +0200 Date: Tue, 17 Apr 2018 19:18:50 +0200 From: Daniel Kiper To: nvinson234@gmail.com Cc: Daniel Kiper , grub-devel@gnu.org Subject: Re: [GRUB PARTUUID PATCH V10 4/4] Update grub script template files Message-ID: <20180417171850.GE21283@router-fw-old.local.net-space.pl> References: <20180417133640.GB21283@router-fw-old.local.net-space.pl> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.3.28i X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 185.15.1.105 X-BeenThere: grub-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: The development of GNU GRUB List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 17 Apr 2018 17:18:59 -0000 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 > >> --- > >> 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}. > >> > >> +@item 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 > >> +@samp{false}, 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. > >> > >> +@node Root Identifcation Heuristics > >> +@section 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. > > > > >> +@command{grub-command} will identify the root filesystem by setting the kernel > >> +command-line variable @samp{root} to @samp{root=PARTUUID=...} unless > >> +@samp{GRUB_DISABLE_LINUX_PARTUUID} is also set to @samp{true}. If > >> +@samp{GRUB_DISABLE_LINUX_PARTUUID} is also set to @samp{true}, > >> +@command{grub-command} will identify by its LInux device name. > > > > s/LInux/Linux/g > > ack. > > > > >> + > >> +The following table summarizes the behavior of the @command{grub-mkconfig} > >> +command. > >> + > >> +@multitable {detected} {GRUB_DISABLE_LINUX_PARTUUID} {GRUB_DISABLE_LINUX_UUID} {Linux Root} > >> +@headitem Initrd detected @tab GRUB_DISABLE_LINUX_PARTUUID Set To @tab GRUB_DISABLE_LINUX_UUID Set To @tab Linux Root ID Method > >> +@item false @tab false @tab false @tab part UUID > >> +@item 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