Skip Navigation

How do you realistically build your own OS with Arch Linux?

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.

8
8 comments
  • 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.

  • 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> and sudoedit /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.

  • Might not be a great place to start and not Arch Linux, but gentoo solved allowing for many possible configurations by giving each package several different installation options. This is possible because packages are compiled directly from source so the package can have several possible setting changed during compilation. The combinations of software that work are kept track of by a program (the package manager) which lets you know if any settings do not fit together.

    On the other hand Linux distros like arch that use binary packages (already compiled) have to make a decision on what defaults or combinations of software to support. If installing packages seems straightforward, it’s because the package manager and the distro are designed well. Ideally, a distro has sane defaults and takes care of dependencies so you can focus on broad strokes (like choosing KDE vs Gnome).

    You mentioned that this may be impossible to create for a single person and you would be correct. It took teams of people, years for the linux experience to be as it is (and constantly improving). And yes bugs do come up, which is why picking a well maintained distro is a good idea. Because people do fix bugs and hopefully the original developers of the software also improve their programs. That is one of the beautiful parts of open source software, that it brings together massive collaboration across projects. If for example, the maintainers of Debian find a bug in a package, than when they share it with the package developers and it is fixed, Arch Linux also gets the fix.

    Though I have not done it myself, Linux from scratch is a way of seeing how much a distro puts into making a functioning system (as a fun side project). The Linux kernel might do a lot less than you are expecting.

    When you install windows you expect a graphical interface, drivers pre installed, some basic apps like a web browser or text reader, and etc. on Linux someone had to put together those things. That’s why android and Arch Linux can both use the Linux kernel even if they look different.

    There is a copy pasta about gnu/linux which makes fun of this, as well as endless debates about which user facing systems are better. It’s also why there are so many options to choose from on Linux. For example, Linux does not come with a desktop environment so you can pick which one you want (KDE and gnome as common examples).

  • So what are you wanting?

    You can install a base Debian system and go from there. (Don't select extra packages in the installer)

You've viewed 8 comments.