Discussion:
[yocto] yocto x64-linux with bootia32.efi
Knoppix
2018-11-12 08:28:12 UTC
Permalink
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?
Dimitris Tassopoulos
2018-11-13 07:42:27 UTC
Permalink
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
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..
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
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
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.
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
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 <
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
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
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
Post by Knoppix
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
https://lists.yoctoproject.org/listinfo/yocto
Knoppix
2018-11-13 14:38:39 UTC
Permalink
Thanks a lot. 🙏
Post by Dimitris Tassopoulos
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
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..
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
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
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.
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
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 <
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
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
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
Post by Knoppix
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
https://lists.yoctoproject.org/listinfo/yocto
Knoppix
2018-11-13 14:52:07 UTC
Permalink
By the way I hope someone will fix this.
Post by Knoppix
Thanks a lot. 🙏
Post by Dimitris Tassopoulos
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
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..
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
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
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 <
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
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 <
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
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
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
Post by Knoppix
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
https://lists.yoctoproject.org/listinfo/yocto
Loading...