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