[1/2] initramfs-live-install: avoid using grub.d/40_custom

Submitted by rongqing.li@windriver.com on May 20, 2014, 2:49 a.m.

Details

Message ID 1400554188-19458-1-git-send-email-rongqing.li@windriver.com
State Accepted
Commit 8ae89d08454c11035eb2826a06e2243c9f2568b4
Headers show

Commit Message

rongqing.li@windriver.com May 20, 2014, 2:49 a.m.
From: Robert Yang <liezhi.yang@windriver.com>

We have this in recipes-bsp/grub/grub/40_custom:

[snip]
menuentry "Linux" {
    set root=(hd0,1)
    linux /vmlinuz root=__ROOTFS__ rw __CONSOLE__ __VIDEO_MODE__ __VGA_MODE__ quiet
}
[snip]

These lines are only for initrdscripts/files/init-install.sh, the side
effect is that it would make the target's grub-mkconfig doesn't work
well since the 40_custom will be installed to /etc/grub.d/40_custom, the
grub-mkconfig will run the 40_custom, and there will always be a
'menuentry "Linux"' menu in grub.cfg no matter it is valid or not, we
can do this in init-install.sh rather than grub to fix the problem,
which is also much simpler.

Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
---
 meta/recipes-core/initrdscripts/files/init-install.sh |   15 +++++++--------
 1 file changed, 7 insertions(+), 8 deletions(-)

Patch hide | download patch | download mbox

diff --git a/meta/recipes-core/initrdscripts/files/init-install.sh b/meta/recipes-core/initrdscripts/files/init-install.sh
index 8e433d5..0ede928 100644
--- a/meta/recipes-core/initrdscripts/files/init-install.sh
+++ b/meta/recipes-core/initrdscripts/files/init-install.sh
@@ -168,17 +168,16 @@  umount /src_root
 # Handling of the target boot partition
 mount $bootfs /boot
 echo "Preparing boot partition..."
-if [ -f /etc/grub.d/40_custom ] ; then
+if [ -f /etc/grub.d/00_header ] ; then
     echo "Preparing custom grub2 menu..."
     GRUBCFG="/boot/grub/grub.cfg"
     mkdir -p $(dirname $GRUBCFG)
-    cp /etc/grub.d/40_custom $GRUBCFG
-    sed -i "s@__ROOTFS__@$rootfs $rootwait@g" $GRUBCFG
-    sed -i "s/__VIDEO_MODE__/$3/g" $GRUBCFG
-    sed -i "s/__VGA_MODE__/$4/g" $GRUBCFG
-    sed -i "s/__CONSOLE__/$5/g" $GRUBCFG
-    sed -i "/#/d" $GRUBCFG
-    sed -i "/exec tail/d" $GRUBCFG
+    cat >$GRUBCFG <<_EOF
+menuentry "Linux" {
+    set root=(hd0,1)
+    linux /vmlinuz root=$rootfs $rootwait rw $5 $3 $4 quiet
+}
+_EOF
     chmod 0444 $GRUBCFG
 fi
 grub-install /dev/${device}

Comments

Darren Hart May 21, 2014, 5:43 p.m.
On 5/19/14, 19:49, rongqing.li@windriver.com wrote:
> From: Robert Yang <liezhi.yang@windriver.com>

Hi Robert,

Just to clarify - there is no Patch 2/2 right?

