From subsecret
Jump to: navigation, search
No edit summary
Line 40: Line 40:
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
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
  ldd /tools/bin/bash
Note: This seems broken in current version of ldd


If it works, it should look something like this:
If it works, it should look something like this:

Revision as of 14:25, 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

mkdir /newsystem
cp -Rp /tools /newsystem
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