<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/"
    xmlns:atom="http://www.w3.org/2005/Atom" xmlns:media="http://search.yahoo.com/mrss/" version="2.0">
    <channel>
        
        <title>
            <![CDATA[ ArchLinux - freeCodeCamp.org ]]>
        </title>
        <description>
            <![CDATA[ Browse thousands of programming tutorials written by experts. Learn Web Development, Data Science, DevOps, Security, and get developer career advice. ]]>
        </description>
        <link>https://www.freecodecamp.org/news/</link>
        <image>
            <url>https://cdn.freecodecamp.org/universal/favicons/favicon.png</url>
            <title>
                <![CDATA[ ArchLinux - freeCodeCamp.org ]]>
            </title>
            <link>https://www.freecodecamp.org/news/</link>
        </image>
        <generator>Eleventy</generator>
        <lastBuildDate>Tue, 19 May 2026 10:29:25 +0000</lastBuildDate>
        <atom:link href="https://www.freecodecamp.org/news/tag/archlinux/rss.xml" rel="self" type="application/rss+xml" />
        <ttl>60</ttl>
        
            <item>
                <title>
                    <![CDATA[ The Arch Linux Handbook – Learn Arch Linux for Beginners ]]>
                </title>
                <description>
                    <![CDATA[ If you ask a group of developers what Linux is, most of them will probably say it's an open-source operating system. Those with more technical knowledge will probably call it a kernel. For me, though, Linux is not just an operating system or a kernel... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/how-to-install-arch-linux/</link>
                <guid isPermaLink="false">66b0ab397cd8dca6718a22b8</guid>
                
                    <category>
                        <![CDATA[ ArchLinux ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Linux ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Farhan Hasin Chowdhury ]]>
                </dc:creator>
                <pubDate>Tue, 18 Jan 2022 15:15:23 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/news/content/images/2023/07/Farhan-Arch-Linux-Mockup.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>If you ask a group of developers what Linux is, most of them will probably say it's an open-source operating system. Those with more technical knowledge will probably call it a kernel.</p>
<p>For me, though, Linux is not just an operating system or a kernel. For me, it's freedom. The freedom of putting together an operating system according to my needs, and that's where Arch Linux comes in.</p>
<p>According to their <a target="_blank" href="https://wiki.archlinux.org/title/Arch_Linux">wiki</a>,</p>
<blockquote>
<p>Arch Linux is an independently developed, x86-64 general-purpose GNU/Linux distribution that strives to provide the latest stable versions of most software by following a rolling-release model.   </p>
<p>The default installation is a minimal base system, configured by the user to only add what is purposely required.</p>
</blockquote>
<p>In other words, Arch Linux is a distribution optimized for x86-64 architecture targeted at experienced Linux users. It lets you have full responsibility and control over your system. </p>
<p>You'll get to choose what packages you want, the kernel (yes there are multiple), the boot-loader, the desktop environment, and so on.</p>
<p>Have you ever heard someone say,</p>
<blockquote>
<p>Oh – by the way, I use Arch Linux!</p>
</blockquote>
<p>This is because installing Arch Linux on a machine requires you to have proper knowledge of how different parts of a Linux distribution work. So running Arch Linux on your system is kind of a testament to your understanding of Linux.</p>
<p>Speaking from experience, installing Arch Linux is not very different from installing something like Fedora or Ubuntu. It's just that you have to go through the individual steps manually instead of having an installer do the things for you. But once you've gone through the process, you'll start to understand how the other distributions work in general.</p>
<p>In this article, I'll walk you through the entire process of installing and configuring Arch Linux on your machine. I'll also discuss some common tasks and troubleshooting tips near the end.</p>
<p>So come with me and I'll show you how deep the rabbit hole goes.</p>
<h2 id="heading-table-of-contents">Table of Contents</h2>
<ul>
<li><a class="post-section-overview" href="#heading-some-assumptions-im-making">Some Assumptions I'm Making</a></li>
<li><a class="post-section-overview" href="#heading-how-to-create-a-bootable-arch-linux-usb-drive">How to Create a Bootable Arch Linux USB Drive</a></li>
<li><a class="post-section-overview" href="#heading-how-to-prepare-your-computer-for-installing-arch-linux">How to Prepare Your Computer for Installing Arch Linux</a></li>
<li><a class="post-section-overview" href="#heading-how-to-install-arch-linux">How To Install Arch Linux</a><ul>
<li><a class="post-section-overview" href="#heading-how-to-set-the-console-keyboard-layout-and-font">How To Set the Console Keyboard Layout and Font</a></li>
<li><a class="post-section-overview" href="#heading-how-to-verify-the-boot-mode">How To Verify the Boot Mode</a></li>
<li><a class="post-section-overview" href="#heading-how-to-connect-to-the-internet">How To Connect to the Internet</a></li>
<li><a class="post-section-overview" href="#heading-how-to-update-the-system-clock">How To Update the System Clock</a></li>
<li><a class="post-section-overview" href="#heading-how-to-partition-the-disks">How To Partition the Disks</a></li>
<li><a class="post-section-overview" href="#heading-how-to-format-the-partitions">How To Format the Partitions</a></li>
<li><a class="post-section-overview" href="#heading-how-to-mount-the-file-systems">How To Mount the File Systems</a></li>
<li><a class="post-section-overview" href="#heading-how-to-configure-the-mirrors">How To Configure the Mirrors</a></li>
<li><a class="post-section-overview" href="#heading-how-to-install-arch-linux-base-system">How To Install Arch Linux Base System</a></li>
</ul>
</li>
<li><a class="post-section-overview" href="#heading-how-to-configure-arch-linux">How To Configure Arch Linux</a><ul>
<li><a class="post-section-overview" href="#heading-how-to-generate-the-fstab-file">How To Generate the Fstab File</a></li>
<li><a class="post-section-overview" href="#heading-how-to-login-to-the-newly-installed-system-using-arch-chroot">How To Login to The Newly Installed System Using Arch-Chroot</a></li>
<li><a class="post-section-overview" href="#heading-how-to-configure-the-time-zone">How To Configure the Time Zone</a></li>
<li><a class="post-section-overview" href="#heading-how-to-configure-the-localization">How To Configure the Localization</a></li>
<li><a class="post-section-overview" href="#heading-how-to-configure-the-network">How To Configure the Network</a></li>
<li><a class="post-section-overview" href="#heading-how-to-set-the-root-password">How To Set the Root Password</a></li>
<li><a class="post-section-overview" href="#heading-how-to-create-a-non-root-user">How To Create a Non-root User</a></li>
<li><a class="post-section-overview" href="#heading-how-to-install-microcode">How To Install Microcode</a></li>
<li><a class="post-section-overview" href="#heading-how-to-install-and-configure-a-boot-loader">How To Install and Configure a Boot Loader</a></li>
</ul>
</li>
<li><a class="post-section-overview" href="#heading-how-to-install-xorg">How To Install Xorg</a></li>
<li><a class="post-section-overview" href="#heading-how-to-install-graphics-drivers">How To Install Graphics Drivers</a></li>
<li><a class="post-section-overview" href="#heading-how-to-install-a-desktop-environment">How To Install a Desktop Environment</a><ul>
<li><a class="post-section-overview" href="#heading-how-to-install-gnome">How To Install GNOME</a></li>
<li><a class="post-section-overview" href="#heading-how-to-install-plasma">How To Install Plasma</a></li>
</ul>
</li>
<li><a class="post-section-overview" href="#heading-how-to-finalize-the-installation">How To Finalize The Installation</a></li>
<li><a class="post-section-overview" href="#heading-how-to-switch-between-desktop-environments">How To Switch Between Desktop Environments</a></li>
<li><a class="post-section-overview" href="#heading-how-to-manage-packages-using-pacman">How To Manage Packages Using Pacman</a><ul>
<li><a class="post-section-overview" href="#heading-how-to-install-packages-using-pacman">How To Install Packages Using Pacman</a></li>
<li><a class="post-section-overview" href="#heading-how-to-remove-packages-using-pacman">How To Remove Packages Using Pacman</a></li>
<li><a class="post-section-overview" href="#heading-how-to-upgrade-packages-using-pacman">How To Upgrade Packages Using Pacman</a></li>
<li><a class="post-section-overview" href="#heading-how-to-search-for-packages-using-pacman">How To Search for Packages Using Pacman</a></li>
</ul>
</li>
<li><a class="post-section-overview" href="#heading-how-to-use-aur-in-arch-linux">How To Use AUR in Arch Linux</a><ul>
<li><a class="post-section-overview" href="#heading-how-to-install-packages-using-a-helper">How To Install Packages Using a Helper</a></li>
<li><a class="post-section-overview" href="#heading-how-to-install-packages-manually">How To Install Packages Manually</a></li>
</ul>
</li>
<li><a class="post-section-overview" href="#heading-how-to-troubleshoot-common-problems">How To Troubleshoot Common Problems</a></li>
<li><a class="post-section-overview" href="#heading-how-to-use-the-live-arch-iso-as-a-rescue-media">How To Use the Live Arch ISO as a Rescue Media</a></li>
<li><a class="post-section-overview" href="#heading-further-reading">Further Reading</a></li>
<li><a class="post-section-overview" href="#heading-conclusion">Conclusion</a></li>
</ul>
<h2 id="heading-some-assumptions-im-making">Some Assumptions I’m Making</h2>
<p>Before I jump into the core of the tutorial, I want to clarify a few things. To make this entire article approachable, I'm making the following assumptions about you and your system:</p>
<ul>
<li>You know about Arch Linux at a basic level<ul>
<li><a target="_blank" href="https://wiki.archlinux.org/title/Arch_Linux">Arch Linux</a></li>
<li><a target="_blank" href="https://wiki.archlinux.org/title/Frequently_asked_questions">Frequently asked questions</a></li>
<li><a target="_blank" href="https://wiki.archlinux.org/title/Arch_compared_to_other_distributions">Arch compared to other distributions</a></li>
</ul>
</li>
<li>Your computer is using UEFI and not BIOS</li>
<li>You have a USB drive large enough (4GB) to boot Linux from</li>
<li>You have some previous experience installing Linux (Ubuntu/Fedora)</li>
<li>You have enough space to install linux on your HDD or SSD</li>
</ul>
<p>That's pretty much it. If you have all of the above, you're good to go.</p>
<h2 id="heading-how-to-create-a-bootable-arch-linux-usb-drive">How to Create a Bootable Arch Linux USB Drive</h2>
<p>To download Arch Linux, head to <a target="_blank" href="https://archlinux.org/download/">https://archlinux.org/download/</a> and download the latest release (2022.01.01 as of this writing). The ISO should be around 870 megabytes in size.</p>
<p>Once downloaded, you'll need to put it in your USB. You can use the <a target="_blank" href="https://getfedora.org/en/workstation/download/">Fedora Media Writer</a> program to do that. Download and install the application on your system. Now connect your USB drive and open the application:</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/01/image-48.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>Click on "Custom image" and use the file browser to pick the downloaded Arch Linux ISO file.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/01/image-49.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>The application will now let you pick one of your connected USB drives. Be very careful in selecting the right one if you have multiple USB drives connected to your machine. Now hit the "Write to Disk" button and wait until the process is finished.</p>
<h2 id="heading-how-to-prepare-your-computer-for-installing-arch-linux">How to Prepare Your Computer for Installing Arch Linux</h2>
<p>In this step you'll have to make a few changes to your system, otherwise Arch Linux may fail to boot or run properly.</p>
<p>The first change that you'll have to make is disabling secure boot in your UEFI configuration. This feature helps prevent malware attacks during boot but it also prevents the Arch Linux installer from booting. </p>
<p>Detailed instructions on how you can disable this vary depending on your motherboard or laptop brand. You'll have to search the internet yourself to find the right way this time.</p>
<p>The second thing that you should disable is only relevant if you're installing Arch Linux alongside Windows. There is a Windows feature called fast startup that reduces the boot time of your computer by partially hibernating it.</p>
<p>This is generally a nice feature to have but it prevents any other operating system in a dual boot configuration from accessing the hard disk in the process.</p>
<p>To disable this feature, open the start menu and search for "Choose a power plan" as follows:</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/01/choose-a-power-plan.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>Then on the next window, click on "Choose what the power buttons do" from the left sidebar:</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/01/image-54.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>Then on the next window you'll see a list of "Shutdown settings" and the "Turn on fast startup (recommended)" option should be shown as read only there.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/01/image-55.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>Click the "Change settings that are currently unavailable" at the top and you should then be able to change the settings.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/01/image-56.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>Untick the "Turn on fast startup (recommended)" option and press the "Save changes" button at the bottom. From now on the boot process may take a few moments extra but it's all worth it.</p>
<p>In this article, I'll install Arch Linux as my default operating system. So I'll allocate my entire disk space to it. </p>
<p>If you're trying to install it alongside Windows, however, I have a dedicated <a target="_blank" href="https://www.freecodecamp.org/news/how-to-dual-boot-any-linux-distribution-with-windows/">article</a> on the topic. And in that article, there is a <a target="_blank" href="https://www.freecodecamp.org/news/how-to-dual-boot-any-linux-distribution-with-windows/#how-to-create-additional-partitions-for-installing-linux">section</a> that discusses the partitioning process in great detail.</p>
<h2 id="heading-how-to-install-arch-linux">How To Install Arch Linux</h2>
<p>Assuming that you have a bootable USB drive and your computer is configured properly, you'll have to boot from the USB drive. The process of booting from a USB drive differs from machine to machine.</p>
<p>On my machine, hitting the F12 key during boot takes me to the list of bootable devices. From there I can pick my bootable USB drive. You may already know the appropriate technique for your computer or you may have to research a bit.</p>
<p>Once you've managed to land on the list of connected bootable devices, select your USB drive to boot from and the following menu should show up:</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/01/VirtualBox_archlinux-2022.01.01-x86_64_12_01_2022_18_39_29.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>Choose the first one from the list and wait until the Arch installer finishes booting up. Once fully booted up, you'll see something like this:</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/01/VirtualBox_archlinux-2022.01.01-x86_64_12_01_2022_18_50_39.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>That's it. That's all you'll get. Unlike other operating systems that you maybe familiar with, the Arch installer doesn't have any graphical user interface to automate the installation.</p>
<p>It rather requires you to invest your time and effort and configure each part of the distribution piece by piece. It may sound daunting but, to be honest, if you understand what you're doing, installing Arch Linux is quite fun.</p>
<h3 id="heading-how-to-set-the-console-keyboard-layout-and-font">How To Set the Console Keyboard Layout and Font</h3>
<p>As I've already said, the Arch installer doesn't have a graphical user interface so there's going to be a lot of typing. Configuring your keyboard layout and a nice looking font can make the installation process a lot less frustrating.</p>
<p>By default, the console assumes that you have a standard US keyboard layout. This should be fine for most people but just in case if you happen to have a different one, you can change to that.</p>
<p>All the available keymaps are usually kept inside the <code>/usr/share/kbd/keymaps</code> directory in the form of <code>map.gz</code> files. You can see the list of them by using the <code>ls</code> command:</p>
<pre><code class="lang-bash">ls /usr/share/kbd/keymaps/**/*.map.gz
</code></pre>
<p>This will list out all the available key maps:</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/01/VirtualBox_archlinux-2022.01.01-x86_64_13_01_2022_15_58_28-1.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>Now for example, if you have the Mac-US keyboard layout, locate the corresponding <code>map.gz</code> file from this list which is the <code>mac-us.map.gz</code> one.</p>
<p>You can use the <code>loadkeys</code> command to load the desired keymap. To set <code>mac-us.map.gz</code> as default, execute the following command:</p>
<pre><code class="lang-bash">loadkeys mac-us
</code></pre>
<p>You can also change the console font if you don't like the default one. Just like the keymaps, the console fonts are kept inside the <code>/usr/share/kbd/consolefonts</code> which you can list out using the <code>ls</code> command:</p>
<pre><code class="lang-bash">ls /usr/share/kbd/consolefonts
</code></pre>
<p>This will list out all the available fonts:</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/01/VirtualBox_archlinux-2022.01.01-x86_64_13_01_2022_16_08_01.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>You can now use the <code>setfont</code> command for setting one of these. For example, if you want to set the <code>drdos8x16</code> as default, execute the following command:</p>
<pre><code class="lang-bash">setfont drdos8x16
</code></pre>
<p>Both the <code>loadkeys</code> and <code>setfont</code> commands are part of the <code>kbd</code> package containing essential Linux keyboard tools. They have great <a target="_blank" href="https://kbd-project.org/#documentation">documentation</a> so if you'd like to learn more, feel free to check it out.</p>
<h3 id="heading-how-to-verify-the-boot-mode">How To Verify the Boot Mode</h3>
<p>Now that you have your console configured, the next step is to make sure that you've booted in UEFI mode and not in BIOS mode.</p>
<p>To be honest, this step seems unnecessary to me since it literally says <code>x86_64 UEFI</code> in the live boot menu. But let's do it for the sake of the official Arch <a target="_blank" href="https://wiki.archlinux.org/title/installation_guide#Verify_the_boot_mode">installation guide</a>.</p>
<p>To verify the boot mode, execute the following command:</p>
<pre><code class="lang-bash">ls /sys/firmware/efi/efivars
</code></pre>
<p>If you're in UEFI mode then, it will list out a bunch of files on your screen:</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/01/VirtualBox_archlinux-2022.01.01-x86_64_13_01_2022_17_18_34.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>In case of a BIOS boot, the <code>efi</code> directory won't even exist inside the <code>/sys/firmware</code> directory. If you're in UEFI mode, (which you should be if you've followed everything properly) continue to the next step.</p>
<h3 id="heading-how-to-connect-to-the-internet">How To Connect to the Internet</h3>
<p>Unlike a lot of other live distributions, the Arch live environment doesn't come with all necessary packages built into it. It contains a number of bare minimum packages that you can use to install the rest of the system. So, a working internet connection is a must.</p>
<p>If you're using a wired network then you should have a working internet connection from the get go. To test it out, ping any of the public addresses out there:</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/01/VirtualBox_archlinux-2022.01.01-x86_64_13_01_2022_17_40_04.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>I'm making these screenshots using VirtualBox, so the internet connection works perfectly with the wired connection. But if you have a wireless connection, things can get a bit tricky.</p>
<p>The live environment comes with the <code>iwd</code> or <a target="_blank" href="https://wiki.archlinux.org/title/Iwd">iNet wireless daemon</a> package. You can use this package to connect to a nearby wireless network.</p>
<p>To begin with, execute the following command:</p>
<pre><code class="lang-bash">iwctl
</code></pre>
<p>This will start an interactive prompt as follows:</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/01/VirtualBox_archlinux-2022.01.01-x86_64_13_01_2022_17_59_34.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>Now execute the following command to see the list of available wireless devices:</p>
<pre><code class="lang-bash">device list
</code></pre>
<p>This will spit out a list of available wireless devices. By wireless devices I mean any wireless adapter connected to your computer. Let's assume <code>wlan0</code> is the device name.</p>
<p>To scan for nearby wireless networks using the found device, execute the following command:</p>
<pre><code class="lang-bash"><span class="hljs-comment"># station &lt;device&gt; scan</span>

station wlan0 scan
</code></pre>
<p>You may think that this command will print out a list of all the nearby networks, but that's not the case. To see the list of networks, execute the following command:</p>
<pre><code class="lang-bash"><span class="hljs-comment"># station &lt;device&gt; get-networks</span>

station wlan0 get-networks
</code></pre>
<p>Now assuming the name of your home network is called <code>Skynet</code>, you can connect to it by executing the following command:</p>
<pre><code class="lang-bash"><span class="hljs-comment"># station &lt;device&gt; connect &lt;SSID&gt;</span>

station wlan0 connect Skynet
</code></pre>
<p>The <code>iwctl</code> program will prompt you for the wi-fi password. Put it in carefully and, once connected to the network, exit the program by writing <code>exit</code> and hitting enter. Try pinging a public address once again and make sure that the internet is working fine.</p>
<h3 id="heading-how-to-update-the-system-clock">How To Update the System Clock</h3>
<p>In Linux, NTP or Network Time Protocol is used for synchronizing computer system clocks over a network. You can use the <code>timedatectl</code> command to enable NTP on your Arch live environment:</p>
<pre><code class="lang-bash">timedatectl set-ntp <span class="hljs-literal">true</span>
</code></pre>
<p>This command will start outputting some output and after a few seconds. If you do not see the command cursor show up again, try pressing Enter. I've faced this inconvenience a few times in the past.</p>
<h3 id="heading-how-to-partition-the-disks">How To Partition the Disks</h3>
<p>This is probably the most sensitive step of the entire installation process – because if you mess up your partitions, you lose your precious data. So my advice would be to not immediately follow along with this section. Instead, read the whole section first and then follow along.</p>
<p>To begin the partitioning process, you'll have to first know about the different disks connected to your computer. You can use <code>fdisk</code> which is a dialog-driven program for creation and manipulation of partition tables.</p>
<pre><code class="lang-bash">fdisk -l
</code></pre>
<p>This command will list the partition tables for all the available devices on your computer.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/01/VirtualBox_archlinux-2022.01.01-x86_64_13_01_2022_19_53_34.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>As you can see, there are two devices connected to my computer (virtual machine actually). Depending on the number of devices you have, this list can be longer so ignore any device ending with <code>rom</code>, <code>loop</code>, or <code>airoot</code> when reviewing the list. You can not use those devices for the installation.</p>
<p>So that leaves us with the <code>/dev/sda</code> device. Keep in mind that this can be completely different on your machine. For example, if you have an NVME drive, you may see <code>/dev/nvme0n1</code> instead.</p>
<p>Once you've decided which device to use, it's a good idea to check if there are any existing partitions inside that device. To do so, you can use the following variation of the same <code>fdisk</code> command:</p>
<pre><code class="lang-bash">fdisk /dev/sda -l
</code></pre>
<p>Remember to replace <code>/dev/sda</code> with what you have. This command will list out all the partitions inside the given device.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/01/VirtualBox_archlinux-2022.01.01-x86_64_13_01_2022_20_13_14.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>Although there are no partitions in this device, in a real life situation you may have previously created partitions. Those partitions will show up as <code>/dev/sda1</code>, <code>/dev/sda2</code> or in the case of a NVME drive <code>/dev/nvme0n1p1</code>, <code>/dev/nvme0n1p2</code> and so on.</p>
<p>The <code>fdisk</code> program can do a lot more than just listing partitions. Consult the <a target="_blank" href="https://wiki.archlinux.org/title/Fdisk">corresponding ArchWiki page</a> to know about the tasks you can perform using this program.</p>
<p>There is another program <code>cfdisk</code> which is a <a target="_blank" href="https://en.wikipedia.org/wiki/Curses_(programming_library)">curses- (programming library)</a> based disk partition table manipulator for Linux. It's similar in functionality with <code>fdisk</code> but being curses-based means it has an interface which makes it easier to work with. </p>
<p>Execute the following command to start <code>cfdisk</code> on your preferred device:</p>
<pre><code class="lang-bash">cfdisk /dev/sda
</code></pre>
<p>Remember to replace <code>/dev/sda</code> with what you have. If the device has a previously created partition table, then <code>cfdisk</code> will directly show the list of partitions. Otherwise you'll get to choose a partition table type to begin with:</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/01/VirtualBox_archlinux-2022.01.01-x86_64_13_01_2022_20_22_55.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>Choose <code>gpt</code> for your UEFI based system. Next, you'll land on the list of partitions and free space on the device:</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/01/VirtualBox_archlinux-2022.01.01-x86_64_13_01_2022_20_24_09.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>You can move vertically along the list of devices using your up/down arrow keys and move horizontally along the different actions using the left/right arrow keys.</p>
<p>To install Arch, or any other Linux distribution, you'll need three separate partitions. They are as follows:</p>
<ul>
<li>EFI system partition – for storing files required by the UEFI firmware.</li>
<li>ROOT – for installing the distribution itself.</li>
<li>SWAP – for serving as the overflow space for your RAM.</li>
</ul>
<p>Make sure the right partition/free space is highlighted in the list and select the <code>[ New ]</code> action.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/01/VirtualBox_archlinux-2022.01.01-x86_64_13_01_2022_20_37_04.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>Put the desired partition size. You can use M to denote megabytes, G for gigabytes, and T for terabytes.</p>
<p>For an EFI system partition, you should allocate at least 500MB. Once you've put your desire size, press Enter to finalize. The updated list of partitions may look as follows:</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/01/VirtualBox_archlinux-2022.01.01-x86_64_13_01_2022_20_37_29.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>The EFI system partition is a special type of partition. It has to be in a specific type and format. To change the default type, keep the newly created partition highlighted and select <code>[ Type ]</code> from the list of actions.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/01/VirtualBox_archlinux-2022.01.01-x86_64_13_01_2022_20_39_24.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>From this long list of types, highlight <code>EFI System</code> and press Enter. The type of the partition in the list should update accordingly:</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/01/VirtualBox_archlinux-2022.01.01-x86_64_13_01_2022_20_40_37.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>Next is the root partition. Highlight the remaining free space and select <code>[ New ]</code> once again. This time assign 10GB to this partition. The ideal size of the root partition depends on your necessities. Personally I allocate at least 100GB to the root partition of all my Linux installations.</p>
<p>You don't need to change the type of this partition. The default <code>Linux filesystem</code> will do.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/01/VirtualBox_archlinux-2022.01.01-x86_64_13_01_2022_20_43_14.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>Create one last partition with the remaining space and change its type to <code>Linux swap</code> from the menu:</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/01/VirtualBox_archlinux-2022.01.01-x86_64_13_01_2022_20_45_57.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>The ideal size of a swap partition is a matter of debate. Personally I don't have swap partitions on my machines. The amount of physical RAM I have is more than enough. But if I ever feel the need for one later on, I use a <code>swapfile</code> instead. Anyways, the final state of your device should be as follows:</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/01/VirtualBox_archlinux-2022.01.01-x86_64_13_01_2022_20_48_49.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>If you're happy with the set-up, highlight <code>[ Write ]</code> from the action list and hit Enter. The program will ask whether you want to persist these changes or not. You'll have to write <code>yes</code> and press enter if you agree. Once the partition table has been altered, select <code>[ Quit ]</code> to exit from the program.</p>
<p>One thing that I would like to mention for those trying to install Arch Linux alongside Windows is, in that case, the EFI system partition should already exist in your device. So don't touch that. Just create the other partitions and move on.</p>
<h3 id="heading-how-to-format-the-partitions">How To Format the Partitions</h3>
<p>Now that you've created the necessary partitions, you'll have to format them accordingly. You can use the <code>mkfs</code> and <code>mkswap</code> programs to do that. Before the formatting, take a final look at your partition list by executing the following command:</p>
<pre><code class="lang-bash">fdisk /dev/sda -l
</code></pre>
<p>This time you'll see the three newly created partitions with their details:</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/01/VirtualBox_archlinux-2022.01.01-x86_64_13_01_2022_21_02_23.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>Take note of the device names, like <code>/dev/sda1</code>, <code>/dev/sda2</code>, <code>/dev/sda3</code> and so on. The EFI system partition has to be in FAT32 format. Execute the following command to format a partition in FAT32 format:</p>
<pre><code class="lang-bash">mkfs.fat -F32 /dev/sda1
</code></pre>
<p>The next one is the root partition. It can be in a number of formats, but I prefer using EXT4 for all of my Linux filesystems. Use the following command to format the partition in EXT4:</p>
<pre><code>mkfs.ext4 /dev/sda2
</code></pre><p>This operation may take a few moments to finish depending on your partition size. Finally, the swap partition. Use the following command to format that:</p>
<pre><code class="lang-bash">mkswap /dev/sda3
</code></pre>
<p>With that, you've finished the process of preparing your partitions for the installation.</p>
<h3 id="heading-how-to-mount-the-file-systems">How To Mount the File Systems</h3>
<p>Now that you've created and formatted your partitions, you're ready mount them. You can use the <code>mount</code> command with appropriate mount points to mount any partition:</p>
<pre><code class="lang-bash"><span class="hljs-comment"># mount &lt;device&gt; &lt;mount point&gt;</span>

mount /dev/sda2 /mnt
</code></pre>
<p>I hope you remember that the <code>/dev/sda2</code> partition was created to be the root partition. The <code>/mnt</code> mount point in Linux is for mounting a storage device temporarily. As we only need to mount the partition for installing Arch Linux on it, the <code>/mnt</code> mount point is perfect.</p>
<p>In the case of a swap partition, you won't mount it like the other ones. You'll have to tell Linux to use this partition as swap explicitly. To do so, execute the following command:</p>
<pre><code class="lang-bash">swapon /dev/sda3
</code></pre>
<p>As you may have guessed, the <code>swapon</code> command tells the system to swap on this device. We'll work with the EFI system partition in a later section. For now, mounting these two partitions will suffice.</p>
<h3 id="heading-how-to-configure-the-mirrors">How To Configure the Mirrors</h3>
<p>There is one last step before you can install Arch Linux on your machine, and that is configuring the mirrors. Mirrors are servers located at different pointes around the world for serving the nearby population.</p>
<p>The installer comes with Reflector, a Python script written for retrieving the latest mirror list the <a target="_blank" href="https://archlinux.org/mirrors/status/">Arch Linux Mirror Status</a> page. To print out the latest mirror list, simply execute the following command:</p>
<pre><code class="lang-bash">reflector
</code></pre>
<p>If you have a slow internet connection, you may encounter an error message as follows:</p>
<pre><code class="lang-bash">failed to rate http(s) download (https://arch.jensgutermuth.de/community/os/x86_64/community.db): Download timed out after 5 second(s).
</code></pre>
<p>This happens when the default timeout (5 seconds) is lower than the actual time it's taking to download the information.</p>
<p>You can remedy to this problem by using the <code>--download-timeout</code> option:</p>
<pre><code class="lang-bash">reflector --download-timeout 60
</code></pre>
<p>Now reflector will wait for a whole minute before starting to scream. A long list of mirrors should show up on your screen:</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/01/VirtualBox_archlinux-2022.01.01-x86_64_13_01_2022_21_36_15-1.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>Going through the entire list to find nearby mirrors would be a pain. That's why reflector can do that for you.</p>
<p>Reflector can generate a list of mirrors based on a plethora of given constraints. For example, I want a list of mirrors that were synchronized within the last 12 hours and that are located either in India or Singapore (these two are closest to my location), and sort the mirrors by download speed.</p>
<p>Turns out, reflector can do that:</p>
<pre><code class="lang-bash">reflector --download-timeout 60 --country India,Singapore --age 12 --protocol https --sort rate
</code></pre>
<p>The found servers will be listed like before:</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/01/VirtualBox_archlinux-2022.01.01-x86_64_13_01_2022_21_45_25.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>Printing out a mirror list like this is not enough. You'll have to persist the list in the <code>/etc/pacman.d/mirrorlist</code> location. Pacman, the default package manager for Arch Linux, uses this file to learn about the mirrors.</p>
<p>Before overwriting the default mirror list, make a copy of it:</p>
<pre><code class="lang-bash">cp /etc/pacman.d/mirrorlist /etc/pacman.d/mirrorlist.bak
</code></pre>
<p>Now execute the reflector command with the <code>--save</code> option as follows:</p>
<pre><code class="lang-bash">reflector --download-timeout 60 --country India,Singapore --age 12 --protocol https --sort rate --save /etc/pacman.d/mirrorlist
</code></pre>
<p>This command will generate the mirror list and overwrite the default one. Now you're ready to install the base Arch Linux system.</p>
<h3 id="heading-how-to-install-arch-linux-base-system">How To Install Arch Linux Base System</h3>
<p>Before installing the base system, it's a good idea to update the package cache according to the new mirror list. To do so, execute the following command:</p>
<pre><code class="lang-bash">pacman -Sy
</code></pre>
<p>The <code>pacman</code> program to Arch Linux is what <code>apt</code> is to Ubuntu or <code>dnf</code> is to Fedora. The <code>-S</code> option means sync which is equivalent to <code>install</code> in <code>apt</code> or <code>dnf</code> package managers.</p>
<p>Once the update process is finished, you can use the <code>pacstrap</code> script to install the Arch Linux system. Execute the following command to start the installation process:</p>
<pre><code class="lang-bash">pacstrap /mnt base base-devel linux linux-firmware sudo nano ntfs-3g networkmanager
</code></pre>
<p>The <code>pacstrap</code> script can install packages to a specified new root directory. As you may remember, the root partition was mounted on the <code>/mnt</code> mount point, so that's what you'll use with this script. Then you'll pass the package names you want to install:</p>
<ul>
<li><code>base</code> – Minimal package set to define a basic Arch Linux installation.</li>
<li><code>base-devel</code> – Group of packages required for building software from source.</li>
<li><code>linux</code> – The kernel itself.</li>
<li><code>linux-firmware</code> – Drivers for common hardware.</li>
<li><code>sudo</code> – You want to run commands as root right?</li>
<li><code>nano</code> – A pico editor clone with some enhancements.</li>
<li><code>ntfs-3g</code> – NTFS filesystem driver and utilities required for working with NTFS drives.</li>
<li><code>networkmanager</code> – Provides detection and configuration for systems to automatically connect to networks.</li>
</ul>
<p>I would like to clarify that this list of seven packages is not something mandatory. To have a functional Arch Linux installation, you just need the <code>base</code>, <code>linux</code>, and <code>linux-firmware</code> packages. But considering you'll need the other ones anyway, why not catch 'em all in one go.</p>
<p>Depending on your internet connection, the installation process may take a while. Sit back and relax until <code>pacstrap</code> does its thing. Once it's done, you'll see something as follows:</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/01/VirtualBox_archlinux-2022.01.01-x86_64_13_01_2022_22_57_54.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>Congratulations, you've successfully installed Arch Linux on your computer. All that is left to do now is configuring the system.</p>
<h2 id="heading-how-to-configure-arch-linux">How To Configure Arch Linux</h2>
<p>Installing Arch Linux wasn't that hard right? In fact in my opinion, installing it is way more straightforward than configuring it. There is a lot to do here. So let's get started.</p>
<h3 id="heading-how-to-generate-the-fstab-file">How To Generate the Fstab File</h3>
<p>According to the <a target="_blank" href="https://wiki.archlinux.org/title/Fstab">ArchWiki</a>,</p>
<blockquote>
<p>The <code>fstab</code> file can be used to define how disk partitions, various other block devices, or remote file systems should be mounted into the file system.</p>
</blockquote>
<p>In other distributions like Ubuntu or Fedora this gets generated automatically during the installation. On Arch however, you'll have to do it manually. To do so, execute the following command:</p>
<pre><code class="lang-bash">genfstab -U /mnt &gt;&gt; /mnt/etc/fstab
</code></pre>
<p>The <code>genfstab</code> program can detect all the current mounts below a given mount point and print them in fstab-compatible format to standard output. So <code>genfstab -U /mnt</code> will output all current mounts under the <code>/mnt</code> mount point. We can save that output to the <code>/mnt/etc/fstab</code> file using the <code>&gt;&gt;</code> operator.</p>
<h3 id="heading-how-to-login-to-the-newly-installed-system-using-arch-chroot">How To Login to The Newly Installed System Using Arch-Chroot</h3>
<p>Right now you're logged into the live environment and and not into your newly installed system. </p>
<p>To continue configuring your newly installed system, you'll have to first log into it. To do so, execute the following command:</p>
<pre><code class="lang-bash">arch-chroot /mnt
</code></pre>
<p>The <code>arch-chroot</code> bash script is part of the <code>arch-install-scripts</code> package and lets you change to the newly installed system's <code>root</code> user without any reboot. How cool is that!</p>
<h3 id="heading-how-to-configure-the-time-zone">How To Configure the Time Zone</h3>
<p>Once you've switched root, the first thing to configure is the time zone. To see a list of all the available zones, execute the following command:</p>
<pre><code class="lang-bash">ls /usr/share/zoneinfo
</code></pre>
<p>All the major zones should be in the directory.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/01/VirtualBox_archlinux-2022.01.01-x86_64_13_01_2022_23_45_19.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>I live in Dhaka, Bangladesh which resides inside the Asia zone. If I list out the content of Asia, I should see Dhaka there:</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/01/VirtualBox_archlinux-2022.01.01-x86_64_13_01_2022_23_45_44.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>To set Asia/Dhaka as my default time zone, I'll have to make a symbolic link of the file at the <code>/etc/localtime</code> location:</p>
<pre><code class="lang-bash">ln -sf /usr/share/zoneinfo/Asia/Dhaka /etc/localtime
</code></pre>
<p>The <code>ln</code> command is used for creating symbolic links. The <code>-sf</code> options indicate soft and force, respectively.</p>
<h3 id="heading-how-to-configure-the-localization">How To Configure the Localization</h3>
<p>Now you'll have to configure your languages. Arch Linux has an easy way to set that up as well. </p>
<p>First, you'll have to edit the <code>etc/locale.gen</code> file according to your localization. Open the file in the nano text editor:</p>
<pre><code class="lang-bash">nano /etc/locale.gen
</code></pre>
<p>You'll see a long list of languages:</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/01/VirtualBox_archlinux-2022.01.01-x86_64_13_01_2022_23_46_29.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>You'll have to uncomment the languages that you want to enable. I usually only need English and Bengali. So I'll locate the <code>en_US.UTF-8 UTF-8</code>, <code>bn_BD UTF-8</code>, and <code>bn_IN UTF-8</code> languages. Save the file by pressing Ctrl + O and exit nano by pressing the Ctrl + X key combination.</p>
<p>Now you'll have to execute the following command:</p>
<pre><code class="lang-bash">locale-gen
</code></pre>
<p>The <code>locale-gen</code> command will read your <code>/etc/locale.gen</code> file and generate the locales accordingly.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/01/VirtualBox_archlinux-2022.01.01-x86_64_13_01_2022_23_57_55.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>Now that you've enabled multiple languages, you'll have to tell Arch Linux which one to use by default. To do so, open the <code>/etc/locale.conf</code> file and add the following line to it:</p>
<pre><code class="lang-conf">LANG=en_US.UTF-8
</code></pre>
<p>That's all you gotta do to configure your locale. You can always go back to the <code>/etc/locale.gen</code> file and add or remove languages from it. Just remember to run <code>locale-gen</code> whenever you do that.</p>
<p>Apart from the locales, if you've made any changes to your console keymaps in the first step of installation, you may want to persist them now. To do so, open the <code>/etc/vconsole.conf</code> file and add your preferred keymaps there.</p>
<p>For example, if you changed the default keymaps to <code>mac-us</code> in the first step, then you may want to add the following line to the <code>vconsole.conf</code> file:</p>
<pre><code class="lang-bash">KEYMAP=mac-us
</code></pre>
<p>Now every time you use the virtual console, it'll have the correct keymap and you will not have to configure it every time.</p>
<h3 id="heading-how-to-configure-the-network">How To Configure the Network</h3>
<p>Configuring a network manually in any Linux distribution can be tricky. That's why I advised you to install the <code>networkmanager</code> package during the system installation. If you did as I said, you're good to go. Otherwise, use <code>pacman</code> to install the package now:</p>
<pre><code class="lang-bash">pacman -S networkmanager
</code></pre>
<p>Pacman is a package manager. You'll learn more about it later. Let's set the host name for your computer now. A host name is a unique name created to identify a machine on a network, written in the <code>/etc/hostname</code> file.</p>
<p>Open the file with nano and write your host name in it. You can use anything to identify your machine. I usually use my device brand or model as my hostname and as I'm on a legion laptop, I'll simply write the following:</p>
<pre><code>legion
</code></pre><p>Local host name resolution is provided by <code>nss-myhostname</code> (an NSS module provided by systemd) without having to edit <code>/etc/hosts</code> file. It is enabled by default.</p>
<p>But some software may still read the <code>/etc/hosts</code> file directly. Open the file in nano and add the following lines to it:</p>
<pre><code><span class="hljs-number">127.0</span><span class="hljs-number">.0</span><span class="hljs-number">.1</span>        localhost
::<span class="hljs-number">1</span>              localhost
<span class="hljs-number">127.0</span><span class="hljs-number">.1</span><span class="hljs-number">.1</span>        legion
</code></pre><p>Make sure to replace <code>legion</code> with your host name. Now you may install the aforementioned package:</p>
<pre><code class="lang-bash">pacman -S networkmanager
</code></pre>
<p>Enable the <code>NetworkManager</code> service by executing the following command:</p>
<pre><code class="lang-bash">systemctl <span class="hljs-built_in">enable</span> NetworkManager
</code></pre>
<p>Make sure to write <code>NetworkManager</code> and not <code>networkmanager</code> as the service name. If the command succeeds, network manager will start automatically on boot from now on and do its thing.</p>
<h3 id="heading-how-to-set-the-root-password">How To Set the Root Password</h3>
<p>You may want to set a password for the root user because why not? To do so, execute the following command:</p>
<pre><code class="lang-bash">passwd
</code></pre>
<p>The <code>passwd</code> command lets you change the password for a user. By default it affects the current user's password which is the <code>root</code> right now.</p>
<p>It'll ask for a new password and confirmation password. Input them carefully and make sure you don't forget the password.</p>
<h3 id="heading-how-to-create-a-non-root-user">How To Create a Non-root User</h3>
<p>Using your Linux system as the root user for long is not a good idea. So creating a non-root user is important. To create a new user, execute the following command:</p>
<pre><code class="lang-bash">useradd -m -G wheel farhan
</code></pre>
<p>The <code>useradd</code> command lets you create a new user. Make sure to replace my name with the one you want to use. The <code>-m</code> option indicates that you also want it to create the corresponding home directory. The <code>-G</code> option will add the new user to the <code>wheel</code> group which is the administration user group in Arch Linux.</p>
<p>Now you can use the <code>passwd</code> command once again to set the password for the newly created user:</p>
<pre><code class="lang-bash">passwd farhan
</code></pre>
<p>The program will prompt you for a new password and a password confirmation. Again, don't forget to replace my name with the one you've used.</p>
<p>Finally, you'll have to enable <code>sudo</code> privilege for this new user. To do so, open the <code>/etc/sudoers</code> file using nano. Once open, locate the following line and uncomment it:</p>
<pre><code># %wheel ALL=(ALL) ALL
</code></pre><p>This file essentially means that all users in the <code>wheel</code> group can use <code>sudo</code> by providing their password. Save the file by hitting Ctrl + O and exit nano by hitting Ctrl + X. Now the new user will be able to use <code>sudo</code> when necessary.</p>
<h3 id="heading-how-to-install-microcode">How To Install Microcode</h3>
<p>According to <a target="_blank" href="https://www.pcmag.com/encyclopedia/term/microcode">PCMag</a>,</p>
<blockquote>
<p>A set of elementary instructions in a complex instruction set computer (CISC). The microcode resides in a separate high-speed memory and functions as a translation layer between the machine instructions and the circuit level of the computer. Microcode enables the computer designer to create machine instructions without having to design electronic circuits.</p>
</blockquote>
<p>Processor manufacturers such as Intel and AMD often release stability and security updates to the processor. These updates are crucial for the system's stability. </p>
<p>In Arch Linux, microcode updates are available through official packages that every user should install on their systems.</p>
<pre><code class="lang-bash"><span class="hljs-comment"># for amd processors</span>
pacman -S amd-ucode

<span class="hljs-comment"># for intel processors</span>
pacman -S intel-ucode
</code></pre>
<p>Just installing these packages is not enough though. You'll have to make sure that your bootloader is loading them. You'll learn about it in the next section.</p>
<h3 id="heading-how-to-install-and-configure-a-boot-loader">How To Install and Configure a Boot Loader</h3>
<p>According to <a target="_blank" href="https://en.wikipedia.org/wiki/Bootloader">Wikipedia</a>,</p>
<blockquote>
<p>A bootloader, also spelled as boot loader or called boot manager and bootstrap loader, is a computer program that is responsible for booting a computer.</p>
</blockquote>
<p>The internals of bootloader is out of scope of this article so I'll just go on with the installation process. If you've used any other Linux distribution in the past you may have encountered the GRUB menu.</p>
<p>GRUB is one of the most popular bootloaders out there. Although there are a number of options available, I'll demonstrate the installation of GRUB because it is what most people will likely use.</p>
<p>To install GRUB, you'll have to first install two packages.</p>
<pre><code class="lang-bash">pacman -S grub efibootmgr
</code></pre>
<p>If you're installing alongside other operating systems, you'll also need the <code>os-prober</code> package:</p>
<pre><code class="lang-bash">pacman -S os-prober
</code></pre>
<p>This program will search for already installed operating systems on your system and will make them a part of the GRUB configuration file. </p>
<p>Now, you'll have to mount the EFI system partition you created a few sections ago. To do so, you'll have to first create an <code>efi</code> directory:</p>
<pre><code class="lang-bash">mkdir /boot/efi
</code></pre>
<p>According to <a target="_blank" href="https://en.wikipedia.org/wiki//boot/">Wikipedia</a>,</p>
<blockquote>
<p>In Linux, and other Unix-like operating systems, the <code>/boot/</code> directory holds files used in booting the operating system.</p>
</blockquote>
<p>This directory is present in all Unix-like operating systems. The above mentioned command creates a directory called <code>efi</code> inside the <code>/boot</code> directory. After creating the directory, you'll have to mount your EFI system partition in that directory.</p>
<pre><code class="lang-bash">mount /dev/sda1 /boot/efi
</code></pre>
<p>I hope you remember that we formatted the <code>/dev/sda1</code> device as the EFI system partition during the partitioning phase. Make sure to use the correct one for your device. </p>
<p>Now, we'll use the <code>grub-install</code> command to install GRUB in the newly mounted EFI system partition:</p>
<pre><code class="lang-bash">grub-install --target=x86_64-efi --bootloader-id=grub
</code></pre>
<p>You can more or less use this command verbatim. You can change the <code>--bootloader-id</code> to something more expressive like <code>arch</code> or something else. If the installation finishes without any errors, you'll then have to generate the GRUB configuration file.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/01/VirtualBox_archlinux-2022.01.01-x86_64_14_01_2022_18_34_01.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>If you're installing alongside other operating systems, you'll have to enable <code>os-prober</code> before generating the configuration file. To do so, open the <code>/etc/default/grub</code> file in nano text editor. Locate the following line and uncomment it:</p>
<pre><code>#GRUB_DISABLE_OS_PROBER=<span class="hljs-literal">false</span>
</code></pre><p>This should be the last line in the aforementioned file so just scroll to the bottom and uncomment it.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/01/VirtualBox_archlinux-2022.01.01-x86_64_14_01_2022_18_31_41.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>Now execute the following command to generate the configuration file:</p>
<pre><code class="lang-bash">grub-mkconfig -o /boot/grub/grub.cfg
</code></pre>
<p>The <code>grub-mkconfig</code> command generates the GRUB configuration file and saves it to a given target location. In this case <code>/boot/grub/grub.cfg</code> is the target location.</p>
<p>The command will also take into account the microcode you installed earlier and any other existing operating system on your machine.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/01/VirtualBox_archlinux-2022.01.01-x86_64_14_01_2022_18_35_45.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>Congratulations, you now have a working Arch Linux installation. At this point, you can exit the Arch-Chroot environment, unmount the partition, and reboot. But I would suggest you to stay a bit longer and set-up the graphical user interface as well.</p>
<h2 id="heading-how-to-install-xorg">How To Install Xorg</h2>
<p>To run programs with graphical user interfaces on your system, you'll have to install an X Window System implementation. The most common one is Xorg. </p>
<p>To install Xorg, execute the following command:</p>
<pre><code class="lang-bash">pacman -S xorg-server
</code></pre>
<p>Wait until the installation is done and then move on to installing the necessary graphics drivers.</p>
<h2 id="heading-how-to-install-graphics-drivers">How To Install Graphics Drivers</h2>
<p>Installing graphics drivers on Arch Linux is very straightforward. You just install the packages required by your graphics processing unit and call it a day.</p>
<pre><code class="lang-bash"><span class="hljs-comment"># for nvidia graphics processing unit</span>
pacman -S nvidia nvidia-utils

<span class="hljs-comment"># for amd discreet and integrated graphics processing unit</span>
pacman -S xf86-video-amdgpu

<span class="hljs-comment"># for intel integrated graphics processing unit</span>
pacman -S xf86-video-intel
</code></pre>
<p>If you need further assistance, feel free to check the <a target="_blank" href="https://wiki.archlinux.org/title/Xorg">ArchWiki</a> page.</p>
<h2 id="heading-how-to-install-a-desktop-environment">How To Install a Desktop Environment</h2>
<p>Now that you've installed Xorg and the necessary graphics drivers, you're ready to install a desktop environment like GNOME, Plasma, or XFCE. </p>
<p>Arch Linux supports a long list of desktop environments but I've only tried out GNOME and Plasma. I'll demonstrate how you can install either of these two.</p>
<h3 id="heading-how-to-install-gnome">How To Install GNOME</h3>
<p>To install GNOME, you'll have to install the <code>gnome</code> package. To do so, execute the following command:</p>
<pre><code class="lang-bash">pacman -S gnome
</code></pre>
<p>During the installation, you'll be offered multiple choices for <code>pipwire-session-manager</code> and <code>emoji-font</code> packages. Accept the defaults by hitting Enter in both prompts. The installation may take some time to finish.</p>
<p>The <code>gnome</code> package comes with GDM or Gnome Display Manager. You can enable the service by executing the following command:</p>
<pre><code class="lang-bash">systemctl <span class="hljs-built_in">enable</span> gdm
</code></pre>
<p>That's all you need to do to get GNOME up and running on your Arch system.</p>
<h3 id="heading-how-to-install-plasma">How To Install Plasma</h3>
<p>The KDE Plasma installation is not that different from GNOME. You'll need to install Plasma related packages instead of GNOME.</p>
<pre><code class="lang-bash">pacman -S plasma plasma-wayland-session
</code></pre>
<p>If you have an NVIDIA graphics card, then avoid installing the <code>plasma-wayland-session</code> and use plain old X11. I own two devices with NVIDIA GPUs and both of them have shown instability when using Wayland.</p>
<p>During the installation, you'll get multiple choices for <code>ttf-font</code>, <code>pipwire-session-manager</code>, and <code>phonon-qt5-backend</code> packages. Make sure to pick <code>noto-fonts</code> as your <code>ttf-font</code> and accept the defaults for the other two.</p>
<p>Like <code>gdm</code> in GNOME, Plasma comes with <code>sddm</code> as the default display manager. Execute the following command to enable the service:</p>
<pre><code class="lang-bash">systemctl <span class="hljs-built_in">enable</span> sddm
</code></pre>
<p>And that's all you need to do to get Plasma up and running on your Arch Linux system.</p>
<h2 id="heading-how-to-finalize-the-installation">How To Finalize The Installation</h2>
<p>Now that you've installed Arch Linux and gone through all necessary configuration steps, you can reboot to your newly installed system. To do so, first come out of the Arch-Chroot environment:</p>
<pre><code class="lang-bash"><span class="hljs-built_in">exit</span>
</code></pre>
<p>Next, unmount the root partition to make sure there are no pending operations:</p>
<pre><code class="lang-bash">umount -R /mnt
</code></pre>
<p>Now reboot the machine:</p>
<pre><code class="lang-bash">reboot
</code></pre>
<p>Wait until you see the GRUB menu.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/01/VirtualBox_archlinux-2022.01.01-x86_64_14_01_2022_20_10_25.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>Choose Arch Linux from the list and wait until the system finishes booting up.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/01/VirtualBox_archlinux-2022.01.01-x86_64_14_01_2022_20_11_15.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>Log in with your user credentials and voilà!</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/01/VirtualBox_archlinux-2022.01.01-x86_64_14_01_2022_20_15_41.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>Your shiny new Arch Linux system is ready to do wonders.</p>
<h2 id="heading-how-to-switch-between-desktop-environments">How To Switch Between Desktop Environments</h2>
<p>Unlike other distributions coupled tightly with their default desktop environment, Arch is flexible. You can switch to another desktop environment whenever you feel like it. </p>
<p>To do so, first logout of your current session.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/01/VirtualBox_archlinux-2022.01.01-x86_64_14_01_2022_20_11_15.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>As you can see, I'm currently using Plasma. Now switch to TTY2 press Ctrl + Alt + F2 key combination. You'll see a console login prompt:</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/01/VirtualBox_archlinux-2022.01.01-x86_64_14_01_2022_20_18_54.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>Login with the root credentials and disable the <code>sddm</code> display manager.</p>
<pre><code class="lang-bash">systemctl <span class="hljs-built_in">disable</span> sddm
</code></pre>
<p>Then uninstall the Plasma related packages you installed earlier:</p>
<pre><code class="lang-bash">sudo pacman -Rns plasma plasma-wayland-session
</code></pre>
<p>Once the packages have been uninstalled, install the packages needed for GNOME:</p>
<pre><code class="lang-bash">pacman -S gnome
</code></pre>
<p>Then perform the installation according to the section you read earlier. After the <code>gnome</code> package has been installed, enable the <code>gdm</code> display manager:</p>
<pre><code class="lang-bash">systemctl <span class="hljs-built_in">enable</span> gdm
</code></pre>
<p>Restart the computer.</p>
<pre><code class="lang-bash">reboot
</code></pre>
<p>Wait until the Arch Linux system finishes booting.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/01/VirtualBox_archlinux-2022.01.01-x86_64_14_01_2022_20_24_11.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>Lo and behold, the gorgeous Gnome Display Manager. Login with your credentials.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/01/VirtualBox_archlinux-2022.01.01-x86_64_14_01_2022_19_53_31.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>You can switch between the desktop environments as much as you want to, but I would suggest on settling down with one of them. Also, I wouldn't recommend having multiples of them installed at the same time.</p>
<h2 id="heading-how-to-manage-packages-using-pacman">How To Manage Packages Using Pacman</h2>
<p>You've already installed a number of packages using pacman. It's equivalent to package managers like apt in Ubuntu and dnf in Fedora.</p>
<p>In this section, I'll introduce you to some of the common pacman commands that you may need on a daily basis.</p>
<h3 id="heading-how-to-install-packages-using-pacman">How To Install Packages Using Pacman</h3>
<p>To install a package using pacman, you can use the following command syntax:</p>
<pre><code class="lang-bash"><span class="hljs-comment"># sudo pacman -S &lt;package name&gt;</span>

sudo pacman -S rust
</code></pre>
<p>You can install multiple packages as follows:</p>
<pre><code class="lang-bash"><span class="hljs-comment"># sudo pacman -S &lt;package name&gt; &lt;package name&gt;</span>

sudo pacman -S rust golang
</code></pre>
<p>You can also specify the repository you want to install the package from like this:</p>
<pre><code class="lang-bash"><span class="hljs-comment"># sudo pacman -S &lt;package repository&gt;/&lt;package name&gt;</span>

sudo pacman -S extra/rust
</code></pre>
<p>In this command, the <code>-S</code> option means synchronize which is equivalent to install in the case of apt or dnf package managers.</p>
<h3 id="heading-how-to-remove-packages-using-pacman">How To Remove Packages Using Pacman</h3>
<p>To remove a package using pacman you can use the following syntax:</p>
<pre><code class="lang-bash"><span class="hljs-comment"># sudo pacman -R &lt;package name&gt;</span>

sudo pacman -R rust
</code></pre>
<p>This will remove the package but will leave the dependencies. You can remove the package with dependencies if they're not required by any other package by executing the following command:</p>
<pre><code class="lang-bash"><span class="hljs-comment"># sudo pacman -Rs &lt;package name&gt;</span>

sudo pacman -Rs rust
</code></pre>
<p>Pacman often saves important configuration files when removing certain applications. You can override this behavior by using the following syntax:</p>
<pre><code class="lang-bash"><span class="hljs-comment"># sudo pacman -Rn &lt;package name&gt;</span>

sudo pacman -Rn rust
</code></pre>
<p>I usually use <code>sudo pacman -Rns</code> whenever I want to uninstall something. One last thing that I want to show is how to remove orphan packages.</p>
<p>In Ubuntu the <code>sudo apt autoremove</code> command uninstalls any unnecessary package. The equivalent command in Arch is:</p>
<pre><code class="lang-bash">sudo pacman -Qdtq | pacman -Rs -
</code></pre>
<p>This will cleanup any leftover package from previously installed packages.</p>
<h3 id="heading-how-to-upgrade-packages-using-pacman">How To Upgrade Packages Using Pacman</h3>
<p>To upgrade all the packages in your system, you can use the following syntax:</p>
<pre><code class="lang-bash">sudo pacman -Syu
</code></pre>
<p>In this command, the <code>S</code> option synchronizes the packages, <code>y</code> refreshes the local package cache, and <code>u</code> updates the system. This is like the ultimate upgrade command and I run it at least once everyday.</p>
<h3 id="heading-how-to-search-for-packages-using-pacman">How To Search for Packages Using Pacman</h3>
<p>To search for a package in the database, you can use the following syntax:</p>
<pre><code class="lang-bash"><span class="hljs-comment"># sudo pacman -Ss &lt;package name&gt;</span>

sudo pacman -Ss rust
</code></pre>
<p>This will print out all the packages found in the database with that search term and will also indicate if any of those are already installed.</p>
<p>If you would like to check if a package is already installed or not, you can use the following command:</p>
<pre><code class="lang-bash"><span class="hljs-comment"># sudo pacman -Qs &lt;package name&gt;</span>

sudo pacman -Qs rust
</code></pre>
<p>This is useful when you want to uninstall a package but do not know its exact name.</p>
<h2 id="heading-how-to-use-aur-in-arch-linux">How To Use AUR in Arch Linux</h2>
<p>According to <a target="_blank" href="https://itsfoss.com/aur-arch-linux/">It's FOSS</a>,</p>
<blockquote>
<p>AUR stands for Arch User Repository. It is a community-driven repository for Arch-based Linux distributions users. It contains package descriptions named PKGBUILDs that allow you to compile a package from source with makepkg and then install it via pacman (package manager in Arch Linux).</p>
</blockquote>
<p>AUR is one of the most attractive features of Arch Linux. It's due to AUR that Arch Linux has a package count almost equal to Debian. You've already used <code>pacman</code> to install various packages. Sadly, you can not use that to install packages from AUR.</p>
<p>You'll have to install one of the AUR helpers instead. Arch Linux doesn't support any of these helpers and advises you to learn how to build packages manually. I'll explain both techniques here. If you understand how a helper works, you'll be able to do it manually as well.</p>
<h3 id="heading-how-to-install-packages-using-a-helper">How To Install Packages Using a Helper</h3>
<p>Among the available and currently maintained AUR helpers, I like the <code>yay</code> or yet another yogurt package. It's written in Go and is quite solid. </p>
<p>You can not install <code>yay</code> like other packages. You'll have to get the source code and compile the program. You'll need <code>git</code> and the <code>base-devel</code> package to do so. Assuming you've already installed <code>base-devel</code> during Arch Linux installation:</p>
<pre><code class="lang-bash">pacman -S git
</code></pre>
<p>Clone the yay repository from GitHub and <code>cd</code> into it:</p>
<pre><code class="lang-bash">git <span class="hljs-built_in">clone</span> https://aur.archlinux.org/yay.git &amp;&amp; <span class="hljs-built_in">cd</span> yay
</code></pre>
<p>To build and install yay from source, execute the following command:</p>
<pre><code class="lang-bash">makepkg -si
</code></pre>
<p>The makepkg script automates the build process of packages. The <code>-si</code> options stand for sync dependencies and install. The first option will install required dependencies (Golang in this case) and the later option will install the built package.</p>
<p>After the build process finishes, makepkg will ask for installation confirmation and your password. Input your password carefully and let the installation finish.</p>
<p>Check if yay has been installed properly or not:</p>
<pre><code class="lang-bash">yay --version

<span class="hljs-comment"># yay v11.1.0 - libalpm v13.0.1</span>
</code></pre>
<p>Now let's install something using yay. One of the common packages you may want to install is the <a target="_blank" href="https://aur.archlinux.org/packages/visual-studio-code-bin/">visual-studio-code-bin</a> package. To do so, execute the following command:</p>
<pre><code class="lang-bash">yay -S visual-studio-code-bin
</code></pre>
<p>Unlike pacman, you shouldn't run yay with sudo. Yay will look for the given package and will ask whether you would like to see the diff or not:</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/01/VirtualBox_archlinux-2022.01.01-x86_64_14_01_2022_21_07_26.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>All the repositories over at AUR comes with a PKGBUILD file which contains the instructions for building this package. Yay has this nice feature where it shows you what has changed in the PKGBUILD file since the last time.</p>
<p>For now, I'll pick <code>N</code> for none and hit enter. Yay will now look for the dependencies and ask for your password to install them.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/01/VirtualBox_archlinux-2022.01.01-x86_64_14_01_2022_21_19_58.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>Confirm the installation and provide your password. Yay will then install the dependencies and start building the package. Once built, yay will install the package and prompt for your password where necessary.</p>
<p>After the installation finishes, search for Visual Studio Code in the application launcher:</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/01/VirtualBox_archlinux-2022.01.01-x86_64_14_01_2022_21_28_42.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>Congratulations on installing your first package from AUR. Yay commands are almost identical to pacman, so if you can do something with pacman, you should be able to do that with yay as well.</p>
<p>In fact, yay can also install packages from official Arch Linux repositories like pacman. But I would suggest you to use yay only for installing packages from AUR when necessary and pacman for everything else.</p>
<h3 id="heading-how-to-install-packages-manually">How To Install Packages Manually</h3>
<p>Like I said in the previous section, the ArchWiki suggests avoiding any AUR helper and installing packages from AUR manually. I'll now show you how to do it. </p>
<p>Make sure you have <code>git</code> and <code>base-devel</code> packages installed. If not, use <code>pacman</code> to install them.</p>
<p>For the demonstration, let's install Spotify this time. First visit the AUR page for the spotify package - <a target="_blank" href="https://aur.archlinux.org/packages/spotify/">https://aur.archlinux.org/packages/spotify/</a> and copy the "Git Clone URL" from there.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/01/image-68.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>The page even lists all the dependencies you'll need. Clone the repository to your machine:</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/01/VirtualBox_archlinux-2022.01.01-x86_64_16_01_2022_21_16_43.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>Every AUR repository comes with a PKGBUILD file containing the instructions for building the package. Whenever you're installing a package from AUR, it's a great idea to checkout the PKGBUILD file using something like the <code>cat</code> command:</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/01/VirtualBox_archlinux-2022.01.01-x86_64_16_01_2022_21_22_37.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>Make sure there's nothing harmful in the file. Once you're satisfied, use <code>makepkg</code> to install any dependencies, build the package, and install it. Ideally there shouldn't be any issues but sometimes, things can take an unexpected turn.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/01/VirtualBox_archlinux-2022.01.01-x86_64_16_01_2022_21_34_29.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>In these cases, go back to the corresponding AUR page and check the user comments. Like in this case, I found the following pinned comment:</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/01/image-69.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>Turns out the package requires you to add the Spotify for Linux gpg key to the user kyechain. This command downloads the gpg key using <code>curl</code> and pipes it as the input of the <code>gpg --import</code> command:</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/01/VirtualBox_archlinux-2022.01.01-x86_64_16_01_2022_21_37_50.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>Try executing <code>makepkg -si</code> once again and everything should work fine this time:</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/01/VirtualBox_archlinux-2022.01.01-x86_64_16_01_2022_21_39_33.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>See, told ya! Manually installing packages often involves such troubleshooting but help is almost always around the comment corner. Let's enjoy some music now.</p>
<h2 id="heading-how-to-troubleshoot-common-problems">How To Troubleshoot Common Problems</h2>
<p>Look, I've been using Arch as my primary on all my devices for some years now but I still run into issues. Fortunately there are some great places to look for help when you're stuck:</p>
<ul>
<li><a target="_blank" href="https://wiki.archlinux.org/">ArchWiki</a></li>
<li><a target="_blank" href="https://bbs.archlinux.org/">Arch Linux Forum</a></li>
<li><a target="_blank" href="https://www.reddit.com/r/archlinux/">r/archlinux</a></li>
</ul>
<p>For the most part, the wiki should have the information you're looking for. In fact, if you're on a laptop and having difficulty getting something to work, there is an entire wiki <a target="_blank" href="https://wiki.archlinux.org/title/Category:Laptops">category</a> dedicated to different laptops. So look around the wiki.</p>
<p>If the wiki fails to solve your problem, then ask other fellow users at the forum as well as the subreddit. But whenever you're doing that, make sure to do your research first and include as much description as you can in the post. It's really annoying if other users have to keep asking you for more information and it'll also lower the chance that you'll get an answer.</p>
<h2 id="heading-how-to-use-the-live-arch-iso-as-a-rescue-media">How To Use the Live Arch ISO as a Rescue Media</h2>
<p>Whatever people may say, Arch Linux is very stable as long as you know what you're doing. If you go about installing every funky package you come across in the AUR or keep switching different kernels without knowing what they're for, your system may fail to boot.</p>
<p>In those cases, you can use your live USB drive as a rescue media. To do so, reconnect the bootable USB to your computer and boot into the live environment. Once there, configure the time, keymaps, and fonts if you want to.</p>
<p>Then use <code>fdisk</code> to list out all your partitions and locate the one holding your Arch Linux installation. In my case it's the <code>/dev/sda2</code> partition. Mount the partition like you did before:</p>
<pre><code class="lang-bash">mount /dev/sda2 /mnt
</code></pre>
<p>Now use Arch-Chroot to log in as the root user.</p>
<pre><code class="lang-bash">arch-chroot /mnt
</code></pre>
<p>Now uninstall the bad package you installed or go back to a kernel version that used to work in the past and so on. Once done, exit the Arch-Chroot environment, unmount the partition, and reboot:</p>
<pre><code class="lang-bash"><span class="hljs-built_in">exit</span>
umount -R /mnt
reboot
</code></pre>
<p>If the computer boots fine then congratulations. Otherwise try the wiki, forum, or the subreddit. If nothing works, you may have to do a fresh install.</p>
<h2 id="heading-further-reading">Further Reading</h2>
<p>If you've come this far then you've done a lot of reading already – but that's not all. This entire handbook was written by combining information from the wiki, forum, and subreddit. I'm listing out some wiki pages that I think you should read.</p>
<ul>
<li><a target="_blank" href="https://wiki.archlinux.org/title/Installation_guide">Installation guide</a></li>
<li><a target="_blank" href="https://wiki.archlinux.org/title/Network_configuration">Network configuration</a></li>
<li><a target="_blank" href="https://wiki.archlinux.org/title/General_recommendations">General recommendation</a></li>
<li><a target="_blank" href="https://wiki.archlinux.org/title/Desktop_environment">Desktop environment</a></li>
<li><a target="_blank" href="https://wiki.archlinux.org/title/pacman">pacman</a></li>
<li><a target="_blank" href="https://wiki.archlinux.org/title/Arch_Build_System">Arch Build System</a></li>
<li><a target="_blank" href="https://wiki.archlinux.org/title/makepkg">makepkg</a></li>
<li><a target="_blank" href="https://wiki.archlinux.org/title/List_of_applications">List of applications</a></li>
</ul>
<p>Couldn't think of any more at the moment but I'll keep this list updated.</p>
<h2 id="heading-conclusion">Conclusion</h2>
<p>I would like to thank you from the bottom of my heart for the time you've spent on reading this article. I hope you've enjoyed your time and have learned a lot about not only Arch but Linux in general</p>
<p>Apart from this one, I've written full-length handbooks on other complicated topics available for free on <a target="_blank" href="https://www.freecodecamp.org/news/author/farhanhasin/">freeCodeCamp</a>.</p>
<p>These handbooks are part of my mission to simplify hard to understand technologies for everyone. Each of these handbooks takes a lot of time and effort to write.</p>
<p>If you've enjoyed my writing and want to keep me motivated, consider leaving starts on <a target="_blank" href="https://github.com/fhsinchy/">GitHub</a> and endorse me for relevant skills on <a target="_blank" href="https://www.linkedin.com/in/farhanhasin/">LinkedIn</a>.</p>
<p>I'm always open to suggestions and discussions on <a target="_blank" href="https://twitter.com/frhnhsin">Twitter</a> or <a target="_blank" href="https://www.linkedin.com/in/farhanhasin/">LinkedIn</a>. Hit me with direct messages.</p>
<p>In the end, consider sharing the resources with others, because</p>
<blockquote>
<p>In open source, we feel strongly that to really do something well, you have to get a lot of people involved. — Linus Torvalds</p>
</blockquote>
<p>Till the next one, stay safe and keep learning.</p>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ How to run Docker on Windows 10 Home edition ]]>
                </title>
                <description>
                    <![CDATA[ By Mihail Gaberov Recently I have been watching a tutorial where, in order to follow it, you need to have Docker running on your machine. So far, so good.  But it turns out that the latest versions of Docker require Windows 10 Pro, Enterprise, or Edu... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/how-to-run-docker-on-windows-10-home-edition/</link>
                <guid isPermaLink="false">66d46052d14641365a050927</guid>
                
                    <category>
                        <![CDATA[ ArchLinux ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Docker ]]>
                    </category>
                
                    <category>
                        <![CDATA[ VirtualBox  ]]>
                    </category>
                
                    <category>
                        <![CDATA[ vm ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Windows 10 ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ freeCodeCamp ]]>
                </dc:creator>
                <pubDate>Wed, 22 Jan 2020 09:38:50 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/news/content/images/2020/01/head-image-1.jpg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>By Mihail Gaberov</p>
<p>Recently I have been watching a tutorial where, in order to follow it, you need to have <a target="_blank" href="https://docs.docker.com/docker-for-windows/install/">Docker</a> running on your machine. So far, so good. </p>
<p>But it turns out that the latest versions of Docker require Windows 10 Pro, Enterprise, or Education. Which means that if you are like me and have just Windows 10 Home edition on your personal laptop, then you cannot use Docker…<strong>or maybe you still can</strong>. </p>
<p>Read on below to find out how. ?</p>
<h2 id="heading-reasoning">Reasoning</h2>
<p>First, let's do a short summary of the situation. What do we want to achieve and what do we currently have?</p>
<p>We have Windows 10 OS Home edition on our machine. We would like to have Docker running on the same machine so that we are able to create docker images, run containers, and learn better and grow faster! </p>
<p>The last one is a bit out of the scope of this article, but we should start from somewhere, no? ?.</p>
<h2 id="heading-actions">Actions</h2>
<p>After defining what we want, let's see how to achieve it. Here are the steps I followed. It worked for me, which make me want to share it with you. And maybe I can save someone a few days of going back and forth to StackOverflow! ?</p>
<p>After some reading, I found this <a target="_blank" href="http://support.divio.com/en/articles/646695-how-to-use-a-directory-outside-c-users-with-docker-toolbox-docker-for-windows">article</a>. It explains that it is possible to use Docker in Windows 10 Home by leveraging a Linux virtual machine and having Docker containers running on it. Let's see how it works.</p>
<h3 id="heading-step-1-installations">Step 1: Installations</h3>
<p>First you need to install a software called <a target="_blank" href="https://www.virtualbox.org/">Oracle VM VirtualBox</a>. It gives you the ability to have multiple virtual machines installed on your physical one. This way we can have a virtual machine which will be running Linux where our Docker will live.</p>
<p>Then use Windows PowerShall and <a target="_blank" href="https://chocolatey.org/">Chocolatey</a>, your Windows package manager, to install a <em>docker-machine</em> by running the following:</p>
<pre><code class="lang-bash">choco install docker-machine
</code></pre>
<p>Open your favorite bash terminal app and run this:</p>
<pre><code class="lang-bash">docker-machine create --driver virtualbox default
</code></pre>
<p>This will create a docker virtual machine called 'default'.</p>
<h3 id="heading-step-2-configurations">Step 2: Configurations</h3>
<p>Next, we need to configure which ports are exposed when running Docker containers. You can do that by going to Oracle VM VirtualBox -&gt; default virtual machine -&gt; Settings -&gt; Network -&gt; Adapter 1 -&gt; Port Forwarding.</p>
<p><img src="https://mihail-gaberov.eu/static/fb9bdc0bd6814d55c65b8ea7c761c8bd/fcda8/port-forwarding.png" alt="VirtualBox Port Forwarding" width="600" height="400" loading="lazy"></p>
<p>This was the <strong>most critical</strong> <strong>detail</strong> that I forgot . We need to allow Docker to mount volumes located on your hard drive. By default, you can only mount from the <code>C://Users/</code> directory. </p>
<p>To add a different path, simply go to the <strong>Oracle VM VirtualBox</strong> GUI. Select <strong>default</strong> VM and go to <em>Settings &gt; Shared Folders</em>. If you don't mind to use the default settings, do not forget to put your project under the 'Users' directory, e.g. <code>C:\Users\{your project}</code>. </p>
<p>In my case, I forgot about this and had to spend few days of head banging until I figured out why the heck was I getting a "Couldn't find package.json" error when trying to run the <a target="_blank" href="https://github.com/mihailgaberov/microservices">containers</a>, built through this <a target="_blank" href="https://www.youtube.com/watch?v=6Yfm5gHQjaQ&amp;list=PLnTRniWXnjf8YC9qJFLSVCrXfS6cyj6x6&amp;index=2">tutorial</a>.</p>
<p>Start the virtual machine by running the following command in your terminal app:</p>
<pre><code class="lang-bash">docker-machine start default
</code></pre>
<h3 id="heading-step-3-setting-up-environment-variables">Step 3: Setting up Environment Variables</h3>
<p>Next, we need to set up Docker environment variables:</p>
<pre><code class="lang-bash">docker-machine env default
</code></pre>
<p>This allows the Docker client and Docker Compose to communicate with the Docker Engine running in the Linux VM that we named "default".</p>
<p>You may also need to run:</p>
<pre><code class="lang-bash">@FOR /f <span class="hljs-string">"tokens=*"</span> %i IN (<span class="hljs-string">'"C:\ProgramData\chocolatey\lib\docker-machine\bin\docker-machine.exe" env'</span>) DO @%i
</code></pre>
<p>in order to get Docker working properly. <em>Note: the specified path in the above command may vary depending on your setup</em>.</p>
<p>If you are going to use things such as <code>docker-compose up</code>, you will need to install Docker Tools as well. You may do it by running the following commands in PowerShall:</p>
<pre><code class="lang-bash">choco install docker-cli
choco install docker-compose
</code></pre>
<p>These will install everything you need to start using Docker on your Windows 10 Home OS.</p>
<h2 id="heading-conclusion"><strong>Conclusion</strong></h2>
<p>Now that we have all we need, we may spend our time on actual learning, either by following a docker-related tutorial or reading a book. No matter what you want to do next, you have all the tools you will need. </p>
<p>I personally will try to <a target="_blank" href="https://github.com/mihailgaberov/microservices">finish</a> the previously mentioned tutorial and then, who knows, may be I will start using Docker for each project I do.</p>
<p>By the way, during the process of researching, I found a very promising book which is specifically about Docker. It's called <em>"Docker in Practice" by Ian Miell</em>. If this interests you, you might want to take a look.</p>
<p>? Thanks for reading! ?</p>
<h3 id="heading-references"><strong>References</strong></h3>
<ul>
<li><a target="_blank" href="https://www.virtualbox.org/">https://www.virtualbox.org/</a></li>
<li><a target="_blank" href="https://www.sitepoint.com/docker-windows-10-home">https://www.sitepoint.com/docker-windows-10-home</a></li>
<li><a target="_blank" href="https://www.youtube.com/watch?v=6Yfm5gHQjaQ&amp;list=PLnTRniWXnjf8YC9qJFLSVCrXfS6cyj6x6&amp;index=2">https://www.youtube.com/watch?v=6Yfm5gHQjaQ&amp;list=PLnTRniWXnjf8YC9qJFLSVCrXfS6cyj6x6&amp;index=2</a></li>
<li><a target="_blank" href="https://github.com/mihailgaberov/microservices">https://github.com/mihailgaberov/microservices</a></li>
<li><a target="_blank" href="http://support.divio.com/en/articles/646695-how-to-use-a-directory-outside-c-users-with-docker-toolbox-docker-for-windows">http://support.divio.com/en/articles/646695-how-to-use-a-directory-outside-c-users-with-docker-toolbox-docker-for-windows</a></li>
</ul>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ How to Install Go in Arch Linux Using Pacman ]]>
                </title>
                <description>
                    <![CDATA[ Using the Arch Linux Package Manager (pacman) is the easiest way to install Go. Based on the Arch Linux philosophy of providing new software versions very fast, you will get a very current version of Go.  Before you can install the Go package, you ha... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/how-to-install-go-in-arch-linux-using-pacman/</link>
                <guid isPermaLink="false">66c352e2d58e4fdd567d51a2</guid>
                
                    <category>
                        <![CDATA[ ArchLinux ]]>
                    </category>
                
                    <category>
                        <![CDATA[ golang ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ freeCodeCamp ]]>
                </dc:creator>
                <pubDate>Sun, 29 Dec 2019 20:14:00 +0000</pubDate>
                <media:content url="https://cdn-media-2.freecodecamp.org/w1280/5f9c9e65740569d1a4ca3ce4.jpg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>Using the Arch Linux Package Manager (<code>pacman</code>) is the easiest way to install Go. Based on the Arch Linux philosophy of providing new software versions very fast, you will get a very current version of Go. </p>
<p>Before you can install the Go package, you have to bring the system and all of your installed packages up to date. However, before updating your system and its packages, remember to check the <a target="_blank" href="https://www.archlinux.org/">Arch Linux home page</a> first. Any out-of-the-ordinary steps that you have to do to prevent packages from breaking will be listed in a post there.</p>
<p>Once you've confirmed that it's safe to update your system, just run the following command:</p>
<pre><code class="lang-sh">$ sudo pacman -Syu
</code></pre>
<p>Remember that the <code>-S</code> flag is used to install a single package or a list of packages, the <code>y</code> option refreshes the list of all Arch Linux packages, and the option <code>u</code> upgrades all packages that are out of date.</p>
<p>After your system is completely up to date, install Go with the following command:</p>
<pre><code class="lang-sh">$ sudo pacman -S go
</code></pre>
<h3 id="heading-check-the-installation-and-version-of-go">Check the installation and version of Go</h3>
<p>To check if Go was successfully installed, run:</p>
<pre><code class="lang-sh">$ go version
&gt; go version go1.13.8 linux/amd64
</code></pre>
<p>This will print the installed version of Go to the console, while at the same time making sure the installation went smoothly.</p>
<h2 id="heading-more-info-about-go">More info about Go:</h2>
<p><a target="_blank" href="https://www.freecodecamp.org/news/go-golang-course/">Learn Go in this free video course</a></p>
<p><a target="_blank" href="https://www.freecodecamp.org/news/how-to-build-a-photo-feed-with-go-and-vue-js-9d7f7f39c1b4/">How to build a photo feed with Go and Vue.js</a></p>
<h2 id="heading-more-info-about-arch-linux">More info about Arch Linux:</h2>
<p><a target="_blank" href="https://www.freecodecamp.org/news/installing-arch-linux-from-scratch-b595095ddd48/">How to install Arch Linux from scratch</a></p>
<h2 id="heading-bonus-how-to-install-go-on-ubuntu-linux-mint">Bonus: How to Install Go on Ubuntu / Linux Mint:</h2>
<p>Using Ubuntu’s Source Package Manager (<code>apt</code>) is the easiest way to install Go. While Arch Linux's <code>pacman</code> is on the bleeding edge, packages installed using <code>apt</code> and its variants are often several versions behind. </p>
<p>The benefit of this approach is stability – while you won't be able to install the latest and greatest version of any package, you can be certain that your system won't break.</p>
<p>First, update your system with the following commands:</p>
<pre><code class="lang-sh">$ sudo apt update
$ sudo apt upgrade
</code></pre>
<p>Then install Go by running:</p>
<pre><code class="lang-sh">$ sudo apt install golang-go
</code></pre>
<h3 id="heading-check-the-installation-and-version-of-go-1">Check the installation and version of Go</h3>
<p>To check if Go was successfully installed, open your terminal and run:</p>
<pre><code class="lang-sh">$ go version
</code></pre>
<p>This will print the installed version of Go to the console.</p>
<h2 id="heading-bonus-how-to-install-go-on-macos">Bonus: How to Install Go on macOS:</h2>
<h3 id="heading-installing-go-in-mac-os-x-using-package-installer"><strong>Installing Go in Mac OS X using Package Installer</strong></h3>
<p>From the <a target="_blank" href="https://golang.org/dl/">golang’s download page</a>, get the Mac package installer (ending in .pkg) and run it.</p>
<p><img src="https://raw.githubusercontent.com/AlexandroPerez/resources/master/img/mac_package_installer.jpg" alt="screenshot of golang's download page as of this writting, highliting link" width="600" height="400" loading="lazy"></p>
<h3 id="heading-check-the-installation-and-version-of-go-2">Check the installation and version of Go</h3>
<p>To check if Go was successfully installed, open your terminal and run:</p>
<pre><code class="lang-sh">$ go version
</code></pre>
<p>This will print the installed version of Go to the console.</p>
<h3 id="heading-installing-go-in-mac-os-x-using-tarball">Installing Go in Mac OS X using tarball</h3>
<p>You can get the link to the Mac OS tarball archive from the Latest Stable section of the <a target="_blank" href="https://golang.org/dl/">golang download page</a>.</p>
<p><img src="https://raw.githubusercontent.com/AlexandroPerez/resources/master/img/mac_tarball.jpg" alt="screenshot of golang's download page as of this writting, highliting link" width="600" height="400" loading="lazy"></p>
<h3 id="heading-installation-process">Installation Process</h3>
<p>In this installation process we’ll use the latest stable version as of this writing (Go 1.9.1). For a newer or older version simply replace the link in the first step. Check the <a target="_blank" href="https://golang.org/dl/">golang download page</a> to see what versions are currently available.</p>
<h5 id="heading-installing-go-191"><strong>Installing Go 1.9.1</strong></h5>
<pre><code class="lang-text">$ curl -O https://storage.googleapis.com/golang/go1.9.1.darwin-amd64.tar.gz
$ sudo tar -C /usr/local -xzf go1.9.1.darwin-amd64.tar.gz
$ export PATH=$PATH:/usr/local/go/bin
</code></pre>
<h3 id="heading-check-installation-and-version-of-go">Check installation and version of go</h3>
<p>To check if Go was successfully installed, use:</p>
<pre><code class="lang-sh">$ go version
</code></pre>
<p>This will print the installed version of Go to the console.</p>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ How to Install Arch Linux from Scratch ]]>
                </title>
                <description>
                    <![CDATA[ By Andrea Giammarchi In this article, you'll learn how to install Arch Linux from scratch… and in about 5 minutes. So let's get to it. As of today, it’s been more or less 3 years I am happily using Arch Linux as my primary Operating System, and I’ve ... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/installing-arch-linux-from-scratch-b595095ddd48/</link>
                <guid isPermaLink="false">66c35815cf1314a450f0d6cc</guid>
                
                    <category>
                        <![CDATA[ Archibold ]]>
                    </category>
                
                    <category>
                        <![CDATA[ ArchLinux ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Linux ]]>
                    </category>
                
                    <category>
                        <![CDATA[ technology ]]>
                    </category>
                
                    <category>
                        <![CDATA[ VirtualBox  ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ freeCodeCamp ]]>
                </dc:creator>
                <pubDate>Sun, 18 Dec 2016 20:13:22 +0000</pubDate>
                <media:content url="https://cdn-media-2.freecodecamp.org/w1280/5f9cb6ec740569d1a4cae100.jpg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>By Andrea Giammarchi</p>
<p>In this article, you'll learn how to install Arch Linux from scratch… and in about 5 minutes. So let's get to it.</p>
<p>As of today, it’s been more or less 3 years I am happily using Arch Linux as my primary Operating System, and I’ve used it daily not only on my laptop, but also on my <a target="_blank" href="https://medium.com/@WebReflection/a-gaming-pc-without-breaking-the-bank-b56c73bba1e7#.ktf73jt1x">Gaming PC</a> and many <a target="_blank" href="https://benja.io/">Single Board Computers</a> too.</p>
<p>I’ve been using my <a target="_blank" href="https://archibold.io/">archibold.io</a> installer for quite a while, and recently I’ve rewritten it after learning more and more about Arch Linux.</p>
<p>This post is about <em>me</em> giving back few things I’ve learned from the <a target="_blank" href="https://www.archlinux.org/">Arch Linux</a> project and its community, hopefully simplifying life to whoever would like to embrace this awesome distribution!</p>
<h3 id="heading-booting-a-linux-os-in-a-nutshell">Booting a Linux OS in a nutshell</h3>
<p>You need a special partition recognized as bootable, and with some automatically recognized binary file capable of telling the motherboard how to booth, and where to boot on.</p>
<p>In Arch Linux land, there are basically 3 major players: <a target="_blank" href="http://www.denx.de/wiki/U-Boot/WebHome">U-Boot</a>, the default boot loader used by <a target="_blank" href="https://archlinuxarm.org/">Arch Linux ARM</a> ports, <a target="_blank" href="http://www.syslinux.org/wiki/index.php?title=The_Syslinux_Project">Syslinux</a>, which is the preferred choice of the very same Arch Linux ISO installer, and <a target="_blank" href="https://www.gnu.org/software/grub/">Grub</a>, usually easier to configure on multi-boot systems, which is not part of this very post scope.</p>
<p>Tools to deal with partitions are usually 2: <strong>parted</strong>, preferred when it comes to advanced features like UEFI partition and optimized disk alignment, or <strong>fdisk</strong>, which just works and does the job in a “<em>less scriptysh</em>” way.</p>
<h4 id="heading-booting-how">Booting How ?</h4>
<p>There are few ways to tell a motherboard how to boot a system: <a target="_blank" href="https://en.wikipedia.org/wiki/Unified_Extensible_Firmware_Interface">UEFI</a> configuration, which is mostly suitable for Windows OS running on Intel CPUs but usable to boot Linux distros too, and legacy BIOS compatible, which has less features than UEFI but it always delivers (and is the most widely available).</p>
<p>On top of this distinction, while UEFI has a secure boot mode, which is again basically a Windows specific thing only, a boot can also include special commands capable of enabling, or disabling, an <a target="_blank" href="https://en.wikipedia.org/wiki/INT_13H#EDD">EDD</a> mode, which is a good old <em>Enhanced Disk Drive</em> technology that might not be needed on boot time and in some case should be explicitly disabled like in VirtualBox images or some AMD based SBC like the Gizmo 2 board.</p>
<h4 id="heading-booting-what">Booting What ?</h4>
<p>There is one and one only consolidated cross platform and universal File System out there and it’s sadly or thankfully the good old <a target="_blank" href="https://en.wikipedia.org/wiki/File_Allocation_Table">FAT</a> one.</p>
<p>There are surely more suitable, more secure, faster, and more HW caring options out there, but FAT with a loader is a safe bet with both UEFI and legacy.</p>
<p>In few words, the most basic amount of partitions on your system should be 2: a FAT bootable one, and a “<em>whatever you want</em>” else. Please note that <a target="_blank" href="https://en.wikipedia.org/wiki/Ext4">ext4</a> is still a very valid choice for daily tasks, but there are few valid alternatives to consider, yet not part of this post scope.</p>
<h4 id="heading-any-swap">Any Swap ?</h4>
<p>If you are installing Arch Linux on a system with more than 4GB or RAM, and you are not planning to use such system to develop complex software, I’d say you shouldn’t worry much about having a backup <a target="_blank" href="https://en.wikipedia.org/wiki/Paging">swap</a> partition.</p>
<p>Generally speaking, old laptops I’ve tested, with just 2GB of RAM, has been doing great without any extra swap and a graphical Desktop like <a target="_blank" href="https://www.gnome.org/">GNOME</a> without effort.</p>
<p>However, if you’d like to have some extra room to build more complex software, and you have more than 1GB of RAM, use 1/4 of your RAM amount and you’d be fine.</p>
<h3 id="heading-ok-but-where-are-all-the-commands-to-install-linux">OK but where are all the commands to install Linux ?</h3>
<p>This is the best part of this post, the moment you’ve reached this part is the moment you are self trained to answer all basic questions <strong>archibold.io installer</strong> is going to ask you.</p>
<p>Download the <a target="_blank" href="https://www.archlinux.org/download/">Arch Linux ISO</a> from the website, and use it for a VirtualBox boot, or <a target="_blank" href="https://wiki.archlinux.org/index.php/USB_flash_installation_media">burn it to an USB stick following this Wiki Page</a>, you’ll have everything you need to boot into a terminal and run the following code:</p>
<pre><code>$ bash &lt;(curl -s archibold.io/base)
</code></pre><p>That’s basically it, the procedure will install the most basic Arch Linux you could think of on your machine or, like the video on top of this post shows, on a VirtualBox, in case you want to try it first.</p>
<h3 id="heading-ok-cool-but-id-like-to-have-a-desktop-too">OK, cool … but I’d like to have a Desktop too!</h3>
<p>In this case, oce you have booted into your account, you can check if you have an internet connection typing:</p>
<pre><code>ip addr
</code></pre><p>and if nothing appears under your wifi or ethernet name, follow these instructions:</p>
<pre><code># <span class="hljs-keyword">if</span> not logged <span class="hljs-keyword">as</span> root already, type <span class="hljs-string">'su'</span>su# use root <span class="hljs-keyword">as</span> <span class="hljs-keyword">default</span> password# now, <span class="hljs-keyword">in</span> <span class="hljs-keyword">case</span> you have a wired connectionip addr # to see the name <span class="hljs-keyword">of</span> the adapterdhcpcd enp0s3 # where enp0s3 is just a made up name, use your one
</code></pre><pre><code># <span class="hljs-keyword">if</span> it was wi-fi cardwifi-menu # and configure it
</code></pre><pre><code>exit # to go back to your user
</code></pre><p>Once you have an internet connection, you can simply use another helper:</p>
<pre><code>bash &lt;(curl -s archibold.io/install/gnome)
</code></pre><p>The latter will guide you to install the best Desktop environment out there.</p>
<h4 id="heading-right-but">Right .. but …</h4>
<p>If you’re stuck at any point, please don’t hesitate to file a bug in the <a target="_blank" href="https://github.com/WebReflection/archibold.io/tree/gh-pages">Open Source archibold repository</a>, or simply ask me questions in here.</p>
<p>I’m pretty sure I can answer most of them so … bring it on! :-)</p>
 ]]>
                </content:encoded>
            </item>
        
    </channel>
</rss>
