2019-05-24 08:27:40 -04:00
|
|
|
#-----------------------------------------------------------------------------
|
2020-05-30 23:07:41 -04:00
|
|
|
# Copyright 2020 Chris Cromer
|
2019-05-24 08:27:40 -04:00
|
|
|
# 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 <https://www.gnu.org/licenses/>.
|
|
|
|
#-----------------------------------------------------------------------------
|
|
|
|
OVERVIEW:
|
|
|
|
This build tracks linux from scratch version 8.4
|
|
|
|
#-----------------------------------------------------------------------------
|
|
|
|
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 I have not tested it on a i686 system as I no longer have or
|
|
|
|
use such systems.
|
|
|
|
|
|
|
|
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 Microcode updates for AMD CPUs.
|
|
|
|
To use it make a link to the proper cpu family.
|
|
|
|
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
|
2020-05-30 23:07:41 -04:00
|
|
|
python2 # needed for rpm
|
2019-05-24 08:27:40 -04:00
|
|
|
rpm # package manager
|
|
|
|
wget # needed to fetch packages
|
2020-05-30 23:07:41 -04:00
|
|
|
firmware-radeon # firmware for radeon graphics
|
2019-05-24 08:27:40 -04:00
|
|
|
firmware-realtek # firmware for realtek network
|
|
|
|
firmware-amd-ucode # microcode updates for AMD CPUs
|
|
|
|
#-----------------------------------------------------------------------------
|
|
|
|
BUILD PROCEDURE:
|
|
|
|
login as root user
|
2020-05-30 23:07:41 -04:00
|
|
|
fdisk /dev/sdx partition drive, you need to do this
|
2019-05-24 08:27:40 -04:00
|
|
|
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://github.com/baho-utot/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 (8.4) (on /dev/sdxx)' {
|
|
|
|
insmod part_gpt
|
|
|
|
insmod ext2
|
|
|
|
set root='hdx,gptx'
|
|
|
|
linux /boot/vmlinuz-4.20.12 root=/dev/sdxx
|
|
|
|
initrd /boot/initrd.img-4.20.12
|
|
|
|
}
|
|
|
|
|
|
|
|
MSDOS/BIOS partitioned drive
|
|
|
|
menuentry 'Linux From Scratch (8.4) (on /dev/sdxx)' {
|
|
|
|
insmod part_msdos
|
|
|
|
insmod ext2
|
|
|
|
set root='hdx,msdosx'
|
|
|
|
linux /boot/vmlinuz-4.20.12 root=/dev/sdxx
|
|
|
|
initrd /boot/initrd.img-4.20.12
|
|
|
|
}
|
|
|
|
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
|
2020-05-30 23:07:41 -04:00
|
|
|
lfs.sh* builds the whole thing
|
2019-05-24 08:27:40 -04:00
|
|
|
setup.sh* configure for build
|
|
|
|
tools.sh* builds chapter 5
|
|
|
|
version-check.sh* checks host system for requirements
|