FAI How to build a i386 and x86 64 compatible FAI server on Debian Etch x86 64

From FAIWiki
Revision as of 10:21, 16 April 2007 by Mrozieres (talk | contribs)
Jump to navigation Jump to search

FAI 3.1.8 Etch cross architecture NFSROOT build

I was installing an installserver for my company and looking for a way to build and i386 NFSROOT on a amd64 Etch. Thought FAI 3.1.8 was not really designed for cross architecture, it is possible to use it this way. Here is the workaround.

  • Step 1 : Create arch specifics fais configuration direcories
    for dir in /etc/fai-i386 /etc/fai-amd64 ; 
    do
    	mkdir $dir
    	cd $dir
    	ln /etc/fai/fai.conf
    	ln /etc/fai/NFSROOT
    	ln /etc/fai/apt
    	ln /etc/fai/menu.lst
    	cp /etc/fai/make-fai-nfsroot.conf .
    done
    
  • Step 2 : Build a local apt_arch.conf file inside /etc/fai-i386 or /etc/fai-amd64
    • Simply add thoses lines to /etc/fai-i386/apt_arch.conf ( for /etc/fai-amd64/apt_arch.conf, replace i386 by amd64)
      APT {
      	Architecture "i386";
      }
      
    • You can create automagicaly those file running the following script
      for arch in i386 amd64 ; do
      	CONTENT='APT {\n\tArchitecture "$arch";\n}'
      	echo $CONTENT > /etc/fai-$arch/apt_arch.conf
      done			  				
      
  • Step 3 : Install fai-kernels packages for the different architectures
    • Configure and Run this little script for your different architectures
      rm /tmp/fai-kernel*
      for arch in i386 amd64 ; do
      	echo "Downloading $arch fai-kernels package"
      	echo "--------------------------------------"
      	export APT_CONFIG=/etc/fai-$arch/apt_arch.conf
      	apt-get update
      	apt-cache -f search fai-kernels
      	PACKAGE=$(apt-cache -f search fai-kernels | grep Filename | awk ' { print $2 }')
      	MIRROR=http://ftp.debian.org/debian
      	wget $MIRROR/$PACKAGE -P /tmp
      done
      	
      export -n APT_CONFIG
      apt-get update
      	
      for file in /tmp/fai-kernels* ; do
      	echo "Unpacking $arch fai-kernels package" 
      	echo "--------------------------------------"
      	dpkg-deb -x $file /	
      done
      
  • Step 4 : Configure make-fai-nfsroot.conf to be architecture specific
    • Add --arch i386 or --arch amd64 to FAI_DEBOOTSTRAP<code
    • Modidy KERNELPACKAGE with the good fai kernel package.
  • Step 5 : Build the arch dependant NFSROOT
    • Execute this commands
      export APT_CONFIG=/etc/fai-i386/apt_arch.conf
      make-fai-nfsroot -C /etc/fai-i386 -V vmlinuz-install-i386 -v
      
  • Step 6 : Configure network Install for a particular architecture
    • Run the command below
      FAI_CHBOOT_ARCH=i386
      FAI_CHBOOT_OPT="-k \"ip=dhcp FAI_ACTION=install \
      nfsroot=/srv/fai/nfsroot-$FAI_CHBOOT_ARCH,v3,tcp,rsize=32768,wsize=32768\" \
      -F  vmlinuz-install-i386 /dev/nfs"
      fai-chboot $FAI_CHBOOT_OPT computer