From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1UTC2y-0005su-U9 for mharc-grub-devel@gnu.org; Fri, 19 Apr 2013 10:12:16 -0400 Received: from eggs.gnu.org ([208.118.235.92]:60998) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UTC2u-0005qo-Q1 for grub-devel@gnu.org; Fri, 19 Apr 2013 10:12:14 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1UTC2r-0007lr-PI for grub-devel@gnu.org; Fri, 19 Apr 2013 10:12:12 -0400 Received: from mail-la0-x22b.google.com ([2a00:1450:4010:c03::22b]:55288) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UTC2r-0007lY-D6 for grub-devel@gnu.org; Fri, 19 Apr 2013 10:12:09 -0400 Received: by mail-la0-f43.google.com with SMTP id ea20so109799lab.30 for ; Fri, 19 Apr 2013 07:12:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=x-received:date:from:to:subject:message-id:in-reply-to:references :x-mailer:mime-version:content-type; bh=81HTA3evFGzlBcx0rLYsNMHk5B7ZvO3INyGmuNKoyHM=; b=O380S+PAJCDwUDBjyVneedlfWQfhIWjLHS7GL5pRfDubQBxwSu0ybdBubjWuMuZl5u E88Zqi7bK/zIlR6G5X80CGFreUecvcJljWC7+DgOV1utiVhCpnLwTpq3bNzhfbePF3OU Q6whcinY7qMkxsUFhirFeJNJpzSn4UOupYBUSiD0w59DXj27yBJL2hO5TMv/8f6MnYsP mLstxYY71qb2taIiu80aSAzWaw0T2JqlTCYsJnLaBE4+IwbpbBT601QT0Xwwed3t6WAw rE8+uY8sahiHxpAtq1BqBE2IrZ91zeWNc4/ODAPeHT425ykpNt0Qjo39nQJKmIq0d97j rYdg== X-Received: by 10.112.132.40 with SMTP id or8mr8138869lbb.119.1366380728090; Fri, 19 Apr 2013 07:12:08 -0700 (PDT) Received: from opensuse.site ([94.29.72.160]) by mx.google.com with ESMTPS id m9sm5966451lbm.3.2013.04.19.07.12.07 (version=SSLv3 cipher=RC4-SHA bits=128/128); Fri, 19 Apr 2013 07:12:07 -0700 (PDT) Date: Fri, 19 Apr 2013 18:12:05 +0400 From: Andrey Borzenkov To: grub-devel@gnu.org Subject: Re: [PATCH] reimplement grub-reboot to nor depend on GRUB_DEFAULT=saved Message-ID: <20130419181205.4a7753e1@opensuse.site> In-Reply-To: <1365338320.7207.35.camel@mattotaupa> References: <1359536919-25986-1-git-send-email-arvidjaar@gmail.com> <51607CEF.2030408@gmail.com> <20130407143439.6675fd5a@opensuse.site> <1365338320.7207.35.camel@mattotaupa> X-Mailer: Claws Mail 3.9.0 (GTK+ 2.24.14; x86_64-suse-linux-gnu) Mime-Version: 1.0 Content-Type: multipart/signed; micalg=PGP-SHA1; boundary="Sig_/e6Gxgh=LdG8oZs7dFeV3F+j"; protocol="application/pgp-signature" X-detected-operating-system: by eggs.gnu.org: Error: Malformed IPv6 address (bad octet value). X-Received-From: 2a00:1450:4010:c03::22b X-BeenThere: grub-devel@gnu.org X-Mailman-Version: 2.1.14 Precedence: list Reply-To: The development of GNU GRUB List-Id: The development of GNU GRUB List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 19 Apr 2013 14:12:15 -0000 --Sig_/e6Gxgh=LdG8oZs7dFeV3F+j Content-Type: text/plain; charset=KOI8-R Content-Transfer-Encoding: quoted-printable =F7 Sun, 07 Apr 2013 14:38:40 +0200 Paul Menzel =D0=C9=DB=C5=D4: >=20 > s,nor,not, >=20 >=20 > s,consequitive,consecutive, > >=20 > *variab*l*e >=20 >=20 > Otherwise I did not spot anything. >=20 Thank you for review. Updated patch follows. From: Andrey Borzenkov Subject: [PATCH] reimplement grub-reboot to not depend on GRUB_DEFAULT=3Dsa= ved To: grub-devel@gnu.org Use separate environment variable next_entry to indicate one time boot entry. CMOS button still takes precedent. It makes grub-reboot usable also when GRUB_DEFAULT is set to explicit value. It retains support for prev_saved_entry for compatibility. Also grub-reboot will restore saved_entry from prev_saved_entry first time it is called. As a side effect it also fixes a problem that saved_entry is lost after two consecutive grub-reboot calls. Signed-off-by: Andrey Borzenkov --- ChangeLog | 5 +++++ util/grub-reboot.in | 17 ++++++----------- util/grub-set-default.in | 1 + util/grub.d/00_header.in | 14 +++++++++++++- 4 files changed, 25 insertions(+), 12 deletions(-) diff --git a/ChangeLog b/ChangeLog index 3e606cb..d282ff2 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2013-04-19 Andrey Borzenkov + + Reimplement grub-reboot to not depend on saved_entry. Use next_entry + variable for one time boot menu entry. + 2013-04-19 Vladimir Serbinenko =20 * grub-core/kern/ieee1275/init.c (grub_claim_heap): Improve handling diff --git a/util/grub-reboot.in b/util/grub-reboot.in index 1a91d36..d132e4f 100644 --- a/util/grub-reboot.in +++ b/util/grub-reboot.in @@ -46,8 +46,6 @@ export TEXTDOMAINDIR=3D"@localedir@" usage () { gettext_printf "Usage: %s [OPTION] MENU_ENTRY\n" "$self" gettext "Set the default boot menu entry for GRUB, for the next boot o= nly."; echo - gettext_printf "This requires setting GRUB_DEFAULT=3Dsaved in %s/defau= lt/grub.\n" "$sysconfdir" - echo print_option_help "-h, --help" "$(gettext "print this message and exit= ")" print_option_help "-v, --version" "$(gettext "print the version inform= ation and exit")" dirmsg=3D"$(gettext_printf "expect GRUB images under the directory DIR= /%s instead of the %s directory" "@grubdirname@" "$grubdir")" @@ -129,17 +127,14 @@ fi =20 grubdir=3D`echo "${bootdir}/@grubdirname@" | sed 's,//*,/,g'` =20 -prev_saved_entry=3D`$grub_editenv ${grubdir}/grubenv list | sed -n 's/^sav= ed_entry=3D//p'` +# Restore saved_entry if it was set by previous version +prev_saved_entry=3D`$grub_editenv ${grubdir}/grubenv list | sed -n 's/^pre= v_saved_entry=3D//p'` if [ "$prev_saved_entry" ]; then - $grub_editenv ${grubdir}/grubenv set prev_saved_entry=3D"$prev_saved_e= ntry" -else - # We need some non-empty value for prev_saved_entry so that GRUB will - # recognise that grub-reboot has been used and restore the previous - # saved entry. "0" is the same as an empty value, i.e. the first menu - # entry. - $grub_editenv ${grubdir}/grubenv set prev_saved_entry=3D0 + $grub_editenv ${grubdir}/grubenv set saved_entry=3D"$prev_saved_entry" + $grub_editenv ${grubdir}/grubenv unset prev_saved_entry fi -$grub_editenv ${grubdir}/grubenv set saved_entry=3D"$entry" + +$grub_editenv ${grubdir}/grubenv set next_entry=3D"$entry" =20 # Bye. exit 0 diff --git a/util/grub-set-default.in b/util/grub-set-default.in index ea18da1..d607318 100644 --- a/util/grub-set-default.in +++ b/util/grub-set-default.in @@ -130,6 +130,7 @@ fi grubdir=3D`echo "${bootdir}/@grubdirname@" | sed 's,//*,/,g'` =20 $grub_editenv ${grubdir}/grubenv unset prev_saved_entry +$grub_editenv ${grubdir}/grubenv unset next_entry $grub_editenv ${grubdir}/grubenv set saved_entry=3D"$entry" =20 # Bye. diff --git a/util/grub.d/00_header.in b/util/grub.d/00_header.in index 3da5d12..2c4bb0a 100644 --- a/util/grub.d/00_header.in +++ b/util/grub.d/00_header.in @@ -51,13 +51,25 @@ if [ "x$GRUB_BUTTON_CMOS_ADDRESS" !=3D "x" ]; then cat <