> We have this in recipes-bsp/grub/grub/40_custom:
>
> [snip]
> menuentry "Linux" {
>      set root=(hd0,1)
>      linux /vmlinuz root=__ROOTFS__ rw __CONSOLE__ __VIDEO_MODE__ __VGA_MODE__ quiet
> }
> [snip]
>
> These lines are only for initrdscripts/files/init-install.sh, the side
> effect is that it would make the target's grub-mkconfig doesn't work
> well since the 40_custom will be installed to /etc/grub.d/40_custom, the
> grub-mkconfig will run the 40_custom, and there will always be a
> 'menuentry "Linux"' menu in grub.cfg no matter it is valid or not, we
> can do this in init-install.sh rather than grub to fix the problem,
> which is also much simpler.
>
> Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
> ---
>   meta/recipes-core/initrdscripts/files/init-install.sh |   15 +++++++--------
>   1 file changed, 7 insertions(+), 8 deletions(-)
>
> diff --git a/meta/recipes-core/initrdscripts/files/init-install.sh b/meta/recipes-core/initrdscripts/files/init-install.sh
> index 8e433d5..0ede928 100644
> --- a/meta/recipes-core/initrdscripts/files/init-install.sh
> +++ b/meta/recipes-core/initrdscripts/files/init-install.sh
> @@ -168,17 +168,16 @@ umount /src_root
>   # Handling of the target boot partition
>   mount $bootfs /boot
>   echo "Preparing boot partition..."
> -if [ -f /etc/grub.d/40_custom ] ; then
> +if [ -f /etc/grub.d/00_header ] ; then
>       echo "Preparing custom grub2 menu..."
>       GRUBCFG="/boot/grub/grub.cfg"
>       mkdir -p $(dirname $GRUBCFG)
> -    cp /etc/grub.d/40_custom $GRUBCFG
> -    sed -i "s@__ROOTFS__@$rootfs $rootwait@g" $GRUBCFG
> -    sed -i "s/__VIDEO_MODE__/$3/g" $GRUBCFG
> -    sed -i "s/__VGA_MODE__/$4/g" $GRUBCFG
> -    sed -i "s/__CONSOLE__/$5/g" $GRUBCFG
> -    sed -i "/#/d" $GRUBCFG
> -    sed -i "/exec tail/d" $GRUBCFG
> +    cat >$GRUBCFG <<_EOF
> +menuentry "Linux" {
> +    set root=(hd0,1)
> +    linux /vmlinuz root=$rootfs $rootwait rw $5 $3 $4 quiet
> +}
> +_EOF

OK, seems like a reasonable incremental change. What becomes of the 
40_custom file itself? Should that be removed from the grub recipe as well?

Does the BSP variable "APPEND" get incorporated here anywhere? It's 
looking like it isn't - or maybe I'm missing it?

Thanks,
Robert Yang May 22, 2014, 2:07 a.m.
On 05/22/2014 01:43 AM, Darren Hart wrote:
> On 5/19/14, 19:49, rongqing.li@windriver.com wrote:
>> From: Robert Yang <liezhi.yang@windriver.com>
>
> Hi Robert,
>
> Just to clarify - there is no Patch 2/2 right?

Hi Darren,

Thanks, there is [PATCH 2/2] grub-2.00: remove our 40_custom:

http://lists.openembedded.org/pipermail/openembedded-core/2014-May/092736.html

I'm a little busy recently, so Roy helped me forward porting this patch,
please see my comments below.

>
>> We have this in recipes-bsp/grub/grub/40_custom:
>>
>> [snip]
>> menuentry "Linux" {
>>      set root=(hd0,1)
>>      linux /vmlinuz root=__ROOTFS__ rw __CONSOLE__ __VIDEO_MODE__ __VGA_MODE__
>> quiet
>> }
>> [snip]
>>
>> These lines are only for initrdscripts/files/init-install.sh, the side
>> effect is that it would make the target's grub-mkconfig doesn't work
>> well since the 40_custom will be installed to /etc/grub.d/40_custom, the
>> grub-mkconfig will run the 40_custom, and there will always be a
>> 'menuentry "Linux"' menu in grub.cfg no matter it is valid or not, we
>> can do this in init-install.sh rather than grub to fix the problem,
>> which is also much simpler.
>>
>> Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
>> ---
>>   meta/recipes-core/initrdscripts/files/init-install.sh |   15 +++++++--------
>>   1 file changed, 7 insertions(+), 8 deletions(-)
>>
>> diff --git a/meta/recipes-core/initrdscripts/files/init-install.sh
>> b/meta/recipes-core/initrdscripts/files/init-install.sh
>> index 8e433d5..0ede928 100644
>> --- a/meta/recipes-core/initrdscripts/files/init-install.sh
>> +++ b/meta/recipes-core/initrdscripts/files/init-install.sh
>> @@ -168,17 +168,16 @@ umount /src_root
>>   # Handling of the target boot partition
>>   mount $bootfs /boot
>>   echo "Preparing boot partition..."
>> -if [ -f /etc/grub.d/40_custom ] ; then
>> +if [ -f /etc/grub.d/00_header ] ; then
>>       echo "Preparing custom grub2 menu..."
>>       GRUBCFG="/boot/grub/grub.cfg"
>>       mkdir -p $(dirname $GRUBCFG)
>> -    cp /etc/grub.d/40_custom $GRUBCFG
>> -    sed -i "s@__ROOTFS__@$rootfs $rootwait@g" $GRUBCFG
>> -    sed -i "s/__VIDEO_MODE__/$3/g" $GRUBCFG
>> -    sed -i "s/__VGA_MODE__/$4/g" $GRUBCFG
>> -    sed -i "s/__CONSOLE__/$5/g" $GRUBCFG
>> -    sed -i "/#/d" $GRUBCFG
>> -    sed -i "/exec tail/d" $GRUBCFG
>> +    cat >$GRUBCFG <<_EOF
>> +menuentry "Linux" {
>> +    set root=(hd0,1)
>> +    linux /vmlinuz root=$rootfs $rootwait rw $5 $3 $4 quiet
>> +}
>> +_EOF
>
> OK, seems like a reasonable incremental change. What becomes of the 40_custom
> file itself? Should that be removed from the grub recipe as well?

I'm afraid that the grub's 40_custom should be kept as other distro does:

=== begin ===
#!/bin/sh
exec tail -n +3 $0
# This file provides an easy way to add custom menu entries.  Simply type the
# menu entries you want to add after this comment.  Be careful not to change
# the 'exec tail' line above.
=== end ===

The problem is that recipes-bsp/grub/grub/40_custom has added unneeded lines.

>
> Does the BSP variable "APPEND" get incorporated here anywhere? It's looking like
> it isn't - or maybe I'm missing it?

Sorry, what do you mean about this, please ?

// Robert

