galeb

Једноставна статичка дистрибуција заснована на musl-у
git clone https://git.sr.ht/~strahinja/galeb
Дневник | Датотеке | Референце | ПРОЧИТАЈМЕ | ЛИЦЕНЦА

FAQ (7994B)


      1 FAQ
      2 ===
      3 
      4 Q: What does "Galeb" mean?
      5 A: "Seagull".
      6 
      7 Q: How do you pronounce it?
      8 A: [gɑ:leb].
      9 
     10 Q: Is this Linux? GNU/Linux? Something else?
     11 A: Kernel = Linux. libc = musl-libc. coreutils = suckless core. Init system 
     12    = suckless init. Process supervisor = suckless svc, heavily modified by
     13    me.The rest are GNU or other utilities which weren't covered by the above.
     14    Thus, "suckless/musl/Linux", or "musl/Linux". It is not wrong to throw GNU in
     15    the name as well, but this system is definitely different than something like
     16    Debian, Fedora or Ubuntu.
     17 
     18 Q: How do I install this thing?
     19 A: By reading files in this repository and typing commands.
     20 
     21 Q: What if I don't want to read and/or type commands?
     22 A: Go back to "ricing" Ubuntu. Nothing to see here.
     23 
     24 Q: Halp! This doesn't work! How to fix?
     25 A: RTFM. Search the Web. Apply logic. Otherwise, see above.
     26 
     27 Q: No thanks, I will instead go back to another distro or Windoze. But won't
     28    that hurt your business?
     29 A: What business? Use whatever software you like, or don't, it's up to you.
     30 
     31 Q: How to boot? There's no GRUB!
     32 A: See BOOTING.
     33 
     34 Q: How do I activate wireless?
     35 A: Read the file WIRELESS.
     36 
     37 Q: How do I install a package?
     38 A: cd / && xz -dc /pkg/some_pkg.tar.xz | tar -xf -
     39    or use mkpk(8)[1]:
     40    mkpk install some_pkg
     41    (when there is a tarball in /pkg).
     42 
     43 Q: How do I uninstall a package?
     44 A: cd / && xz -dc /pkg/some_pkg.tar.xz | tar -tf - |
     45    while IFS= read -r file; do rm -- "$file"; done
     46    or use mkpk(8):
     47    mkpk uninstall some_pkg
     48    Remove unwanted empty directories manually.
     49 
     50 Q: How do I find a package the $file belongs to?
     51 A: for pkg in /pkg/*.tar.xz; do if xz -dc $pkg | tar -tf - |
     52    grep "$file" >/dev/null; then echo $pkg; fi; done
     53 
     54 Q: What license applies here?
     55 A: License for each individual program is its own. License for files in this 
     56    repository is GPLv3, unless otherwise noted.
     57 
     58    musl-libc is licensed under the Expat ("MIT") license, which doesn't restrict
     59    statically linking non-copylefted software.
     60 
     61    In contrast, glibc (not used here) is mainly licensed under the LGPL v2.1+,
     62    which requires software using it to provide means for it to be potentially
     63    combined with modified versions of glibc (eg. have *.o files and makefiles or
     64    just full source code available[2]).
     65 
     66    Scripts used to build the binary form of Galeb are publicly available, and
     67    they use publicly available source code for all the constituent parts, so the
     68    requirements of GPL and LGPL are satisfied. Anyone can create modified
     69    versions of those scripts and the software they operate on according to their
     70    respective licenses. Furthermore, Expat license is considered compatible with
     71    the GPL by the FSF.[3]
     72 
     73    Since some of the goals of Galeb are simplification and minimalism as much as
     74    comfortably possible, musl-libc was chosen over glibc, even if glibc has a
     75    stricter (and thus ultimately better for *all* the users) license. Refer to
     76    [4].
     77 
     78 Q: Why is /usr a link to /, instead of /bin being a link to /usr/bin etc?
     79 A: Galeb doesn't follow FHS. Instead, it builds on https://sta.li/filesystem/
     80 
     81    > / - the root home
     82    > /bin - all executables
     83    > /sbin -> /bin # softlink pointing to /bin
     84    > /boot - all boot files
     85    > /etc - system configuration
     86    > /home - user directories
     87    > /var - spool, run, log, cache
     88    > /share - man pages, locales, dependencies
     89    > /include - include/headers
     90    > /lib - static libraries for building stuff
     91    > /mnt - mount points
     92    > /usr -> / # softlink pointing to /
     93    >
     94    > Based on the Linux assumption:
     95    > 
     96    > /dev - devices
     97    > /proc - proc files
     98    > /sys - sys files
     99    >
    100    > For crap stuff:
    101    > 
    102    > /sucks - stuff that sucks, like ugly gnu library dependencies, or systemd
    103    > fake handlers
    104 
    105    The differences in Galeb are:
    106 
    107    * Things in /sucks also include:
    108      - All programs which are not designed to be linked statically,
    109      - Programs I couldn't easily configure to be statically compiled yet
    110        (eg. Perl) - that could change over time,
    111      - Programs which in my opinion suck.
    112 
    113    * There is also /local serving the purpose of /usr/local.
    114 
    115    * /var/run is a symlink to /run tmpfs.
    116 
    117    * There is also user-writeable /tmp tmpfs.
    118 
    119    * Package sources and related files are in /src.
    120 
    121    * Legal documents (licenses) are in /share/legal.
    122 
    123    * Compiled packages are in /pkg.
    124 
    125    * 9base is in /plan9.
    126 
    127 Q: Why not use fakechroot + fakeroot + chroot instead of writing a convoluted
    128    shell script which requires root access? I don't want to use that!
    129 A: Quoting `man fakechroot`:
    130 
    131    > - Every command executed within fakechroot needs to be linked to the same
    132    >   version of the dynamic linker from real environment.  If the libraries in
    133    >   chroot are not compatible, try to use "--use-system-libs" option.
    134    >
    135    > - Statically linked binaries doesn't [sic!] work, especially ldconfig(8),
    136    >   so you have to wrap this command with dummy version and set the proper
    137    >   "FAKECHROOT_CMD_SUBST" environment variable.
    138 
    139    Obviously, for both reasons, this combination can't be used here.
    140 
    141    After the first boot, a packaging system mkpk(8) is used to build and install
    142    packages. It uses PRoot[5] to obtain root access necessary to create package
    143    tarballs.
    144 
    145    You are correct to be concerned about running unknown scripts as root. That's
    146    why you should always inspect any scripts before running them (especially as
    147    root). You are _expected_ to at least set your username in lib/env.sh before
    148    running bootstrap scripts.
    149 
    150 Q: Why use OpenSSL instead of BearSSL?
    151 A: Python doesn't support it yet (apparently?):
    152 	https://github.com/oasislinux/oasis/issues/14
    153 
    154 Q: Why not use scron (simple cron) instead of dcron?
    155 A: Because it doesn't support per-user crontabs.
    156 
    157 Q: Why not use heirloom vi/ex?
    158 A: Unfortunately, heirloom vi gives "Out of memory - too many lines in file":
    159    https://github.com/n-t-roff/heirloom-ex-vi/issues/3
    160 
    161 Q: Why not use vis instead of vim?
    162 A: It didn't work well in tty under tmux. It only "works" (to a degree – with
    163    visual artefacts when moving through a file) with `tmux-256color` (and tty is
    164    normally in 16 color mode), crashes with other `TERM` settings. I might bring
    165    vis back instead of vim if I or its authors figure out how to fix it.
    166 
    167 Q: Why isn't there a graphical login and GNOME/Plasma etc?
    168 A: Surely you jest… … … No? Alright – because they are against the
    169    fundamental principles behind Galeb.  
    170    If you give it a bit of thought, there is no reason at all for the existence
    171    of graphical login programs (also called _display managers_, DMs) when there
    172    is already getty. Even as eye candy, the only time one is looking at a
    173    display manager is when not logged in.
    174 
    175 Q: Can you add FOO as a package?
    176 A: When I created Galeb, I made my own choice of initial packages. You are free
    177    to add whatever you like. Some of my choices regarding packages not being
    178    included are deliberate.
    179 
    180 Q: Why is the startup so slow?
    181 A: When booting from USB flash, this is a known consequence of a slow medium,
    182    and not specific to Galeb. What is also slowing up boot is customized smdev,
    183    which is made to do work comparable to udev on startup. If this bothers you,
    184    and you don't need device links and nodes created on boot, edit /bin/rc.init.
    185 
    186    Startup speed is irrelevant anyway. Unix-like systems are designed to be
    187    robust and rarely need a reboot, unlike some other operating systems.
    188 
    189 Q: Why are some manpages showing some characters as weird question marks?
    190 A: Because the default console font, LatArCyrHeb-16, doesn't support some
    191    Unicode characters. Use a console font with a different selection of
    192    characters, for example  
    193 
    194 	https://git.sr.ht/~strahinja/fonts/
    195 
    196 
    197 [1]: https://git.sr.ht/~strahinja/mkpk/
    198 [2]: https://www.gnu.org/licenses/gpl-faq.html#LGPLStaticVsDynamic
    199 [3]: https://www.gnu.org/licenses/license-list.html#Expat
    200 [4]: https://www.etalabs.net/compare_libcs.html
    201 [5]: https://proot-me.github.io/