mirror of
https://github.com/YellowJacketLinux/lfs-rpmify.git
synced 2025-01-23 14:32:11 +08:00
110 lines
4.1 KiB
Markdown
110 lines
4.1 KiB
Markdown
|
The Plan
|
|||
|
========
|
|||
|
|
|||
|
This is an attempt to create a new GNU/Linux distribution. The why is in the
|
|||
|
file `THE_WHY.md` but TLDR, because I can. Well, because I think I can. Maybe,
|
|||
|
and even if not, I will still learn a lot...
|
|||
|
|
|||
|
The new distribution will be called ‘Yellow-Jacket GNU/Linux’ (abbreviated as
|
|||
|
‘YJL’) and will be heavily based upon ‘Linux From Scratch’ (LFS) but will have
|
|||
|
many influences from my years with Red Hat Linux, including use of RPM as the
|
|||
|
package manager.
|
|||
|
|
|||
|
|
|||
|
Phase One: LFS Bootstrap
|
|||
|
------------------------
|
|||
|
|
|||
|
Create the needed shell scripts to build the current SystemD LFS (12.2 as I
|
|||
|
type) on a USB thumb drive that can then boot an `x86_64` system and rebuild
|
|||
|
itself to the hard drive of that system. Long term goal is a generic image that
|
|||
|
can be copied onto any thumb drive via `dd`, boot a generic `x86_64` system, and
|
|||
|
build LFS on it. Short term goal is specific to my system.
|
|||
|
|
|||
|
For the git related to Phase One, see
|
|||
|
https://github.com/YellowJacketLinux/lfs-buildscripts/tree/main
|
|||
|
|
|||
|
|
|||
|
Phase Two: GCC Bootstrap
|
|||
|
------------------------
|
|||
|
|
|||
|
The GCC built by LFS does not support building the Ada or D compilers. Both of
|
|||
|
those compilers are useful on a GNU/Linux system.
|
|||
|
|
|||
|
Once I have a hard-disk install booting, the very first order of business is to
|
|||
|
rebuild GCC for full compiler support.
|
|||
|
|
|||
|
To compile GCC with Ada and D support, a working Ada and D compiler is needed.
|
|||
|
|
|||
|
My LFS 11.3 system has those. What I did back then, on CentOS 7.9 (my build host
|
|||
|
for LFS 11.3) I built GCC 7.5.0 with Ada (`gnat`) support, with an install
|
|||
|
prefix of `/opt/gcc750`. GCC 7.5.0 was the newest GCC I could get to build in
|
|||
|
CentOS 7.9 with Ada.
|
|||
|
|
|||
|
I had to copy a few shared libraries from the CentOS 7 system into
|
|||
|
`/opt/gcc750/lib` but once I did that, I was able to use that GCC in LFS 11.3 to
|
|||
|
then build an Ada and D capable GCC 10.4.0 within `/opt/gcc1040`, GCC 7.5.0
|
|||
|
would not succesfully build an Ada and D capable GCC 12.2.0.
|
|||
|
|
|||
|
However I was then able to use GCC 10.4.0 to build the Ada and D capable GCC
|
|||
|
12.2.0 which is the GCC version in LFS 11.3.
|
|||
|
|
|||
|
For the LFS 12.2 GCC bootstrap, I *suspect* I can use the Ada and D capable GCC
|
|||
|
GCC 12.2.0 in LFS 11.3 to build an Ada and D capable GCC 14.2.0 installed in
|
|||
|
`/opt/gcc1420` that I can then use in LFS 12.2 to bootstrap the system GCC, of
|
|||
|
course running the full test suite before installing.
|
|||
|
|
|||
|
I tried adding Ada and D support to the GCC building of LFS 12.2 Chapter 5 and
|
|||
|
it caused a build failure, so it is *possible* I will need another intemediary.
|
|||
|
|
|||
|
Anyway, boostrapping an Ada and D capable GCC within LFS 12.2 will be my first
|
|||
|
priority once it is booting.
|
|||
|
|
|||
|
|
|||
|
Phase Three: Building RPM
|
|||
|
--------------------------
|
|||
|
|
|||
|
This phase is what the git is about.
|
|||
|
|
|||
|
The needed libraries to build RPM will need to be built and installed, and then
|
|||
|
RPM will be built and installed.
|
|||
|
|
|||
|
|
|||
|
Phase Four: RPM Bootstrap
|
|||
|
-------------------------
|
|||
|
|
|||
|
Once RPM is built and installed comes the long and tedious task of writing the
|
|||
|
needed RPM spec files to rebuild every package on the system in RPM. Much of
|
|||
|
that work has already been done from my LFS 11.3 system but the spec files need
|
|||
|
to be updated and some still needed to be written when the water pipe broke.
|
|||
|
|
|||
|
|
|||
|
Phase Five: Mock Build Environment
|
|||
|
----------------------------------
|
|||
|
|
|||
|
After the system is RPM bootstrapped, I have to build and configure a Mock build
|
|||
|
environment for packages, see https://rpm-software-management.github.io/mock/
|
|||
|
|
|||
|
A Mock build build environment is essential for clean, untainted packages. I
|
|||
|
have used Mock build environments in the past but creating one from scratch for
|
|||
|
a new distribution is something I have not done.
|
|||
|
|
|||
|
|
|||
|
Phase Six: XFCE
|
|||
|
---------------
|
|||
|
|
|||
|
Once the system is RPM bootstrapped, I can start building the software needed
|
|||
|
for the XFCE desktop environment.
|
|||
|
|
|||
|
My *personal* preferred desktop environment is actually MATE but XFCE is what I
|
|||
|
am building as the default desktop environment for YJL.
|
|||
|
|
|||
|
|
|||
|
Phase Seven: Installer
|
|||
|
----------------------
|
|||
|
|
|||
|
With XFCE running, a bootable USB thumb drive that can install the system from
|
|||
|
RPM packages will have the be created. That will be when YJL becomes a reality
|
|||
|
and not just a concept I am working towards.
|
|||
|
|
|||
|
|