>
> Thanks,
>
Darren Hart May 22, 2014, 4:02 a.m.
On 5/21/14, 19:07, Robert Yang wrote:
>
> On 05/22/2014 01:43 AM, Darren Hart wrote:
>> On 5/19/14, 19:49, rongqing.li@windriver.com wrote:
>>> From: Robert Yang <liezhi.yang@windriver.com>
>>
>> Hi Robert,
>>
>> Just to clarify - there is no Patch 2/2 right?
>
> Hi Darren,
>
> Thanks, there is [PATCH 2/2] grub-2.00: remove our 40_custom:
>
> http://lists.openembedded.org/pipermail/openembedded-core/2014-May/092736.html
>
>
> I'm a little busy recently, so Roy helped me forward porting this patch,
> please see my comments below.
>
>>
>>> We have this in recipes-bsp/grub/grub/40_custom:
>>>
>>> [snip]
>>> menuentry "Linux" {
>>>      set root=(hd0,1)
>>>      linux /vmlinuz root=__ROOTFS__ rw __CONSOLE__ __VIDEO_MODE__
>>> __VGA_MODE__
>>> quiet
>>> }
>>> [snip]
>>>
>>> These lines are only for initrdscripts/files/init-install.sh, the side
>>> effect is that it would make the target's grub-mkconfig doesn't work
>>> well since the 40_custom will be installed to /etc/grub.d/40_custom, the
>>> grub-mkconfig will run the 40_custom, and there will always be a
>>> 'menuentry "Linux"' menu in grub.cfg no matter it is valid or not, we
>>> can do this in init-install.sh rather than grub to fix the problem,
>>> which is also much simpler.
>>>
>>> Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
>>> ---
>>>   meta/recipes-core/initrdscripts/files/init-install.sh |   15
>>> +++++++--------
>>>   1 file changed, 7 insertions(+), 8 deletions(-)
>>>
>>> diff --git a/meta/recipes-core/initrdscripts/files/init-install.sh
>>> b/meta/recipes-core/initrdscripts/files/init-install.sh
>>> index 8e433d5..0ede928 100644
>>> --- a/meta/recipes-core/initrdscripts/files/init-install.sh
>>> +++ b/meta/recipes-core/initrdscripts/files/init-install.sh
>>> @@ -168,17 +168,16 @@ umount /src_root
>>>   # Handling of the target boot partition
>>>   mount $bootfs /boot
>>>   echo "Preparing boot partition..."
>>> -if [ -f /etc/grub.d/40_custom ] ; then
>>> +if [ -f /etc/grub.d/00_header ] ; then
>>>       echo "Preparing custom grub2 menu..."
>>>       GRUBCFG="/boot/grub/grub.cfg"
>>>       mkdir -p $(dirname $GRUBCFG)
>>> -    cp /etc/grub.d/40_custom $GRUBCFG
>>> -    sed -i "s@__ROOTFS__@$rootfs $rootwait@g" $GRUBCFG
>>> -    sed -i "s/__VIDEO_MODE__/$3/g" $GRUBCFG
>>> -    sed -i "s/__VGA_MODE__/$4/g" $GRUBCFG
>>> -    sed -i "s/__CONSOLE__/$5/g" $GRUBCFG
>>> -    sed -i "/#/d" $GRUBCFG
>>> -    sed -i "/exec tail/d" $GRUBCFG
>>> +    cat >$GRUBCFG <<_EOF
>>> +menuentry "Linux" {
>>> +    set root=(hd0,1)
>>> +    linux /vmlinuz root=$rootfs $rootwait rw $5 $3 $4 quiet
>>> +}
>>> +_EOF
>>
>> OK, seems like a reasonable incremental change. What becomes of the
>> 40_custom
>> file itself? Should that be removed from the grub recipe as well?
>
> I'm afraid that the grub's 40_custom should be kept as other distro does:
>
> === begin ===
> #!/bin/sh
> exec tail -n +3 $0
> # This file provides an easy way to add custom menu entries.  Simply
> type the
> # menu entries you want to add after this comment.  Be careful not to
> change
> # the 'exec tail' line above.
> === end ===
>
> The problem is that recipes-bsp/grub/grub/40_custom has added unneeded
> lines.

Got it.

>
>>
>> Does the BSP variable "APPEND" get incorporated here anywhere? It's
>> looking like
>> it isn't - or maybe I'm missing it?
>
> Sorry, what do you mean about this, please ?

The APPEND variable is used to define any kernel command line parameters 
a BSP may need to boot and function properly. We should ensure these 
parameters are carried through to the installation media. I don't see 
them getting transferred over anywhere. See APPEND in the reference 
manual or any of many of the BSPs for examples of what goes in there.
Saul Wold May 23, 2014, 5:47 p.m.
On 05/21/2014 07:07 PM, Robert Yang wrote:
>
> On 05/22/2014 01:43 AM, Darren Hart wrote:
>> On 5/19/14, 19:49, rongqing.li@windriver.com wrote:
>>> From: Robert Yang <liezhi.yang@windriver.com>
>>
>> Hi Robert,
>>
>> Just to clarify - there is no Patch 2/2 right?
>
> Hi Darren,
>
> Thanks, there is [PATCH 2/2] grub-2.00: remove our 40_custom:
>
> http://lists.openembedded.org/pipermail/openembedded-core/2014-May/092736.html
>

There is a small issue still, the 40_custom is still mentioned in both 
grub_git.bb and initrdscripts/files/init-install-testfs.sh

Sau!

