I want to build a better system that I can actually call a distribution. The reason behind all of this is that I am not satisfied with any of the “Linux Distros” out there. Non of them do everything “right”. They all have strengths and weaknesses. The biggest weakness that I find with distributions that I like is that they install all sorts of programs on the system. So, when I install a distro, the first thing I do is spend an hour hunting down packages to remove. It’s time-consuming and annoying.
I know that building a distribution is a big job. It took me a long time just to figure out how to make a simplistic Busy Box based system to boot and operate properly. However, if I can figure out how to do this, I think it will be well worth it. This distribution isn’t going to be much and it probably will never see the Internet for download, but it’s a hobby-project that I can feel good about. There is much to learn and that is one of the reasons for this. I also think that some distributions make too many releases. I think that a release once every year or two is adequate.
To start out, I’m building an LFS (Linux From Scratch) system. This way I’ll get a quick refresher on what goes into a basic system. Next, I’ll be trying to add RPM support (I like RPM). Once that is in place, then I’m going to figure out how to create a live system on a USB-drive using the LFS-based system. Then, I’ll be creating install scripts to install the live system to the hard-drive.
There will be a lot of work just to do that. But, I have more plans... I want to use a yum repository system and setup an add-on repository for installing the X Window System and other free packages. I also want this distribution to remain GNU-compliant, so that means nonfree packages are not allowed.
The repository structure will be something like this:
plistic-core/dev: The core system, development.
plistic-free/dev: Free packages, development.
plistic-lsb/dev: Linux Standard Base packages, development.
plistic-corex/dev: X Window core packages, development.
plistic-freex/dev: Free X Window related packages, development.
plistic-core/<release number>: The core system, release.
plistic-free/<release number:> Free packages, release.
plistic-lsb/<release number>: Linux Standard Base packages, release.
plistic-corex/<release number>: X Window core packages, release.
plistic-freex/<release number>: Free X Window related packages, release.
My development machine partitions configuration:
sda1 - /boot - 500MB
sda2 - /usr/src - 12000MB
sda3 - / (Fedora 14) - 4000MB
sda4 - extended - *
sda5 - /lfs - 4000MB
sda6 - swap - 2000MB
I just finished building the LFS tool-chain. Now time to decide on the bare-minimum packages to install on the base-system. Here's the package list (stripped from the LFS-6.8 book).
plistic-core:
- Bash (LSB Core)
- Binutils (LSB Core)
- Bzip2
- Coreutils (LSB Core)
- E2fsprogs
- File (LSB Core)
- Findutils (LSB Core)
- Glibc
- Grep (LSB Core)
- GRUB
- Gzip (LSB Core)
- Iana-etc
- Inetutils
- IProute2
- Kbd
- Less
- Linux Kernel (Minus headers)
- Module-Init-Tools
- Nano
- Ncurses (LSB Core)
- Procps (LSB Core)
- Psmisc (LSB Core)
- Readline
- RPM (When I get to package management)
- Shadow (LSB Core)
- Sysklogd
- Sysvinit (Will be replaced by upstart)
- Tar (LSB Core)
- Udev
- Util-linux (LSB Core)
- yum (When I get another computer to host a yum repository)
- Zlib (LSB Core)
- Autoconf
- Automake
- Bison
- DejaGNU
- Expect
- Flex
- Gettext
- GDBM
- GMP
- Groff
- Libtool
- Linux Kernel Headers
- Man-pages
- MPC
- MPFR
- Make
- Patch
- Pkg-config
- Tcl
- Texinfo
- Vim
- XZ Utils
- At (LSB Core)
- Alsa Libraries (LSB Multimedia)
- ATK (LSB Desktop)
- Batch (LSB Core)
- Bc (LSB Core)
- Cairo (LSB Desktop)
- Cpio (LSB Core)
- CUPS (LSB Printing)
- Desktop-file-utils (LSB Desktop)
- Diffutils (LSB Core)
- Ed (LSB Core)
- Fcrontab (LSB Core)
- Freetype (LSB Desktop)
- Fontconfig (LSB Desktop)
- Gawk (LSB Core)
- Gcc (LSB C++)
- Glib2 (LSB Desktop)
- GTK+2 (LSB Desktop)
- Icon-naming-utils (LSB Desktop)
- Install_initd (LSB Core)
- Java (LSB Multimedia)
- Libjpeg (LSB Desktop)
- Libpng (LSB Desktop)
- Libxml2 (LSB Desktop)
- Lsb_release (LSB Core)
- M4 (LSB Core)
- Man-DB (LSB Core)
- MesaLib (LSB Desktop)
- NSPR (LSB Multimedia)
- NSS (LSB Multimedia)
- OpenSSL (LSB Multimedia)
- PAM (LSB Core)
- Pango (LSB Desktop)
- Perl (LSB Runtime Languages)
- Python (LSB Runtime Languages)
- Qt3 (LSB Desktop)
- Qt4 (LSB Desktop)
- Remove_initd (LSB Core)
- Sed (LSB Core)
- Sendmail (LSB Core)
- Test (LSB Core)
- Xdg-utils (LSB Multimedia)
- Xorg (LSB Desktop)
I'm not sure how this will work. The big question with RPM is how do I add RPM packages to the system if they are already installed on the system? Do I just install the RPM and overwrite the existing files so the RPM-DB is updated? Anyway, that's a ways away, so I shouldn't fret over it quite yet. I have a lot to learn!
No comments:
Post a Comment