As many other wich are having immense trouble installing a all 64Bit Distro (Manjaro in this case) onto a machine with 32Bit EFI , 64Bit CPU (ideapad 100s in this case) I read through all kind of threads on how to get it to work and still my system wouldn’t boot with any presented fixes.
Because I knew grub has the ability to boot out of the prompt line (accessible by pressing “c” in the option list) I started trying to boot manually from an Manjaro ISO, copied on an ext4 formatted USB with the right labelling. I eventually got into the boot process of manjaro, to be greeted with errors while mounting some loops. After unsuccessfully trying to get it work on the last bit, I finally found an interesting article, that made it possible to boot the unchanged 64Bit Manjaro ISO very straight forward. Here I want to present my solution to all of you thriving for an end of misery. I hope it will work for all Intel Atom / Baytrayl Architecture systems ! Please give feedback after you tried, the more the better !
The core point is that you can boot .iso files out of a build-in harddrive or USB using grub. I found this solution by reading the following article created by @Chrysostomus :
[HowTo] Booting manjaro iso directly with grub
As well as the article of @gohlip :
Booting Manjaro iso using grub2 - Tutorials - Manjaro Linux Forum
Big thanks to both.
In this solution we will have to install a 32bit Linux Distribution in order to boot up the Live Install Manjaro ISO. We do so, to get a working grub install on the system. If you already have a working Linux Distribution on your system (either 32 or 64bit), you won't have to install a 32bit system and can try Option 1 first and skip the 32bit install part.
Installing a 32bit Distro first, just to boot up the ISO in both Options is quite a bit of work, so I would recommend you to try the following method, before using this guide. The article is a bit outdated and sadly didn't work out for me, but there are still reports that it worked on some systems :
How to install Manjaro on a 32 bit efi / 64 bit cpu system - Tutorials - Manjaro Linux Forum
This step by step guide is parted in two sections. The first one will describe booting out of an USB-Stick (no boot-stick, just the ISO file copied on) and the second one booting the ISO out of a separate ext4 partition on your internal drive (3 to 4 GB).
Option 1: Booting out of USB
Pro / Con s
- + You dont need to create an separate partition on your harddrive. Comes handy if you have limited disk space
Preparation
- 4+ GB USB-Stick (formatted in FAT32 or Ext4 if necessary)
- Downloaded Manjaro ISO of choice
- Boot-Stick of the 32bit Linux Disrto of choice (Debian in my case)
Note: After installing the 32Bit Linux Distribution, you can use gparted
and format the boot-stick of said Distro with a GPT-Partitiontable and one main FAT32 or ext4 partition for further use, instead of preparing an unused stick as said in point one.
Guide
- Install the 32bit Distro according to the official documentation of the distribution
You already can do manual partitioning of your harddrive in this install and use the partitions later for your finished Manjaro system. - Boot into the finished 32bit Linux system and create the following menuentry for grub
Open a terminal on your device and do:~$ sudo nano /boot/grub/custom.cfg
- If this file doesn’t already exist, it will be created after you save the changes
- You can use any editor of choice instead of
nano
- There is no need to do a
grub-update
as it is not touched by it.
Add the following entry to the file :
menuentry "Manjaro 32bit UEFI Boot" { set isofile="/miso/manjaro-xxxxxxxx-x86_64.iso" set dri="free" set lang="en_US" set keytable="en" set timezone="Europe/Berlin" search --no-floppy -f --set=root $isofile probe -u $root --set=abc set pqr="/dev/disk/by-uuid/$abc" loopback loop $isofile linux (loop)/boot/vmlinuz-x86_64 img_dev=$pqr img_loop=$isofile driver=$dri tz=$timezone lang=$lang keytable=$keytable initrd (loop)/boot/intel_ucode.img (loop)/boot/initramfs-x86_64.img }
- Replace
manjaro-xxxxxxxx-x86_64.iso
with the actual name of your .iso file. - replace
intel_ucode.img
withamd_ucode.img
if you have an AMD CPU - replace the language
“en_US”
, keytable“en”
and timezone“Europe/Berlin”
arguments as you need it
- Create a new directory
miso/
on your USB-Stick and copy themanjaro-xxxxxxxx-x86_64.iso
into the new directory
On a Linux terminal do the following:~$ sudo mkdir /path/to/USB-Name/miso ~$ sudo mv /path/to/manjaro-xxxxxxxx-x86_64.iso /path/to/USB-Name/miso
- Replace
/path/to/
with the actual directory path to the files or directories needed - Replace
USB-Name/
with the actual devicename of your USB-Stick
- Replace
- Reboot your 32Bit EFI device with the plugged in USB-Stick into grub menu and choose the entry "Manjaro 32Bit UEFI Boot"
Your machine should now boot up into the 64Bit Manjaro live install.
To get into grub menu pressesc
repeatedly while your machine is booting.
Option 2: Booting out of internal drive
Pro / Con s
- + You will have an always ready to boot fallback system to your hand (especially after booting 64Bit ISOs is highly problematic with 32Bit EFI Systems)
- + Can be used for rescue work with
chroot
without external boot-stick - -- You will have to sacrifice 3 to 4 GB capacity of your internal drive for an ISO-partition, wich can be much since many 32Bit EFI , 64Bit CPU devices are Netbooks or Tablets
Preparation
- Downloaded Manjaro ISO of choice
- Boot-Stick of the 32bit Linux Disrto of choice (Debian in my case)
Note: You can download the latest Manjaro version of choice after installing the 32Bit Linux Distribution, directly on said Distibution after booting in.
Guide
- Install the 32bit Distro according to the official documentation of the distribution with manual partitioning and create an additional 3 to 4 GB ext4 partition
This Partition will only hold the latest Manjaro ISO file and is therefore not of much more use. The Manjaro ISO file is 2.9GB at this date, so decide on your own about the partition size (ISO might get bigger in the future ?). You don't have to set a mounting point in the installer, but you can give the label "ISO" to the partition, wich will help us identifying it later. - Boot into the finished 32bit Linux system and create the following menuentry for grub
Open a terminal on your device and do:~$ sudo nano /boot/grub/custom.cfg
- If this file doesn’t already exist, it will be created after you save the changes
- You can use any editor of choice instead of
nano
- There is no need to do a
grub-update
as it is not touched by it.
Add the following entry to the file :
menuentry "Manjaro 32bit UEFI Boot" { set isofile="/miso/manjaro-xxxxxxxx-x86_64.iso" set dri="free" set lang="en_US" set keytable="en" set timezone="Europe/Berlin" search --no-floppy -f --set=root $isofile probe -u $root --set=abc set pqr="/dev/disk/by-uuid/$abc" loopback loop $isofile linux (loop)/boot/vmlinuz-x86_64 img_dev=$pqr img_loop=$isofile driver=$dri tz=$timezone lang=$lang keytable=$keytable initrd (loop)/boot/intel_ucode.img (loop)/boot/initramfs-x86_64.img }
- Replace
Manjaro-xxxxxxxx-x86_64.iso
with the actual name of your .iso file. - replace
intel_ucode.img
withamd_ucode.img
if you have an AMD CPU - replace the language
“en_US”
, keytable“en”
and timezone“Europe/Berlin”
arguments as you need it
- Create a new directory
miso/
on your ISO-Partition and copy themanjaro-xxxxxxxx-x86_64.iso
into the new directory
We have to mount the ISO-Partition before we can gain access to it.
Open a new Terminal on your system and do:~$ lsblk -fs NAME FSTYPE FSVER LABEL UUID FSAVAIL FSUSE% MOUNTPOINTS mmcblk1p1 vfat FAT32 EFI xxxxxxxx 510,3M 0% /boot/efi └─mmcblk1 mmcblk1p2 swap 1 SWAP xxxxxxxx [SWAP] └─mmcblk1 mmcblk1p3 ext4 1.0 ISO xxxxxxxx └─mmcblk1 mmcblk1p4 ext4 1.0 xxxxxxxx 10,7G 42% / └─mmcblk1
Look out for the “ISO” label and check if your partition is mounted.
- If the ISO-Partition is already mounted, do:
~$ sudo mkdir /path/to/mountpoint/miso ~$ sudo mv /path/to/manjaro-xxxxxxxx-x86_64.iso /path/to/mountpoint/miso
- Replace
/path/to/
with the actual directory path to the files or directories needed - Replace
mountpoint/
with the actual directory, the ISO-Partition is mounted to
- Replace
- If the ISO-Partition has no listed mountpoint yet, do:
~$ sudo mount /dev/mmcblk1p3 /mnt/ ~$ sudo mkdir /mnt/miso ~$ sudo mv /path/to/manjaro-xxxxxxxx-x86_64.iso /mnt/miso/
- Replace
mmcblk1p3
with the actual device name of your ISO-Partition
- Replace
- If the ISO-Partition is already mounted, do:
- Reboot your 32Bit EFI device with the plugged in USB-Stick into grub menu and choose the entry "Manjaro 32Bit UEFI Boot"
Your machine should now boot up into the 64Bit Manjaro live install.
To get into grub menu pressesc
repeatedly while your machine is booting.
Note for Manjaro 64Bit Install:
You can use the standard installercalamares
without the need to specify the efi and grub configurations. After the installer finishes, you are able to boot, since Manjaro is supporting 32Bit EFi boot (but sadly only post-installation).
Please notify me, if I did write any mistakes or if you come across flaws using this method ! Thanks and best regards.