#!/bin/bash # LFS 11.2 Build Script # Final steps to configure the system # by Luís Mendes :) # 07/Sep/2022 package_name="" package_ext="" begin() { package_name=$1 package_ext=$2 echo "[lfs-final] Starting build of $package_name at $(date)" tar xf $package_name.$package_ext cd $package_name } finish() { echo "[lfs-final] Finishing build of $package_name at $(date)" cd /sources rm -rf $package_name } cd /sources # 9.2. LFS-Bootscripts-20220723 begin lfs-bootscripts-20220723 tar.xz make install finish # 9.4.1.2. Creating Custom Udev Rules bash /usr/lib/udev/init-net-rules.sh # 9.5.1. Creating Network Interface Configuration Files cd /etc/sysconfig/ cat > ifconfig.eth0 << "EOF" ONBOOT=yes IFACE=eth0 SERVICE=ipv4-static IP=192.168.1.2 GATEWAY=192.168.1.1 PREFIX=24 BROADCAST=192.168.1.255 EOF # 9.5.2. Creating the /etc/resolv.conf File cat > /etc/resolv.conf << "EOF" # Begin /etc/resolv.conf nameserver 8.8.8.8 nameserver 8.8.4.4 # End /etc/resolv.conf EOF # 9.5.3. Configuring the system hostname echo "lfs" > /etc/hostname # 9.5.4. Customizing the /etc/hosts File cat > /etc/hosts << "EOF" # Begin /etc/hosts 127.0.0.1 localhost.localdomain localhost ::1 localhost ip6-localhost ip6-loopback ff02::1 ip6-allnodes ff02::2 ip6-allrouters # End /etc/hosts EOF # 9.6.2. Configuring Sysvinit cat > /etc/inittab << "EOF" # Begin /etc/inittab id:3:initdefault: si::sysinit:/etc/rc.d/init.d/rc S l0:0:wait:/etc/rc.d/init.d/rc 0 l1:S1:wait:/etc/rc.d/init.d/rc 1 l2:2:wait:/etc/rc.d/init.d/rc 2 l3:3:wait:/etc/rc.d/init.d/rc 3 l4:4:wait:/etc/rc.d/init.d/rc 4 l5:5:wait:/etc/rc.d/init.d/rc 5 l6:6:wait:/etc/rc.d/init.d/rc 6 ca:12345:ctrlaltdel:/sbin/shutdown -t1 -a -r now su:S016:once:/sbin/sulogin 1:2345:respawn:/sbin/agetty --noclear tty1 9600 2:2345:respawn:/sbin/agetty tty2 9600 3:2345:respawn:/sbin/agetty tty3 9600 4:2345:respawn:/sbin/agetty tty4 9600 5:2345:respawn:/sbin/agetty tty5 9600 6:2345:respawn:/sbin/agetty tty6 9600 # End /etc/inittab EOF # 9.6.4. Configuring the System Clock cat > /etc/sysconfig/clock << "EOF" # Begin /etc/sysconfig/clock UTC=1 # Set this to any options you might need to give to hwclock, # such as machine hardware clock type for Alphas. CLOCKPARAMS= # End /etc/sysconfig/clock EOF # 9.7. The Bash Shell Startup Files cat > /etc/profile << "EOF" # Begin /etc/profile export LANG=en_US.UTF-8 # End /etc/profile EOF # 9.8. Creating the /etc/inputrc File cat > /etc/inputrc << "EOF" # Begin /etc/inputrc # Modified by Chris Lynn # Allow the command prompt to wrap to the next line set horizontal-scroll-mode Off # Enable 8bit input set meta-flag On set input-meta On # Turns off 8th bit stripping set convert-meta Off # Keep the 8th bit for display set output-meta On # none, visible or audible set bell-style none # All of the following map the escape sequence of the value # contained in the 1st argument to the readline specific functions "\eOd": backward-word "\eOc": forward-word # for linux console "\e[1~": beginning-of-line "\e[4~": end-of-line "\e[5~": beginning-of-history "\e[6~": end-of-history "\e[3~": delete-char "\e[2~": quoted-insert # for xterm "\eOH": beginning-of-line "\eOF": end-of-line # for Konsole "\e[H": beginning-of-line "\e[F": end-of-line # End /etc/inputrc EOF # 9.9. Creating the /etc/shells File cat > /etc/shells << "EOF" # Begin /etc/shells /bin/sh /bin/bash # End /etc/shells EOF # 10.2. Creating the /etc/fstab File cat > /etc/fstab << "EOF" # Begin /etc/fstab # file system mount-point type options dump fsck # order /dev/sda1 / ext4 defaults 1 1 proc /proc proc nosuid,noexec,nodev 0 0 sysfs /sys sysfs nosuid,noexec,nodev 0 0 devpts /dev/pts devpts gid=5,mode=620 0 0 tmpfs /run tmpfs defaults 0 0 devtmpfs /dev devtmpfs mode=0755,nosuid 0 0 # End /etc/fstab EOF cd /sources # 10.3. Linux-5.19.2 begin linux-5.19.2 tar.xz make mrproper make defconfig make make modules_install cp -iv arch/x86/boot/bzImage /boot/vmlinuz-5.19.2-lfs-11.2 cp -iv System.map /boot/System.map-5.19.2 cp -iv .config /boot/config-5.19.2 install -d /usr/share/doc/linux-5.19.2 cp -r Documentation/* /usr/share/doc/linux-5.19.2 finish # 10.3.2. Configuring Linux Module Load Order install -v -m755 -d /etc/modprobe.d cat > /etc/modprobe.d/usb.conf << "EOF" # Begin /etc/modprobe.d/usb.conf install ohci_hcd /sbin/modprobe ehci_hcd ; /sbin/modprobe -i ohci_hcd ; true install uhci_hcd /sbin/modprobe ehci_hcd ; /sbin/modprobe -i uhci_hcd ; true # End /etc/modprobe.d/usb.conf EOF # 10.4. Using GRUB to Set Up the Boot Process grub-install /dev/sdb cat > /boot/grub/grub.cfg << "EOF" # Begin /boot/grub/grub.cfg set default=0 set timeout=5 insmod ext2 set root=(hd0,1) menuentry "GNU/Linux, Linux 5.19.2-lfs-11.2" { linux /boot/vmlinuz-5.19.2-lfs-11.2 root=/dev/sda1 ro } EOF # 11.1. The End echo 11.2 > /etc/lfs-release cat > /etc/lsb-release << "EOF" DISTRIB_ID="Linux From Scratch" DISTRIB_RELEASE="11.2" DISTRIB_CODENAME="Linux From Scratch" DISTRIB_DESCRIPTION="Linux From Scratch" EOF cat > /etc/os-release << "EOF" NAME="Linux From Scratch" VERSION="11.2 ID=lfs PRETTY_NAME="Linux From Scratch 11.2" VERSION_CODENAME="Linux From Scratch" EOF echo "[lfs-final] The end"