#----------------------------------------------------------------------------- # Copyright 2020 Chris Cromer # Copyright 2019 Baho Utot #----------------------------------------------------------------------------- # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . #----------------------------------------------------------------------------- OVERVIEW: This build tracks linux from scratch version 9.1 #----------------------------------------------------------------------------- REQUIREMENTS: 1. git installed on the host 2. wget on host system 3. Directory for build, mounted at /mnt/lfs There will need to be partition mounted there. You will be responsible for that. This build system uses whatever filesystem that is at ${LFS} 4. run version-check.sh and install required packages if needed #----------------------------------------------------------------------------- WARNING: This build system is designed in such a way to not be able to trash your host system. Mistakes can happen. Not responsible for trashed host system. You bear all responsibilities for any failures. #----------------------------------------------------------------------------- GENERAL NOTES: This system was designed and debugged on an AMD64 {x86_64} system and does not support i686. The build system installs/work directory: /mnt/lfs/usr/src/LFS-RPM This build has a mkinitramfs step ( which requires cpio ) this step creates an initrd so cpu updates and firmware is loaded. Your lfs kernel should be configured to use this. This build has linux-firmware to provide firmware for various hardware. See BLFS book for more information. I have installed rpm macro files in: /home/lfs/.rpmmacros This makes the rpm environment correct so it builds the base system correctly. #----------------------------------------------------------------------------- ADDITIONS: cpio # needed for mkinitramfs mkinitramfs # to create initrd popt # needed for rpm python2 # needed for rpm rpm # package manager wget # needed to fetch packages linux-firmware # firmware for various hardware #----------------------------------------------------------------------------- BUILD PROCEDURE: login as root user fdisk /dev/sdx partition drive, you need to do this mkfs.ext4 /dev/sdxx create ext4 filesystem install -vdm 755 /mnt/lfs create lfs directory mount /dev/sdxx /mnt/lfs mount partition to work directory install -vdm 755 /mnt/lfs/usr/src create build directory cd /mnt/lfs/usr/src goto build directory Now fetch the build system it will go into /mnt/lfs/usr/src/LFS-RPM by default git clone https://git.cromer.cl/cromer/LFS-RPM.git cd LFS-RPM Lets do this ./setup.sh setup environment and fetches source tarballs ./lfs.sh build it ./cleanup.sh cleanup host Build at this point is complete. All that is needed is to install grub and/or add a menu item in the the grub configuration file /boot/grub.cfg This completes the build. #----------------------------------------------------------------------------- GRUB: GPT partitioned drive menuentry 'Linux From Scratch (9.1) (on /dev/sdxx)' { insmod part_gpt insmod ext2 set root='hdx,gptx' linux /boot/vmlinuz-5.5.3 root=/dev/sdxx initrd /boot/initrd.img-5.5.3 } MSDOS/BIOS partitioned drive menuentry 'Linux From Scratch (9.1) (on /dev/sdxx)' { insmod part_msdos insmod ext2 set root='hdx,msdosx' linux /boot/vmlinuz-5.5.3 root=/dev/sdxx initrd /boot/initrd.img-5.5.3 } Change the x's to the proper drives and partition #----------------------------------------------------------------------------- INSTALLER SCRIPT: The installer.sh script will take the binary rpms ( chapter 6 ) and install them into a partition that YOU mounted on /mnt. If you want to install else where then change ROOTPATH="/mnt" to the installation partition mounted by YOU. #----------------------------------------------------------------------------- SCRIPTS: base.sh* builds chapter 6 cleanup.sh* cleanup host system after build installer.sh* install rpm binaries to mounted partition lfs.sh* builds the whole thing setup.sh* configure for build tools.sh* builds chapter 5 version-check.sh* checks host system for requirements