Install Arch i586
From ArchWiki
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