PINE64
Can't boot any operating system other than Fedora after following the nullr0ute guide - Printable Version

+- PINE64 (https://forum.pine64.org)
+-- Forum: Pinebook Pro (https://forum.pine64.org/forumdisplay.php?fid=111)
+--- Forum: Linux on Pinebook Pro (https://forum.pine64.org/forumdisplay.php?fid=114)
+--- Thread: Can't boot any operating system other than Fedora after following the nullr0ute guide (/showthread.php?tid=14566)



Can't boot any operating system other than Fedora after following the nullr0ute guide - TDC_PBP - 08-01-2021

Hello,

Could somebody please help me to boot an operating system on my Pinebook Pro other than Fedora? After following this guide (https://nullr0ute.com/2021/05/fedora-on-the-pinebook-pro/), I successfully installed U-Boot to my PBP's SPI flash. I love Fedora, but I would really like to have the option to boot another OS from MicroSD or USB without having to zero out the SPI flash (and thus rendering my Fedora install unbootable). I really don't know where to begin, so any help would be appreciated!


RE: Can't boot any operating system other than Fedora after following the nullr0ute guide - TangoZuluTango - 10-09-2021

I am using Tow-Boot rather than the Fedora uboot used in nullr0ute[/url]'s guide.



I have not tested this and I don't know enough about uboot to know if it would work on that, maybe it would?




Tow-Boot does work with Fedora, but it's important to note 
these modifications to the EFI system partition are required to get it to boot.



The following installs [url=https://github.com/SvenKiljan/archlinuxarm-pbp]SvenKiljan's ArchLinuxARM on the SD card (/dev/mmcblk1) starting from an existing Fedora install.




So, from the existing install we want to get a viable arch image (in this case we'll use SvenKiljan's) we could install from and then chroot into it.


Code:
curl -OL https://github.com/SvenKiljan/archlinuxarm-pbp/releases/latest/download/ArchLinuxARM-pbp-latest.tar.gz

mkdir /tmp/arch

bsdtar -xpf ArchLinuxARM-pbp-latest.tar.gz -C /tmp/arch

mount --bind /tmp/arch /tmp/arch/
cd /tmp/arch/
\cp /etc/resolv.conf etc
mount -t proc /proc proc
mount --make-rslave --rbind /sys sys
mount --make-rslave --rbind /dev dev
mount --make-rslave --rbind /run run
chroot /tmp/arch/ /bin/bash



Once we are in the arch image we can begin the install as normal. I prefer to use parted, which is not included in this image, so lets grab it.


Code:
pacman-key --init
pacman-key --populate archlinuxarm
pacman-key --populate archlinuxarm-pbp

pacman -S parted


We can then setup the disks as desired, in this case I want to have ArchLinuxARM on an sd card at /dev/mmcblk1 and we will go with a basis UEFI parition scheme with a 100mib /boot/efi parition and everything else as /


Code:
parted -a optimal /dev/mmcblk1
GNU Parted 3.4
Using /dev/mmcblk1
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) mklabel gpt
Warning: The existing disk label on /dev/mmcblk1 will be destroyed and all data on this disk will be lost. Do you want to continue?
Yes/No? Yes
(parted) unit mib
(parted) mkpart primary fat32 1 101
(parted) name 1 esp
(parted) mkpart primary ext4 101 -1
(parted) name 2 rootfs
(parted) set 1 boot on
(parted) quit
Information: You may need to update /etc/fstab.



We can then format the partitions, mount them, and use pacstrap to install ArchLinuxARM.


Code:
mkfs.fat -F 32 -n efi-boot /dev/mmcblk1p1
mkfs.ext4 /dev/mmcblk1p2 -L rootfs

mount /dev/mmcblk1p2 /mnt/
mkdir /mnt/boot
mkdir /mnt/boot/efi
mount /dev/mmcblk1p1 /mnt/boot/efi

pacstrap /mnt base base-devel ap6256-firmware libdrm-pinebookpro linux-manjaro pinebookpro-audio pinebookpro-post-install vim



Now we want to generate the fstab file and chroot into the new system


Code:
genfstab -U /mnt >> /mnt/etc/fstab

arch-chroot /mnt/



Because this is a chroot install from Fedora my fstab file was a bit messed up, so it's probably wise to go in and ensure there's nothing in there that shouldn't be.



Code:
vim /etc/fstab



Following the Arch install guide, we can now setup out localization and I want to ensue I have internet and can login after reboot, so I install dhcpcd and set the root password.


Code:
ln -sf /usr/share/zoneinfo/America/New_York /etc/localtime
hwclock --systohc

vim /etc/locale.gen
locale-gen
vim /etc/locale.conf #LANG=en_US.UTF-8

pacman -S dhcpcd

passwd



Finially, we want to install grub so we can boot.



Code:
pacman -S grub

grub-install --efi-directory=/boot/efi --removable
grub-mkconfig -o /boot/grub/grub.cfg



Grub doesn't seem to correctly detect the install, and I don't really know enough about grub to figure out why so I just edited /boot/grub/grub.cfg and added my own boot entry.


Code:
vim /boot/grub/grub.cfg

### BEGIN /etc/grub.d/10_linux ###
menuentry "Arch Linux Arm" {
  search --label --set=root rootfs
  linux /boot/Image root=/dev/disk/by-label/rootfs console=tty0 rw
  initrd /boot/initramfs-linux.img
}
### END /etc/grub.d/10_linux ###




From here, you should be able to exit both the chroots, unmount everything, and reboot.






This general process can probably be used on other distros.