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
  Boot Order in Pinebook Pro food 12 19,012 05-25-2026, 08:28 AM
Last Post: finmark
  Can’t login to Linux fnosai 0 3,386 07-27-2025, 12:30 AM
Last Post: fnosai
  What's a good image to use now? [tutorial help as well] frank_philip 40 32,406 07-18-2025, 07:28 PM
Last Post: Dendrocalamus64
  PBP does not start from postmarket OS image burnt to sd card zkajdan 21 18,069 03-10-2025, 01:55 PM
Last Post: wdt
  Void Linux: missing firmware from pinebookpro-firmware? remph 0 3,416 12-15-2024, 01:58 PM
Last Post: remph
  Attempting to install Void Linux, boots into a black screen 9a3eedi 1 6,983 09-28-2024, 09:23 AM
Last Post: throwawayforvoid
  Pinebook pro won't boot after bootloader installation jwensouls 4 8,619 08-21-2024, 04:17 AM
Last Post: KC9UDX
  Slackware Linux working on PBP vxzero 0 4,102 06-05-2024, 04:30 PM
Last Post: vxzero
  By the way, yay arch... KC9UDX 4 6,047 03-30-2024, 10:27 PM
Last Post: KC9UDX
  Pinebook Pro upgrading from the factory image yamsoup 12 17,717 02-22-2024, 04:02 PM
Last Post: tllim

Forum Jump:


Users browsing this thread: 1 Guest(s)