09-06-2020, 07:41 AM
(09-05-2020, 09:40 PM)SinOjos Wrote: Besides the gui, learning the cli will really open up the Linux world to you.That's amazing. Thank you for all that wonderful information. That gives me something to aspire to.
Alpine Linux was originally Gentoo Linux, reduced to bare necessities. Initially Gentoo was necessary to build and grow Alpine. Alpine is now a standalone and does not need Gentoo. But Alpine is still very much like Gentoo, but a binary release rather than a compiled release like Gentoo. There is also Funtoo by the original founder of Gentoo which is a more bleeding edge release where some things filter down into Gentoo.
Both Gentoo & Alpine use OpenRC as the init system. Us old timers do not care for SystemD which is used on almost all other Linux Flavors. There are many reasons for that, but this is not the place to go into that. There are long standing threads in the Gentoo forums that will enlighten you as to why you do not want to use SystemD. It is essentially an OS in itself, for which you have no control over, they can run anything without your knowledge. For the most part transforms Linux into Windows in my opinion. I have been at the CLI since 1981 and using Linux since 1995. Don't get me started on the evilness SystemD. : )
Gentoo & Alpine Linux are the only two OS's I run. You can do anything and everything with those two. No need for anything else.
https://www.gentoo.org/
https://wiki.gentoo.org/wiki/Main_Page
https://www.funtoo.org/Welcome
https://alpinelinux.org/
https://wiki.alpinelinux.org/wiki/Main_Page
The key to really controlling PostMarketOS is Alpine the real underlying OS. The Alpine wiki will be of great help. You need to learn to use the CLI (command line interface).
What I do, instead of connecting a keyboard to the phone for access to the CLI. Is use SSH. In Linux for accessing multiple servers/computers via ssh using screen or tmux is the best way. I prefer tmux combined with tmuxifier.
https://wiki.gentoo.org/wiki/Tmux
https://github.com/jimeh/tmuxifier
Tmux allows you to in one terminal log into as many servers/computers you want, kind of like tabs, but better for working at the CLI. Simple key press to change from on to the other. Start a session then add as many panes as you want. Tmuxifier allows you to build configuration files to start out with as many windows and or panes and have automatic login. In other words, when I start my root tmux, it automatically logs into 10 different computers. My workstation, 6 servers, 2 laptops, and 1 pinephone. Which is my current development cluster. I have a different configuration for my Amazon AWS Linux VPS content delivery cluster.
Since my content delivery cluster runs the same OS on all servers. I use tmux-xpanes which allows me to login to many servers in one window. I have 9 servers so I end up with 3 across & 3 down in one window. Each command is mimicked in each pane. For updating I type in the update command once, it is mimicked on every server. Makes handling multiple servers a lot easier. Other wise you will have to login to each server individually. That is the great thing about Linux, multi tasking, that people coming from windblows have trouble with. If your not Multi-Tasking with Linux you are not using it's full potential.
I run xfce with 9 work-spaces, with cursor edge wrap which allows me to move to any of the 9 by simply moving the cursor to the edge of the screen. I will have various browsers and gui apps in the top & bottom 3 across. With the 3 middle workspaces running a terminal with tmux/tmuxifier. I can quickly move to any server in a fraction of a second, with each terminal being logged into 9-12 servers/computers. The best way I have found to work on 3 x 9 = 27 servers or unlimited number of servers and have quick access to any one of them with a quick move of the cursor and a key press.
Since xfce allows you to run 1 or many workspaces, my 9 workspaces is but a start. You could run a 10x10 then with 9 tmux windows in each terminal you could be logged into 900 servers and have to do no more than a quick move of the cursor then key press the window number you want in tmux to have nearly instant access to one of 900 servers. That is with one login to each window. Each window can also have numerous panes, if you did a 3x3 for 9 panes per window, you could have access to 8,100 servers at one time with quick access to any one. If you were to use xpanes you could enter a command once and send it to every server at the same time. Of course that is an extreme example, there are better ways for such a big number. The only limitation to Linux is your imagination.
The only other window manager I run is DWM which you can switch from on workstation to another with a key press rather than cursor edge wrap like xfce. Both have a small suite of apps. I use xfce for my workstation, dwm for monitoring servers that I have gui monitoring stuff running like htop, Zabbix or Kismet wireless IDS.
https://github.com/greymd/tmux-xpanes
https://www.xfce.org/
https://dwm.suckless.org/
https://www.zabbix.com/
https://www.kismetwireless.net/
As you learn more about Linux you will be able to better understand how Linux works. LFS Linux From Scratch is the best way to learn. LFS is only instructions, there is not package manager. You will learn about setting Flags that are specific for your cpu and flags for the packages/apps you will compile and install. Gentoo is basically LFS on steroids. Gentoo has a package management system that greatly simplifies setting cpu flags, individual packages/app flags.
http://www.linuxfromscratch.org/
By using the correct flags better performance can be had for your specific cpu. While the package/app flags, allow you to only install what is needed, or specifically tailor to your intended use. Which can possibly improve performance, reduce bloat, reduce or eliminate bugs, reduce attack surface. Binary Linux Distros/Flavors turn everything on usually, some times not. But you generally get it all whether you need it or not. Since the intended use is with any cpu of a specific architecture, everything may have or may have not been compiled with the best GCC Optimization.
https://wiki.gentoo.org/wiki/GCC_optimization
The nice thing with Gentoo, the reason why Alpine started as Gentoo, Google ChromeOS is Gentoo and why universities, hosting providers, NASA, etc. uses Gentoo. Is because you have more control and a better out of the box setup and package management system for development than any other Linux OS. I would not be surprised if Tesla & SpaceX use Gentoo, as everything they do is Linux.
Linux is great for building custom Linux OS's. Below is a link to my write up on the Gentoo Wiki on how to cross compile in a distcc network cluster for the Banana Pi. Which is an Arm single board. The instructions can be used to build a development environment for the PinePhone. Simply build for the CPU and or architecture your PinePhone is using.
Since compiling on Arm cpu's is slow, especially Browsers which can take 2-3 days to complete. It allows you to use any number of computers/servers to compile for the desired cpu architecture on faster computers/servers running different cpu architectures.
https://wiki.gentoo.org/wiki/Banana_Pi_the_Gentoo_Way
When the first Arm single boards came out, Rasberry Pi and such. I did a lot with getting Gentoo working on the various Arm boards. I have not been doing much the past number of years with cross compiling for Arm boards. But with the advent of the PinePhone, looks like I might be getting back into it.
Rather than setting up a typical cross compiling with distcc on faster servers. I am looking at the Pine Cluster Board. With 7 slots, the modules run the same cpu as the PinePhone, using distcc, distributed compiling to all 7 modules, packages/apps will compile much faster than on 1. No need to do a cross compiling setup.
https://store.pine64.org/product/cluster...ule-slots/
Since Gentoo is built to do stuff like that out of the box. Building a custom OS for the PinePhone would become a trivial matter using Gentoo with the ClusterBoard. Think I am going to have to order one. That way you can build your OS anyway you want, then install any of the available desktops/user-interfaces.
That kind of setup would be optimum for desktop/user-interface development. No need to setup a cross compiling scenario with different architectures, which can be a bit finicky at times.