Xen-Devel Archive on lore.kernel.org
 help / color / Atom feed
* [Xen-devel] [PATCH] read grubenv and set default from saved_entry or next_entry
@ 2019-08-14 23:54 YOUNG, MICHAEL A.
  2019-08-14 23:56 ` YOUNG, MICHAEL A.
  0 siblings, 1 reply; 9+ messages in thread
From: YOUNG, MICHAEL A. @ 2019-08-14 23:54 UTC (permalink / raw)
  To: Steven Haigh; +Cc: Andrew Cooper, xen-devel

This patch may help your issue with the default kernel setting on Fedora 
30 as it uses the setting of saved_entry or next_entry from the grubenv 
file to choose the default kernel which should override any setting picked 
up from if clauses in the grub.cfg file.

I have only done limited and somewhat imperfect testing on it and isn't a 
proper fix (which would use grubenv settings based on what is in the if 
clauses) but I think it should work in your case.

 	Michael Young

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xenproject.org
https://lists.xenproject.org/mailman/listinfo/xen-devel

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [Xen-devel] [PATCH] read grubenv and set default from saved_entry or next_entry
  2019-08-14 23:54 [Xen-devel] [PATCH] read grubenv and set default from saved_entry or next_entry YOUNG, MICHAEL A.
@ 2019-08-14 23:56 ` YOUNG, MICHAEL A.
  2019-08-15  6:01   ` Steven Haigh
  0 siblings, 1 reply; 9+ messages in thread
From: YOUNG, MICHAEL A. @ 2019-08-14 23:56 UTC (permalink / raw)
  To: Steven Haigh; +Cc: Andrew Cooper, xen-devel

[-- Attachment #1: Type: text/plain, Size: 593 bytes --]

On Thu, 15 Aug 2019, Michael Young wrote:

> This patch may help your issue with the default kernel setting on Fedora 30 
> as it uses the setting of saved_entry or next_entry from the grubenv file to 
> choose the default kernel which should override any setting picked up from if 
> clauses in the grub.cfg file.
>
> I have only done limited and somewhat imperfect testing on it and isn't a 
> proper fix (which would use grubenv settings based on what is in the if 
> clauses) but I think it should work in your case.

The patch is actually attached this time.

 	Michael Young

[-- Attachment #2: 0001-read-grubenv-and-set-default-from-saved_entry-or-nex.patch --]
[-- Type: text/plain, Size: 3116 bytes --]

From 00dfa97d97f0c7c18d95ab47706660c7ab15b733 Mon Sep 17 00:00:00 2001
From: Michael Young <m.a.young@durham.ac.uk>
Date: Thu, 15 Aug 2019 00:16:44 +0100
Subject: [PATCH] read grubenv and set default from saved_entry or next_entry

This patch looks for a grubenv file in the same directory as the
grub.cfg file and includes it at front of the grub.cfg file when passed
to parse()

As the grubenv file consists of variable=value lines padded by hashes these
are treated as commands in parse() where it uses the value of saved_entry
or next_entry (if set) to set the default entry if a title matches.
---
 tools/pygrub/src/GrubConf.py |  9 +++++++++
 tools/pygrub/src/pygrub      | 13 ++++++++++++-
 2 files changed, 21 insertions(+), 1 deletion(-)

diff --git a/tools/pygrub/src/GrubConf.py b/tools/pygrub/src/GrubConf.py
index 594139bac7..c9a81fe936 100644
--- a/tools/pygrub/src/GrubConf.py
+++ b/tools/pygrub/src/GrubConf.py
@@ -383,6 +383,8 @@ class Grub2ConfigFile(_GrubConfigFile):
         img = None
         title = ""
         menu_level=0
+        img_count=0
+        default_title=""
         for l in lines:
             l = l.strip()
             # skip blank lines
@@ -408,6 +410,9 @@ class Grub2ConfigFile(_GrubConfigFile):
                     raise RuntimeError("syntax error: cannot nest menuentry (%d %s)" % (len(img),img))
                 img = []
                 title = title_match.group(1)
+                if title == default_title:
+                    setattr(self, 'default', img_count)
+                img_count += 1
                 continue
 
             if l.startswith("submenu"):
@@ -432,6 +437,10 @@ class Grub2ConfigFile(_GrubConfigFile):
 
             (com, arg) = grub_exact_split(l, 2)
         
+            if com == "saved_entry" or com == "next_entry":
+                default_title = arg
+                continue
+
             if com == "set":
                 (com,arg) = grub2_handle_set(arg)
                 
diff --git a/tools/pygrub/src/pygrub b/tools/pygrub/src/pygrub
index ce7ab0eb8c..267788795b 100755
--- a/tools/pygrub/src/pygrub
+++ b/tools/pygrub/src/pygrub
@@ -454,8 +454,19 @@ class Grub:
         if self.__dict__.get('cf', None) is None:
             raise RuntimeError("couldn't find bootloader config file in the image provided.")
         f = fs.open_file(self.cf.filename)
+        fenv = self.cf.filename.replace("grub.cfg","grubenv")
+        if fenv != self.cf.filename and fs.file_exists(fenv):
+            # if grubenv file exists next to grub.cfg prepend it
+            fenvf = fs.open_file(fenv)
+            if sys.version_info[0] < 3:
+                fsep = "\n"
+            else:
+                fsep = b"\n"
+            buf = fsep.join((fenvf.read(FS_READ_MAX),f.read(FS_READ_MAX)))
+            del fenvf
         # limit read size to avoid pathological cases
-        buf = f.read(FS_READ_MAX)
+        else:
+            buf = f.read(FS_READ_MAX)
         del f
         if sys.version_info[0] < 3:
             self.cf.parse(buf)
-- 
2.21.0


[-- Attachment #3: Type: text/plain, Size: 157 bytes --]

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xenproject.org
https://lists.xenproject.org/mailman/listinfo/xen-devel

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [Xen-devel] [PATCH] read grubenv and set default from saved_entry or next_entry
  2019-08-14 23:56 ` YOUNG, MICHAEL A.
