From subsecret
Jump to: navigation, search
(Created page with "==Preparing clean environment== We now test if the tool-suite is working in a clean environment As root run the following commands mkdir /newsystem cp -R /tools /newsystem ...")
 
Line 3: Line 3:
As root run the following commands
As root run the following commands
  mkdir /newsystem
  mkdir /newsystem
  cp -R /tools /newsystem
  cp -Rp /tools /newsystem
  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}

Revision as of 16:36, 21 April 2013

Preparing clean environment

We now test if the tool-suite is working in a clean environment As root run the following commands

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/
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 need the symbolic links to satisfy programs like ldd, that needs the path /bin/bash


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

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