[yocto] yocto x64-linux with bootia32.efi

Knoppix theknoppix at gmail.com
Tue Nov 13 06:52:07 PST 2018


By the way I hope someone will fix this.

On Tue, Nov 13, 2018 at 5:38 PM Knoppix <theknoppix at gmail.com> wrote:

> Thanks a lot. 🙏
>
>
> On Tue, Nov 13, 2018 at 10:42 AM Dimitris Tassopoulos <dimtass at gmail.com>
> wrote:
>
>> That's great news!
>> Glad to help. It's frustrating some times, but I hope that also someone
>> else may come with a better solution.
>>
>> Regarding secureboot, I guess that if you use the same keys, then there
>> shouldn't be any issue. But I haven't use it, so I can't tell from
>> experience.
>>
>> Regards,
>> Dimitris
>>
>> On Tue, 13 Nov 2018, 08:28 Knoppix <theknoppix at gmail.com wrote:
>>
>>> it works!
>>> It copied files to ESP (efi system partition).
>>> I hope it will work with secure boot concept too.
>>>
>>> *Mr. Dimitris *thank you so so much. I *am so glad to you* for your
>>> politeness and help.
>>>
>>> My best compliments..
>>>
>>> On Mon, Nov 12, 2018 at 5:51 PM Dimitris Tassopoulos <dimtass at gmail.com>
>>> wrote:
>>>
>>>> Yeah, I think everybody is pretty busy. This project is huge and there
>>>> aren't many contributors.
>>>>
>>>> Anyway, in case you use wks files, then you can create a file named *test.wks.in
>>>> <http://test.wks.in>* (make sure you add
>>>> the .in at the end). Then add this (or similar depending your image):
>>>>
>>>> bootloader --ptable gpt
>>>> part /boot --source rootfs --rootfs-dir=${IMAGE_ROOTFS}/boot
>>>> --fstype=vfat --ondisk sda --label boot --active --align 1024
>>>> part / --source rootfs --ondisk sda --fstype=ext4 --label root --align
>>>> 1024 --exclude-path boot/
>>>>
>>>> The above will force wic tool not to use the default efi file that
>>>> yocto produces and it will use the content of the /boot
>>>> folder your image creates. Therefore, if you add your custom recipe
>>>> that copies the efi file you want, *but also* the
>>>> the rest of the boot files (like confs) then you can override the
>>>> image-efi and use your custom files from the recipe.
>>>>
>>>> For example, keep a copy of the whole boot folder that you already
>>>> have, then replace the efi file with your
>>>> precompiled and then create a recipe to copy all those files to your
>>>> image's /boot folder.
>>>>
>>>> I think that this may do the trick.
>>>>
>>>> The important keywords in the wks file are the `--rootfs-dir` in the
>>>> /boot part, which means that you force wic
>>>> to use your image's /boot folder. And the `--exclude-path` which forces
>>>> wic tool not to touch your /boot folder.
>>>>
>>>> Best regards,
>>>> Dimitris
>>>>
>>>> On Mon, Nov 12, 2018 at 3:37 PM Knoppix <theknoppix at gmail.com> wrote:
>>>>
>>>>> Yes I did this before I sent this email. First I created x86_32 system
>>>>> and backup boot files. Then i created regular x64 system and move
>>>>> bootia32.efi file to the boot partition. (I did manualy)
>>>>> And yes I'm using wic and I have wks file. (I dont know how can i copy
>>>>> my bootia32.efi to boot partition when yocto has create image)
>>>>>
>>>>> But very soon I should implement secure boot with the system.
>>>>> So I think copy precompilted bootia32.efi will not work with secure
>>>>> system. (I am not sure)
>>>>>
>>>>> By the way this is the first mail which I took any maillist system.
>>>>> I'm so happy to experiment this feeling :) until now nobody answers me.
>>>>> Kind regards.
>>>>>
>>>>> On Mon, Nov 12, 2018 at 5:20 PM Dimitris Tassopoulos <
>>>>> dimtass at gmail.com> wrote:
>>>>>
>>>>>> You're right about the toolchain, this will hit wall, because the
>>>>>> x86_64 will build fail to build the x86 efi.
>>>>>>
>>>>>> Are you using wic and a wks file for your image?
>>>>>>
>>>>>> There might be a way to override the x86_64 efi bootloader with a
>>>>>> pre-compiled one.
>>>>>> If you do, then I may have a solution for you.
>>>>>>
>>>>>> Regards,
>>>>>> Dimitris
>>>>>>
>>>>>> On Mon, Nov 12, 2018 at 2:39 PM Knoppix <theknoppix at gmail.com> wrote:
>>>>>>
>>>>>>> Mr. Tassopoulos
>>>>>>>
>>>>>>> Thank you so much for your answer.
>>>>>>>
>>>>>>> I am trying to do this because my device (atom cpu) has 64bit cpu
>>>>>>> but its efi doesn't support 64. Efi is x86. I learned that ".. The vast
>>>>>>> majority of EFI-based x86-64 computers use 64-bit EFIs and therefore use a
>>>>>>> bootx64.efi default boot loader file. A handful of early Macs and some
>>>>>>> Atom-based tablets have 64-bit CPUs but 32-bit EFIs ..."
>>>>>>> http://www.rodsbooks.com/efi-bootloaders/principles.html
>>>>>>>
>>>>>>> But I dont understand: if my target machine is x86_64 then yocto
>>>>>>> will prepare native/host toolchain to gcc-x64 but when we force to install
>>>>>>> grub as i386 what will happen? yocto will install a second toolchain for
>>>>>>> i386? And also shouldn't grub be x86?
>>>>>>>
>>>>>>> Bye the way, yocto has failed when i try.
>>>>>>>
>>>>>>> *do_mkimage*
>>>>>>> DEBUG: SITE files ['endian-little', 'common-linux', 'common-glibc',
>>>>>>> 'bit-64', 'x86_64-linux', 'common']
>>>>>>> DEBUG: Executing shell function do_mkimage
>>>>>>> *grub-mkimage: error: invalid ELF header.*
>>>>>>> WARNING: exit code 1 from a shell command.
>>>>>>>
>>>>>>>
>>>>>>> Best regards
>>>>>>>
>>>>>>>
>>>>>>> On Mon, Nov 12, 2018 at 11:44 AM Dimitris Tassopoulos <
>>>>>>> dimtass at gmail.com> wrote:
>>>>>>>
>>>>>>>> I don't know about your special case and why this happens, but a
>>>>>>>> simple "hack" it's, depending your bootloader
>>>>>>>> (grub or systemd-boot), to edit a couple of files in poky. I
>>>>>>>> haven't tested this, so I don't know if it really works.
>>>>>>>>
>>>>>>>> For Grub remove in poky/meta/classes/grub-efi.bbclass these
>>>>>>>> if [ "${TARGET_ARCH}" = "x86_64" ]; then
>>>>>>>> GRUB_IMAGE="grub-efi-bootx64.efi"
>>>>>>>> DEST_IMAGE="bootx64.efi"
>>>>>>>> fi
>>>>>>>>
>>>>>>>> For systemd in poky/meta/classes/systemd-boot.bbclass remove these:
>>>>>>>> if [ "${TARGET_ARCH}" = "x86_64" ]; then
>>>>>>>>     EFI_IMAGE="systemd-bootx64.efi"
>>>>>>>>     DEST_EFI_IMAGE="bootx64.efi"
>>>>>>>> fi
>>>>>>>>
>>>>>>>> And then in poky/meta/recipes-bsp/grub/grub-efi_2.02.bb in python
>>>>>>>> __anonymous () enforce the use of:
>>>>>>>> grubtarget = 'i386'
>>>>>>>> grubimage = prefix + "bootia32.efi"
>>>>>>>>
>>>>>>>> As I've told you, this is more hack than proper solution, but if
>>>>>>>> you don't get a better answer at least
>>>>>>>> you can try this.
>>>>>>>>
>>>>>>>> Also have in mind, that if you do that, then you won't be able to
>>>>>>>> pull poky without loosing your
>>>>>>>> changes, so you will have to work with your own branch. That
>>>>>>>> shouldn't be a problem, but you
>>>>>>>> should be aware of that.
>>>>>>>>
>>>>>>>> Regards,
>>>>>>>> Dimitris
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> On Mon, Nov 12, 2018 at 9:28 AM Knoppix <theknoppix at gmail.com>
>>>>>>>> wrote:
>>>>>>>>
>>>>>>>>> I Searched this question on google, stackoverflow but I did not
>>>>>>>>> find.
>>>>>>>>>
>>>>>>>>> I am using DISTRO=poky MACHINE=intel-corei7-64
>>>>>>>>> IMAGE=core-image-x11 sceme.
>>>>>>>>> The machine which I want to install image, doesn’t allow bootx64
>>>>>>>>> but it works when I install x32 efi.
>>>>>>>>> I checked this (I copied first bootia32.efi and then bootx64.efi)
>>>>>>>>> and as I understand my machine has x64 arch but only support x32-efi.
>>>>>>>>>
>>>>>>>>> So how can I build an image which is intel-corei7-64 but has
>>>>>>>>> grup-efi 32 bit?
>>>>>>>>> Would you advice me please to *what should I read to accomplish
>>>>>>>>> and learn *this?
>>>>>>>>> --
>>>>>>>>> _______________________________________________
>>>>>>>>> yocto mailing list
>>>>>>>>> yocto at yoctoproject.org
>>>>>>>>> https://lists.yoctoproject.org/listinfo/yocto
>>>>>>>>>
>>>>>>>>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.yoctoproject.org/pipermail/yocto/attachments/20181113/0b0290cb/attachment-0001.html>


More information about the yocto mailing list