Hi - I’m not sure if this is the correct place for this, but I was asked to share details by folks on reddit, so here I am.
I have been able to successfully bootstrap Leap-15.0 on an ODROID-N2 board. In principle, Leap-15.1 should work the same way when an aarch64 version is available, and Tumbleweed should also be okay. I must reiterate that this is not a “clean room” installation; I used the pre-installed version of Ubuntu to help me get to a running openSUSE Leap. Here are the full details and instructions for those who are interested. I would very much like for the N2 to become an officially supported board, but I have neither the skill nor time to get it there, but I’m willing to participate with someone who does.
What I bought (I’m in the US, so from Ameridroid):
ODROID-N2 with 4 GB memory
eMMC module, 128 GB, red dot (Ubuntu pre-installed)
12V/2A supply
black case
Already had:
USB keyboard
USB wireless mouse
HDMI monitor
Ethernet cable
eMMC/micro-SD adapter
micro-SD/SD adapter
desktop has SD card reader/writer
I store stuff in the ODROID-N2 directory under my home directory (i.e. ~/ODROID-N2). I downloaded the Leap rootfs image from http://download.opensuse.org/ports/aarch64/distribution/leap/15.0/appliances/ and stored it there. When I insert the eMMC module in my desktop (via adapters), it comes up as /dev/sdg.
Phase 1 - running stuff on my desktop to modify the eMMC module
First, a backup:
dd if=/dev/sdg of=odroid-n2_ubuntu.img bs=1M
Make temporary mount points in /mnt:
mkdir /mnt/mnt1 /mnt/mnt2
Mount the boot partition on mnt1, then the root partition on mnt2:
mount /dev/sdg1 /mnt/mnt1
mount /dev/sdg2 /mnt/mnt2
Go to root directory and wipe it (BE CAREFUL THAT YOU ARE RUNNING THIS IN THE CORRECT DIRECTORY!)
cd /mnt/mnt2
rm -rf *
Untar the aarch64 Leap here
tar -xJf ~/ODROID-N2/openSUSE-Leap15.0-ARM-JeOS.aarch64-rootfs.aarch64-2018.07.02-Buildlp150.1.1.tar.xz
At this point, I installed the MMC card onto the N2, and it booted using the Ubuntu kernel and the Leap user space
WARNING FOR BELOW!!! - the /boot directory you see at this point (by doing a simple “ls /” is not the directory that the system boots from! This /boot is on /dev/mmcblk0p2. The true boot partition is /dev/mmcblk0p1; we will mount that as /mnt later on.
Phase 2 - modifications when running on the N2 directly. I am logged in as a user and have a working ethernet connection. I store things in a directory called System in my home directory.
Follow the instructions (more or less) for building the kernel at https://wiki.odroid.com/odroid-n2/software/building_kernel. Grab the source and change into it’s directory:
cd System
mkdir kernel
cd kernel
git clone --depth 1 https://github.com/hardkernel/linux.git -b odroidn2-4.9.y
cd linux
Do the compile. Note that this puts the modules into /lib/modules on /dev/mmcblk0p2, exactly where we want them
make odroidn2_defconfig
make -j4
sudo make modules_install
Now mount the true boot partition on /mnt and copy over the kernel image
sudo mount /dev/mmcblk0p1 /mnt
sudo cp -f arch/arm64/boot/Image.gz arch/arm64/boot/dts/amlogic/meson64_odroidn2.dtb /mnt
Copy over the config file since we need it in a minute
sudo cp .config /boot/config-4.9.177+
Next I think we have to rebuild the uInitrd file. I used https://wiki.odroid.com/odroid-xu4/software/building_kernel for guidance, though the tools in openSUSE are vastly different from Ubuntu.
Unfortunately, I seem to have lost the mkimage and dracut commands I used for rebuilding the initramfs file. (They don’t appear in my bash history that I can access at the moment.) I think they were the following:
cd /boot
dracut -H -f /boot/initramfs-4.9.177+.img 4.9.177+
mkimage -A arm -O linux -T ramdisk -C none -a 0 -e 0 -n uInitrd -d /boot/initramfs-4.9.177+.img /boot/uInitrd-4.9.177+.img
*I’ve rerun these and they seem to produce the right outputs, but the final /uInitrd-4.9.177+.img file isn’t quite the same size as the one I produced yesterday. (Very close, however.)
*
Copy the new uInitrd file to the actual boot directory
cp uInitrd-4.9.177+.img /mnt/uInitrd
If you have a look at the /mnt directory which contains the true boot partition with ls -l, you should see a new Image.gz, meson64_odroidn2.dtb, and uIinitrd. Holdovers from the Ubuntu install that are still necessary (I think) are boot.ini and boot.ini.default. I seem to have auto-created edid.bin and display.bin files, but they were not part of the original Ubuntu setup.
I have not tested this extensively yet having just completed all this yesterday, but I have a running xfce desktop, am able to surf the web with Firefox, and have compiled and run the hardinfo benchmarks on it. It’s a very speedy little board; eventually I hope to turn it into a web server and nextcloud host (thus my interest in Leap rather than Tumbleweed).