#!/bin/bash clear printf "%b" "Sourcing colors...\n" # Colors defined for text source colors.sh printf "%b" "Sourcing environment variables...\n" # LFS build environment settings source env.sh printf "%b" "Sourcing functions...\n" # Functions used during build source functions.sh # Version check script #source versioncheck.sh printf "%b" "\n\n\n${CYN}BUILDING ${YLW}${LFS_VER} $(uname -m)${CYN} at \ ${IWHT}${LFS}${CYN} on ${IWHT}${LFS_DISK}${LFS_PART}${RST}\n\n\n" # Continue or Abort printf "%b" "${IGRN}CONTINUE ${IWHTB}(C)${RST} / ${IRED}ABORT ${IWHTB}(OTHER)${RST}\n" if read -r -n 1 contabort; then if [ "$contabort" == "C" ] || [ "$contabort" == "c" ]; then printf "%b" "\b${IWHT}Build is ${IGRN}CONTINUING${RST}\n" else printf "%b" "\b${IWHT}Build ${IRED}ABORTED!\n" exit 0 fi else printf "%b" "\b${IWHT}Selection ${IRED}FAILURE!${RST}\n" exit 1 fi printf "%b" "${GRN}Creating LFS directory at ${YLW}${LFS}${GRN} if it does not exist...${RST}\n" # Create LFS directory if it doesn't exist [[ -d /mnt/lfs ]] || sudo mkdir "${LFS}" # Setup partition, filesystem, format and mount if # LFS filesystem is not previously mounted if ! grep -q "${LFS}" /proc/mounts; then printf "%b" "${GRN}Setting up partition on ${YLW}${LFS_DISK} ${GRN}\ with ${YLW}ext4${GRN} filesystem at ${YLW}${LFS_DISK}${LFS_ROOT} ${GRN}\ and mounting at ${YLW}${LFS}${RST}...\n" source setupdisk.sh "${LFS_DISK}" "${LFS_PART}" sudo mount "${LFS_DISK}${LFS_PART}" "${LFS}" sudo chown -v "${USER}" "${LFS}" fi # Create limited directory layout mkdir -p "${LFS}"/sources mkdir -p "${LFS}"/tools mkdir -p "${LFS}"/bin mkdir -p "${LFS}"/etc mkdir -p "${LFS}"/lib mkdir -p "${LFS}"/sbin mkdir -p "${LFS}"/usr mkdir -p "${LFS}"/var case $(uname -m) in x86_64) mkdir -p "${LFS}"/lib64 ;; esac # Will use normal user and not special lfs user #sudo groupadd lfs #sudo useradd -s /bin/bash -g lfs -m -k /dev/null lfs #printf "%b" "${LFS_PWD}\n${LFS_PWD}\n" | sudo passwd lfs # Copy scripts and csv files to LFS sources target cp -rf ./*.sh chapter* ./*.csv "${LFS}/sources" cd "${LFS}/sources" || exit 1 # Download packages and patches source download.sh retval=$? if [ "$retval" -ne 0 ]; then exit 1 fi # Chapter 5 for package in binutils gcc linux-api-headers glibc libstdc++; do source packageinstall.sh 5 $package retval=$? if [ "$retval" -ne 0 ]; then exit 1 fi done # Chapter 6 for package in m4 ncurses bash coreutils diffutils file findutils gawk grep gzip make patch sed tar xz binutils gcc; do source packageinstall.sh 6 $package retval=$? if [ "$retval" -ne 0 ]; then exit 1 fi done source chapter6/cleanup.sh source chapter6/backup.sh chmod ugo+x preparechroot.sh chmod ugo+x insidechroot.sh printf "%b" "${CYN}PREPARING ${RED}CHROOT${CYN} ENVIRONMENT...${RST}\n" sudo ./preparechroot.sh "${LFS}" printf "%b" "${CYN}ENTERING ${RED}CHROOT${CYN} ENVIRONMENT...${RST}\n" sleep 3 sudo chroot "${LFS}" /usr/bin/env \ HOME=/root \ TERM="${TERM}" \ PS1='(lfs chroot) \u:\w\$ ' \ PATH=/bin:/usr/bin:/sbin:/usr/sbin \ NUMPROCS="${NUMPROCS}" \ MAKEFLAGS="${MAKEFLAGS}" \ TESTERUID="$(id -u)" \ /bin/bash --login +h -c "/sources/insidechroot.sh 7" printf "%b" "${CYN}EXITED ${RED}CHROOT${CYN} ENVIRONMENT...${RST}\n"