Cant boot into home-rolled Arch Linux image
#1
As a learning experience, I've been trying to roll my own Arch Linux image. I've been cobbling together bits and pieces from the following locations while adding some bits of my own:
  1. anarsoul's build scripts
  2. Blutkoete's manual setup
  3. hku2's manual setup
  4. enospc's mostly upstream uboot
Below is a copy of my image building script. My issue is, after writing the image to my SD card and rebooting, my pinebook pro boots into debian on the eMMC. I figure I must be missing some important component to the boot process on ARM but I have no idea what that is. Since the pinebook boots into debian without showing me any sort of error message, I don't know how to debug this. Does anyone see what I am missing, or does anyone know how to get some more info out of the pinebook during boot?


Code:
#!/usr/bin/env bash
set -x
set -euo pipefail
IFS=$'\n\t'
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"

# Manual Steps
##############
#
# Install dirmngr
#
# trust arch linux arm key
# gpg --recv-keys 68B3537F39A313B3E574D06777193F152BDBE6A6

WORKSPACE=$(mktemp -d -t "arch-pinebook-pro-build-XXXXXXX")
cleanup() {
   if [ -d "$MOUNT" ]; then
       umount -R "$MOUNT" || true
   fi

   if [ -z "$LOOP_DEVICE" ]; then
       losetup -d "$LOOP_DEVICE"
   fi

if [ -d "$WORKSPACE" ]; then
rm -rf "$WORKSPACE"
fi
}
trap cleanup EXIT

DOWNLOADS="$WORKSPACE/downloads"
mkdir -p "$DOWNLOADS"
ROOT="$WORKSPACE/root"
mkdir -p "$ROOT"
MOUNT="$WORKSPACE/mount"
mkdir -p "$MOUNT"
IMAGE_FILE="$WORKSPACE/archlinux.img"
IMAGE_SIZE="$(( 1024*1024*1024*6 ))" # bytes

archroot() {
   CHROOT="$1"
   shift 1
   CMD="$@"
   mount -o bind /tmp "$CHROOT/tmp"
   mount -o bind /dev "$CHROOT/dev"
   chroot "$CHROOT" mount -t proc proc /proc
   chroot "$CHROOT" mount -t sysfs sys /sys
   chroot "$CHROOT" "$CMD"
   chroot "$CHROOT" umount /sys
   chroot "$CHROOT" umount /proc
   umount "$CHROOT/dev"
   umount "$CHROOT/tmp"
}

wget -O "$DOWNLOADS/base.tar.gz.sig" http://os.archlinuxarm.org/os/ArchLinuxARM-aarch64-latest.tar.gz.sig
wget -O "$DOWNLOADS/base.tar.gz" http://os.archlinuxarm.org/os/ArchLinuxARM-aarch64-latest.tar.gz
gpg --verify "$DOWNLOADS/base.tar.gz.sig" "$DOWNLOADS/base.tar.gz"

# Disk positions (in bytes)
sector_size=512
boot_start=$((1024*1024*20))
boot_size=$((1024*1024*1024*1))
main_start=$((boot_start + boot_size + sector_size))


dd if=/dev/zero of="$IMAGE_FILE" bs=1 count=0 seek=$IMAGE_SIZE

fdisk "$IMAGE_FILE" <<EOF
o
n
p
1
$((boot_start/sector_size))
+$((boot_size/sector_size))
t
c
n
p
2
$((main_start/sector_size))

t
2
83
a
2
w
EOF

LOOP_DEVICE=$(losetup -f)
losetup -P $LOOP_DEVICE $IMAGE_FILE

dd if="$DIR/idbloader.img" of=$LOOP_DEVICE seek=64 conv=notrunc
dd if="$DIR/u-boot.itb" of=$LOOP_DEVICE seek=16384 conv=notrunc

mkfs.vfat -n BOOT -F32 ${LOOP_DEVICE}p1
mkfs.ext4 -L ARCH ${LOOP_DEVICE}p2

mount ${LOOP_DEVICE}p2 "$MOUNT"
mkdir "$MOUNT/boot"
mount ${LOOP_DEVICE}p1 "$MOUNT/boot"

# bsdtar too old on base pinebook install
#bsdtar -xpf "$DOWNLOADS/base.tar.gz" -C "$MOUNT"
tar -xpf "$DOWNLOADS/base.tar.gz" -C "$MOUNT"
# no genfstab on base pinebook install, do in chroot instead
# genfstab -U "$MOUNT" >> "$MOUNT/etc/fstab"
mv "$MOUNT/etc/resolv.conf" "$MOUNT/etc/resolv.conf.bak"
cp /etc/resolv.conf "$MOUNT/etc/resolv.conf"

