Getting Started, Aboriginal 1.2.0.x
This file is taken out of the 'aboriginal-project-1.2.0.2' tarball
You must first read the introduction, at readme.htm
You must be running an x86_64 host Linux distribution. In a
nutshell, what you will do is copy the 'rootfs-1.2.0.x-amd64.tar.gz'
file into folder 'work', expand it, chroot into it, and then be able to
compile source packages linked against uClibc.
There are two aspects to this:
- After chrooting into folder 'rootfs-1.2.0.x', you will
then be able to compile packages, such as busybox, e2fsprogs, etc., and
create static utilities.
- Compile 'aboriginal-1.2.0.x', the source code of
Aboriginal Linux, and generate rootfs's for other architectures, such as
i686 and armv6l.
At the time of writing this webpage, that "x" is "2", meaning version "1.2.0.2".
Starting with aspect-1...
1a. Setup the x86_64 rootfs
Perform these steps:
Open a terminal in the 'work' folder. Then, copy-in the x86_64 rootfs, expand, copy-in all sources, and chroot into it:
# cp -f ../binary/rootfs-1.2.0.2-amd64.tar.gz ./ # tar -xf rootfs-1.2.0.2-amd64.tar.gz # cp -f ../source/* rootfs-1.2.0.2-amd64/ # sync # ./chroot-rootfs rootfs-1.2.0.2-amd64
That's it, ready for action!
1b. Pump steroids into the x86_64 rootfs
The original Aboriginal 1.2.0 is a bit "weak" as a compile
environment. 1.2.0.2 has enhanced uClibc slightly, and bumped the kernel
from 3.5 to 4.3, however, there are a minimal set of busybox applets,
and many of those are inadequate. For compiling of source packages, many
"full" utilities are required, for example, 'cp', 'cut', 'date', plus
some improvements to the infrastructure.
To improve the build environment, there are some source packages, and build scripts. Run each of these, in order:
Note, proper commandline editing, such as auto-completion
with TAB, left-arrow to go back, history, do not work until 5-build* is
completed.
bash-2.05b# ./1-build-ncurses
Busybox 'patch' cannot handle "fuzz" substitutions. Bump to the full utility:
bash-2.05b# ./2-build-patch
We really do need a more up-to-date and fully-featured busybox:
bash-2.05b# ./3-build-busybox-static
To use the new 'busybox', exit then chroot back in;
bash-2.05b# exit # ./chroot-rootfs rootfs-1.2.0.2-amd64
'coreutils' has "full" utilities, to replace busybox applets. This makes life easier when compiling source packages:
bash-2.05b# ./4-build-coreutils-static
/bin/sh is a symlink to 'bash', version 2.05b. Many source
packages require v3 or v4, so let's bump it. Also, after the upgrade
will have improved commandline editing (compiled with internal
'readline'):
bash-2.05b# ./5-build-bash-static
The 'LVM2' package is one of those that requires bash v4.
To switch over to the new bash, once again you have to exit and
re-enter:
bash-2.05b# exit # ./chroot-rootfs rootfs-1.2.0.2-amd64
Good oh, now we have proper commandline editing, tab-completion, left and right arrows, history with up and down arrows.
Now for something challenging. I have a particular
requirement, I want just the 'dmsetup' utility from LVM2, and want it
compiled statically. This script will do it:
bash-4.4# ./6-build-lvm2-static
...installed /usr/sbin/dmsetup
We now have a build environment with enhancements, for compiling your own source packages.
Note that all of those packages compiled above, could be fed
back into the 'aboriginal-1.2.0.x' source, so that we won't have to go
through all of the above. Which leads to aspect-2...
2a. cross-compile Aboriginal source
Source package 'aboriginal-1.2.0.2.tar.gz' has already been
copied-in. It is extemely simple to use. For example, say we want to
compile a x86_64 rootfs:
bash-4.4# tar -xf aboriginal-1.2.0.2.tar.gz bash-4.4# cd aboriginal-1.2.0.2 bash-4.4# ./build.sh x86_64
That's it, she's off and running. Note that Internet access
is not required, as all source packages are already downloaded. Though,
this chroot environment does inherit the host's Internet access, so it
is there if required.
It doesn't take long, on my desktop PC about 9 minutes, so,
stare at the screen for awhile. That really is fast, considering that it
also compiled the linux kernel.
When finished, aboriginal-1.2.0.2/build/root-filesystem-x86_64.tar.bz2 is our x86_64 chrootable filesystem.
You can rename the folder, then create a new tarball with an appropriate name, such as 'rootfs-1.2.0.3-amd64.tar.gz'. Like this:
bash-4.4# cd build bash-4.4# DIRNAME=rootfs-1.2.0.3-amd64 bash-4.4# cp -a root-filesystem-x86_64 $DIRNAME bash-4.4# cp -a ../../[1-9]-build-* ${DIRNAME}/ bash-4.4# cp -a ../../BBconfig* ${DIRNAME}/ bash-4.4# tar -c -f {DIRNAME}.tar ${DIRNAME}/ bash-4.4# gzip ${DIRNAME}.tar
...what you now have is a new x86_64 rootfs, with the build-scripts in it.
2b. Aboriginal source projects
I have played with this, now have to move onto other things,
so I am offering this to anyone who is interested. It will be most
interesting to explore ways of upgrading this Aboriginal source. Some
suggestions:
- It uses uClibc 0.9.33.2, which was released in 2012. As
mentioned in the readme.htm file (see link top of this page), there is
uClibc-20150705, however, is requires symbol '__builtin_unreachable',
that was introduced in gcc 4.5. An alternative to attempting to upgrade
gcc, would be to find out where this dependency on
'__builtin_unreachable' came in, and remove it.
- Rob Landley's last release of Aboriginal Linux was version
1.4.5, in 2016. Some of those packages are upgraded since 1.2.0, and
they could be ported into 1.2.0.x.
- Some of the upgrades that I am compiling in a target
environment, such as ncurses, patch and busybox, could be ported into
Aboriginal source 1.2.0.x.
- Then there's uClibc-ng, the currently active project. That
would be an interesting upgrade, and probably a challenge. The OpenADK
project uses a recent uClibc-ng, so maybe that could be a source of
ideas. My report on OpenADK: http://bkhome.org/news/201803/finally-success-with-openadk.html
- What about an 'aarch64', or 'armv7l' target? Aboriginal currently only has 'armv4l', 'armv5l' and 'armv6l'.
- If you want to "reach for the sky", you could even compile
a complete Linux distro, even with graphical desktop -- for ideas on a
tiny desktop, see the 'xwoaf' resurrection by forum member 'goingnuts': http://murga-linux.com/puppy/viewtopic.php?t=109062
This should be lots of fun for the developer/tinkerer. If you
would like to play with it, please do. I will start a thread on the
Puppy Forum for feedback. OK, done, here it is:
http://murga-linux.com/puppy/viewtopic.php?t=112885
Have fun!
Regards,
Barry Kauler
March 9, 2018
Blog: http://bkhome.org/news/
|