User:Hiciu
From Openmoko
Line 1: | Line 1: | ||
== Archlinux on ARM: == | == Archlinux on ARM: == | ||
+ | |||
=== Preparations === | === Preparations === | ||
− | + | ||
+ | Needed packages: | ||
*sbox2 | *sbox2 | ||
− | |||
*qemu | *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 ==== | ==== sbox2 ==== | ||
Line 17: | Line 43: | ||
./autogen.sh | ./autogen.sh | ||
./configure && make && sudo make install | ./configure && make && sudo make install | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
==== qemu ==== | ==== qemu ==== | ||
Line 52: | Line 49: | ||
=== Setting up Scratchbox buildroot === | === Setting up Scratchbox buildroot === | ||
− | sudo cp -R / | + | |
+ | If you changed the paths from toolchain configuration, you need to change these commands too | ||
+ | |||
+ | sudo cp -R ~/arm-unknown-linux-gnueabi/arm-unknown-linux-gnueabi/sys-root/ ~/arch-arm-buildroot | ||
sudo chown -R $USERNAME\:users ~/arch-arm-buildroot | sudo chown -R $USERNAME\:users ~/arch-arm-buildroot | ||
cd ~/arch-arm-buildroot | cd ~/arch-arm-buildroot | ||
− | sb2-init -c "/usr/bin/qemu-arm" armv4t / | + | sb2-init -c "/usr/bin/qemu-arm" armv4t ~/arm-unknown-linux-gnueabi/bin/arm-unknown-linux-gnueabi-gcc |
==== Preparing Arch Build System ==== | ==== Preparing Arch Build System ==== | ||
Line 68: | Line 68: | ||
Edit file ~/.makepkg.conf, change: | Edit file ~/.makepkg.conf, change: | ||
CARCH="armv4t" | CARCH="armv4t" | ||
− | CHOST=" | + | CHOST="arm-unknown-linux-gnueabi" |
CFLAGS="-march=armv4t -mtune=arm920t -O2 -pipe" | CFLAGS="-march=armv4t -mtune=arm920t -O2 -pipe" |
Revision as of 14:12, 30 March 2009
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
sudo cp -R ~/arm-unknown-linux-gnueabi/arm-unknown-linux-gnueabi/sys-root/ ~/arch-arm-buildroot sudo chown -R $USERNAME\:users ~/arch-arm-buildroot cd ~/arch-arm-buildroot sb2-init -c "/usr/bin/qemu-arm" armv4t ~/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`