From 6adb1ebcec0b16ba4bcb02c5c73c2971525036ea Mon Sep 17 00:00:00 2001 From: fosslinux Date: Wed, 4 May 2022 10:09:24 +1000 Subject: [PATCH] Update docs to reflect recent changes --- README.rst | 18 +++++++++++++++++- parts.rst | 50 +++++++++++++++++++++++++++++++++++--------------- 2 files changed, 52 insertions(+), 16 deletions(-) diff --git a/README.rst b/README.rst index dfb47ed..5c068b7 100644 --- a/README.rst +++ b/README.rst @@ -29,12 +29,15 @@ Get me started! a hard drive. This is currently hardcoded as sda. You also need to put ``sysc/tmp/disk.img`` onto your sda on the bootstrapping machine. + c. Alternatively, do not use python at all, see "Python-less build" + below. 5. Wait. 6. If you can, observe the many binaries in ``/usr/bin``! When the bootstrap is completed ``bash`` is launched providing a shell to explore the system. + Background ---------- @@ -88,7 +91,7 @@ Comparison between GNU Guix and live-bootstrap +----------------------+----------------------+----------------------+ [1]: Both projects only use software licensed under a FSF-approved -free software license. +free software license. Kernel is excluded from seed. [2]: Reiterating that Guix is working on a full source bootstrap, although that still uses guile (~12 MB). [3]: Work is ongoing to use other, smaller POSIX kernels. @@ -153,3 +156,16 @@ from sysb, executed through util-linux's ``switch_root`` command which moves the entire rootfs without a reboot. Every package from here on out is compiled under this system, taking binaries from sysa. Chroot mode skips sysb, as it is obviously irrelevant for a chroot. + +Python-less build +----------------- + +Python is no longer a requirement to set up the build system. The +repository is almost completely in a form where it can be used as the +source of a build. + +1. Copy sysa/stage0-posix/src/* to the root of the repository. +2. Copy sysa/stage0-posix/src/bootstrap-seeds/POSIX/x86/kaem-optional-seed + to init in the root of the repository. +3. Create a CPIO archive (eg, ``cpio --format newc --create --directory . > ../initramfs``). +4. Boot your initramfs and kernel. diff --git a/parts.rst b/parts.rst index fa6ade8..53a72fd 100644 --- a/parts.rst +++ b/parts.rst @@ -250,8 +250,8 @@ m4 1.4.7 flex 2.6.4 and bison. It allows macros to be defined and files to be generated from those macros. -flex 2.6.14 -=========== +flex 2.6.4 +========== We recompile unpatched GNU ``flex`` using older flex 2.5.11. This is again a two stage process, first compiling flex using ``scan.c`` (from @@ -584,14 +584,12 @@ work with our version of binutils. However, a much earlier 4.9.10 does (selected arbitarily, could go newer but did not test), with a small amount of patching. This is also modern enough for most hardware and to cause few problems with software built in sysc. Secondly, the linux-libre scripts are used -to deblob the kernel. Unauditable, unbootstrappable binary blobs within our -kernel are unacceptable. Our gawk is too buggy/old so we use sed instead for -this operation. Every other pregenerated file is appended with ``_shipped`` so -we use a ``find`` command to remove those, which are automatically regenerated. +to deblob the kernel. Every other pregenerated file is appended with ``_shipped`` +so we use a ``find`` command to remove those, which are automatically regenerated. The kernel config was originally taken from Void Linux, and was then modified for the requirements of live-bootstrap, including compiler features, drivers, -and removing modules. Speaking of which, modules cannot be used. These cannot -be transferred to subsequent systems, and we do not have ``modprobe``. Lastly, +and removing modules. Modules are unused. They are difficult to transfer to +subsequent systems, and we do not have ``modprobe``. Lastly, the initramfs of sysb is generated in this stage, using ``gen_init_cpio`` within the Linux kernel tree. This avoids the compilation of ``cpio`` as well. @@ -601,11 +599,14 @@ go_sysb This is the last step of sysa, run for non-chroot mode. It uses kexec to load the new Linux kernel into RAM and execute it, moving into sysb. +In chroot, sysb is skipped, and data is transferred directly to sysc and +chrooted into. + sysb ==== sysb is purely a transition to sysc, allowing binaries from sysa to get onto a -disk (as sysa does not nessecarily have hard disk support in the kernel). +disk (as sysa does not necessarily have hard disk support in the kernel). It populates device nodes, mounts sysc, copies over data, and executes sysc. bash 5.1 @@ -738,6 +739,31 @@ We finally compile a full version of Perl using Configure. This includes all bas extensions required and is the latest version of Perl. We are now basically able to run any Perl application we want. +libarchive 3.5.2 +================ + +``libarchive`` is a C library used to read and write archives. + +openssl 1.1.1l +============== + +OpenSSL is a C library for secure communications/cryptography. We do not +strictly use any of the networking functions of this library but it is a hard dependency +of XBPS. + +zlib 1.2.12 +=========== + +zlib is a software library used for data compression and implements an abstraction of +DEFLATE algorithm that is also used in ``gzip``. + +xbps 0.59.1 +=========== + +XBPS is the package manager used from Void Linux. It has a rather simple package +creation and installation system, and is much more robust than the hand-rolled +tar package system used previously. From here, all package archives use XBPS. + automake 1.16.3 =============== @@ -767,12 +793,6 @@ texinfo 6.7 Texinfo is a typesetting syntax used for generating documentation. We can now use ``makeinfo`` script to convert ``.texi`` files into ``.info`` documentation format. -zlib 1.2.11 -=========== - -zlib is a software library used for data compression and implements an abstraction of -DEFLATE algorithm that is also used in ``gzip``. - gcc 4.7.4 =========