>
> I'm a little busy recently, so Roy helped me forward porting this patch,
> please see my comments below.
>
>>
>>> We have this in recipes-bsp/grub/grub/40_custom:
>>>
>>> [snip]
>>> menuentry "Linux" {
>>>      set root=(hd0,1)
>>>      linux /vmlinuz root=__ROOTFS__ rw __CONSOLE__ __VIDEO_MODE__
>>> __VGA_MODE__
>>> quiet
>>> }
>>> [snip]
>>>
>>> These lines are only for initrdscripts/files/init-install.sh, the side
>>> effect is that it would make the target's grub-mkconfig doesn't work
>>> well since the 40_custom will be installed to /etc/grub.d/40_custom, the
>>> grub-mkconfig will run the 40_custom, and there will always be a
>>> 'menuentry "Linux"' menu in grub.cfg no matter it is valid or not, we
>>> can do this in init-install.sh rather than grub to fix the problem,
>>> which is also much simpler.
>>>
>>> Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
>>> ---
>>>   meta/recipes-core/initrdscripts/files/init-install.sh |   15
>>> +++++++--------
>>>   1 file changed, 7 insertions(+), 8 deletions(-)
>>>
>>> diff --git a/meta/recipes-core/initrdscripts/files/init-install.sh
>>> b/meta/recipes-core/initrdscripts/files/init-install.sh
>>> index 8e433d5..0ede928 100644
>>> --- a/meta/recipes-core/initrdscripts/files/init-install.sh
>>> +++ b/meta/recipes-core/initrdscripts/files/init-install.sh
>>> @@ -168,17 +168,16 @@ umount /src_root
>>>   # Handling of the target boot partition
>>>   mount $bootfs /boot
>>>   echo "Preparing boot partition..."
>>> -if [ -f /etc/grub.d/40_custom ] ; then
>>> +if [ -f /etc/grub.d/00_header ] ; then
>>>       echo "Preparing custom grub2 menu..."
>>>       GRUBCFG="/boot/grub/grub.cfg"
>>>       mkdir -p $(dirname $GRUBCFG)
>>> -    cp /etc/grub.d/40_custom $GRUBCFG
>>> -    sed -i "s@__ROOTFS__@$rootfs $rootwait@g" $GRUBCFG
>>> -    sed -i "s/__VIDEO_MODE__/$3/g" $GRUBCFG
>>> -    sed -i "s/__VGA_MODE__/$4/g" $GRUBCFG
>>> -    sed -i "s/__CONSOLE__/$5/g" $GRUBCFG
>>> -    sed -i "/#/d" $GRUBCFG
>>> -    sed -i "/exec tail/d" $GRUBCFG
>>> +    cat >$GRUBCFG <<_EOF
>>> +menuentry "Linux" {
>>> +    set root=(hd0,1)
>>> +    linux /vmlinuz root=$rootfs $rootwait rw $5 $3 $4 quiet
>>> +}
>>> +_EOF
>>
>> OK, seems like a reasonable incremental change. What becomes of the
>> 40_custom
>> file itself? Should that be removed from the grub recipe as well?
>
> I'm afraid that the grub's 40_custom should be kept as other distro does:
>
> === begin ===
> #!/bin/sh
> exec tail -n +3 $0
> # This file provides an easy way to add custom menu entries.  Simply
> type the
> # menu entries you want to add after this comment.  Be careful not to
> change
> # the 'exec tail' line above.
> === end ===
>
> The problem is that recipes-bsp/grub/grub/40_custom has added unneeded
> lines.
>
>>
>> Does the BSP variable "APPEND" get incorporated here anywhere? It's
>> looking like
>> it isn't - or maybe I'm missing it?
>
> Sorry, what do you mean about this, please ?
>
> // Robert
>
>>
>> Thanks,
>>
rongqing.li@windriver.com June 6, 2014, 7:21 a.m.
On 05/24/2014 01:47 AM, Saul Wold wrote:
> On 05/21/2014 07:07 PM, Robert Yang wrote:
>>
>> On 05/22/2014 01:43 AM, Darren Hart wrote:
>>> On 5/19/14, 19:49, rongqing.li@windriver.com wrote:
>>>> From: Robert Yang <liezhi.yang@windriver.com>
>>>
>>> Hi Robert,
>>>
>>> Just to clarify - there is no Patch 2/2 right?
>>
>> Hi Darren,
>>
>> Thanks, there is [PATCH 2/2] grub-2.00: remove our 40_custom:
>>
>> http://lists.openembedded.org/pipermail/openembedded-core/2014-May/092736.html
>>
>>
>
> There is a small issue still, the 40_custom is still mentioned in both
> grub_git.bb and initrdscripts/files/init-install-testfs.sh
>
> Sau!

