From subsecret
Jump to: navigation, search
No edit summary
No edit summary
 
Line 2: Line 2:
We now test if the tool-suite is working in a clean environment
We now test if the tool-suite is working in a clean environment
As root run the following commands. We need the symbolic links to satisfy programs like ldd, that needs the path /bin/bash
As root run the following commands. We need the symbolic links to satisfy programs like ldd, that needs the path /bin/bash
With the symbolic link from /tools to /newsystem/tools its still possible to build more tools from outside the newsystem
  mkdir /newsystem
  mkdir /newsystem
  cp -Rp /tools /newsystem
  mv /tools /newsystem
ln -s /newsystem/tools /tools
  cd /newsystem
  cd /newsystem
  mkdir -v {bin,dev,proc,sys,tmp,etc,lib,usr,include}
  mkdir -v {bin,dev,proc,sys,tmp,etc,lib,usr,include}

Latest revision as of 12:50, 9 May 2013

Preparing clean environment

We now test if the tool-suite is working in a clean environment As root run the following commands. We need the symbolic links to satisfy programs like ldd, that needs the path /bin/bash With the symbolic link from /tools to /newsystem/tools its still possible to build more tools from outside the newsystem

mkdir /newsystem
mv /tools /newsystem
ln -s /newsystem/tools /tools
cd /newsystem
mkdir -v {bin,dev,proc,sys,tmp,etc,lib,usr,include}
mknod -m 666 /dev/null c 1 3
ln -s /include/ /usr/
ln -s /tools/bin/bash /newsystem/bin/
ln -s /tools/bin/bash /newsystem/bin/sh
ln -s /tools/bin/pwd /newsystem/bin/
ln -s /tools/bin/ /newsystem/usr/bin
touch /newsystem/etc/ld.so.conf

To make arrow keys work right in the new terminal, we need to copy a file from the current system

cp /etc/inputrc /newsystem/etc/

Changing to new environment with chroot

To have access to system folders you need to run the following commands. If you dont run these some programs like java will fail

mkdir dev/pts
mkdir dev/shm
export LFS="/newsystem"
mount -vt devpts devpts $LFS/dev/pts
mount -vt tmpfs shm $LFS/dev/shm
mount -vt proc proc $LFS/proc
mount -vt sysfs sysfs $LFS/sys


We can now test the new environment by running

chroot /newsystem /tools/bin/env -i \
HOME=/root TERM="$TERM" PS1='\u:\w\$ ' \
PATH=/bin:/usr/bin:/sbin:/usr/sbin:/tools/bin \
/tools/bin/bash --login +h

If it complains that it cannot find the file, it usually means there are some unsatisfied library links. For example if bash needs /lib64/ld-linux-x86-64.so.2 which is not present in the clean environment. This can easily be checked by running the following command in the normal environment

ldd /tools/bin/bash

Note: This seems broken in current version of ldd

If it works, it should look something like this:

# chroot /newsystem /tools/bin/env -i HOME=/root TERM="$TERM" PS1='\u:\w\$ ' PATH=/bin:/usr/bin:/sbin:/usr/sbin:/tools/bin /tools/bin/bash --login +h
I have no name!:/#
I have no name!:/# ldd /tools/bin/bash
	linux-vdso.so.1 =>  (0x00007fffb65ff000)
	libtinfo.so.5 => /tools/lib/libtinfo.so.5 (0x00007ff698741000)
	libdl.so.2 => /tools/lib/libdl.so.2 (0x00007ff69853d000)
	libc.so.6 => /tools/lib/libc.so.6 (0x00007ff6981b5000)
	/tools/lib/ld-linux-x86-64.so.2 (0x00007ff698968000)

After you confirmed it works, you can exit the chroot environment and continue building the tools