Convert existing Generic install to Generic EFI?

Great job !

Is there an easy way to convert to EFI and existing installed Manjaro - given that tow-boot is already installed in SPI and some space is available at the beginning of the eMMC for creating a small EFI partition ?

Not that I know of. Easiest would simply be a re-install.

The 2 types of images a so different, that it would be hard work to convert it, if possible, on a “running” system.

Well… Once I’ve configured a machine the way I like it with all my custom config and desired software packages, I’m quite reluctant to reinstall…

Isn’t just this a matter of mounting an EFI partition, install boot files and an EFI bootloader the same way the Manjaro installer would ?

You also need to change all the configs that looks for boot, install and configure Grub correctly and, if you want the added benefit of multiple kernels, change out the kernel to a new package.

Well I’d love to try if you can point me to the packages I need to install…

One thing I love most on Manjaro is the multipe kernels management and ARM Manjaro lacked it so far, so if you tell me that the EFI install will allow me to manage multiple kernels on ARM, I will definitely want it :wink:

I have no garantee that this will work, but you will need the following packages in addition to what you already have:

efibootmgr
grub
boot-generic-efi
generic-efi-post-install

and then when it’s all setup and working, you can install either linux515, linux519 and/or linux60.

How you convert your partition without messing anything up, is out of my knowledge.

That’s great thanks !
I’m used to play with EFI on x86_64 and I have some 32 MB free space in the beginning of my eMMC since I installed tow-boot to SPI, so I think this space might be used for a small EFI partition big enough to contain grub.

il will give it a shot as soon as I have some time to.

Hi,

I’m wondering where are the dtb files on an EFI install ? I can’t find them booting on the EFI media.

Aren’t they necessary when in EFI mode ?

No.

As I understand it, the dtb is provided by the board firmware, like u-boot, tow-boot or edk2. Just like on x86_64.

Well, that’s good news, it will much simplify the installation and make it much more x86-like :slight_smile:

I hope so. It’s the whole point of making those images.

https://unix.stackexchange.com/questions/557325/how-to-convert-an-arch-linux-system-from-bios-to-uefi

I hope these help

While that might work for x86_64 systems, ARM systems do have some additional stuff to be aware off. :slight_smile:

I succeeded rather easily, here is the complete recipe here :

Pinebook Pro conversion from standard boot to EFI boot :

Prerequisites :

  • Tow-boot MUST be installed in the Pinebook Pro SPI flash

  • Boot from a Manjaro EFI installer SD card (if it works it means that tow-boot is properly installed)

  • Cancel Manjaro installer when it starts.

  • Fix keyboard configuration to your language using KDE configuration, if necessary.

  • Connect to your Wi-Fi network

EFI Partition preparation :

Install KDE partitions manager (or use gdisk in command line or any similar tool)

In the “unused” first 32 MB of the eMMC (factory containing the u-boot bootloader), create an EFI Partition.

  • FS type should bet FAT16
  • Identified as EFI Partition :
    – If using KDE partitions manager, set the “BOOT” flag ;
    – Or if using disk, set the partition type to EF00 ;
    – You may want to use SYSTEM as partition name and FS label but this is not mandatory.

Mount your existing eMMC root filesystem :

Example given for a LUKS encrypted BTRFS root FS, if not encrypted just skip the “cryptsetup” step.
If not BTRFS use your proper filesystem type and mount options.

Outside chroot

sudo -i

mkdir /hd
ll /dev/disk/by-uuid/
lrwxrwxrwx 1 root root 15 Oct 21 00:57 13911111-222-333333333-4444444444444 → …/…/mmcblk0p3

cryptsetup luksOpen --allow-discards /dev/disk/by-uuid/13911111-222-333333333-4444444444444 luks-13911111-222-333333333-4444444444444
Enter passphrase for /dev/mmcblk0p2:

mount -t btrfs -o subvol=@,ssd,noatime /dev/mapper/luks-13911111-222-333333333-4444444444444 /hd
mount --bind /dev /hd/dev
mount --bind /proc /hd/proc
mount --bind /sys /hd/sys

Then chroot into the mounted filesystem :

chroot /hd

cd /etc

(You need a valid resolv.conf for fetching packages from the repos)

cat >> resolv.conf
nameserver 8.8.8.8
nameserver 8.8.4.4

[Ctrl]-D to end

vim fstab

(Add into fstab an entry for mounting your EFI partition at /boot/efi)

mount /boot
mkdir /boot/efi
mount /boot/efi

Remove your existing non-EFI Linux kernel package (with dtbs etc) :

pacman -Rsn linux

Install required packages :

pacman -S efibootmgr boot-generic-efi grub generic-efi-post-install linux60 linux60-headers

Install grub :

❯ grub-install
Installing for arm64-efi platform.
EFI variables are not supported on this system.
EFI variables are not supported on this system.
grub-install: error: efibootmgr failed to register the boot entry: No such file or directory.

Configure grub by copying the appropriate parameters from your existing /boot/extlinux/extlinux.conf into /etc/default/grub.

Example if you had in /boot/extlinux/extlinux.conf :
APPEND initrd=/initramfs-linux.img root=UUID=45911111-222-333333333-4444444444444 rw rootflags=subvol=@,noatime,commit=60 rootwait audit=0 splash plymouth.ignore-serial-consoles

Then you should put into /etc/default/grub :
GRUB_CMDLINE_LINUX=“rw rootflags=subvol=@,noatime,commit=60 rootwait”
GRUB_CMDLINE_LINUX_DEFAULT=“audit=0 splash plymouth.ignore-serial-consoles”

cd /etc/default/
vim grub

Create grub configuration files :

update-grub

Change Grub EFI installation filenames :

gru-install installed a /boot/efi/EFI/manjaro/grubaa64.efi, but tow-boot will not find it with this name, so you should either move or copy :
/boot/efi/EFI/manjaro/grubaa64.efi
to
/boot/efi/EFI/BOOT/BOOTAA64.EFI

Done !

cd /
umount /boot/efi /boot /sys /proc /dev
exit
umount /hd

Turn the system off, remove the SD card, boot !

1 Like

This topic was automatically closed 2 days after the last reply. New replies are no longer allowed.