As a Linux newbie, all I know about Arch Linux is that it is a DIY distro where you assemble the entirely of the OS by scratch. Somehow it feels like it is too easy than it needs to be, even if it is primarily meant for experienced users. I imagine it to be less like building your PC from parts bought from the market and more like building each and every component of the PC by scratch along with building the PC, which I assume to be much harder for the average consumer. It seems absurd how it is possible for a single person to incorporate the innumerable components required for functionality in a personal system that does not crash 100% of the time due to countless incompatibility errors that come with doing something like this.
I would like someone to elaborate on how it feels to ‘build’ a system software by yourself with Arch and how it is reasonable to actually do so in a simple language. I do have some experience in programming, mainly in webdev, so it’s not like I need a baby-like explanation in how this works but it would be nice to get to know about this from someone who could understand where this confusion/curiosity is coming from.
To use a web dev analogy, Arch is like node, pacman is like npm. You can install node and it’ll do basic functions - just like you can install arch and have basic functions with the base package. Then you need to just install additional packages to include the functionality and libraries you want to use.
Following the installation guide highlights many packages needed for a “fully functional” desktop, and there’s a lot of choices to make along the way. It’s not considered good for a novice because most users don’t know (or care) about the difference between pipewire or alsa, i3 or gnome, network-manager or systemd-networkd - they just want a GUI, sound and a network connection.
I’ve installed Arch a dozen times at least over the years on various machines.
First off, some advice. People will tell you to watch videos or read some specific guide, and by all means do so to get an overview of the process, but I’d highly recommend double-checking everything against the official install guide. It’s fairly terse but contains everything you need to do, and if you research the topics you don’t understand you’ll learn a lot quickly. This is best done in a virtual machine the first time unless you have a spare machine laying around.
Overall, it amounts to creating the install medium, booting it, any post boot configuration (including networking), partitioning and mounting your disk(s), writing some config files and installing the base packages and a bootloader, plus anything else you may need or want. I’m glossing over a lot of individual steps and “anything you may need or want” is essentially endless, but you get the point.
Overall it’s involved but not terribly difficult. Like I think others have said, fairly similar to building a desktop from parts. Gentoo is a step up, and installing Linux From Scratch another few steps above that.
What you ask is somebody writing a book that has already been written. I’m expecting the downvotes on this one, but I’m confident this is the right answer.
I would like someone to elaborate on how it feels to ‘build’ a system software by yourself with Arch and how it is reasonable to actually do so in a simple language.
It’s not for everyone. I did it in a VM to practice and decided it’s not for me. There’s options like Archcraft and EndeavorOS that get you up and running with varying minimum installs, but you are correct that it’s very minimal (on purpose). You get to decide what software goes on your system, and that’s the core of the philosophy; you should know what you did, so when a problem occurs, you know what parts might be broken and what to research.
The Arch wiki is vital for anyone who wants a modern Desktop experience, and there’s guides for pretty much everything, even down to switching to an immutable
ostree
setup. I have no idea how anyone might do it blind from scratch.The setup is just a lot of
sudo pacman -S <package name>
andsudoedit /path/to/config
. It’s not that different from making changes in other distros.It seems absurd how it is possible for a single person to incorporate the innumerable components required for functionality in a personal system that does not crash 100% of the time due to countless incompatibility errors that come with doing something like this.
It’s really just the package manager. Every package has a description that tells the package manager what it provides and what it needs(called dependencies). So if you tell it to install X, and X needs y and z to function the package manager will automatically pull them in as well as their dependencies. It’ll also know to avoid incompatibilities the same way, the packages themselves contain the information.
90% of the real work in making a new distro is packaging, I.e. finding a way of feeding the package manager the information it needs to do its job by creating the packages. 0.1% of arch users deal with that shit.
Daily Arch user here. The process of configuring an Arch install is perhaps not as difficult or mystical as you are imagining. I would say it is more like your first analogy: picking what off-the-shelf parts you want for a system and then putting them into a case. I think what you are describing is more like Linux from Scratch.
Installing Arch is effectively taking the steps performed by the installer .iso disks which every distro uses and instead doing it manually with CLI commands. You use CLI commands to partition the drive, create a filesystem, install a basic set of packages, then chroot into your system and use the package manager to install the rest of the packages you want. Aside from editing a couple config files, there is zero coding involved. The exact steps vary from guide to guide, but a basic outline of what I do is as follows:
-
First, I download the Arch iso and write it to a USB.
-
Once I boot up the install USB, I use
iwctl
to connect to my wifi for the packages I will need to download, -
then I use
fdisk
to partition the drive I want to install to with an EFI and linux filesystem partition (You might also make a swap partition at this step but I typically use a swap file on my filesystem partition). -
then you use
mkfs
to create filesystems on the EFI and linux filesystem partitions. -
Then I use
genfstab
to make the /etc/fstab file -
Then, I use
pacstrap
to install the base packages like pacman. Then I mount the filesystem and chroot into the new partition. -
From there, I basically use pacman to install all the packages I need, including the linux kernel (I use linux-zen), the DE (I use KDE), the boot manager (I use Refind), and everything else. There are a few cleanup steps like setting the locales and time zones, etc. but that is about it.
I suggest watching a guide on youtube, which was how I learned, or installing something like Arcolinux or Endeavour, which simplifies the installer into a series of checkboxes to select what DE you want, etc.
-
So what are you wanting?
You can install a base Debian system and go from there. (Don’t select extra packages in the installer)