aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorWilliam Harrington <kb0iic@berzerkula.org>2021-04-05 14:01:56 -0500
committerWilliam Harrington <kb0iic@berzerkula.org>2021-04-05 14:01:56 -0500
commit95106e41d0abc92a05384092c93f266dbd1bd9e7 (patch)
tree494fe70c951365d5681bbbc541fe094dbd7eb2a7
parent2d6c50cadac6a03f8b57e92c3bc2f7988d0ae6a6 (diff)
Create directories and essential files outside of chroot. Then chroot. When stripping, exit status is not 0 when strip finds uknown formats. Just return true. Make createdirs, umountvirtfs and essential files as separate scripts.
-rw-r--r--chapter7/cleanup.sh9
-rw-r--r--createdirs.sh88
-rw-r--r--env.sh4
-rw-r--r--essential.sh71
-rw-r--r--insidechroot.sh145
-rwxr-xr-xlfs.sh13
-rw-r--r--mountvirtfs.sh2
-rw-r--r--umountvirtfs.sh28
8 files changed, 204 insertions, 156 deletions
diff --git a/chapter7/cleanup.sh b/chapter7/cleanup.sh
index 0a5ec86..93e8a88 100644
--- a/chapter7/cleanup.sh
+++ b/chapter7/cleanup.sh
@@ -13,10 +13,11 @@ else
sudo rm -rf "${LFS}"/usr/share/info >/dev/null 2>&1
sudo rm -rf "${LFS}"/usr/share/man >/dev/null 2>&1
- sudo strip --strip-debug "${LFS}"/usr/lib/* >/dev/null 2>&1
- sudo strip --strip-unneeded "${LFS}"/usr/bin/* >/dev/null 2>&1
- sudo strip --strip-unneeded "${LFS}"/usr/sbin/* >/dev/null 2>&1
- sudo strip --strip-unneeded "${LFS}"/tools/bin/* >/dev/null 2>&1
+ #find "${LFS}"/usr/lib -type f -executable -print | xargs sudo strip --strip-debug
+ sudo strip --strip-debug "${LFS}"/usr/lib/* >/dev/null 2>&1 || true
+ sudo strip --strip-unneeded "${LFS}"/usr/bin/* >/dev/null 2>&1 || true
+ sudo strip --strip-unneeded "${LFS}"/usr/sbin/* >/dev/null 2>&1 || true
+ sudo strip --strip-unneeded "${LFS}"/tools/bin/* >/dev/null 2>&1 || true
printf "%b" "${IGRN}OK${RST}\n"
touch "${LFS}"/sources/chapter7/cleanup >/dev/null 2>&1
diff --git a/createdirs.sh b/createdirs.sh
new file mode 100644
index 0000000..9542443
--- /dev/null
+++ b/createdirs.sh
@@ -0,0 +1,88 @@
+#!/bin/bash
+
+set -e
+
+pushd "${LFS}" > /dev/null || exit 1
+
+printf "%b" "${GRN}Creating directories${RST}... "
+if [[ -f sources/createdirs ]]; then
+ printf "%b" "\n ${IGRN}Directories already created${RST}\n"
+else
+ sudo mkdir -p boot
+ sudo mkdir -p home
+ sudo mkdir -p mnt
+ sudo mkdir -p opt
+ sudo mkdir -p srv
+
+ sudo mkdir -p etc/opt
+ sudo mkdir -p etc/opt/sysconfig
+ sudo mkdir -p lib/firmware
+ sudo mkdir -p media/floppy
+ sudo mkdir -p media/cdrom
+ sudo mkdir -p usr/bin
+ sudo mkdir -p usr/include
+ sudo mkdir -p usr/lib
+ sudo mkdir -p usr/sbin
+ sudo mkdir -p usr/src
+ sudo mkdir -p usr/local/bin
+ sudo mkdir -p usr/local/include
+ sudo mkdir -p usr/local/lib
+ sudo mkdir -p usr/local/sbin
+ sudo mkdir -p usr/local/src
+ sudo mkdir -p usr/share/color
+ sudo mkdir -p usr/share/dict
+ sudo mkdir -p usr/share/doc
+ sudo mkdir -p usr/share/info
+ sudo mkdir -p usr/share/locale
+ sudo mkdir -p usr/share/man
+ sudo mkdir -p usr/share/man/man1
+ sudo mkdir -p usr/share/man/man2
+ sudo mkdir -p usr/share/man/man3
+ sudo mkdir -p usr/share/man/man4
+ sudo mkdir -p usr/share/man/man5
+ sudo mkdir -p usr/share/man/man6
+ sudo mkdir -p usr/share/man/man7
+ sudo mkdir -p usr/share/man/man8
+ sudo mkdir -p usr/share/misc
+ sudo mkdir -p usr/share/terminfo
+ sudo mkdir -p usr/share/zoneinfo
+ sudo mkdir -p usr/local/share/color
+ sudo mkdir -p usr/local/share/dict
+ sudo mkdir -p usr/local/share/doc
+ sudo mkdir -p usr/local/share/info
+ sudo mkdir -p usr/local/share/locale
+ sudo mkdir -p usr/local/share/man
+ sudo mkdir -p usr/local/share/man/man1
+ sudo mkdir -p usr/local/share/man/man2
+ sudo mkdir -p usr/local/share/man/man3
+ sudo mkdir -p usr/local/share/man/man4
+ sudo mkdir -p usr/local/share/man/man5
+ sudo mkdir -p usr/local/share/man/man6
+ sudo mkdir -p usr/local/share/man/man7
+ sudo mkdir -p usr/local/share/man/man8
+ sudo mkdir -p usr/local/share/misc
+ sudo mkdir -p usr/local/share/terminfo
+ sudo mkdir -p usr/local/share/zoneinfo
+ sudo mkdir -p var/cache
+ sudo mkdir -p var/local
+ sudo mkdir -p var/log
+ sudo mkdir -p var/mail
+ sudo mkdir -p var/opt
+ sudo mkdir -p var/spool
+ sudo mkdir -p var/lib/color
+ sudo mkdir -p var/lib/misc
+ sudo mkdir -p var/lib/locate
+
+ sudo ln -sf run var/run
+ sudo ln -sf run/lock var/lock
+
+ sudo install -d -m 0750 root
+ sudo install -d -m 1777 tmp
+ sudo install -d -m 1777 var/tmp
+
+ printf "%b" " ${IGRN}OK${RST}\n"
+ touch sources/createdirs
+
+fi
+
+popd >/dev/null >/dev/null || exit 1
diff --git a/env.sh b/env.sh
index 5e11081..e265628 100644
--- a/env.sh
+++ b/env.sh
@@ -39,8 +39,12 @@ MAKEFLAGS="-j ${numjobs}"
# Set spinner type (0-12 in funtions.sh)
SPINNER="0"
+
+TESTERUID="$(id -u)" \
+
export PS1 LC_ALL LFS LFS_TGT PATH CONFIG_SITE
export LFS_VER LFS_DISK LFS_FS LFS_PART LFS_PWD NUMPROCS MAKEFLAGS
export SPINNER
+export TESTERUID
unset numjobs
diff --git a/essential.sh b/essential.sh
new file mode 100644
index 0000000..0b8afce
--- /dev/null
+++ b/essential.sh
@@ -0,0 +1,71 @@
+#!/bin/bash
+
+set -e
+
+
+pushd "${LFS}" >/dev/null || exit 1
+
+printf "%b" "${GRN}Creating essential files and symbolic links${RST}... "
+if [[ -f "sources/essential" ]]; then
+ printf "%b" "\n ${IGRN}Essential files and symbolic links already created${RST}\n"
+else
+
+
+ sudo ln -sf proc/self/mounts etc/mtab
+ sudo bash -c 'echo "127.0.0.1 localhost $(hostname)" > etc/hosts'
+
+ sudo bash -c 'cat > etc/passwd << "EOF"
+root:x:0:0:root:/root:/bin/bash
+bin:x:1:1:bin:/dev/null:/bin/false
+daemon:x:6:6:Daemon User:/dev/null:/bin/false
+messagebus:x:18:18:D-Bus Message Daemon User:/run/dbus:/bin/false
+uuidd:x:80:80:UUID Generation Daemon User:/dev/null:/bin/false
+nobody:x:99:99:Unprivileged User:/dev/null:/bin/false
+EOF'
+
+ sudo bash -c 'cat > etc/group << "EOF"
+root:x:0:
+bin:x:1:daemon
+sys:x:2:
+kmem:x:3:
+tape:x:4:
+tty:x:5:
+daemon:x:6:
+floppy:x:7:
+disk:x:8:
+lp:x:9:
+dialout:x:10:
+audio:x:11:
+video:x:12:
+utmp:x:13:
+usb:x:14:
+cdrom:x:15:
+adm:x:16:
+messagebus:x:18:
+input:x:24:
+mail:x:34:
+kvm:x:61:
+uuidd:x:80:
+wheel:x:97:
+nogroup:x:99:
+users:x:999:
+EOF'
+
+ sudo bash -c 'echo "tester:x:"'"${TESTERUID}"'":101::/home/tester:/bin/bash" >> etc/passwd'
+ sudo bash -c 'echo "tester:x:101:" >> etc/group'
+ sudo install -o "${TESTERUID}" -d home/tester
+
+ sudo touch var/log/btmp
+ sudo touch var/log/lastlog
+ sudo touch var/log/faillog
+ sudo touch var/log/tmp
+ sudo chgrp utmp var/log/lastlog
+ sudo chmod 664 var/log/lastlog
+ sudo chmod 600 var/log/btmp
+
+ sudo touch sources/essential
+ sudo printf "%b" "${IGRN}OK${RST}\n"
+
+fi
+
+popd >/dev/null || exit 1
diff --git a/insidechroot.sh b/insidechroot.sh
index a2fb9df..28cf64f 100644
--- a/insidechroot.sh
+++ b/insidechroot.sh
@@ -7,147 +7,9 @@ source /sources/functions.sh
printf "%b" "${CYN}SUCCESSFULLY ENTERED ${RED}CHROOT${RST}!\n"
-if [[ "${CHAPTER}" -eq 7 ]]; then
- printf "%b" "${GRN}Creating directories${RST}... "
- if [[ -f /sources/createdirs ]]; then
- printf "%b" "\n ${IGRN}Directories already created${RST}\n"
- else
- mkdir -p /boot
- mkdir -p /home
- mkdir -p /mnt
- mkdir -p /opt
- mkdir -p /srv
-
- mkdir -p /etc/opt
- mkdir -p /etc/opt/sysconfig
- mkdir -p /lib/firmware
- mkdir -p /media/floppy
- mkdir -p /media/cdrom
- mkdir -p /usr/bin
- mkdir -p /usr/include
- mkdir -p /usr/lib
- mkdir -p /usr/sbin
- mkdir -p /usr/src
- mkdir -p /usr/local/bin
- mkdir -p /usr/local/include
- mkdir -p /usr/local/lib
- mkdir -p /usr/local/sbin
- mkdir -p /usr/local/src
- mkdir -p /usr/share/color
- mkdir -p /usr/share/dict
- mkdir -p /usr/share/doc
- mkdir -p /usr/share/info
- mkdir -p /usr/share/locale
- mkdir -p /usr/share/man
- mkdir -p /usr/share/man/man1
- mkdir -p /usr/share/man/man2
- mkdir -p /usr/share/man/man3
- mkdir -p /usr/share/man/man4
- mkdir -p /usr/share/man/man5
- mkdir -p /usr/share/man/man6
- mkdir -p /usr/share/man/man7
- mkdir -p /usr/share/man/man8
- mkdir -p /usr/share/misc
- mkdir -p /usr/share/terminfo
- mkdir -p /usr/share/zoneinfo
- mkdir -p /usr/local/share/color
- mkdir -p /usr/local/share/dict
- mkdir -p /usr/local/share/doc
- mkdir -p /usr/local/share/info
- mkdir -p /usr/local/share/locale
- mkdir -p /usr/local/share/man
- mkdir -p /usr/local/share/man/man1
- mkdir -p /usr/local/share/man/man2
- mkdir -p /usr/local/share/man/man3
- mkdir -p /usr/local/share/man/man4
- mkdir -p /usr/local/share/man/man5
- mkdir -p /usr/local/share/man/man6
- mkdir -p /usr/local/share/man/man7
- mkdir -p /usr/local/share/man/man8
- mkdir -p /usr/local/share/misc
- mkdir -p /usr/local/share/terminfo
- mkdir -p /usr/local/share/zoneinfo
- mkdir -p /var/cache
- mkdir -p /var/local
- mkdir -p /var/log
- mkdir -p /var/mail
- mkdir -p /var/opt
- mkdir -p /var/spool
- mkdir -p /var/lib/color
- mkdir -p /var/lib/misc
- mkdir -p /var/lib/locate
-
- ln -sf /run /var/run
- ln -sf /run/lock /var/lock
-
- install -d -m 0750 /root
- install -d -m 1777 /tmp /var/tmp
-
- printf "%b" " ${IGRN}OK${RST}\n"
- touch /sources/createdirs
- fi
-
- printf "%b" "${GRN}Creating essential files and symbolic links${RST}... "
- if [[ -f "/sources/essential" ]]; then
- printf "%b" "\n ${IGRN}Essential files and symbolic links already created${RST}\n"
- else
- ln -sf /proc/self/mounts /etc/mtab
- echo "127.0.0.1 localhost $(hostname)" > /etc/hosts
-
- cat > /etc/passwd << "EOF"
-root:x:0:0:root:/root:/bin/bash
-bin:x:1:1:bin:/dev/null:/bin/false
-daemon:x:6:6:Daemon User:/dev/null:/bin/false
-messagebus:x:18:18:D-Bus Message Daemon User:/run/dbus:/bin/false
-uuidd:x:80:80:UUID Generation Daemon User:/dev/null:/bin/false
-nobody:x:99:99:Unprivileged User:/dev/null:/bin/false
-EOF
+pushd /sources >/dev/null || exit 1
- cat > /etc/group << "EOF"
-root:x:0:
-bin:x:1:daemon
-sys:x:2:
-kmem:x:3:
-tape:x:4:
-tty:x:5:
-daemon:x:6:
-floppy:x:7:
-disk:x:8:
-lp:x:9:
-dialout:x:10:
-audio:x:11:
-video:x:12:
-utmp:x:13:
-usb:x:14:
-cdrom:x:15:
-adm:x:16:
-messagebus:x:18:
-input:x:24:
-mail:x:34:
-kvm:x:61:
-uuidd:x:80:
-wheel:x:97:
-nogroup:x:99:
-users:x:999:
-EOF
-
- echo "tester:x:${TESTERUID}:101::/home/tester:/bin/bash" >> /etc/passwd
- echo "tester:x:101:" >> /etc/group
- install -o tester -d /home/tester
-
- touch /var/log/btmp
- touch /var/log/lastlog
- touch /var/log/faillog
- touch /var/log/tmp
- chgrp utmp /var/log/lastlog
- chmod 664 /var/log/lastlog
- chmod 600 /var/log/btmp
-
- touch /sources/essential
- printf "%b" "${IGRN}OK${RST}\n"
- fi
-
- cd /sources || exit 1
+if [[ "${CHAPTER}" -eq 7 ]]; then
# Chapter 7
printf "%b" "\n${IWHT}============ ${IGRN}Building ${IYLW}Chapter 7${IWHT} \
@@ -160,8 +22,7 @@ EOF
exit 1
fi
done
-
- exit 7
+
else
printf "%b" "Do Chapter 8, 9 and 10 stuff here.\n"
fi
diff --git a/lfs.sh b/lfs.sh
index 55bdfb6..0d2a894 100755
--- a/lfs.sh
+++ b/lfs.sh
@@ -143,6 +143,8 @@ chmod ugo+x insidechroot.sh
printf "%b" "\n${CYN}PREPARING ${RED}CHROOT${CYN} ENVIRONMENT${RST}...\n"
sudo ./preparechroot.sh "${LFS}"
+source createdirs.sh
+source essential.sh
printf "%b" "\n${CYN}ENTERING ${RED}CHROOT${CYN} ENVIRONMENT${RST}...\n"
sleep 3
@@ -155,19 +157,13 @@ sudo chroot "${LFS}" /usr/bin/env \
NUMPROCS="${NUMPROCS}" \
MAKEFLAGS="${MAKEFLAGS}" \
SPINNER="${SPINNER}" \
- TESTERUID="$(id -u)" \
/bin/bash --login +h -c "/sources/insidechroot.sh 7"
retval=$?
printf "%b" "\n${CYN}EXITED ${RED}CHROOT${RST} ENVIRONMENT...${RST}\n"
# Cleanup and Backup if chapter 7 successfully finished
-if [[ "$retval" -eq 7 ]]; then
- printf "%b" "${GRN}Unmounting Virtual Kernel Filesystems...\n"
- sudo umount "${LFS}"/dev/pts
- sudo umount "${LFS}"/dev/
- sudo umount "${LFS}"/run
- sudo umount "${LFS}"/sys
- sudo umount "${LFS}"/proc
+if [[ "$retval" -eq 0 ]]; then
+ source umountvirtfs.sh
printf "%b" "\n${IWHT}======= ${IYLW}Chapter 7 ${IGRN}Cleanup and Backup \
${IWHT}=======${RST}\n"
@@ -192,7 +188,6 @@ sudo chroot "${LFS}" /usr/bin/env \
NUMPROCS="${NUMPROCS}" \
MAKEFLAGS="${MAKEFLAGS}" \
SPINNER="${SPINNER}" \
- TESTERUID="$(id -u)" \
/bin/bash --login +h -c "/sources/insidechroot.sh 8"
printf "%b" "\n${CYN}EXITED ${RED}CHROOT${CYN} ENVIRONMENT${RST}...\n"
diff --git a/mountvirtfs.sh b/mountvirtfs.sh
index ecf328a..237990d 100644
--- a/mountvirtfs.sh
+++ b/mountvirtfs.sh
@@ -1,6 +1,6 @@
#!/bin/bash
-printf "%b" "${GRN}Mounting virtual kernel filesystems${RST}... "
+printf "%b" "${GRN}Mounting virtual kernel filesystems${RST}...\n"
if ! mountpoint "${LFS}"/dev >/dev/null 2>&1; then
sudo mount --bind /dev "${LFS}"/dev
else
diff --git a/umountvirtfs.sh b/umountvirtfs.sh
new file mode 100644
index 0000000..8eb969f
--- /dev/null
+++ b/umountvirtfs.sh
@@ -0,0 +1,28 @@
+#!/bin/bash
+
+printf "%b" "${GRN}Unmounting virtual kernel filesystems${RST}...\n"
+if mountpoint "${LFS}"/dev/pts >/dev/null 2>&1; then
+ sudo umount "${LFS}"/dev/pts
+else
+ printf "%b" " ${IYLW}${LFS}/dev/pts${IGRN} is already unmounted${RST}\n"
+fi
+if mountpoint "${LFS}"/dev >/dev/null 2>&1; then
+ sudo umount "${LFS}"/dev
+else
+ printf "%b" " ${IYLW}${LFS}/dev${IGRN} is already unmounted${RST}\n"
+fi
+if mountpoint "${LFS}"/proc >/dev/null 2>&1; then
+ sudo umount "${LFS}"/proc
+else
+ printf "%b" " ${IYLW}${LFS}/proc${IGRN} is already unmounted${RST}\n"
+fi
+if mountpoint "${LFS}"/sys >/dev/null 2>&1; then
+ sudo umount "${LFS}"/sys
+else
+ printf "%b" " ${IYLW}${LFS}/sys${IGRN} is already unmounted${RST}\n"
+fi
+if mountpoint "${LFS}"/run >/dev/null 2>&1; then
+ sudo umount "${LFS}"/run
+else
+ printf "%b" " ${IYLW}${LFS}/run${IGRN} is already unmounted${RST}\n"
+fi