The core of isthmus is a portable shell script called eid. eid is works with bash, dash, busybox' default shell ash and hopefully more.
Copy and paste the following in a terminal, to create an isthmus working dir, and get a list of eid commands:
mkdir isthmus
cd isthmus
wget http://eid.cool/eid
chmod a+x eid
./eid
$ ./eid
eid - arch: i486
Usage: eid
Available commands:
add <package(s)> - add new package to i486/
del <package(s)> - remove package from i486/
info <package(s)> - get information about package
files <package> - list files installed by a package
rebuild [package(s)] - rebuild package from source for i486
or no argument to build all installed
recipes in build order
help <command> - get help for a specific command
list - list packages
search - search for a pattern in description, title or
installed file paths
update - update the collection of recipes
installed - compact list of packages installed on i486/
build <package|file> - build package for a recipie
log <package> - examine/monitor building log of package
arch - query or set architecture used, a query shows
current and lists available architectures
update-server-info - compact db and generate sha256sums for static/
http sharing
generate <image> - generate a filesystem image
shell - open a shell in /i486/
Running eid this way, it is a platform builder.
You can also start a shell, which has the side effect of installing the neccesary packages rootfs, busybox and musl.
./eid shell
From within the shell you are operating in an isolated from scratch target filesystem, invoking eid now and it is the package manager - but now using the eid insharing most commands with how it acts as a platform builder.
~ $ eid info musl
musl 1.1.4 compact libc for linux
url: http://www.etalabs.net/musl/releases/musl-1.1.4.tar.gz
license: MIT
status: installed
recipe: 28868323ee48b573d7d9678efefe0ee443562e49cbfc6f2c8fe586431cfc9a3f
binary: 3a0915b51005ea011cfa2aa4a79fabec743c2cee5294bcfc8b06d5e00da52505
compressed: 757kb uncompressed: 2730kb
deps: *rootfs *musl
build deps:*rootfs *musl
~ $ eid info mc
mc 4.8.14
url: http://ftp.midnight-commander.org/mc-4.8.14.tar.xz
status: available
recipe: 7883ce64a963f6e48af6758152f7e5748a9ce3e7b4d8865cff6aa3daf2de1b84
binary: 4e0a3bca464d37d9aed97af586e64570726a1534b7f4be3192da6a4c0178bb6c
deps: -zlib -gettext -libffi -glib *rootfs *musl -ncurses -mc
build deps:-zlib -gettext -libffi -glib -linux-headers *busybox -make -binutils -gcc -toolchain *rootfs *musl -ncurses -mc
It might be as easy as:
./eid arch arm
./eid shell
And you could be dropped into an arm environment living in the arm folder.
The most tested way is on 64bit debian hosts, further adaptations might be needed on other systems. Install qemu-user-binfmt and qemu-user. Build and install qemu in a i486 architecture for isthmus. Generate rootfs for arm, that should end up containing a qemu binary; that the systems binfmt suport has rigged up the right paths for. Using binary packages, the requirement of the i486 build-dep might be a hurdle most do not need to go through.
The corresponding qemu-user binfmts must be registered and the running kernel must have the binfmt-misc module. A missing feature in eid is making use of distcc or similar means of using cross compilers external to the jail to accelerate builds.