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

login
register
mail settings
Submitter rongqing.li@windriver.com
Date May 20, 2014, 2:49 a.m.
Message ID <1400554188-19458-1-git-send-email-rongqing.li@windriver.com>
Download mbox | patch
Permalink /patch/72419/
State New
Headers show

Comments

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(-)
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,
>>>
>
>

Patch

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}