User:Hiciu
From Openmoko
Contents |
Archlinux on ARM:
Preparations
Needed packages:
- sbox2
- qemu
- crosstool-ng (for building the toolchain)
Toolchain for cross-compiling
- Install crosstool-ng-svn from AUR (http://aur.archlinux.org/packages.php?ID=25122)
yaourt -S crosstool-ng-svn
- Make a directory for building the toolchain
mkdir ~/toolchain-build cd ~/toolchain-build
- Copy the configuration for Arch Cross Toolchain
wget http://shelli.fi/~bane/.config
- Now you can change the settings with command
ct-ng menuconfig
- And build it with
ct-ng build
If you used default settings, you should now have the toolchain in the directory "arm-unknown-linux-gnueabi" in your home directory
sbox2
homepage: http://freedesktop.org/wiki/Software/sbox2
"Scratchbox 2 is a cross-compilation engine".
wget http://people.freedesktop.org/~lle/sbox2-releases/sbox2-1.99.0.23.tar.bz2 tar xjf sbox2-1.99.0.23.tar.bz2 cd sbox2-1.99.0.23 ./autogen.sh ./configure && make && sudo make install
qemu
pacman -Sy qemu
(should be 0.10, for 0.9 read this: http://qemu-arm-eabi.wiki.sourceforge.net/)
Setting up Scratchbox buildroot
If you changed the paths from toolchain configuration, you need to change these commands too
cp -R ~/arm-unknown-linux-gnueabi/arm-unknown-linux-gnueabi/sys-root/ ~/arch-arm-buildroot cd ~/arch-arm-buildroot sb2-init -c "/usr/bin/qemu-arm" arm ~/arm-unknown-linux-gnueabi/bin/arm-unknown-linux-gnueabi-gcc
Preparing Arch Build System
follow http://wiki.archlinux.org/index.php/ABS_-_The_Arch_Build_System
After all copy build tree to buildroot:
cp -R /var/abs/ ~/arch-arm-buildroot
Now customize your makepkg.conf:
cp /etc/makepkg.conf ~/.makepkg.conf
Edit file ~/.makepkg.conf, change:
CARCH="armv4t" CHOST="arm-unknown-linux-gnueabi"
CFLAGS="-march=armv4t -mtune=arm920t -O2 -pipe" CXXFLAGS="-march=armv4t -mtune=arm920t -O2 -pipe"
PACKAGER="me <me@email.com>"
read more here: http://wiki.archlinux.org/index.php/Install_Arch_i586
Compiling packages
All packages in repository:
cd ~/arch-arm-buildroot mkdir pkgs sb2 makeworld --clean --ignorearch --syncdeps --rmdeps --noconfirm pkgs/core abs/core/
One package, from PKGBUILD:
cd ~/arch-arm-buildroot sb2 cd mypackage makepkg -A
(where "-A" means ignore architecture)
Installing missing dependencies
(well.. You have to build them first :P).
cd ~/arch-arm-buildroot tar xzf pkgs/$REPO/$PACKAGE #maybe pacman --root=~/arch-arm-buildroot -U pkgs/$REPO/$PACKAGE or something..
Synchronizing your repo
todo: How we will share? rsync / svn / git / some kind of web gui? What is better for big binary files?
hiciu's repository browser: http://hiciu.rootnode.net/arch-arm/
Progress
- Part I: Make packages from base and base-devel groups with scratchbox: 101 / 171
- install them on qemu-arm machine: 0 / 1
- Part II: rebuild all packages from "core" repository using Arch on qemu-arm machine 0 / 171
- Part III: make qemu image with Arch on armv4t (for compiling, packaging, etc.), install Arch on GTA02: 0 / 2
People
Who's involved?
- YourNameHere!
- hiciu - responsible for making qemu image with Arch on arm
- Beini - Most likely helping with PKGBUILDs, installer script, etc. whatever I'm capable of doing ;)
Ideas
- Installer script could be just `pacman -Sy base --root /media/card --dbpath /media/card/... --config arm.conf`