User:Fabled
Bootstrapping new architectures
- Create cross compiler
- I decided to use crosstool-ng as build cross-compiler is tricky
- Wrote patch to support musl as C-library
- Wrote patch to enable building toolchains with PIE as default
- Create crosstool-ng .config, My ARM config
- NOTE: for some reason binutils gold linker crashes when compiling gcc, so needed to keep it disabled.
- run 'ct-ng build' to build the new tool chain
- I decided to use crosstool-ng as build cross-compiler is tricky
- Cross compile minimal system image
- abuild and core APKBUILDs modified to support cross building
- Wrote crossbuild-alpine-bootstrap.sh to invoke abuild with cross-compiler
- Cross-building script uses abuild.conf overlay to define new target My ARM overlay
- This produces all core .apk files for the target platform that can be used to boot qemu, qemu-user target or native hardware
- Rebuild system and setup builder
- Decided to use qemu-user for ARM as it the fastest option available for us (no fast native hardware yet)
- Setup qemu-arm support for target chroot
- apk --arch x86 --root $chroot/qemu --initdb add qemu-arm
- cd $chroot/lib ; ln -s ../qemu/lib/ld-* .
- ldconfig -r $chroot /qemu/lib /qemu/usr/lib
- create binfmt_misc mapping
- seems qemu-user needs to access /proc/sys/vm/mmap_min_addr or it does not work
- Setup target main chroot
- apk --arch arm --root $chroot --initdb add alpine-base build-base
- enter chroot