HCL:Chroot

Jump to: navigation, search

Chroot

openSUSE for ARM can be installed alongside your other OS on any Linux machine, be it x86 or ARM based. This way you can work with openSUSE for ARM on your x86 based workstation. Or you can run it on your Android ARM device. Please make sure to be root for the command snippets below.

First, download the latest (JeOS, E20, GNOME, KDE, LXQT, X11, or XFCE) root file system (*.tar.xz) available at:

  • aarch64
Geeko-white.png
Tumbleweed
http://download.opensuse.org/ports/aarch64/tumbleweed/appliances/
Geeko-white.png
Leap 15.4
http://download.opensuse.org/ports/aarch64/distribution/leap/15.4/appliances/


  • armv7
Geeko-white.png
Tumbleweed
http://download.opensuse.org/ports/armv7hl/tumbleweed/appliances/
Geeko-white.png
Leap 15.4
http://download.opensuse.org/ports/armv7hl/distribution/leap/15.4/appliances/


  • armv6
Geeko-white.png
Tumbleweed
http://download.opensuse.org/ports/armv6hl/tumbleweed/appliances/


# wget http://download.opensuse.org/ports/aarch64/tumbleweed/appliances/openSUSE-Tumbleweed-ARM-JeOS.aarch64-rootfs.aarch64.tar.xz
# mkdir rootfs
# sudo tar xf *.tar.xz -C rootfs

If you are on x86, set up QEMU translation for ARM binaries. You can skip this if you are already on an ARM device:

# zypper in qemu-linux-user
# qemu-binfmt-conf.sh

Prepare the environment:

# mount --bind /proc rootfs/proc
# mount --bind /sys rootfs/sys
# mount --bind /dev rootfs/dev
# mount --bind /dev/pts rootfs/dev/pts
# cp /etc/resolv.conf rootfs/etc/

Copy files necessary for qemu/binfmt emulation into the environment:

# cp /usr/bin/qemu-arm-binfmt rootfs/usr/bin
# cp /usr/bin/qemu-arm rootfs/usr/bin

Chroot into the environment:

# chroot rootfs

You can now run commands like you would on any openSUSE installation, for example:

# zypper ref
# zypper up
# zypper in gcc make SDL-devel

Once you're done, type

# exit

and you're back in your previous filesystem.

Do-it-yourself environment

If you have your own kernel and bootloader, you can follow the steps as above, but instead extract the rootfs tbz file into a real partition on your machine (or on a partition on an SD card). When booting your own kernel, point it to that new partition

 U-Boot 2012.04.01 (Oct 14 2012 - 20:04:42)
 
 CPU:   Some CPU
 Board: Some Board
 DRAM:  n GiB
 Using default environment
 
 In:    serial
 Out:   serial
 Err:   serial
 Hit any key to stop autoboot:  0 
 U-Boot > setenv bootargs root=/dev/mmcblk0p1
 U-Boot > boot

This way you can use your own kernel and bootloader to run an openSUSE distribution!