cat > "$MOUNT/chroot_commands" <<EOF
#!/usr/bin/env bash
set -x
set -euo pipefail
IFS=$'\n\t'

pacman-key --init
pacman-key --populate archlinuxarm
killall -KILL gpg-agent
pacman -Syu --noconfirm
# wget to fetch manjaro packages
# arch-install-scripts for genfstab
pacman -S --noconfirm wget arch-install-scripts


mkdir /manjaro_packages
pushd .
cd /manjaro_packages
wget "http://ftp-nyc.osuosl.org/pub/manjaro-arm/repo/stable/aarch64/core/linux-pinebookpro-5.5.0-3-aarch64.pkg.tar.xz"
wget "http://ftp-nyc.osuosl.org/pub/manjaro-arm/repo/stable/aarch64/core/uboot-pinebookpro-2020.01-4-aarch64.pkg.tar.xz"
wget "http://ftp-nyc.osuosl.org/pub/manjaro-arm/repo/stable/aarch64/community/pinebookpro-post-install-20200203-1-any.pkg.tar.xz"
wget "http://ftp-nyc.osuosl.org/pub/manjaro-arm/repo/stable/aarch64/community/ap6256-firmware-2020.01-1-aarch64.pkg.tar.xz"

pacman -U linux-pinebookpro-5.5.0-3-aarch64.pkg.tar.xz
pacman -U uboot-pinebookpro-2020.01-4-aarch64.pkg.tar.xz
pacman -U pinebookpro-post-install-20200203-1-any.pkg.tar.xz
pacman -U ap6256-firmware-2020.01-1-aarch64.pkg.tar.xz
popd

genfstab -U / >> /etc/fstab

# clean up
#yes | pacman -Scc
EOF
chmod +x "$MOUNT/chroot_commands"
archroot "$MOUNT" "/chroot_commands"
rm "$MOUNT/chroot_commands"
mv "$MOUNT/etc/resolv.conf.bak" "$MOUNT/etc/resolv.conf"

sync
umount -R "$MOUNT"
losetup -d "$LOOP_DEVICE"

cp $IMAGE_FILE "$DIR/archlinux.img"

Its worth noting that when I write the official manjaro image to the SD card, it does boot that successfully.
#2
Anarsoul only release Pinebook build and not aware he has make one for Pinebook Pro. My takes you are using wrong build.
#3
Thanks for replying, but I am not using his image. That list was a set of sources where I'm pulling information from. The image I'm generating is from my own script which I pasted above. In the script, I install the manjaro kernel for the pinebook pro and my uboot image is from a blog post for building uboot specifically for the pinebook pro. Is there another machine-specific part of the boot process that I'm missing?
#4
You have root on a different partition than boot, so you need to modify /boot/boot.txt and run mkscr. You may also need to modify mkinitcpio.conf
This has helped me:
https://github.com/lsfxz/pinebookpro-thi...aster/luks
#5
Ah thank you! As a temporary measure to test this, I moved everything down to 1 partition which worked. Now I just need to learn how to properly modify boot.txt for multiple paritions, but now that I have a working state to iterate from, that should be much easier. I'll have a look at that github repo.


Possibly Related Threads…
Thread Author Replies Views Last Post
  What's a good image to use now? [tutorial help as well] frank_philip 3 76 Today, 08:29 AM
Last Post: Sb2024
  Void Linux: missing firmware from pinebookpro-firmware? remph 0 39 12-15-2024, 01:58 PM
Last Post: remph
  Attempting to install Void Linux, boots into a black screen 9a3eedi 1 1,275 09-28-2024, 09:23 AM
Last Post: throwawayforvoid
  Pinebook pro won't boot after bootloader installation jwensouls 4 1,104 08-21-2024, 04:17 AM
Last Post: KC9UDX
  Slackware Linux working on PBP vxzero 0 655 06-05-2024, 04:30 PM
Last Post: vxzero
  By the way, yay arch... KC9UDX 4 1,709 03-30-2024, 10:27 PM
Last Post: KC9UDX
  Pinebook Pro upgrading from the factory image yamsoup 12 4,550 02-22-2024, 04:02 PM
Last Post: tllim
  Need Help Recovering Manjaro /boot Contents on Pinebook Pro calinb 6 3,635 12-11-2023, 03:47 AM
Last Post: calinb
  Boot Order in Pinebook Pro food 8 2,922 11-23-2023, 07:37 AM
Last Post: KC9UDX
  [Manjaro] u-boot won't boot from eMMC with (unbootable) SD card present zackw 1 2,539 08-21-2023, 09:08 PM
Last Post: vanessadonald

Forum Jump:


Users browsing this thread: 1 Guest(s)