Robert:

We need to remove them all?

-Roy


>
>>
>> I'm a little busy recently, so Roy helped me forward porting this patch,
>> please see my comments below.
>>
>>>
>>>> We have this in recipes-bsp/grub/grub/40_custom:
>>>>
>>>> [snip]
>>>> menuentry "Linux" {
>>>>      set root=(hd0,1)
>>>>      linux /vmlinuz root=__ROOTFS__ rw __CONSOLE__ __VIDEO_MODE__
>>>> __VGA_MODE__
>>>> quiet
>>>> }
>>>> [snip]
>>>>
>>>> These lines are only for initrdscripts/files/init-install.sh, the side
>>>> effect is that it would make the target's grub-mkconfig doesn't work
>>>> well since the 40_custom will be installed to /etc/grub.d/40_custom,
>>>> the
>>>> grub-mkconfig will run the 40_custom, and there will always be a
>>>> 'menuentry "Linux"' menu in grub.cfg no matter it is valid or not, we
>>>> can do this in init-install.sh rather than grub to fix the problem,
>>>> which is also much simpler.
>>>>
>>>> Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
>>>> ---
>>>>   meta/recipes-core/initrdscripts/files/init-install.sh |   15
>>>> +++++++--------
>>>>   1 file changed, 7 insertions(+), 8 deletions(-)
>>>>
>>>> diff --git a/meta/recipes-core/initrdscripts/files/init-install.sh
>>>> b/meta/recipes-core/initrdscripts/files/init-install.sh
>>>> index 8e433d5..0ede928 100644
>>>> --- a/meta/recipes-core/initrdscripts/files/init-install.sh
>>>> +++ b/meta/recipes-core/initrdscripts/files/init-install.sh
>>>> @@ -168,17 +168,16 @@ umount /src_root
>>>>   # Handling of the target boot partition
>>>>   mount $bootfs /boot
>>>>   echo "Preparing boot partition..."
>>>> -if [ -f /etc/grub.d/40_custom ] ; then
>>>> +if [ -f /etc/grub.d/00_header ] ; then
>>>>       echo "Preparing custom grub2 menu..."
>>>>       GRUBCFG="/boot/grub/grub.cfg"
>>>>       mkdir -p $(dirname $GRUBCFG)
>>>> -    cp /etc/grub.d/40_custom $GRUBCFG
>>>> -    sed -i "s@__ROOTFS__@$rootfs $rootwait@g" $GRUBCFG
>>>> -    sed -i "s/__VIDEO_MODE__/$3/g" $GRUBCFG
>>>> -    sed -i "s/__VGA_MODE__/$4/g" $GRUBCFG
>>>> -    sed -i "s/__CONSOLE__/$5/g" $GRUBCFG
>>>> -    sed -i "/#/d" $GRUBCFG
>>>> -    sed -i "/exec tail/d" $GRUBCFG
>>>> +    cat >$GRUBCFG <<_EOF
>>>> +menuentry "Linux" {
>>>> +    set root=(hd0,1)
>>>> +    linux /vmlinuz root=$rootfs $rootwait rw $5 $3 $4 quiet
>>>> +}
>>>> +_EOF
>>>
>>> OK, seems like a reasonable incremental change. What becomes of the
>>> 40_custom
>>> file itself? Should that be removed from the grub recipe as well?
>>
>> I'm afraid that the grub's 40_custom should be kept as other distro does:
>>
>> === begin ===
>> #!/bin/sh
>> exec tail -n +3 $0
>> # This file provides an easy way to add custom menu entries.  Simply
>> type the
>> # menu entries you want to add after this comment.  Be careful not to
>> change
>> # the 'exec tail' line above.
>> === end ===
>>
>> The problem is that recipes-bsp/grub/grub/40_custom has added unneeded
>> lines.
>>
>>>
>>> Does the BSP variable "APPEND" get incorporated here anywhere? It's
>>> looking like
>>> it isn't - or maybe I'm missing it?
>>
>> Sorry, what do you mean about this, please ?
>>
>> // Robert
>>
>>>
>>> Thanks,
>>>
>
>