qLinux
… a distribution study
<< Prev Temporary Tools (Part I)
Next >> Temporary Tools (Part II)
This is based on the first part of chapter 7 (7.1 to 7.6) from the book, but with some major differences. First not all steps from the book will be done or even particular only. Second some additional (recommended) files will be created, which are not in the book. Third
However, it is recommended to (re)read the explanations between the commands in the book.
Create directories for the virtual kernel filesystems and for the extracted sources:
$> mkdir -pv $LFS/qlnx/{dev/pts,prc,run,sys}
$> for d in dev prc sys ; do ln -s qlnx/$d $d ; done
$> mkdir -pv /data/src
The  /qlnx/etc/password  and  /qlnx/etc/group  shall exists in the “chroot” environment. These files can be created similar to the book or simply:
cat "root:x:0:0:root:/home/admin:/qlnx/bin/bash" > $LFS/qlnx/etc/passwd
cat > $LFS/qlnx/etc/group << "EOF" root:x:0:root bin:x:1:daemon sys:x:2: kmem:x:3: tty:x:5: EOF
The root user shall have a home directory:
mkdir -p $LFS/home/admin
There is no need to create more files and directories right now!
Some of the files in  /qlnx/bin  are shell scripts and have a wrong shebang for our purposes - the final system shall not have  /bin/sh  but  /qlnx/bin/sh . To fix this a small file  qshebang  will be helpful:
cat > $LFS/qlnx/bin/qshebang << EOF cd \$LFS/qlnx/bin for f in \`ls -R\` ; do head -1 \$f | grep '#!' &>/dev/null && sed -i "s/^#\!.*$/#\!\/qlnx\/bin\/bash/" \$f done EOF chmod -v 755 $LFS/qlnx/bin/qshebang
It is highly reommended to create a backup of  $LFS/qlnx/bin  before continue
Execution of  qshebang :
$> cd $LFS/qlnx/bin $> ./qshebang
Verify the result (e.g. on  znew ):
$> head -1 $LFS/qlnx/bin/znew
Even if  qshebang  is a special use case here, the principle could be used later on too.
See the related chapter in the blfs book. The following fits what's needed right now (do it as root, the  chown  will require root privileges anyway):
cat > $LFS/qlnx/bin/which << "EOF"
#!/qlnx/bin/bash
type -pa "$@" | head -n 1 ; exit ${PIPESTATUS[0]}
EOF
chmod -v 755 $LFS/qlnx/bin/which
To easily (re-)enter the chroot environment create a file (e.g. dochroot) and make it executable:
#!/bin/sh
mount | grep $LFS/qlnx/dev || mount -v --bind /dev $LFS/qlnx/dev
mount | grep $LFS/qlnx/dev/pts || mount -v --bind /dev/pts $LFS/dev/pts
mount | grep $LFS/qlnx/proc || mount -vt proc proc $LFS/qlnx/proc
mount | grep $LFS/qlnx/sys || mount -vt sysfs sysfs $LFS/qlnx/sys
mount | grep $LFS/qlnx/run || mount -vt tmpfs tmpfs $LFS/qlnx/run
chroot "$LFS" /qlnx/bin/env -i \
HOME=/home/admin \
TERM="$TERM" \
PS1='(qlinux chroot) \u:\w\$ ' \
CC=musl-gcc \
PATH=/exec:qlnx/bin:/plng/bin:/misc/bin:libs/bin \
/qlnx/bin/bash --login +h
umount $LFS/qlnx/dev/pts
umount $LFS/qlnx/dev
umount $LFS/qlnx/proc
umount $LFS/qlnx/sys
umount $LFS/qlnx/run
Now the chroot should be easily entered with
$> sudo ~/dochroot
<< Prev Temporary Tools (Part I)
        
Next >> Temporary Tools (Part II)