[meta-freescale] Kernel 3.10.31 and SD card numbering and boot scripts

Otavio Salvador otavio at ossystems.com.br
Fri Oct 10 05:23:08 PDT 2014


On Thu, Oct 9, 2014 at 10:45 PM, Eric Nelson
<eric.nelson at boundarydevices.com> wrote:
> Thanks for the feedback Otavio,
>
> On 10/09/2014 06:18 PM, Otavio Salvador wrote:
>> On Thu, Oct 9, 2014 at 9:00 PM, Eric Nelson
>> <eric.nelson at boundarydevices.com> wrote:
>>> The 3.10.31 kernel contains a nifty bit of code from Sascha Hauer
>>> that addresses the question of SD card numbering (device naming)
>>> quite well:
>>>
>>>         http://git.freescale.com/git/cgit.cgi/imx/linux-2.6-imx.git/commit/drivers/mmc/card/block.c?h=imx_3.10.31_1.1.0_beta&id=5f9447e5d97060207c4742d5a06e5548de45972d
>>>         https://www.mail-archive.com/linux-mmc@vger.kernel.org/msg26472.html
>>>
>>> Unfortunately, it also changes the requirements for the kernel
>>> command-line and breaks our boot scripts.
>>
>> Yes.
>>
>>> This is probably a good time to ask a related question about
>>> where we're keeping boot scripts.
>>>
>>> We have been compiling boot scripts out of our U-Boot tree
>>> from a Yocto-specific "6x_bootscript-yocto.txt" that implements
>>> the conventions of the Freescale Community BSP (kernel in
>>> the root of partition 1 and rootfs in partition 2).
>>>
>>> Since boot scripts have dependencies on a lot of things, it's
>>> not clear to me that they belong in the U-Boot source tree
>>> and that a Yocto-specific boot script really belongs directly
>>> in the Yocto tree somewhere.
>>>
>>> Since a Yocto build knows about the PREFERRED_VERSION of the
>>> kernel, it would be straightforward to have multiple versions
>>> of a boot script.
>>>
>>> Otherwise, we'd need to place a couple of versions in the
>>> U-Boot tree:
>>>         6x_bootscript-yocto.txt
>>>         6x_bootscript-yocto-after-3.10.17.txt
>>> and we'd also need some logic in u-boot-script-boundary.bb
>>> to choose between them.
>>>
>>> Before crafting a patch to do this, I'd like to get some feedback.
>>
>> It is harder than it seems to be. The providing system does not track
>> versions so you'd need to do some "uglyness" to make this work.
>>
>
> I haven't tried, but it seems generally useful to allow
> conditionals based on kernel versions in Yocto/OE and I'm
> surprised that there isn't a stock way of doing this.

It would be indeed however there are some complexities as package feed
upgrade path and other details which makes this very complex.

As I said, I think this is technically possible to be done but will
require some 'hacks'.

>> Personally I think it is easier to address this on the bootscript
>> itself using the setexpr command in U-Boot and with the REGEX config
>> enabled. So you could try to match the kernel version on it somehow.
>>
>> Not sure if we have a command to 'ask' for the kernel version loaded though...
>>
>
> Not currently.
>
> Using a root=PARTUUID=blah would also be nice and might allow the same
> command-line on multiple kernel versions.
>
> Unfortunately, this doesn't seem to work:
>         https://github.com/boundarydevices/linux-imx6/blob/boundary-imx_3.10.31_1.1.0_beta/init/do_mounts.c#L213

The problem with the UUID is because we need to inject it during
rootfs generation and it'd not be in the initial environment, so an
'env default -f -a' would make the system not bootable. In your case,
as you use the script in a partition it is more doable but it'd not be
an generic solution.

-- 
Otavio Salvador                             O.S. Systems
http://www.ossystems.com.br        http://code.ossystems.com.br
Mobile: +55 (53) 9981-7854            Mobile: +1 (347) 903-9750


More information about the meta-freescale mailing list