Install Arch i586

From ArchWiki

Jump to: navigation, search


Contents

[edit] Preface

This document tries to describe the process which let me successfully build ArchLinux under other architectures.

[edit] Requirements

  • A faster PC with ArchLinux already installed, we'll use it to build packages for i586.
  • free disk space about 2G bytes.

[edit] Step 1. Download PKGBUILD source

get required packages

pacman -S cvsup ccache libtar libol

edit the /etc/abs/abs.conf enable arch,extra.

SUPFILES=(arch extra !unstable !community)

Maybe you can also get the testing version by Getting_Testing_PKGBUILDs. Execute abs to get PKGBUILDs in /var/abs, make a directory called i586, and copy base packages into it.

# abs
# mkdir /var/abs/i586
# cd /var/abs/i586
# cp -a ../base .

[edit] Step 2. Compile Required Packages

prepare the destination directory where we'll put the packages. Here we use /home/i586/base, edit the /etc/makepkg.conf, modify the following lines, we'll use -mtune option for x86 can also use the binary packages.

export CC="ccache gcc"
export CPP="ccache cpp"
export CXX="ccache g++"
export CARCH="i586"
export CHOST="i586-pc-linux-gnu"
export CFLAGS="-mtune=i586 -O2 -pipe"
export CXXFLAGS="-mtune=i586 -O2 -pipe"
export PKGDEST=/home/i586/base

There are two bugs in the gcc-4.0.2-1 package, do the following to fix them.

  • remove the compile backward compatible gcc-3.x dynamic library.
  • add a --host=$CHOST in compile gcc-4.0.2 line like following code
./configure --host=$CHOST ...

compile all base directory, the makeworld will call makepkg with -c option to clean files after successful make package.

mkdir -p /home/i586/base
cd /var/abs/i586
makeworld -c /home/i586/base base

we can view the process by build.log and makepkg.log under /var/abs/i586/.

[edit] Step 3. Solve Problem during Compiling

[edit] find out which package build failed by grep

grep failed build.log

[edit] build again by makepkg

solve the failed package by manual run makepkg(eg. pacman failed)

cd /var/abs/i586/base/pacman
makepkg -w /home/i586/base

[edit] Solve Missing Dependencies

You may found the error message like

==> Missing Dependencies:
requires: libtar

get the missing library for your system

pacman -S libtar

[edit] Solve validity check error

You may found the error message like ( here I use syslog-ng as example)

==> ERROR: One or more files did not pass the validity check!

To make sure you get the full size package, remove the source cache and try again

cd /var/abs/i586/base/syslog-ng
makepkg -C ; makepkg

If still failed, you should try to check the PKGBUILD, read the syslog-ng's web-site, try to found mirror which near your site, and download it to /var/cache/pacman/src/. If that file is really missing, report to bug system.

[edit] Solve cpp: too many input files

Found following error message:

ccache cpp -Wall -D_GNU_SOURCE -DLinux  ...
cpp: too many input files
make: *** [depend] Error 1
==> ERROR: Build Failed.  Aborting...

Comment off the ccache setting in /etc/makepkg.conf. Try again.

[edit] Step 4. Share Built Packages for i586

generate current.db.tar.gz

gensync /var/abs/i586 /home/i586/current.db.tar.gz /home/i586

[edit] Step 5. Install ArchLinux on i586 by bootable linux

# grep "^base" packages.txt | grep -v pacman \
  | grep -v glibc | grep -v iputils \
  | sed -e 's:base/::' -e 's:-[0-9].*::' > ~/i.txt
# pacman -Syfw --noconfirm -r /mnt `cat ~/i.txt` kernel26 2>&1 &
# pacman -S --noconfirm -r /mnt glibc iputils pacman | tee ~/i.log
# pacman -Sf --noconfirm -r /mnt `cat ~/i.txt` kernel26
Personal tools