Vorwort:

Nachdem ich mir vor einiger Zeit ein neues Board samt Athlon64 3200+ gekauft habe, kam schnell der Wunsch auf, mein LFS (Linuxfromscratch) System auf 64bit anzupassen.

Ich habe diese Seite mittlerweilen komplett Überarbeitet, da viele Informationen inzwischen hinfällig sind, da mit Cross-LFS eine gute Anleitung für eine 64bit LFS vorhanden ist.


Erläuterungen:

Es scheint keine Eingkeit zu herrschen, wohin denn nun die 64bit bzw. 32bit libs gehören. Fedora z.B. installiert die 64bit libs in /lib64 und die 32bit libs in /lib, Debian und Gentoo aber die 64bit libs in /lib und die 32bit libs in /lib32.

Ich habe mich dazu entschlossen die 64bit libraries ebenfalls in /lib bzw. /usr/lib zu installieren. Dadurch musste ich zwar bei glibc, gcc und xorg einige Anpassungen vornehmen, aber der Rest konnte dann einfacher erstellt werden.

Als Ausgangspunkt habe ich die Informationen von:

genutzt.

Es war mir zu schwer erst einen 64bit toolchain zu erstellen um daraus mein neues System zu erstellen, deshalb habe ich Fedora Core 3 x86_64 als basis genutzt.

Ich habe mir ein eigenes build System geschrieben. Das ganze ist in Anlehnung an pacman von Archlinux entstanden. Wobei es bei weitem nicht die funktionalität von pacman besitzt. Mein build System läuft zwar soweit einwandfrei, aber es fängt kaum Fehler ab, deshalb veröffentliche ich es nicht. Die builds sind sehr einfach aufgebaut, hier ein Beispiel mit Dokumentation:

	# bash.build
	# T.Schneider

	#Programname
	pkgNAME="bash"

	#Programversion
	pkgVER="3.1"

	#Revision des builds
	pkgREV="6"

	#URL zum sourcecode
	pkgURL="ftp://ftp.cwru.edu/pub/bash/bash-$pkgVER.tar.gz"

	#URL zu patches
	pkgPATCH="http://www.linuxfromscratch.org/patches/downloads/bash/bash-3.1-fixes-7.patch" 

	#Abhängigkeiten, wird noch nicht ausgewertet
	pkgDEP=""

	#Optionale Pakete, wird noch nicht ausgewertet
	pkgOPT=""

	function fBuild () {
	  # tsSRCDIR hierhin werde alle Dateien aus pkgURL entpackt
	  cd $tsSRCDIR/$pkgNAME-$pkgVER &&

	  # tsDLSDIR = das Downloaddir in das alle Dateien
	  # aus pkgURL und pkgPATCH gespeichert werden 
	  patch -Np1 -i $tsDLSDIR/bash-3.1-fixes-7.patch &&
		
	  ./configure --prefix=/usr \
	    --bindir=/bin \
	    --without-bash-malloc \
	    --with-installed-readline \
	    --mandir=/usr/share/man \
	    --infodir=/usr/share/info \
	    --build=x86_64-pc-linux-gnu &&
  
	  make &&

	  # tsINSDIR, in dieses Verzeichnis wird das Programm installiert, danach werden die Dateien
	  # in diesem Verzeichnis mit tar gepackt und nach / kopiert
	  make DESTDIR=$tsINSDIR install &&
	  ln -sf bash $tsINSDIR/bin/sh || fDie

	  rm -R $tsSRCDIR/$pkgNAME-$pkgVER
	}