[arch-general] [Archboot] Custom created Archboot ISO won't boot on qemu OVMF EFI
Greetings Archboot Developers! (@tpowa) I am experimenting with manual Arch Boot creation. I created both x86_64 and i686 chroot with only base and archboot installed. I configured my locale by commenting 'en_US-UTF-8' line on /etc/locale.conf and launched 'locale-gen' to generate locale. Then I launched 'archboot-allinone.sh -t' on both chroot, which tooks a very long time. I moved the 'core-i686.tar' to x86_64 systemd-nspawn chroot. After that, I launched 'archboot-allinone.sh -g' which generates the images. I have successfully built the iso files, here are files generated from the build [code] # cd /var/local/x86_64_archboot/root # ls Archlinux-allinone-2016.07-dual.iso Archlinux-allinone-2016.07-x86_64-network.iso Archlinux-allinone-2016.07-dual-network.iso Archlinux-allinone-2016.07-x86_64-uefi.iso Archlinux-allinone-2016.07-dual-uefi-network.iso Archlinux-allinone-2016.07-x86_64-uefi-network.iso Archlinux-allinone-2016.07-i686.iso core-i686.tar Archlinux-allinone-2016.07-i686-network.iso core-x86_64.tar Archlinux-allinone-2016.07-x86_64.iso sha256sums.txt [/code] The non-uefi files boot fine with qemu-system-x86_64 bios mode (default mode). When I try to boot one of uefi iso, for example 'Archlinux-allinone-2016.07-x86_64-uefi-network.iso', using qemu-system-x86_64 with ovmf uefi firmware (-bios /usr/share/ovmf/ovmf_x86_64.bin), the qemu just refuses to boot. Launching EFI boot file directly on FS0:\EFI\grub\grubx64.efi comes up with 'error: unknown filesystem' and throws a rescue shell. 'lsmod' commands which should output all loaded modules throws 'unknown command'. I think grubx64.efi should be packed as standalone EFI image which contains all modules and grub.cfg loaded directly from memory. Launching EFI boot file FS0:\EFI\BOOT\BOOTX64.EFI throws 'Unsupported' error. Launching kernel directly from EFI shell is also unsupported. The default Arch Linux kernel as far as I know can be launched from EFI shell. Maybe this is because Archboot uses a non uefi stub kernel? Launching FS0:\EFI\BOOT\loader.efi just throw a menu 'EFI Default Loader' and 'Reboot Into Firmware Interface'. This bootloader is similar to systemd-boot loader, but it's not able to find the other boot entries because there is no files on FS0:\loader\entries. I did not make any modification to the archboot profiles. Is manual workaround needed to enable EFI booting on Archboot? Is it just bug on archboot-uefi-cd.sh script? Note: The system I used to create archboot image boots from legacy bios mode. Thanks.
I also noticed that the x86_64 tarball is smaller than i686 tarball # du -sh core-x86_64.tar core-i686.tar 211M core-x86_64.tar 601M core-i686.tar # du -sh *.iso 661M Archlinux-allinone-2016.07-dual.iso 262M Archlinux-allinone-2016.07-dual-network.iso 266M Archlinux-allinone-2016.07-dual-uefi-network.iso 531M Archlinux-allinone-2016.07-i686.iso 142M Archlinux-allinone-2016.07-i686-network.iso 190M Archlinux-allinone-2016.07-x86_64.iso 135M Archlinux-allinone-2016.07-x86_64-network.iso 184M Archlinux-allinone-2016.07-x86_64-uefi.iso 140M Archlinux-allinone-2016.07-x86_64-uefi-network.iso What am I doing wrong here?
After 'having fun' with archboot, I finally got it working on both UEFI and BIOS. Just make sure that x86_64 and i686 archboot systemd container have proper package cache. This can be achieved by bind mounting host package cache '/var/cache/pacman/pkg' to chroot package cache. Also make sure that /tmp in which archboot-allinone.sh -g performed is large enough to hold image creation, at least 4GB. However, a very serious problem occured. The resulting Archboot dual iso doesn't properly contain all packages needed for installation. The most notable is 'libnftl'. 'systemd' (core) depends on iptables (core). 'iptables' can't be installed because 'libnftl' is missing (extra). This is serious problem that prevented archboot development for about two months. I know that 'archboot' only contains 'core' repository. As temporary solution, 'libnftl' should be added as 'SUPPORT_ADDITION' in archboot-svn.sh, so that users will be able to get a working installation by using only the 'archboot' image. I strongly suggest to move 'libnftl' to core repository to prevent this problem i.e. 'base' can't be installed without access to extra repository.
On Sun, Jul 17, 2016 at 05:16:50AM +0000, Alive 4ever wrote:
After 'having fun' with archboot, I finally got it working on both UEFI and BIOS. Just make sure that x86_64 and i686 archboot systemd container have proper package cache. This can be achieved by bind mounting host package cache '/var/cache/pacman/pkg' to chroot package cache. Also make sure that /tmp in which archboot-allinone.sh -g performed is large enough to hold image creation, at least 4GB.
However, a very serious problem occured. The resulting Archboot dual iso doesn't properly contain all packages needed for installation. The most notable is 'libnftl'. 'systemd' (core) depends on iptables (core). 'iptables' can't be installed because 'libnftl' is missing (extra). This is serious problem that prevented archboot development for about two months.
I know that 'archboot' only contains 'core' repository. As temporary solution, 'libnftl' should be added as 'SUPPORT_ADDITION' in archboot-svn.sh, so that users will be able to get a working installation by using only the 'archboot' image.
I strongly suggest to move 'libnftl' to core repository to prevent this problem i.e. 'base' can't be installed without access to extra repository.
I mean 'libnftnl' library, which is also depends on 'libmnl'. These two packages (libnftnl and libmnl) should be moved to core repository.
I'll look at it soon. This happens if package depends change in core. greetings tpowa 2016-07-17 7:23 GMT+02:00 Alive 4ever <alive4ever@live.com>:
On Sun, Jul 17, 2016 at 05:16:50AM +0000, Alive 4ever wrote:
After 'having fun' with archboot, I finally got it working on both UEFI and BIOS. Just make sure that x86_64 and i686 archboot systemd container have proper package cache. This can be achieved by bind mounting host package cache '/var/cache/pacman/pkg' to chroot package cache. Also make sure that /tmp in which archboot-allinone.sh -g performed is large enough to hold image creation, at least 4GB.
However, a very serious problem occured. The resulting Archboot dual iso doesn't properly contain all packages needed for installation. The most notable is 'libnftl'. 'systemd' (core) depends on iptables (core). 'iptables' can't be installed because 'libnftl' is missing (extra). This is serious problem that prevented archboot development for about two months.
I know that 'archboot' only contains 'core' repository. As temporary solution, 'libnftl' should be added as 'SUPPORT_ADDITION' in archboot-svn.sh, so that users will be able to get a working installation by using only the 'archboot' image.
I strongly suggest to move 'libnftl' to core repository to prevent this problem i.e. 'base' can't be installed without access to extra repository.
I mean 'libnftnl' library, which is also depends on 'libmnl'.
These two packages (libnftnl and libmnl) should be moved to core repository.
-- Tobias Powalowski Archlinux Developer & Package Maintainer (tpowa) http://www.archlinux.org tpowa@archlinux.org
participants (2)
-
Alive 4ever
-
Tobias Powalowski