Gobolinux + tinycore

Hello everyone.
I’ve following gobolinux for about 2 years now and really like the concept as i can help low-tech users have access to a more understandable console environment, whiie retaining standard linux compatibility.
Another project I like, when related to embedded small distros mainly, is http://tinycorelinux.net/ because of its robutstness and speed.
While I’m a daily linux user and occasionnel programmer, i’m unable to figure out the answer to the following question :
“Would it be possible to mix gobolinux AND tinycore ?” probably by applying the gobolinux concept to a tinycore distribution ?

thanks for you tips

2 Likes

Hello, @jerash!

That’s feasible, but you’d have to ask yourself what’s the advantage of mixing two distros when TinyCore already provides a packaging system. Despite the directory tree, GoboLinux comes with its own set of scripts to manage the installation/activation/deactivation/virtualization of programs. It also comes with its own set of scripts to manage boot tasks that are likely to be incompatible with what TinyCore uses.

Having said that, it shouldn’t be too difficult to get started. If you’d like to try it out, my suggestion for you is to look into the following resources:

  1. The CreateGoboLinuxTree script
  2. A minimalist version of the SymlinkProgram utility, written in C. It depends on the LinkOrExpandAll script that’s part of the same package. See the project’s Makefile for instructions on how to build them
  3. A tiny “which” wraper so you get the path to /Programs instead of /bin when checking where a given executable is installed
  4. Our RemoveBroken utility that cleans up broken links after a program has been uninstalled/deactivated
  5. The GoboHide kernel patch and its userspace tool can be used to hide the legacy directories and symlinks from your new rootfs
  6. Our Scripts package has several more utilities under bin and src that you may want to look too

Once you’ve got the basics, you’ll want to have a wrapper around TinyCore’s package manager so that it uncompresses the package under /Programs/Name/Version and then invokes SymlinkProgram to activate the program on /usr (/System/Index). You can also have wrappers around the uninstaller (so that broken links are automatically removed from /System/Index).

And that’s pretty much it.

Please let us know if you decide to go forward with this idea and do share your achievements with us! :slight_smile:

Hi,
many thanks for the detailed information. To be honest this is probably too much for me right now, but i’m happy to hear this can be done, and worth a test.
I may need a year or two before it is started, but as i’m still dreaming about the optimal linux system (from my personal point of view) this will slowly live its life in my brain and some part of a hard drive before reaching completion.
Have fun in between, and receive my congratulations for all your excellent work !

2 Likes

So, this is a really neat idea, and I think I may do it, but not with TinyCore. I am thinking something more like a self-hosting musl+busybox+linux system that then utilizes a GoboLinux-like file hierarchy. It would make 1/2 of the package management job absolutely simple. In this scenario, a version of Compile written in just SH would read a dependency list, make sure the dirs exist, and then proceed to build and move the given package, and then call SymlinkProgram. Removal would be as easy as rm -rf /Program/Package/Version and then run RemoveBroken. This wouldn’t be as advanced as Gobo proper really, but it would accomplish something similar with a smaller system.

The main question for me would really be, does the GoboHide kernel patch require anything specific in the kernel build?

No, you just apply the patch and enable it on make menuconfig (CONFIG_GOBOHIDE_FS=y). There is a userland application to tell the kernel component which directories and symlinks you want to hide. You can find it here on GitHub

That’s really cute, exactly what a lamba user would expect (and what mac osx solds you, but still leaving lots of users data files behind).

In my initial idea, the combo with tinycore was expected because of “robbustness” = Always start from a known state, nothing saved on disk unless explicitely asked by the user, or only on some specified folder. This is good for embedded devices/project.
@GenBuckTurgidson is it a concept you envision or not ?

There is Kiss linux or Carbs if you want to try

hi *

wrt to tcl pkg mgr

from Tiny Core Linux - Concepts

this Tiny Core - Architecture - diagram of the Tiny Core file architecture.

might explain better how when installed / configured (using boot codes)
tinycore’s pkgmgr default “mount mode” works

@lucasvr
as @jerash mentions

tcl fogoes the the triditional “uncompresses the package” method
refered to as

“scatter mode”, because all the files of the system are scattered all about the disk!

wrt

advantage of mixing two distros

see also : GitHub - gobolinux/ThirdPartyInstallers: Handles the installation of packages in non-native formats such as RPM and DEB.
=p
and dcore (tcl +deb) dcore:faq - Tiny Core Linux Wiki

What is dCore?
dCore is a live Linux system based on Tiny Core Linux. It consists of a minimal base install that provides the necessary tools to set up and configure a fully personalized system. Automated scripts are used to download Debian packages directly from Debian or Ubuntu repositories and convert them into SCEs.

iv read that gobo can have diffrent versions of a pkg simultaneously installed

in the script and example grub2 entry
from this link
http://forum.tinycorelinux.net/index.php/topic,22546.msg141259.html#msg141259
(specifically drawing atention to the cmdline option)

tce=LABEL=NCORE/test/9.x/x86_64/

is an example of how its posible ( if one desires) to manualy “install” tc
in a way that make’s it posible to install every release of tc ( for x86 AND x86 64)
to a single partition (in this case labled NCORE)

with each release/arch residing in directory,
with dir structure mirroring that of the tcl server

hopfuly the above (makes sense&) goes some way towards
explaining/ilistrating the “robbustness” of the tcl Core philosophy!
:vulcan_salute: