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/