@ 2019-08-15  6:01   ` Steven Haigh
  2019-08-15  7:18     ` M A Young
  2019-08-15 19:05     ` YOUNG, MICHAEL A.
  0 siblings, 2 replies; 9+ messages in thread
From: Steven Haigh @ 2019-08-15  6:01 UTC (permalink / raw)
  To: YOUNG, MICHAEL A.; +Cc: Andrew Cooper, xen-devel

On 2019-08-15 09:56, YOUNG, MICHAEL A. wrote:
> On Thu, 15 Aug 2019, Michael Young wrote:
> 
>> This patch may help your issue with the default kernel setting on 
>> Fedora 30
>> as it uses the setting of saved_entry or next_entry from the grubenv 
>> file to
>> choose the default kernel which should override any setting picked up 
>> from if
>> clauses in the grub.cfg file.
>> 
>> I have only done limited and somewhat imperfect testing on it and 
>> isn't a
>> proper fix (which would use grubenv settings based on what is in the 
>> if
>> clauses) but I think it should work in your case.
> 
> The patch is actually attached this time.
> 
>  	Michael Young

Having a bit of a look here....

My test system grubenv file has:
# GRUB Environment Block
saved_entry=0
kernelopts=root=UUID=5346b4d9-885f-4673-8aff-04a16bf1971a ro 
rootflags=subvol=root selinux=0 rhgb quiet
boot_success=1
#################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################


The grub-set-default man page states:
SYNOPSIS
        grub-set-default [--boot-directory=DIR] MENU_ENTRY

        MENU_ENTRY
               A number, a menu item title or a menu item identifier.

Do I have to use a name for the title to match?

I notice I still have the second option selected with saved_entry=0

-- 
Steven Haigh

? netwiz@crc.id.au     ? http://www.crc.id.au
? +61 (3) 9001 6090    ? 0412 935 897

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xenproject.org
https://lists.xenproject.org/mailman/listinfo/xen-devel

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [Xen-devel] [PATCH] read grubenv and set default from saved_entry or next_entry
  2019-08-15  6:01   ` Steven Haigh
@ 2019-08-15  7:18     ` M A Young
  2019-08-15 19:05     ` YOUNG, MICHAEL A.
  1 sibling, 0 replies; 9+ messages in thread
From: M A Young @ 2019-08-15  7:18 UTC (permalink / raw)
  To: Steven Haigh; +Cc: Andrew Cooper, xen-devel

On Thu, 15 Aug 2019, Steven Haigh wrote:

> Having a bit of a look here....
> 
> My test system grubenv file has:
> # GRUB Environment Block
> saved_entry=0
> kernelopts=root=UUID=5346b4d9-885f-4673-8aff-04a16bf1971a ro
> rootflags=subvol=root selinux=0 rhgb quiet
> boot_success=1

It looks like the edit

                     raise RuntimeError("syntax error: cannot nest 
menuentry
(%d %s)" % (len(img),img))
                 img = []
                 title = title_match.group(1)
+                if title == default_title:
+                    setattr(self, 'default', img_count)
+                img_count += 1
                 continue
 
             if l.startswith("submenu"):

also needs a test for default_title == img_count though there may be 
variable types to consider in that comparison.

	Michael Young

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xenproject.org
https://lists.xenproject.org/mailman/listinfo/xen-devel

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [Xen-devel] [PATCH] read grubenv and set default from saved_entry or next_entry
  2019-08-15  6:01   ` Steven Haigh
  2019-08-15  7:18     ` M A Young
@ 2019-08-15 19:05     ` YOUNG, MICHAEL A.
  2019-08-16  5:25       ` Steven Haigh
  1 sibling, 1 reply; 9+ messages in thread
From: YOUNG, MICHAEL A. @ 2019-08-15 19:05 UTC (permalink / raw)
  To: Steven Haigh; +Cc: Andrew Cooper, xen-devel

[-- Attachment #1: Type: text/plain, Size: 1272 bytes --]

On Thu, 15 Aug 2019, Steven Haigh wrote:

> Having a bit of a look here....
>
> My test system grubenv file has:
> # GRUB Environment Block
> saved_entry=0
> kernelopts=root=UUID=5346b4d9-885f-4673-8aff-04a16bf1971a ro 
> rootflags=subvol=root selinux=0 rhgb quiet
> boot_success=1
> #################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################

I have attached a revision of the first patch which should handle a 
numeric saved_entry.

 	Michael Young

[-- Attachment #2: 0001-read-grubenv-and-set-default-from-saved_entry-or-nex.patch --]
[-- Type: text/plain, Size: 3527 bytes --]

From 51a9dce9de3ea159011928e2db8541f3c7e8383a Mon Sep 17 00:00:00 2001
From: Michael Young <m.a.young@durham.ac.uk>
Date: Thu, 15 Aug 2019 19:55:30 +0100
Subject: [PATCH] read grubenv and set default from saved_entry or next_entry

This patch looks for a grubenv file in the same directory as the
grub.cfg file and includes it at front of the grub.cfg file when passed
to parse()

As the grubenv file consists of variable=value lines padded by hashes these
are treated as commands in parse() where it uses the value of saved_entry
or next_entry (if set) to set the default entry if a title matches or is
a number.
---
 tools/pygrub/src/GrubConf.py | 11 +++++++++++
 tools/pygrub/src/pygrub      | 13 ++++++++++++-
 2 files changed, 23 insertions(+), 1 deletion(-)

diff --git a/tools/pygrub/src/GrubConf.py b/tools/pygrub/src/GrubConf.py
index 594139bac7..22e0948da2 100644
--- a/tools/pygrub/src/GrubConf.py
+++ b/tools/pygrub/src/GrubConf.py
@@ -383,6 +383,8 @@ class Grub2ConfigFile(_GrubConfigFile):
         img = None
         title = ""
         menu_level=0
+        img_count=0
+        default_title=""
         for l in lines:
             l = l.strip()
             # skip blank lines
@@ -408,6 +410,9 @@ class Grub2ConfigFile(_GrubConfigFile):
                     raise RuntimeError("syntax error: cannot nest menuentry (%d %s)" % (len(img),img))
                 img = []
                 title = title_match.group(1)
+                if title == default_title:
+                    setattr(self, 'default', img_count)
+                img_count += 1
                 continue
 
             if l.startswith("submenu"):
@@ -432,6 +437,10 @@ class Grub2ConfigFile(_GrubConfigFile):
 
             (com, arg) = grub_exact_split(l, 2)
         
+            if com == "saved_entry" or com == "next_entry":
+                default_title = arg
+                continue
+
             if com == "set":
                 (com,arg) = grub2_handle_set(arg)
                 
@@ -449,6 +458,8 @@ class Grub2ConfigFile(_GrubConfigFile):
             else:
                 logging.warning("Unknown directive %s" %(com,))
             
+        if default_title.isdigit():
+            setattr(self, 'default', default_title)
         if img is not None:
             raise RuntimeError("syntax error: end of file with open menuentry(%d %s)" % (len(img),img))
 
diff --git a/tools/pygrub/src/pygrub b/tools/pygrub/src/pygrub
index ce7ab0eb8c..267788795b 100755
--- a/tools/pygrub/src/pygrub
+++ b/tools/pygrub/src/pygrub
@@ -454,8 +454,19 @@ class Grub:
         if self.__dict__.get('cf', None) is None:
             raise RuntimeError("couldn't find bootloader config file in the image provided.")
         f = fs.open_file(self.cf.filename)
+        fenv = self.cf.filename.replace("grub.cfg","grubenv")
+        if fenv != self.cf.filename and fs.file_exists(fenv):
+            # if grubenv file exists next to grub.cfg prepend it
+            fenvf = fs.open_file(fenv)
+            if sys.version_info[0] < 3:
+                fsep = "\n"
+            else:
+                fsep = b"\n"
+            buf = fsep.join((fenvf.read(FS_READ_MAX),f.read(FS_READ_MAX)))
+            del fenvf
         # limit read size to avoid pathological cases
-        buf = f.read(FS_READ_MAX)
+        else:
+            buf = f.read(FS_READ_MAX)
         del f
         if sys.version_info[0] < 3:
             self.cf.parse(buf)
-- 
2.21.0


[-- Attachment #3: Type: text/plain, Size: 157 bytes --]

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xenproject.org
https://lists.xenproject.org/mailman/listinfo/xen-devel

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [Xen-devel] [PATCH] read grubenv and set default from saved_entry or next_entry
  2019-08-15 19:05     ` YOUNG, MICHAEL A.
@ 2019-08-16  5:25       ` Steven Haigh
  2019-08-16  5:37         ` Steven Haigh
  0 siblings, 1 reply; 9+ messages in thread
From: Steven Haigh @ 2019-08-16  5:25 UTC (permalink / raw)
  To: YOUNG, MICHAEL A.; +Cc: Andrew Cooper, xen-devel

On 2019-08-16 05:05, YOUNG, MICHAEL A. wrote:
> On Thu, 15 Aug 2019, Steven Haigh wrote:
> 
>> Having a bit of a look here....
>> 
>> My test system grubenv file has:
>> # GRUB Environment Block
>> saved_entry=0
>> kernelopts=root=UUID=5346b4d9-885f-4673-8aff-04a16bf1971a ro
>> rootflags=subvol=root selinux=0 rhgb quiet
>> boot_success=1
>> #################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
> 
> I have attached a revision of the first patch which should handle a
> numeric saved_entry.

Hi Michael,

I tried this - and it successfully works for systems that have 
saved_entry=0.

I noticed that stock installs still have problems with updating grubenv 
from new kernel installs. I had to manually regenerate grub.cfg after 
upgrading to kernel 5.2.8. grubenv doesn't seem to get changed at all 
unless you manually use 'grub2-set-default 0'

$ rpm -qa | grep kernel | sort
kernel-5.1.15-300.fc30.x86_64
kernel-5.2.8-200.fc30.x86_64
kernel-core-5.1.15-300.fc30.x86_64
kernel-core-5.2.8-200.fc30.x86_64
kernel-headers-5.2.8-200.fc30.x86_64
kernel-modules-5.1.15-300.fc30.x86_64
kernel-modules-5.2.8-200.fc30.x86_64

$ rpm -qa | grep grub | sort
grub2-common-2.02-81.fc30.noarch
grub2-pc-2.02-81.fc30.x86_64
grub2-pc-modules-2.02-81.fc30.noarch
grub2-tools-2.02-81.fc30.x86_64
grub2-tools-efi-2.02-81.fc30.x86_64
grub2-tools-extra-2.02-81.fc30.x86_64
grub2-tools-minimal-2.02-81.fc30.x86_64
grubby-8.40-31.fc30.x86_64
grubby-deprecated-8.40-31.fc30.x86_64

$ cat /etc/default/grub
GRUB_TIMEOUT=1
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="audit=0 selinux=0 console=hvc0"
GRUB_DISABLE_RECOVERY="true"
GRUB_ENABLE_BLSCFG=false

It seems we still have issues with this configuration - but this is a 
Fedora 30 problem -  not Xen.

-- 
Steven Haigh

? netwiz@crc.id.au     ? http://www.crc.id.au
? +61 (3) 9001 6090    ? 0412 935 897

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xenproject.org
https://lists.xenproject.org/mailman/listinfo/xen-devel

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [Xen-devel] [PATCH] read grubenv and set default from saved_entry or next_entry
  2019-08-16  5:25       ` Steven Haigh
@ 2019-08-16  5:37         ` Steven Haigh
  2019-08-28  1:35           ` Steven Haigh
  0 siblings, 1 reply; 9+ messages in thread
From: Steven Haigh @ 2019-08-16  5:37 UTC (permalink / raw)
  To: YOUNG, MICHAEL A.; +Cc: Andrew Cooper, xen-devel

On 2019-08-16 15:25, Steven Haigh wrote:
> On 2019-08-16 05:05, YOUNG, MICHAEL A. wrote:
>> On Thu, 15 Aug 2019, Steven Haigh wrote:
>> 
>>> Having a bit of a look here....
>>> 
>>> My test system grubenv file has:
>>> # GRUB Environment Block
>>> saved_entry=0
>>> kernelopts=root=UUID=5346b4d9-885f-4673-8aff-04a16bf1971a ro
>>> rootflags=subvol=root selinux=0 rhgb quiet
>>> boot_success=1
>>> #################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
>> 
>> I have attached a revision of the first patch which should handle a
>> numeric saved_entry.
> 
> Hi Michael,
> 
> I tried this - and it successfully works for systems that have 
> saved_entry=0.
> 
> I noticed that stock installs still have problems with updating
> grubenv from new kernel installs. I had to manually regenerate
> grub.cfg after upgrading to kernel 5.2.8. grubenv doesn't seem to get
> changed at all unless you manually use 'grub2-set-default 0'
> 
> $ rpm -qa | grep kernel | sort
> kernel-5.1.15-300.fc30.x86_64
> kernel-5.2.8-200.fc30.x86_64
> kernel-core-5.1.15-300.fc30.x86_64
> kernel-core-5.2.8-200.fc30.x86_64
> kernel-headers-5.2.8-200.fc30.x86_64
> kernel-modules-5.1.15-300.fc30.x86_64
> kernel-modules-5.2.8-200.fc30.x86_64
> 
> $ rpm -qa | grep grub | sort
> grub2-common-2.02-81.fc30.noarch
> grub2-pc-2.02-81.fc30.x86_64
> grub2-pc-modules-2.02-81.fc30.noarch
> grub2-tools-2.02-81.fc30.x86_64
> grub2-tools-efi-2.02-81.fc30.x86_64
> grub2-tools-extra-2.02-81.fc30.x86_64
> grub2-tools-minimal-2.02-81.fc30.x86_64
> grubby-8.40-31.fc30.x86_64
> grubby-deprecated-8.40-31.fc30.x86_64
> 
> $ cat /etc/default/grub
> GRUB_TIMEOUT=1
> GRUB_DEFAULT=saved
> GRUB_DISABLE_SUBMENU=true
> GRUB_TERMINAL_OUTPUT="console"
> GRUB_CMDLINE_LINUX="audit=0 selinux=0 console=hvc0"
> GRUB_DISABLE_RECOVERY="true"
> GRUB_ENABLE_BLSCFG=false
> 
> It seems we still have issues with this configuration - but this is a
> Fedora 30 problem -  not Xen.

Sorry, forgot to add this for using the functionality of saved_entry=0.

Tested-by: Steven Haigh <netwiz@crc.id.au>

Have not tested using a string as the entry - as all of my installs seem 
to have other problems wrt semi-related fedora issues.

-- 
Steven Haigh

? netwiz@crc.id.au     ? http://www.crc.id.au
? +61 (3) 9001 6090    ? 0412 935 897

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xenproject.org
https://lists.xenproject.org/mailman/listinfo/xen-devel

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [Xen-devel] [PATCH] read grubenv and set default from saved_entry or next_entry
  2019-08-16  5:37         ` Steven Haigh
@ 2019-08-28  1:35           ` Steven Haigh
  2019-09-11 15:57             ` [Xen-devel] [PATCH] read grubenv and set default from saved_entry or next_entry [and 1 more messages] Ian Jackson
  0 siblings, 1 reply; 9+ messages in thread
From: Steven Haigh @ 2019-08-28  1:35 UTC (permalink / raw)
  To: YOUNG, MICHAEL A.; +Cc: Andrew Cooper, xen-devel

Just wanted to give this a quick followup... Did this end up 
progressing?

On Fri, Aug 16, 2019 at 3:37 PM, Steven Haigh <netwiz@crc.id.au> wrote:
> On 2019-08-16 15:25, Steven Haigh wrote:
>> On 2019-08-16 05:05, YOUNG, MICHAEL A. wrote:
>>> On Thu, 15 Aug 2019, Steven Haigh wrote:
>>> 
>>>> Having a bit of a look here....
>>>> 
>>>> My test system grubenv file has:
>>>> # GRUB Environment Block
>>>> saved_entry=0
>>>> kernelopts=root=UUID=5346b4d9-885f-4673-8aff-04a16bf1971a ro
>>>> rootflags=subvol=root selinux=0 rhgb quiet
>>>> boot_success=1
>>>> #################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
>>> 
>>> I have attached a revision of the first patch which should handle a
>>> numeric saved_entry.
>> 
>> Hi Michael,
>> 
>> I tried this - and it successfully works for systems that have 
>> \x7fsaved_entry=0.
>> 
>> I noticed that stock installs still have problems with updating
>> grubenv from new kernel installs. I had to manually regenerate
>> grub.cfg after upgrading to kernel 5.2.8. grubenv doesn't seem to get
>> changed at all unless you manually use 'grub2-set-default 0'
>> 
>> $ rpm -qa | grep kernel | sort
>> kernel-5.1.15-300.fc30.x86_64
>> kernel-5.2.8-200.fc30.x86_64
>> kernel-core-5.1.15-300.fc30.x86_64
>> kernel-core-5.2.8-200.fc30.x86_64
>> kernel-headers-5.2.8-200.fc30.x86_64
>> kernel-modules-5.1.15-300.fc30.x86_64
>> kernel-modules-5.2.8-200.fc30.x86_64
>> 
>> $ rpm -qa | grep grub | sort
>> grub2-common-2.02-81.fc30.noarch
>> grub2-pc-2.02-81.fc30.x86_64
>> grub2-pc-modules-2.02-81.fc30.noarch
>> grub2-tools-2.02-81.fc30.x86_64
>> grub2-tools-efi-2.02-81.fc30.x86_64
>> grub2-tools-extra-2.02-81.fc30.x86_64
>> grub2-tools-minimal-2.02-81.fc30.x86_64
>> grubby-8.40-31.fc30.x86_64
>> grubby-deprecated-8.40-31.fc30.x86_64
>> 
>> $ cat /etc/default/grub
>> GRUB_TIMEOUT=1
>> GRUB_DEFAULT=saved
>> GRUB_DISABLE_SUBMENU=true
>> GRUB_TERMINAL_OUTPUT="console"
>> GRUB_CMDLINE_LINUX="audit=0 selinux=0 console=hvc0"
>> GRUB_DISABLE_RECOVERY="true"
>> GRUB_ENABLE_BLSCFG=false
>> 
>> It seems we still have issues with this configuration - but this is a
>> Fedora 30 problem -  not Xen.
> 
> Sorry, forgot to add this for using the functionality of 
> saved_entry=0.
> 
> Tested-by: Steven Haigh <netwiz@crc.id.au>
> 
> Have not tested using a string as the entry - as all of my installs 
> seem to have other problems wrt semi-related fedora issues.
> 
> --
> Steven Haigh
> 
> ? netwiz@crc.id.au     ? http://www.crc.id.au
> ? +61 (3) 9001 6090    ? 0412 935 897



_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xenproject.org
https://lists.xenproject.org/mailman/listinfo/xen-devel

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [Xen-devel] [PATCH] read grubenv and set default from saved_entry or next_entry [and 1 more messages]
  2019-08-28  1:35           ` Steven Haigh
@ 2019-09-11 15:57             ` Ian Jackson
  0 siblings, 0 replies; 9+ messages in thread
From: Ian Jackson @ 2019-09-11 15:57 UTC (permalink / raw)
  To: YOUNG, MICHAEL A., Steven Haigh; +Cc: Andrew Cooper, xen-devel

Steven Haigh writes ("Re: [Xen-devel] [PATCH] read grubenv and set default from saved_entry or next_entry"):
> Just wanted to give this a quick followup... Did this end up 
> progressing?

Hi.  I'm a tools maintainer and probably your best bet for a review
etc of this patch.  If, next time, you use add_maintainers.pl or
something, you'll end up CCing the maintainer and your mail won't get
dropped.  Anyway, thanks for chasing it up through a back channel :-).

Michael Young <m.a.young@durham.ac.uk>:
> From 51a9dce9de3ea159011928e2db8541f3c7e8383a Mon Sep 17 00:00:00 2001
> From: Michael Young <m.a.young@durham.ac.uk>
> Date: Thu, 15 Aug 2019 19:55:30 +0100
> Subject: [PATCH] read grubenv and set default from saved_entry or next_entry
> 
> This patch looks for a grubenv file in the same directory as the
> grub.cfg file and includes it at front of the grub.cfg file when passed
> to parse()

Thanks for the contribution.  I reviewed the patch and I have some
comments.

I think this patch would be less confusing if it were two patches.
One which does the saved/next entry, and one which reads grubenv.  Do
you think that would make sense ?  If so I would appreciate it if you
would split it up (and write a nice explanatory commit message about
the saved_entry stuff).

> As the grubenv file consists of variable=value lines padded by hashes these
> are treated as commands in parse() where it uses the value of saved_entry
> or next_entry (if set) to set the default entry if a title matches or is
> a number.

I like reusing the parser.

> diff --git a/tools/pygrub/src/pygrub b/tools/pygrub/src/pygrub
> index ce7ab0eb8c..267788795b 100755
> --- a/tools/pygrub/src/pygrub
> +++ b/tools/pygrub/src/pygrub
> @@ -454,8 +454,19 @@ class Grub:
>          if self.__dict__.get('cf', None) is None:
>              raise RuntimeError("couldn't find bootloader config file in the image provided.")
>          f = fs.open_file(self.cf.filename)
> +        fenv = self.cf.filename.replace("grub.cfg","grubenv")

I find this filename hackery rather unprincipled.  I'm not entirely
sure I can see a better way, given the way cfg_list is constructed.
Can you think of a less hacky approach ?

What would happen in future if we provided a way to control the
grub.cfg read by pygrub and a user configured it to (say)
`grub.cfg.old' ?  Would we really want it to read `grubenv.old' ?

> +        if fenv != self.cf.filename and fs.file_exists(fenv):
> +            # if grubenv file exists next to grub.cfg prepend it
> +            fenvf = fs.open_file(fenv)
> +            if sys.version_info[0] < 3:
> +                fsep = "\n"
> +            else:
> +                fsep = b"\n"
> +            buf = fsep.join((fenvf.read(FS_READ_MAX),f.read(FS_READ_MAX)))
> +            del fenvf
>          # limit read size to avoid pathological cases
> -        buf = f.read(FS_READ_MAX)
> +        else:
> +            buf = f.read(FS_READ_MAX)
>          del f
>          if sys.version_info[0] < 3:
>              self.cf.parse(buf)

Can we instead make the parser take a list ?  This business of
constructing a concatenated string is not very nice.

Regards,
Ian.

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xenproject.org
https://lists.xenproject.org/mailman/listinfo/xen-devel

^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, back to index

Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-08-14 23:54 [Xen-devel] [PATCH] read grubenv and set default from saved_entry or next_entry YOUNG, MICHAEL A.
2019-08-14 23:56 ` YOUNG, MICHAEL A.
2019-08-15  6:01   ` Steven Haigh
2019-08-15  7:18     ` M A Young
2019-08-15 19:05     ` YOUNG, MICHAEL A.
2019-08-16  5:25       ` Steven Haigh
2019-08-16  5:37         ` Steven Haigh
2019-08-28  1:35           ` Steven Haigh
2019-09-11 15:57             ` [Xen-devel] [PATCH] read grubenv and set default from saved_entry or next_entry [and 1 more messages] Ian Jackson

Xen-Devel Archive on lore.kernel.org

Archives are clonable:
	git clone --mirror https://lore.kernel.org/xen-devel/0 xen-devel/git/0.git
	git clone --mirror https://lore.kernel.org/xen-devel/1 xen-devel/git/1.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 xen-devel xen-devel/ https://lore.kernel.org/xen-devel \
		xen-devel@lists.xenproject.org xen-devel@archiver.kernel.org
	public-inbox-index xen-devel


Newsgroup available over NNTP:
	nntp://nntp.lore.kernel.org/org.xenproject.lists.xen-devel


AGPL code for this site: git clone https://public-inbox.org/ public-inbox