| Tinux |
Tinux - short for Clementinux - is a Linux distribution build fully automatically from source.
It requires a host Linux system with Qemu and enough free disk space. The build process uses a signed Devuan ISO to create a clean, known build environment inside a virtual machine. From there, all source packages - curated by the Tinux From Scratch book (a Linux From Scratch fork) - are compiled and installed automatically, including the kernel and GRUB bootloader. The result is a working Qemu VM image disk file, created with no interactive configuration by the user beyond typing 'make'.
The process ensures reproducibility and avoids reliance on the host system's unpredictable state. Later, the VM can be moved to bare metal by copying the filesystem with rsync and updating the boot configuration and fstab to match the real hardware.

|
For those who've always wanted to dive into Linux From Scratch but felt daunted by the sheer effort and complexity, Tinux offers the perfect bridge. By automating the entire build process, Tinux lets you experience the satisfaction of creating a Linux system from source without the steep learning curve. Once you've seen it work, you can take control—pause the script at any point to explore the system, experiment with configurations, or even continue building with your favorite packages from the Beyond Linux From Scratch book. Tinux gives you the freedom to learn at your own pace, turning a daunting task into an accessible and rewarding activity to create an operating system according to your own preferences. The initial Tinux repository became unwieldy due to multiple versions of many source packages. This new repository is for version 11.7, which requires an internet connection to separately download a base ISO of Devuan and all needed source packages, keeping this project's repository size manageable. Tinux is based on the Tinux From Scratch and Beyond Tinux From Scratch books, which are forks of the respective Linux From Scratch books that use the minimal and classic SysV init system. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Download Use the following git command on your Linux command line to download the Tinux 11.7 project:
git clone http://techinvest.li/git/tinux-11.7.git Afterwards you can use this online public PGP key to verify some git hashes. The same public key is also part of the project and can be imported with the following step, assuming you have gpg installed: gpg --import doc/clemens_lahme_at_techinvest_dot_li.pgp It is up to you to trust the key or not. With this key you can check the authenticity of the following file with sha256 sums: gpg --verify SHA256SUMS.txt.asc If you are OK with the result you can check now the content of the SHA256SUMS.txt file with:
sha256sum -c ./SHA256SUMS.txt Now exercise some visual comparison of hashes both between the content of the doc/git.log file and your local git log history, in order to convince yourself, that you got the identical project as it was published. One reason to do this, because the whole project has been downloaded over HTTP, meaning you can't be sure somebody inbetween changed anything on the fly. Of course, you can't also be sure I haven't been hacked and any of my own scripts or the ISO file or the source packages do something else than they claim. No garanty, I just try to give as good of tools to compare what I share as is pheasable for me. If you have any suggestions besides using HTTPS, let me know.
BTW, there are still two binary files, so called blobs if you want, in the repository. These two are the Devuan init ram disk and linux kernel to boot the Devuan ISO in serial console mode. We extracted them already manually, but with the help of one other downloadable Alpine Linux ISO, that is already created for serial console mode, we would be also able to automate this. So that is still outstanding. The other binary that we might use later on in this project and repository is to install the Java runtime, as again, we haven't been able yet to bootstrap Java from e.g. the GNU compiler. If you want just a pre peak at how this all looks without downloading still 2+ GB of some packages, here is a 0.3 GB tar file of everything except the binaries and git history: tinux-11.7.tar.zst (with PGP signature) |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Dependencies
The availability of all these dependencies, both software, ISO, and source packages, can be checked with the following command: ./configure First make sure all necessary software is installed. Afterwards you will get informed that the Devuan 3.1.1 ISO file is not available. You can download it by executing the following script: ./bin/download_devuan-3_desktop.sh Furthermore we also download source packages from Beyond Linux/Tinux From Scratch, even thought not all those are immediately used in the base installation: ./bin/btfs-11.7/download_btfs-11.7_packages.sh To check the successful download of all package check their SHA256 sums: pushd btfs-11.7 && sha256sum -c ./SHA256SUMS.txt && popd If not all packages had been downloaded successfully, you can rerun the download script and missing packages will be tried to be downloaded again. Packages already downloaded will be skipped. |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Build Just type: make And lay back and watch, while a base Linux (without an X Window System) gets build. Once this has build, go to the Use section to test it out. Then if you like to have the X Window System for your desktop, instead of just using the terminal, continue with: make x Again, take out your favorite 0.8 L coffee mug, fill it up, and drink it really slowly. |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Use To use the newly build Linux operating system, do the following: make console When the login prompt appears, use user 'root' with password '123123'. Then type the following: about And there you go. If you had build the second stage X11 GUI with "make btfs" already, then run Tinux from an xterm terminal in your X11 environment with: make run Then a new Qemu window opens. Wait for the boot step to finish and use user 'tinux' with the password '123123'. After login in order to start the X11 environment execute the following command: startx Enjoy! Use a right mouse click to open the OpenBox menu structure. |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Documentation Tinux comes with the original LFS and BLFS documentation. The best documentation about the nitty gritty details of all related to Linux in generell. TFS and BTFS are forks of these two books to accomodate the priorities that Tinux has.
As Tinux uses package specifications from different LFS versions, all currently used LFS or BLFS versions are included here. Unix Documentation Once you login to you new Tinux installation, on a terminal, if you are not familiar with Unix, in order to get an introduction to basic Unix commands: help The next step in order to customize your Tinux setup, when you have already some Unix experience, is to look at the 'afterboot' man page with: man afterboot Some packages come with additional documentation besides the man pages, like HTML or pdf documents. For those, look in the /usr/share/doc directory. The have been all part of the LFS and BLFS project. Unique to Tinux is also this command to print out version information: about This current Tinux page with the overview documentation can be read on Tinux from the command line with: lynx /usr/share/doc/tinux/index.html /usr/share/doc The book Tinux From Scratch (aka Linux From Scratch) comes already with further documentation installed under /usr/share/doc. Noteworthy examples are: GraphViz: Drawing graphs with dot GraphViz: Drawing graphs with NEATO Report on the Algorithmic Language Scheme Books Below are some documents and books for offline reading. They are all allowed to be freely distributed, so therefore they are included with Tinux.
Original Software/Sources/Packages CVE Details
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
FAQ The Tinux Qemu VM starts up with a screen resolution of 1024x768. However, I have a bigger screen. How can I use the full screen resolution? It takes a little bit of hand work, like on Arch. And you will have to do it again once you restart your VM. Candidate to automate it therefore. Here is how it goes with 1280x1024 as an example from the command line:
xrandr How can I change my wallpaper from the command line?
ls -la /usr/share/wallpapers Changed the screen resolution, and now my xclock is out of location. How can I setup a new location? Kill the running xclock process and edit ~/.config/openbox/autostart. For 1280x1024 this line works for me: xclock -geometry 141x28+1137-1002 -digital -strftime "%Y-%m-%d %H:%M" & Copy paste the same line into an xterm to make it work for your current session. Love my wallpaper so much, but my screen is fully covered with application windows. How can I have a look at it? In ~/.config/openbox/rc.xml is ToggleShowDesktop defined with a key binding of W-d. W might stand for the Windows key, AltGr, the right Alt key, or what have you. If you can't figure it out, you can rebind it also to something that works for you (and reload the X config - or restart X). Using it will show the wallpaper/desktop. Use it again to get all your windows back, including the xclock. All the windows also don't allow me to use the right mouse click on the background to open the applications menu. How to get to this menu without seeing the desktop background? In ~/.config/openbox/rc.xml is also the W-m keybinding defined. Same remarks as to the question above apply here. Great having a whole build of a running Linux From Scratch system with a bunch of Beyond Linux From Scratch applications (notably X Org) already in place. Still, there is not all there yet that I wish.. How can I continue playing with BLFS and installing more applications to my desire? Open an xterm terminal and switch to the 'lfs' user and proceed with something like the following:
su - lfs Then put this into a bash script and send it to me:). How to build rustc from source without using a pre-existing binary rustc version? ./configure
The resulting rustc and cargo binaries (1.52.0) are stored on the host in
the build directory (./build/rustc-1.52.0/bin). The bootstrap
process starts with mrustc, which uses GCC to build
itself. Afterwards mrustc is used to build rustc 1.40 which is
then used recursively all the way up till version 1.52. In case you don't use Tinux but LFS/BLFS directly, here is an HowTo for building Rustc from source with LFS/BLFS 11.0 (hint, you have to install GCC 9.2.0 first). Actually, this HowTo works also on Tinux 11.0 :). In case you use the latest Tinux, 11.12 right now, just use 'make rustc' (after the whole BLFS and LFS had been built already) on the host with the Qemu client image not running and powered off. How to replace the xterm icon? Who got the idea to mix the colors red and blue for an icon?! So
this is how our slight variation looks:
To build xterm with this icon, add the following two files into the icons directory inside the untarred xterm-368 folder, when building xterm according to the BLFS 11.0 guide.
cd xterm-368/icons Having build all of BLFS and using the Falkon web browser is all fine and dandy. But how about building Firefox? For Firefox you need Java (I think) and especially Rustc. You can install both via binary packages according to the BLFS book. Or you can build them mostly (in the Java case) from source. But rust on an AMD 2700X with 8 cores and 16 threads takes 20 hours to build. So if you want to go ahead, do this on the host with no Qemu image actively running: make java && make rustc && make firefox |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
License The LFS/BLFS books are licensed under the MIT License, and therefore everything that represents Tinux, scripts and documentation, is also licensed under the MIT Licence. The binary Devuan install image and all the source based packages/projects in archive files, which Tinux bundles together, are of course licensed each under their respective licenses, e.g. the Linux kernel under the GPL version 2.0 etc. Except the Devuan installation image, all the included packages are distributed with full source code (and only source code) and contain their full license information each. For Devuan see here: https://www.devuan.org/os/source-code |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Contact For contact join the IRC channel #tinux on the Libera network (irc.libera.chat) or send email to: clemens.lahme@techinvest.li My PGP public key you can find at: http://techinvest.li/clemens_lahme_at_techinvest_dot_li.pgp |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||