<!DOCTYPE html><html> <head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><link rel="icon" type="image/svg+xml" href="/favicon.svg"><link rel="icon" href="data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 100 100%22><text y=%22.9em%22 font-size=%2290%22></text></svg>"><meta name="generator" content="Astro v5.1.5"><title>Artix Linux install guide | z0x</title><meta name="title" content="Artix Linux install guide | z0x"><meta name="description" content="Guide to installing Artix Linux with OpenRC and full disk encryption for UEFI and BIOS systems."><meta property="og:type" content="website"><meta property="og:url" content="https://blog.z0x.ca/artix-install-guide/"><meta property="og:title" content="Artix Linux install guide | z0x"><meta property="og:description" content="Guide to installing Artix Linux with OpenRC and full disk encryption for UEFI and BIOS systems."><meta property="og:image" content="https://blog.z0x.ca/blog-placeholder-1.jpg"><meta property="twitter:card" content="summary_large_image"><meta property="twitter:url" content="https://blog.z0x.ca/artix-install-guide/"><meta property="twitter:title" content="Artix Linux install guide | z0x"><meta property="twitter:description" content="Guide to installing Artix Linux with OpenRC and full disk encryption for UEFI and BIOS systems."><meta property="twitter:image" content="https://blog.z0x.ca/blog-placeholder-1.jpg"><meta name="astro-view-transitions-enabled" content="true"><meta name="astro-view-transitions-fallback" content="animate"><script type="module" src="/_astro/ClientRouter.astro_astro_type_script_index_0_lang.BScVxmeO.js"></script><script> function init() { preloadTheme(); onScroll(); animate(); updateThemeButtons(); addCopyCodeButtons(); setGiscusTheme(); const backToTop = document.getElementById("back-to-top"); backToTop?.addEventListener("click", (event) => scrollToTop(event)); const backToPrev = document.getElementById("back-to-prev"); backToPrev?.addEventListener("click", () => window.history.back()); const lightThemeButton = document.getElementById("light-theme-button"); lightThemeButton?.addEventListener("click", () => { localStorage.setItem("theme", "light"); toggleTheme(false); updateThemeButtons(); }); const darkThemeButton = document.getElementById("dark-theme-button"); darkThemeButton?.addEventListener("click", () => { localStorage.setItem("theme", "dark"); toggleTheme(true); updateThemeButtons(); }); const systemThemeButton = document.getElementById("system-theme-button"); systemThemeButton?.addEventListener("click", () => { localStorage.setItem("theme", "system"); toggleTheme(window.matchMedia("(prefers-color-scheme: dark)").matches); updateThemeButtons(); }); window.matchMedia("(prefers-color-scheme: dark)").addEventListener("change", (event) => { if (localStorage.theme === "system") { toggleTheme(event.matches); } }); document.addEventListener("scroll", onScroll); } function updateThemeButtons() { const theme = localStorage.getItem("theme"); const lightThemeButton = document.getElementById("light-theme-button"); const darkThemeButton = document.getElementById("dark-theme-button"); const systemThemeButton = document.getElementById("system-theme-button"); function removeActiveButtonTheme(button) { button?.classList.remove("bg-black/5"); button?.classList.remove("dark:bg-white/5"); } function addActiveButtonTheme(button) { button?.classList.add("bg-black/5"); button?.classList.add("dark:bg-white/5"); } removeActiveButtonTheme(lightThemeButton); removeActiveButtonTheme(darkThemeButton); removeActiveButtonTheme(systemThemeButton); if (theme === "light") { addActiveButtonTheme(lightThemeButton); } else if (theme === "dark") { addActiveButtonTheme(darkThemeButton); } else { addActiveButtonTheme(systemThemeButton); } } function animate() { const animateElements = document.querySelectorAll(".animate"); animateElements.forEach((element, index) => { setTimeout(() => { element.classList.add("show"); }, index * 100); }); } function onScroll() { if (window.scrollY > 0) { document.documentElement.classList.add("scrolled"); } else { document.documentElement.classList.remove("scrolled"); } } function scrollToTop(event) { event.preventDefault(); window.scrollTo({ top: 0, behavior: "smooth", }); } function toggleTheme(dark) { const css = document.createElement("style"); css.appendChild( document.createTextNode( `* { -webkit-transition: none !important; -moz-transition: none !important; -o-transition: none !important; -ms-transition: none !important; transition: none !important; } `, ), ); document.head.appendChild(css); if (dark) { document.documentElement.classList.add("dark"); } else { document.documentElement.classList.remove("dark"); } window.getComputedStyle(css).opacity; document.head.removeChild(css); setGiscusTheme(); } function preloadTheme() { const userTheme = localStorage.theme; if (userTheme === "light" || userTheme === "dark") { toggleTheme(userTheme === "dark"); } else { toggleTheme(window.matchMedia("(prefers-color-scheme: dark)").matches); } } function addCopyCodeButtons() { let copyButtonLabel = "📋"; let codeBlocks = Array.from(document.querySelectorAll("pre")); async function copyCode(codeBlock, copyButton) { const codeText = codeBlock.innerText; const buttonText = copyButton.innerText; const textToCopy = codeText.replace(buttonText, ""); await navigator.clipboard.writeText(textToCopy); copyButton.innerText = "✅"; setTimeout(() => { copyButton.innerText = copyButtonLabel; }, 2000); } for (let codeBlock of codeBlocks) { const wrapper = document.createElement("div"); wrapper.style.position = "relative"; const copyButton = document.createElement("button"); copyButton.innerText = copyButtonLabel; copyButton.classList = "copy-code"; codeBlock.setAttribute("tabindex", "0"); codeBlock.appendChild(copyButton); codeBlock.parentNode.insertBefore(wrapper, codeBlock); wrapper.appendChild(codeBlock); copyButton?.addEventListener("click", async () => { await copyCode(codeBlock, copyButton); }); } } const setGiscusTheme = () => { const giscus = document.querySelector(".giscus-frame"); const isDark = document.documentElement.classList.contains("dark"); if (giscus) { const url = new URL(giscus.src); url.searchParams.set("theme", isDark ? "dark" : "light"); giscus.src = url.toString(); } }; document.addEventListener("DOMContentLoaded", () => init()); document.addEventListener("astro:after-swap", () => init()); preloadTheme(); </script><link rel="stylesheet" href="/_astro/_id_.C8-8VbW1.css"> <style>summary[data-astro-cid-xvrfupwn]{cursor:pointer;border-top-left-radius:.5rem;border-top-right-radius:.5rem;padding:.375rem .75rem;font-weight:500;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}summary[data-astro-cid-xvrfupwn]:hover{background-color:#0000000d}summary[data-astro-cid-xvrfupwn]:hover:is(.dark *){background-color:#ffffff0d}details[data-astro-cid-xvrfupwn][open] summary[data-astro-cid-xvrfupwn]{background-color:#0000000d}details[data-astro-cid-xvrfupwn][open] summary[data-astro-cid-xvrfupwn]:is(.dark *){background-color:#ffffff0d} </style><script> (function () { var script = document.createElement("script") var viewTransitionsEnabled = document.querySelector("meta[name='astro-view-transitions-enabled']")?.content script.setAttribute("src", "https://umami.z0x.ca/script.js") script.setAttribute("defer", true) script.setAttribute("data-website-id", "b691181e-cad7-4c23-b16a-709872a0a7ab") if (!!viewTransitionsEnabled) { script.setAttribute("data-astro-rerun", true) } var head = document.querySelector("head") head.appendChild(script) })() </script></head> <body> <main> <div class="mx-auto max-w-screen-sm px-3"> <div class="my-10 space-y-1"> <div class="animate flex items-center gap-1.5"> <div class="font-base text-sm"> <time datetime="2025-01-07T00:00:00.000Z"> 2025-01-07 </time> </div> • <div class="font-base text-sm">10 min read</div> </div> <h1 class="animate text-3xl font-semibold text-black dark:text-white"> Artix Linux install guide </h1> </div> <details open class="animate rounded-lg border border-black/15 dark:border-white/20" data-astro-cid-xvrfupwn> <summary data-astro-cid-xvrfupwn>Table of Contents</summary> <nav class="" data-astro-cid-xvrfupwn> <ul class="py-3" data-astro-cid-xvrfupwn> <li class="list-inside list-disc px-6 py-1.5 text-sm"> <a href="#undefined" target="_self" class="inline-block decoration-black/30 dark:decoration-white/30 hover:decoration-black/50 focus-visible:decoration-black/50 dark:hover:decoration-white/50 dark:focus-visible:decoration-white/50 text-current hover:text-black focus-visible:text-black dark:hover:text-white dark:focus-visible:text-white transition-colors duration-300 ease-in-out underline underline-offset-[3px]"> Introduction </a> </li><li class="list-inside list-disc px-6 py-1.5 text-sm"> <a href="#undefined" target="_self" class="inline-block decoration-black/30 dark:decoration-white/30 hover:decoration-black/50 focus-visible:decoration-black/50 dark:hover:decoration-white/50 dark:focus-visible:decoration-white/50 text-current hover:text-black focus-visible:text-black dark:hover:text-white dark:focus-visible:text-white transition-colors duration-300 ease-in-out underline underline-offset-[3px]"> Acquire an installation image </a> </li><li class="list-inside list-disc px-6 py-1.5 text-sm"> <a href="#undefined" target="_self" class="inline-block decoration-black/30 dark:decoration-white/30 hover:decoration-black/50 focus-visible:decoration-black/50 dark:hover:decoration-white/50 dark:focus-visible:decoration-white/50 text-current hover:text-black focus-visible:text-black dark:hover:text-white dark:focus-visible:text-white transition-colors duration-300 ease-in-out underline underline-offset-[3px]"> Prepare an installation medium </a> <ul class="translate-x-3"> <li class="list-inside list-disc px-6 py-1.5 text-sm"> <a href="#undefined" target="_self" class="inline-block decoration-black/30 dark:decoration-white/30 hover:decoration-black/50 focus-visible:decoration-black/50 dark:hover:decoration-white/50 dark:focus-visible:decoration-white/50 text-current hover:text-black focus-visible:text-black dark:hover:text-white dark:focus-visible:text-white transition-colors duration-300 ease-in-out underline underline-offset-[3px]"> Windows </a> </li><li class="list-inside list-disc px-6 py-1.5 text-sm"> <a href="#undefined" target="_self" class="inline-block decoration-black/30 dark:decoration-white/30 hover:decoration-black/50 focus-visible:decoration-black/50 dark:hover:decoration-white/50 dark:focus-visible:decoration-white/50 text-current hover:text-black focus-visible:text-black dark:hover:text-white dark:focus-visible:text-white transition-colors duration-300 ease-in-out underline underline-offset-[3px]"> Linux </a> </li> </ul> </li><li class="list-inside list-disc px-6 py-1.5 text-sm"> <a href="#undefined" target="_self" class="inline-block decoration-black/30 dark:decoration-white/30 hover:decoration-black/50 focus-visible:decoration-black/50 dark:hover:decoration-white/50 dark:focus-visible:decoration-white/50 text-current hover:text-black focus-visible:text-black dark:hover:text-white dark:focus-visible:text-white transition-colors duration-300 ease-in-out underline underline-offset-[3px]"> Boot the live environment </a> </li><li class="list-inside list-disc px-6 py-1.5 text-sm"> <a href="#undefined" target="_self" class="inline-block decoration-black/30 dark:decoration-white/30 hover:decoration-black/50 focus-visible:decoration-black/50 dark:hover:decoration-white/50 dark:focus-visible:decoration-white/50 text-current hover:text-black focus-visible:text-black dark:hover:text-white dark:focus-visible:text-white transition-colors duration-300 ease-in-out underline underline-offset-[3px]"> Enter the live environment </a> </li><li class="list-inside list-disc px-6 py-1.5 text-sm"> <a href="#undefined" target="_self" class="inline-block decoration-black/30 dark:decoration-white/30 hover:decoration-black/50 focus-visible:decoration-black/50 dark:hover:decoration-white/50 dark:focus-visible:decoration-white/50 text-current hover:text-black focus-visible:text-black dark:hover:text-white dark:focus-visible:text-white transition-colors duration-300 ease-in-out underline underline-offset-[3px]"> Connect to the internet </a> <ul class="translate-x-3"> <li class="list-inside list-disc px-6 py-1.5 text-sm"> <a href="#undefined" target="_self" class="inline-block decoration-black/30 dark:decoration-white/30 hover:decoration-black/50 focus-visible:decoration-black/50 dark:hover:decoration-white/50 dark:focus-visible:decoration-white/50 text-current hover:text-black focus-visible:text-black dark:hover:text-white dark:focus-visible:text-white transition-colors duration-300 ease-in-out underline underline-offset-[3px]"> Via Ethernet </a> </li><li class="list-inside list-disc px-6 py-1.5 text-sm"> <a href="#undefined" target="_self" class="inline-block decoration-black/30 dark:decoration-white/30 hover:decoration-black/50 focus-visible:decoration-black/50 dark:hover:decoration-white/50 dark:focus-visible:decoration-white/50 text-current hover:text-black focus-visible:text-black dark:hover:text-white dark:focus-visible:text-white transition-colors duration-300 ease-in-out underline underline-offset-[3px]"> Via WiFi </a> </li><li class="list-inside list-disc px-6 py-1.5 text-sm"> <a href="#undefined" target="_self" class="inline-block decoration-black/30 dark:decoration-white/30 hover:decoration-black/50 focus-visible:decoration-black/50 dark:hover:decoration-white/50 dark:focus-visible:decoration-white/50 text-current hover:text-black focus-visible:text-black dark:hover:text-white dark:focus-visible:text-white transition-colors duration-300 ease-in-out underline underline-offset-[3px]"> Verify internet connectivity </a> </li> </ul> </li><li class="list-inside list-disc px-6 py-1.5 text-sm"> <a href="#undefined" target="_self" class="inline-block decoration-black/30 dark:decoration-white/30 hover:decoration-black/50 focus-visible:decoration-black/50 dark:hover:decoration-white/50 dark:focus-visible:decoration-white/50 text-current hover:text-black focus-visible:text-black dark:hover:text-white dark:focus-visible:text-white transition-colors duration-300 ease-in-out underline underline-offset-[3px]"> Update the system clock </a> </li><li class="list-inside list-disc px-6 py-1.5 text-sm"> <a href="#undefined" target="_self" class="inline-block decoration-black/30 dark:decoration-white/30 hover:decoration-black/50 focus-visible:decoration-black/50 dark:hover:decoration-white/50 dark:focus-visible:decoration-white/50 text-current hover:text-black focus-visible:text-black dark:hover:text-white dark:focus-visible:text-white transition-colors duration-300 ease-in-out underline underline-offset-[3px]"> Partition the disk </a> </li><li class="list-inside list-disc px-6 py-1.5 text-sm"> <a href="#undefined" target="_self" class="inline-block decoration-black/30 dark:decoration-white/30 hover:decoration-black/50 focus-visible:decoration-black/50 dark:hover:decoration-white/50 dark:focus-visible:decoration-white/50 text-current hover:text-black focus-visible:text-black dark:hover:text-white dark:focus-visible:text-white transition-colors duration-300 ease-in-out underline underline-offset-[3px]"> Encrypt root partition </a> </li><li class="list-inside list-disc px-6 py-1.5 text-sm"> <a href="#undefined" target="_self" class="inline-block decoration-black/30 dark:decoration-white/30 hover:decoration-black/50 focus-visible:decoration-black/50 dark:hover:decoration-white/50 dark:focus-visible:decoration-white/50 text-current hover:text-black focus-visible:text-black dark:hover:text-white dark:focus-visible:text-white transition-colors duration-300 ease-in-out underline underline-offset-[3px]"> Create file systems </a> </li><li class="list-inside list-disc px-6 py-1.5 text-sm"> <a href="#undefined" target="_self" class="inline-block decoration-black/30 dark:decoration-white/30 hover:decoration-black/50 focus-visible:decoration-black/50 dark:hover:decoration-white/50 dark:focus-visible:decoration-white/50 text-current hover:text-black focus-visible:text-black dark:hover:text-white dark:focus-visible:text-white transition-colors duration-300 ease-in-out underline underline-offset-[3px]"> Mount file systems </a> </li><li class="list-inside list-disc px-6 py-1.5 text-sm"> <a href="#undefined" target="_self" class="inline-block decoration-black/30 dark:decoration-white/30 hover:decoration-black/50 focus-visible:decoration-black/50 dark:hover:decoration-white/50 dark:focus-visible:decoration-white/50 text-current hover:text-black focus-visible:text-black dark:hover:text-white dark:focus-visible:text-white transition-colors duration-300 ease-in-out underline underline-offset-[3px]"> Install Essentials </a> <ul class="translate-x-3"> <li class="list-inside list-disc px-6 py-1.5 text-sm"> <a href="#undefined" target="_self" class="inline-block decoration-black/30 dark:decoration-white/30 hover:decoration-black/50 focus-visible:decoration-black/50 dark:hover:decoration-white/50 dark:focus-visible:decoration-white/50 text-current hover:text-black focus-visible:text-black dark:hover:text-white dark:focus-visible:text-white transition-colors duration-300 ease-in-out underline underline-offset-[3px]"> AMD CPU </a> </li><li class="list-inside list-disc px-6 py-1.5 text-sm"> <a href="#undefined" target="_self" class="inline-block decoration-black/30 dark:decoration-white/30 hover:decoration-black/50 focus-visible:decoration-black/50 dark:hover:decoration-white/50 dark:focus-visible:decoration-white/50 text-current hover:text-black focus-visible:text-black dark:hover:text-white dark:focus-visible:text-white transition-colors duration-300 ease-in-out underline underline-offset-[3px]"> Intel CPU </a> </li><li class="list-inside list-disc px-6 py-1.5 text-sm"> <a href="#undefined" target="_self" class="inline-block decoration-black/30 dark:decoration-white/30 hover:decoration-black/50 focus-visible:decoration-black/50 dark:hover:decoration-white/50 dark:focus-visible:decoration-white/50 text-current hover:text-black focus-visible:text-black dark:hover:text-white dark:focus-visible:text-white transition-colors duration-300 ease-in-out underline underline-offset-[3px]"> Network stack </a> <ul class="translate-x-3"> <li class="list-inside list-disc px-6 py-1.5 text-sm"> <a href="#undefined" target="_self" class="inline-block decoration-black/30 dark:decoration-white/30 hover:decoration-black/50 focus-visible:decoration-black/50 dark:hover:decoration-white/50 dark:focus-visible:decoration-white/50 text-current hover:text-black focus-visible:text-black dark:hover:text-white dark:focus-visible:text-white transition-colors duration-300 ease-in-out underline underline-offset-[3px]"> MAC randomization </a> </li> </ul> </li> </ul> </li><li class="list-inside list-disc px-6 py-1.5 text-sm"> <a href="#undefined" target="_self" class="inline-block decoration-black/30 dark:decoration-white/30 hover:decoration-black/50 focus-visible:decoration-black/50 dark:hover:decoration-white/50 dark:focus-visible:decoration-white/50 text-current hover:text-black focus-visible:text-black dark:hover:text-white dark:focus-visible:text-white transition-colors duration-300 ease-in-out underline underline-offset-[3px]"> Generate File System Table </a> </li><li class="list-inside list-disc px-6 py-1.5 text-sm"> <a href="#undefined" target="_self" class="inline-block decoration-black/30 dark:decoration-white/30 hover:decoration-black/50 focus-visible:decoration-black/50 dark:hover:decoration-white/50 dark:focus-visible:decoration-white/50 text-current hover:text-black focus-visible:text-black dark:hover:text-white dark:focus-visible:text-white transition-colors duration-300 ease-in-out underline underline-offset-[3px]"> Switch to New Installation </a> </li><li class="list-inside list-disc px-6 py-1.5 text-sm"> <a href="#undefined" target="_self" class="inline-block decoration-black/30 dark:decoration-white/30 hover:decoration-black/50 focus-visible:decoration-black/50 dark:hover:decoration-white/50 dark:focus-visible:decoration-white/50 text-current hover:text-black focus-visible:text-black dark:hover:text-white dark:focus-visible:text-white transition-colors duration-300 ease-in-out underline underline-offset-[3px]"> Localization </a> <ul class="translate-x-3"> <li class="list-inside list-disc px-6 py-1.5 text-sm"> <a href="#undefined" target="_self" class="inline-block decoration-black/30 dark:decoration-white/30 hover:decoration-black/50 focus-visible:decoration-black/50 dark:hover:decoration-white/50 dark:focus-visible:decoration-white/50 text-current hover:text-black focus-visible:text-black dark:hover:text-white dark:focus-visible:text-white transition-colors duration-300 ease-in-out underline underline-offset-[3px]"> Set the locale </a> </li> </ul> </li><li class="list-inside list-disc px-6 py-1.5 text-sm"> <a href="#undefined" target="_self" class="inline-block decoration-black/30 dark:decoration-white/30 hover:decoration-black/50 focus-visible:decoration-black/50 dark:hover:decoration-white/50 dark:focus-visible:decoration-white/50 text-current hover:text-black focus-visible:text-black dark:hover:text-white dark:focus-visible:text-white transition-colors duration-300 ease-in-out underline underline-offset-[3px]"> Set the time zone </a> </li><li class="list-inside list-disc px-6 py-1.5 text-sm"> <a href="#undefined" target="_self" class="inline-block decoration-black/30 dark:decoration-white/30 hover:decoration-black/50 focus-visible:decoration-black/50 dark:hover:decoration-white/50 dark:focus-visible:decoration-white/50 text-current hover:text-black focus-visible:text-black dark:hover:text-white dark:focus-visible:text-white transition-colors duration-300 ease-in-out underline underline-offset-[3px]"> Set hardware clock from system clock </a> </li><li class="list-inside list-disc px-6 py-1.5 text-sm"> <a href="#undefined" target="_self" class="inline-block decoration-black/30 dark:decoration-white/30 hover:decoration-black/50 focus-visible:decoration-black/50 dark:hover:decoration-white/50 dark:focus-visible:decoration-white/50 text-current hover:text-black focus-visible:text-black dark:hover:text-white dark:focus-visible:text-white transition-colors duration-300 ease-in-out underline underline-offset-[3px]"> Hostname and Host </a> </li><li class="list-inside list-disc px-6 py-1.5 text-sm"> <a href="#undefined" target="_self" class="inline-block decoration-black/30 dark:decoration-white/30 hover:decoration-black/50 focus-visible:decoration-black/50 dark:hover:decoration-white/50 dark:focus-visible:decoration-white/50 text-current hover:text-black focus-visible:text-black dark:hover:text-white dark:focus-visible:text-white transition-colors duration-300 ease-in-out underline underline-offset-[3px]"> Initramfs </a> </li><li class="list-inside list-disc px-6 py-1.5 text-sm"> <a href="#undefined" target="_self" class="inline-block decoration-black/30 dark:decoration-white/30 hover:decoration-black/50 focus-visible:decoration-black/50 dark:hover:decoration-white/50 dark:focus-visible:decoration-white/50 text-current hover:text-black focus-visible:text-black dark:hover:text-white dark:focus-visible:text-white transition-colors duration-300 ease-in-out underline underline-offset-[3px]"> Add a user </a> </li><li class="list-inside list-disc px-6 py-1.5 text-sm"> <a href="#undefined" target="_self" class="inline-block decoration-black/30 dark:decoration-white/30 hover:decoration-black/50 focus-visible:decoration-black/50 dark:hover:decoration-white/50 dark:focus-visible:decoration-white/50 text-current hover:text-black focus-visible:text-black dark:hover:text-white dark:focus-visible:text-white transition-colors duration-300 ease-in-out underline underline-offset-[3px]"> Configure doas </a> </li><li class="list-inside list-disc px-6 py-1.5 text-sm"> <a href="#undefined" target="_self" class="inline-block decoration-black/30 dark:decoration-white/30 hover:decoration-black/50 focus-visible:decoration-black/50 dark:hover:decoration-white/50 dark:focus-visible:decoration-white/50 text-current hover:text-black focus-visible:text-black dark:hover:text-white dark:focus-visible:text-white transition-colors duration-300 ease-in-out underline underline-offset-[3px]"> Boot Loader </a> <ul class="translate-x-3"> <li class="list-inside list-disc px-6 py-1.5 text-sm"> <a href="#undefined" target="_self" class="inline-block decoration-black/30 dark:decoration-white/30 hover:decoration-black/50 focus-visible:decoration-black/50 dark:hover:decoration-white/50 dark:focus-visible:decoration-white/50 text-current hover:text-black focus-visible:text-black dark:hover:text-white dark:focus-visible:text-white transition-colors duration-300 ease-in-out underline underline-offset-[3px]"> Check for UEFI support </a> </li><li class="list-inside list-disc px-6 py-1.5 text-sm"> <a href="#undefined" target="_self" class="inline-block decoration-black/30 dark:decoration-white/30 hover:decoration-black/50 focus-visible:decoration-black/50 dark:hover:decoration-white/50 dark:focus-visible:decoration-white/50 text-current hover:text-black focus-visible:text-black dark:hover:text-white dark:focus-visible:text-white transition-colors duration-300 ease-in-out underline underline-offset-[3px]"> EFISTUB </a> </li><li class="list-inside list-disc px-6 py-1.5 text-sm"> <a href="#undefined" target="_self" class="inline-block decoration-black/30 dark:decoration-white/30 hover:decoration-black/50 focus-visible:decoration-black/50 dark:hover:decoration-white/50 dark:focus-visible:decoration-white/50 text-current hover:text-black focus-visible:text-black dark:hover:text-white dark:focus-visible:text-white transition-colors duration-300 ease-in-out underline underline-offset-[3px]"> GRUB </a> </li> </ul> </li><li class="list-inside list-disc px-6 py-1.5 text-sm"> <a href="#undefined" target="_self" class="inline-block decoration-black/30 dark:decoration-white/30 hover:decoration-black/50 focus-visible:decoration-black/50 dark:hover:decoration-white/50 dark:focus-visible:decoration-white/50 text-current hover:text-black focus-visible:text-black dark:hover:text-white dark:focus-visible:text-white transition-colors duration-300 ease-in-out underline underline-offset-[3px]"> Reboot </a> </li><li class="list-inside list-disc px-6 py-1.5 text-sm"> <a href="#undefined" target="_self" class="inline-block decoration-black/30 dark:decoration-white/30 hover:decoration-black/50 focus-visible:decoration-black/50 dark:hover:decoration-white/50 dark:focus-visible:decoration-white/50 text-current hover:text-black focus-visible:text-black dark:hover:text-white dark:focus-visible:text-white transition-colors duration-300 ease-in-out underline underline-offset-[3px]"> Post install </a> <ul class="translate-x-3"> <li class="list-inside list-disc px-6 py-1.5 text-sm"> <a href="#undefined" target="_self" class="inline-block decoration-black/30 dark:decoration-white/30 hover:decoration-black/50 focus-visible:decoration-black/50 dark:hover:decoration-white/50 dark:focus-visible:decoration-white/50 text-current hover:text-black focus-visible:text-black dark:hover:text-white dark:focus-visible:text-white transition-colors duration-300 ease-in-out underline underline-offset-[3px]"> Add arch repositories and sort for fastest mirrors </a> <ul class="translate-x-3"> <li class="list-inside list-disc px-6 py-1.5 text-sm"> <a href="#undefined" target="_self" class="inline-block decoration-black/30 dark:decoration-white/30 hover:decoration-black/50 focus-visible:decoration-black/50 dark:hover:decoration-white/50 dark:focus-visible:decoration-white/50 text-current hover:text-black focus-visible:text-black dark:hover:text-white dark:focus-visible:text-white transition-colors duration-300 ease-in-out underline underline-offset-[3px]"> Add arch extra repository </a> </li><li class="list-inside list-disc px-6 py-1.5 text-sm"> <a href="#undefined" target="_self" class="inline-block decoration-black/30 dark:decoration-white/30 hover:decoration-black/50 focus-visible:decoration-black/50 dark:hover:decoration-white/50 dark:focus-visible:decoration-white/50 text-current hover:text-black focus-visible:text-black dark:hover:text-white dark:focus-visible:text-white transition-colors duration-300 ease-in-out underline underline-offset-[3px]"> Sort for fastest mirrors </a> </li> </ul> </li><li class="list-inside list-disc px-6 py-1.5 text-sm"> <a href="#undefined" target="_self" class="inline-block decoration-black/30 dark:decoration-white/30 hover:decoration-black/50 focus-visible:decoration-black/50 dark:hover:decoration-white/50 dark:focus-visible:decoration-white/50 text-current hover:text-black focus-visible:text-black dark:hover:text-white dark:focus-visible:text-white transition-colors duration-300 ease-in-out underline underline-offset-[3px]"> AUR </a> <ul class="translate-x-3"> <li class="list-inside list-disc px-6 py-1.5 text-sm"> <a href="#undefined" target="_self" class="inline-block decoration-black/30 dark:decoration-white/30 hover:decoration-black/50 focus-visible:decoration-black/50 dark:hover:decoration-white/50 dark:focus-visible:decoration-white/50 text-current hover:text-black focus-visible:text-black dark:hover:text-white dark:focus-visible:text-white transition-colors duration-300 ease-in-out underline underline-offset-[3px]"> Install Paru </a> </li><li class="list-inside list-disc px-6 py-1.5 text-sm"> <a href="#undefined" target="_self" class="inline-block decoration-black/30 dark:decoration-white/30 hover:decoration-black/50 focus-visible:decoration-black/50 dark:hover:decoration-white/50 dark:focus-visible:decoration-white/50 text-current hover:text-black focus-visible:text-black dark:hover:text-white dark:focus-visible:text-white transition-colors duration-300 ease-in-out underline underline-offset-[3px]"> Replace sudo with doas </a> </li> </ul> </li><li class="list-inside list-disc px-6 py-1.5 text-sm"> <a href="#undefined" target="_self" class="inline-block decoration-black/30 dark:decoration-white/30 hover:decoration-black/50 focus-visible:decoration-black/50 dark:hover:decoration-white/50 dark:focus-visible:decoration-white/50 text-current hover:text-black focus-visible:text-black dark:hover:text-white dark:focus-visible:text-white transition-colors duration-300 ease-in-out underline underline-offset-[3px]"> Laptop power profiles </a> </li><li class="list-inside list-disc px-6 py-1.5 text-sm"> <a href="#undefined" target="_self" class="inline-block decoration-black/30 dark:decoration-white/30 hover:decoration-black/50 focus-visible:decoration-black/50 dark:hover:decoration-white/50 dark:focus-visible:decoration-white/50 text-current hover:text-black focus-visible:text-black dark:hover:text-white dark:focus-visible:text-white transition-colors duration-300 ease-in-out underline underline-offset-[3px]"> Add swap </a> </li><li class="list-inside list-disc px-6 py-1.5 text-sm"> <a href="#undefined" target="_self" class="inline-block decoration-black/30 dark:decoration-white/30 hover:decoration-black/50 focus-visible:decoration-black/50 dark:hover:decoration-white/50 dark:focus-visible:decoration-white/50 text-current hover:text-black focus-visible:text-black dark:hover:text-white dark:focus-visible:text-white transition-colors duration-300 ease-in-out underline underline-offset-[3px]"> Auto-mount an external LUKS encrypted drive </a> </li> </ul> </li> </ul> </nav> </details> <article class="animate"> <hr> <h2 id="introduction">Introduction</h2> <p>The goal of this guide is to set up a minimal installation of <strong>Artix Linux</strong> with <strong>OpenRC</strong> as an init system and <strong>full disk encryption</strong> on an <strong>UEFI</strong> or <strong>BIOS</strong> system. This guide is meant to be read alongside the wiki’s.</p> <hr> <h2 id="acquire-an-installation-image">Acquire an installation image</h2> <ol> <li>Go to the downloads page <a href="https://artixlinux.org/download.php">https://artixlinux.org/download.php</a></li> <li>Scroll down to the <strong>Official ISO images</strong> section.</li> <li>Under the <strong>base</strong> section, download the file starting with <code>artix-base-openrc</code> and ending with <code>.iso</code></li> </ol> <hr> <h2 id="prepare-an-installation-medium">Prepare an installation medium</h2> <h3 id="windows">Windows</h3> <p>Use <a href="https://rufus.ie/en">Rufus</a>, here is a <a href="https://www.wikihow.com/Use-Rufus">guide</a> if you need it.</p> <h3 id="linux">Linux</h3> <ol> <li>Insert a USB flash drive into your PC with at least 2 GB of space available on it.</li> <li>Find the corresponding block device for the flash drive in <code>/dev</code> folder. Usually it is <code>/dev/sdb</code>.</li> <li>Burn the image to the flash drive (assuming your flash drive is /dev/sdb and that your terminal is opened in the directory of the image)</li> </ol> <pre class="astro-code css-variables" style="background-color:var(--astro-code-background);color:var(--astro-code-foreground); overflow-x: auto;" tabindex="0" data-language="plaintext"><code><span class="line"><span>sudo dd bs=4M if=./artix-base-openrc-YYYY.MM.DD-x86_64.iso of=/dev/sdb conv=fsync oflag=direct status=progress</span></span></code></pre> <hr> <h2 id="boot-the-live-environment">Boot the live environment</h2> <div data-callout="" data-callout-type="info"> <div data-callout-title="">Info</div> <div data-callout-body=""> <p>Artix Linux installation images do not support Secure Boot. You will need to disable Secure Boot to boot the installation medium.</p> </div> </div> <ol> <li>Power off your PC.</li> <li>Insert the flash drive into the computer on which you are installing Artix Linux.</li> <li>Power on your PC and press <em>boot menu</em> key.</li> <li>Boot the installation medium.</li> </ol> <hr> <h2 id="enter-the-live-environment">Enter the live environment</h2> <ol> <li>Login with the default credentials.</li> </ol> <ul> <li>Username: <code>artix</code></li> <li>Password: <code>artix</code></li> </ul> <ol start="2"> <li>Switch to the root user</li> </ol> <div data-callout="" data-callout-type="note"> <div data-callout-title="">Note</div> <div data-callout-body=""> <p>When encountering a code block as below throughout this guide, execute the commands within it directly in the terminal.</p> </div> </div> <div data-callout="" data-callout-type="info"> <div data-callout-title="">Info</div> <div data-callout-body=""> <p>When prompted for a password, enter <code>artix</code></p> </div> </div> <pre class="astro-code css-variables" style="background-color:var(--astro-code-background);color:var(--astro-code-foreground); overflow-x: auto;" tabindex="0" data-language="plaintext"><code><span class="line"><span>su -</span></span></code></pre> <hr> <h2 id="connect-to-the-internet">Connect to the internet</h2> <h3 id="via-ethernet">Via Ethernet</h3> <p>Connect the computer via an Ethernet cable</p> <h3 id="via-wifi">Via WiFi</h3> <pre class="astro-code css-variables" style="background-color:var(--astro-code-background);color:var(--astro-code-foreground); overflow-x: auto;" tabindex="0" data-language="plaintext"><code><span class="line"><span>sudo rfkill unblock wifi</span></span> <span class="line"><span>sudo ip link set wlan0 up</span></span> <span class="line"><span>connmanctl</span></span></code></pre> <div data-callout="" data-callout-type="tip"> <div data-callout-title="">Tip</div> <div data-callout-body=""> <p>Network names can be tab-completed.</p> </div> </div> <pre class="astro-code css-variables" style="background-color:var(--astro-code-background);color:var(--astro-code-foreground); overflow-x: auto;" tabindex="0" data-language="plaintext"><code><span class="line"><span>agent on</span></span> <span class="line"><span>scan wifi</span></span> <span class="line"><span>services</span></span></code></pre> <div data-callout="" data-callout-type="example"> <div data-callout-title="">Example</div> <div data-callout-body=""> <p>connect wifi_dc85de828967_38303944616e69656c73_managed_psk</p> </div> </div> <pre class="astro-code css-variables" style="background-color:var(--astro-code-background);color:var(--astro-code-foreground); overflow-x: auto;" tabindex="0" data-language="plaintext"><code><span class="line"><span>connect {WiFi name} </span></span> <span class="line"><span>quit</span></span></code></pre> <h3 id="verify-internet-connectivity">Verify internet connectivity</h3> <p>Check for internet</p> <pre class="astro-code css-variables" style="background-color:var(--astro-code-background);color:var(--astro-code-foreground); overflow-x: auto;" tabindex="0" data-language="plaintext"><code><span class="line"><span>ping artixlinux.org</span></span></code></pre> <hr> <h2 id="update-the-system-clock">Update the system clock</h2> <p>Activate the NTP daemon to synchronize the computer’s real-time clock:</p> <pre class="astro-code css-variables" style="background-color:var(--astro-code-background);color:var(--astro-code-foreground); overflow-x: auto;" tabindex="0" data-language="plaintext"><code><span class="line"><span>rc-service ntpd start</span></span></code></pre> <hr> <h2 id="partition-the-disk">Partition the disk</h2> <ol> <li>Install <code>gdisk</code>.</li> </ol> <pre class="astro-code css-variables" style="background-color:var(--astro-code-background);color:var(--astro-code-foreground); overflow-x: auto;" tabindex="0" data-language="plaintext"><code><span class="line"><span>pacman -Sy gdisk</span></span></code></pre> <ol start="2"> <li>Partition your drive. You can find your drive name using the <code>lsblk</code> command.</li> </ol> <div data-callout="" data-callout-type="note"> <div data-callout-title="">Note</div> <div data-callout-body=""> <p>I will be using <code>nvme0n1</code> as my drive throughout this guide, please adapt it to your disk name. If you have an hdd, your drive name may ressemble something like <code>sda</code>.</p> </div> </div> <pre class="astro-code css-variables" style="background-color:var(--astro-code-background);color:var(--astro-code-foreground); overflow-x: auto;" tabindex="0" data-language="plaintext"><code><span class="line"><span>gdisk /dev/nvme0n1</span></span></code></pre> <ol start="2"> <li>Delete any existing partitions</li> </ol> <pre class="astro-code css-variables" style="background-color:var(--astro-code-background);color:var(--astro-code-foreground); overflow-x: auto;" tabindex="0" data-language="plaintext"><code><span class="line"><span>Command (m for help): d</span></span></code></pre> <ol start="3"> <li>Create a boot partition</li> </ol> <pre class="astro-code css-variables" style="background-color:var(--astro-code-background);color:var(--astro-code-foreground); overflow-x: auto;" tabindex="0" data-language="plaintext"><code><span class="line"><span>Command (m for help): n</span></span> <span class="line"><span>Partition number (1-128, default 1):</span></span> <span class="line"><span>First sector (...):</span></span> <span class="line"><span>Last sector (...): +512M</span></span> <span class="line"><span>Hex code or GUID (...): ef00</span></span></code></pre> <ol start="4"> <li>Create a root partition</li> </ol> <pre class="astro-code css-variables" style="background-color:var(--astro-code-background);color:var(--astro-code-foreground); overflow-x: auto;" tabindex="0" data-language="plaintext"><code><span class="line"><span>Command (m for help): n</span></span> <span class="line"><span>Partition number (2-128, default 1):</span></span> <span class="line"><span>First sector (...):</span></span> <span class="line"><span>Last sector (...):</span></span> <span class="line"><span>Hex code or GUID (...): 8300</span></span></code></pre> <ol start="5"> <li>Save the changes</li> </ol> <pre class="astro-code css-variables" style="background-color:var(--astro-code-background);color:var(--astro-code-foreground); overflow-x: auto;" tabindex="0" data-language="plaintext"><code><span class="line"><span>Command (m for help): w</span></span> <span class="line"><span>Do you want to proceed? (Y/N): y</span></span></code></pre> <ol start="6"> <li>Verify partitioning</li> </ol> <pre class="astro-code css-variables" style="background-color:var(--astro-code-background);color:var(--astro-code-foreground); overflow-x: auto;" tabindex="0" data-language="plaintext"><code><span class="line"><span>lsblk</span></span></code></pre> <div data-callout="" data-callout-type="note"> <div data-callout-title="">Note</div> <div data-callout-body=""> <p>It should look something like this:</p> </div> </div> <pre class="astro-code css-variables" style="background-color:var(--astro-code-background);color:var(--astro-code-foreground); overflow-x: auto;" tabindex="0" data-language="plaintext"><code><span class="line"><span>NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS</span></span> <span class="line"><span>nvme0n1 259:0 0 465,8G 0 disk</span></span> <span class="line"><span>├─nvme0n1p1 259:1 0 512M 0 part</span></span> <span class="line"><span>└─nvme0n1p2 259:2 0 465,3G 0 part</span></span></code></pre> <hr> <h2 id="encrypt-root-partition">Encrypt root partition</h2> <ol> <li>Encrypt your root partition.</li> </ol> <div data-callout="" data-callout-type="tip"> <div data-callout-title="">Tip</div> <div data-callout-body=""> <p>Make sure to to enter a secure passphrase and to write it down in a secure place as you will not be able to change it later</p> </div> </div> <pre class="astro-code css-variables" style="background-color:var(--astro-code-background);color:var(--astro-code-foreground); overflow-x: auto;" tabindex="0" data-language="plaintext"><code><span class="line"><span>cryptsetup luksFormat /dev/nvme0n1p2</span></span> <span class="line"><span>Are you sure (Type `yes` in capital letters): YES</span></span></code></pre> <ol start="2"> <li>Open the encrypted partition</li> </ol> <pre class="astro-code css-variables" style="background-color:var(--astro-code-background);color:var(--astro-code-foreground); overflow-x: auto;" tabindex="0" data-language="plaintext"><code><span class="line"><span>cryptsetup open /dev/nvme0n1p2 root</span></span></code></pre> <hr> <h2 id="create-file-systems">Create file systems</h2> <ol> <li>Create the boot file system</li> </ol> <pre class="astro-code css-variables" style="background-color:var(--astro-code-background);color:var(--astro-code-foreground); overflow-x: auto;" tabindex="0" data-language="plaintext"><code><span class="line"><span>mkfs.fat -F32 /dev/nvme0n1p1</span></span></code></pre> <ol> <li>Create the root file system</li> </ol> <pre class="astro-code css-variables" style="background-color:var(--astro-code-background);color:var(--astro-code-foreground); overflow-x: auto;" tabindex="0" data-language="plaintext"><code><span class="line"><span>mkfs.ext4 /dev/mapper/root</span></span></code></pre> <hr> <h2 id="mount-file-systems">Mount file systems</h2> <ol> <li>Mount the root file system</li> </ol> <pre class="astro-code css-variables" style="background-color:var(--astro-code-background);color:var(--astro-code-foreground); overflow-x: auto;" tabindex="0" data-language="plaintext"><code><span class="line"><span>mount /dev/mapper/root /mnt</span></span></code></pre> <ol start="2"> <li>Mount the boot file system</li> </ol> <pre class="astro-code css-variables" style="background-color:var(--astro-code-background);color:var(--astro-code-foreground); overflow-x: auto;" tabindex="0" data-language="plaintext"><code><span class="line"><span>mount -m /dev/nvme0n1p1 /mnt/boot</span></span></code></pre> <ol start="3"> <li>Verify mounting</li> </ol> <pre class="astro-code css-variables" style="background-color:var(--astro-code-background);color:var(--astro-code-foreground); overflow-x: auto;" tabindex="0" data-language="plaintext"><code><span class="line"><span>lsblk</span></span></code></pre> <div data-callout="" data-callout-type="note"> <div data-callout-title="">Note</div> <div data-callout-body=""> <p>It should look something like this:</p> </div> </div> <pre class="astro-code css-variables" style="background-color:var(--astro-code-background);color:var(--astro-code-foreground); overflow-x: auto;" tabindex="0" data-language="plaintext"><code><span class="line"><span>NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS</span></span> <span class="line"><span>nvme0n1 259:0 0 465,8G 0 disk </span></span> <span class="line"><span>├─nvme0n1p1 259:1 0 512M 0 part /mnt/boot</span></span> <span class="line"><span>└─nvme0n1p2 259:2 0 465,3G 0 part </span></span> <span class="line"><span> └─root 254:0 0 465,2G 0 crypt /mnt</span></span></code></pre> <hr> <h2 id="install-essentials">Install Essentials</h2> <p>Install the base system, kernel, init system and other essential packages.</p> <pre class="astro-code css-variables" style="background-color:var(--astro-code-background);color:var(--astro-code-foreground); overflow-x: auto;" tabindex="0" data-language="plaintext"><code><span class="line"><span>basestrap /mnt base linux linux-firmware openrc elogind-openrc cryptsetup cryptsetup-openrc efibootmgr doas nano</span></span></code></pre> <div data-callout="" data-callout-type="note"> <div data-callout-title="">Note</div> <div data-callout-body=""> <p>Install AMD or Intel microcode, depending on your system’s CPU</p> </div> </div> <h3 id="amd-cpu">AMD CPU</h3> <p>Install AMD CPU microcode updates</p> <pre class="astro-code css-variables" style="background-color:var(--astro-code-background);color:var(--astro-code-foreground); overflow-x: auto;" tabindex="0" data-language="plaintext"><code><span class="line"><span>basestrap /mnt amd-ucode</span></span></code></pre> <h3 id="intel-cpu">Intel CPU</h3> <p>Install Intel CPU microcode updates</p> <pre class="astro-code css-variables" style="background-color:var(--astro-code-background);color:var(--astro-code-foreground); overflow-x: auto;" tabindex="0" data-language="plaintext"><code><span class="line"><span>basestrap /mnt intel-ucode</span></span></code></pre> <h3 id="network-stack">Network stack</h3> <pre class="astro-code css-variables" style="background-color:var(--astro-code-background);color:var(--astro-code-foreground); overflow-x: auto;" tabindex="0" data-language="plaintext"><code><span class="line"><span>basestrap /mnt wpa_supplicant networkmanager networkmanager-openrc iwd iwd-openrc</span></span> <span class="line"><span>rc-update add NetworkManager</span></span> <span class="line"><span>rc-update add iwd</span></span> <span class="line"><span></span></span> <span class="line"><span>cat << EOF >> /etc/NetworkManager/conf.d/wifi_backend.conf</span></span> <span class="line"><span>[device]</span></span> <span class="line"><span>wifi.backend=iwd</span></span> <span class="line"><span>EOF</span></span></code></pre> <h4 id="mac-randomization">MAC randomization</h4> <div data-callout="" data-callout-type="info"> <div data-callout-title="">Info</div> <div data-callout-body=""> <p>MAC randomization can be used for increased privacy by not disclosing your real MAC address to the WiFi network.</p> </div> </div> <pre class="astro-code css-variables" style="background-color:var(--astro-code-background);color:var(--astro-code-foreground); overflow-x: auto;" tabindex="0" data-language="plaintext"><code><span class="line"><span>cat << EOF >> /etc/NetworkManager/conf.d/00-macrandomize.conf</span></span> <span class="line"><span>[device-mac-randomization]</span></span> <span class="line"><span>wifi.scan-rand-mac-address=yes</span></span> <span class="line"><span></span></span> <span class="line"><span>[connection-mac-randomization]</span></span> <span class="line"><span>ethernet.cloned-mac-address=random</span></span> <span class="line"><span>wifi.cloned-mac-address=random</span></span> <span class="line"><span>EOF</span></span></code></pre> <hr> <h2 id="generate-file-system-table">Generate File System Table</h2> <pre class="astro-code css-variables" style="background-color:var(--astro-code-background);color:var(--astro-code-foreground); overflow-x: auto;" tabindex="0" data-language="plaintext"><code><span class="line"><span>fstabgen -U /mnt >> /mnt/etc/fstab</span></span></code></pre> <hr> <h2 id="switch-to-new-installation">Switch to New Installation</h2> <pre class="astro-code css-variables" style="background-color:var(--astro-code-background);color:var(--astro-code-foreground); overflow-x: auto;" tabindex="0" data-language="plaintext"><code><span class="line"><span>artix-chroot /mnt bash</span></span></code></pre> <hr> <h2 id="localization">Localization</h2> <h3 id="set-the-locale">Set the locale</h3> <div data-callout="" data-callout-type="note"> <div data-callout-title="">Note</div> <div data-callout-body=""> <p>Feel free to change <code>en_DK.UTF-8</code> to your preferred locale such as <code>en_US.UTF-8</code> or <code>en_GB.UTF-8</code></p> </div> </div> <ol> <li>Un-comment <code>en_DK.UTF-8</code></li> </ol> <pre class="astro-code css-variables" style="background-color:var(--astro-code-background);color:var(--astro-code-foreground); overflow-x: auto;" tabindex="0" data-language="plaintext"><code><span class="line"><span>nano /etc/locale.gen</span></span></code></pre> <ol start="2"> <li>Generate locales.</li> </ol> <pre class="astro-code css-variables" style="background-color:var(--astro-code-background);color:var(--astro-code-foreground); overflow-x: auto;" tabindex="0" data-language="plaintext"><code><span class="line"><span>locale-gen</span></span> <span class="line"><span>echo 'LANG=en_DK.UTF-8' > /etc/locale.conf</span></span></code></pre> <hr> <h2 id="set-the-time-zone">Set the time zone</h2> <div data-callout="" data-callout-type="example"> <div data-callout-title="">Example</div> <div data-callout-body=""> <p><code>ln -sf /usr/share/zoneinfo/America/Toronto /etc/localtime</code></p> </div> </div> <pre class="astro-code css-variables" style="background-color:var(--astro-code-background);color:var(--astro-code-foreground); overflow-x: auto;" tabindex="0" data-language="plaintext"><code><span class="line"><span>ln -sf /usr/share/zoneinfo/Region/City /etc/localtime</span></span></code></pre> <hr> <h2 id="set-hardware-clock-from-system-clock">Set hardware clock from system clock</h2> <pre class="astro-code css-variables" style="background-color:var(--astro-code-background);color:var(--astro-code-foreground); overflow-x: auto;" tabindex="0" data-language="plaintext"><code><span class="line"><span>hwclock --systohc</span></span></code></pre> <hr> <h2 id="hostname-and-host">Hostname and Host</h2> <div data-callout="" data-callout-type="note"> <div data-callout-title="">Note</div> <div data-callout-body=""> <p>Change <code>artix</code> to your desired hostname in all of the following commands</p> </div> </div> <pre class="astro-code css-variables" style="background-color:var(--astro-code-background);color:var(--astro-code-foreground); overflow-x: auto;" tabindex="0" data-language="plaintext"><code><span class="line"><span>echo 'artix' > /etc/hostname</span></span></code></pre> <ol> <li>Edit <code>/etc/conf.d/hostname</code></li> </ol> <pre class="astro-code css-variables" style="background-color:var(--astro-code-background);color:var(--astro-code-foreground); overflow-x: auto;" tabindex="0" data-language="plaintext"><code><span class="line"><span>nano /etc/conf.d/hostname</span></span></code></pre> <ol start="2"> <li> <p>Replace <code>hostname="localhost"</code> with <code>hostname="artix"</code></p> </li> <li> <p>Edit <code>/etc/hosts</code></p> </li> </ol> <pre class="astro-code css-variables" style="background-color:var(--astro-code-background);color:var(--astro-code-foreground); overflow-x: auto;" tabindex="0" data-language="plaintext"><code><span class="line"><span>nano /etc/hosts</span></span></code></pre> <ol start="4"> <li>Add the following:</li> </ol> <pre class="astro-code css-variables" style="background-color:var(--astro-code-background);color:var(--astro-code-foreground); overflow-x: auto;" tabindex="0" data-language="plaintext"><code><span class="line"><span>127.0.0.1 localhost</span></span> <span class="line"><span>::1 localhost</span></span> <span class="line"><span>127.0.1.1 artix.localdomain artix</span></span></code></pre> <hr> <h2 id="initramfs">Initramfs</h2> <ol> <li>Edit <code>/etc/mkinitcpio.conf</code></li> </ol> <pre class="astro-code css-variables" style="background-color:var(--astro-code-background);color:var(--astro-code-foreground); overflow-x: auto;" tabindex="0" data-language="plaintext"><code><span class="line"><span>nano /etc/mkinitcpio.conf</span></span></code></pre> <ol start="2"> <li>In the <code>HOOKS</code> array, add <code>encrypt</code> between <code>block</code> and <code>filesystems</code></li> </ol> <pre class="astro-code css-variables" style="background-color:var(--astro-code-background);color:var(--astro-code-foreground); overflow-x: auto;" tabindex="0" data-language="plaintext"><code><span class="line"><span>mkinitcpio -P</span></span></code></pre> <div data-callout="" data-callout-type="note"> <div data-callout-title="">Note</div> <div data-callout-body=""> <p>It should look something like this:</p> </div> </div> <pre class="astro-code css-variables" style="background-color:var(--astro-code-background);color:var(--astro-code-foreground); overflow-x: auto;" tabindex="0" data-language="plaintext"><code><span class="line"><span>HOOKS=(base udev autodetect microcode modconf kms keyboard keymap consolefont block encrypt filesystems fsck)</span></span></code></pre> <hr> <h2 id="add-a-user">Add a user</h2> <ol> <li>Set the root password.</li> </ol> <pre class="astro-code css-variables" style="background-color:var(--astro-code-background);color:var(--astro-code-foreground); overflow-x: auto;" tabindex="0" data-language="plaintext"><code><span class="line"><span>passwd</span></span></code></pre> <ol start="2"> <li>Create a user and set his password.</li> </ol> <div data-callout="" data-callout-type="tip"> <div data-callout-title="">Tip</div> <div data-callout-body=""> <p>Change <code>artix</code> to your desired username</p> </div> </div> <pre class="astro-code css-variables" style="background-color:var(--astro-code-background);color:var(--astro-code-foreground); overflow-x: auto;" tabindex="0" data-language="plaintext"><code><span class="line"><span>useradd -m artix</span></span> <span class="line"><span>passwd artix</span></span></code></pre> <hr> <h2 id="configure-doas">Configure doas</h2> <ol> <li>Create the config file.</li> </ol> <pre class="astro-code css-variables" style="background-color:var(--astro-code-background);color:var(--astro-code-foreground); overflow-x: auto;" tabindex="0" data-language="plaintext"><code><span class="line"><span>touch /etc/doas.conf</span></span> <span class="line"><span>chown -c root:root /etc/doas.conf</span></span> <span class="line"><span>chmod -c 0400 /etc/doas.conf</span></span></code></pre> <ol start="2"> <li>Edit <code>/etc/doas.conf</code></li> </ol> <pre class="astro-code css-variables" style="background-color:var(--astro-code-background);color:var(--astro-code-foreground); overflow-x: auto;" tabindex="0" data-language="plaintext"><code><span class="line"><span>nano /etc/doas.conf</span></span></code></pre> <ol start="3"> <li>Add the following:</li> </ol> <pre class="astro-code css-variables" style="background-color:var(--astro-code-background);color:var(--astro-code-foreground); overflow-x: auto;" tabindex="0" data-language="plaintext"><code><span class="line"><span>permit artix as root</span></span> <span class="line"><span>permit nopass artix as root cmd pacman</span></span></code></pre> <hr> <h2 id="boot-loader">Boot Loader</h2> <h3 id="check-for-uefi-support">Check for UEFI support</h3> <div data-callout="" data-callout-type="tip"> <div data-callout-title="">Tip</div> <div data-callout-body=""> <p>If you see a bunch of files listed, use EFISTUB. If you do not see a bunch of files listed, your system does not support UEFI and you should use GRUB.</p> </div> </div> <pre class="astro-code css-variables" style="background-color:var(--astro-code-background);color:var(--astro-code-foreground); overflow-x: auto;" tabindex="0" data-language="plaintext"><code><span class="line"><span>ls /sys/firmware/efi/efivars</span></span></code></pre> <h3 id="efistub">EFISTUB</h3> <ol> <li>Get the UUID of your root partition.</li> </ol> <pre class="astro-code css-variables" style="background-color:var(--astro-code-background);color:var(--astro-code-foreground); overflow-x: auto;" tabindex="0" data-language="plaintext"><code><span class="line"><span>blkid -s UUID -o value /dev/nvme0n1p2</span></span></code></pre> <ol start="2"> <li>Create a boot entry</li> </ol> <div data-callout="" data-callout-type="tip"> <div data-callout-title="">Tip</div> <div data-callout-body=""> <p>Replace xxxx with the UUID that you obtained earlier. Replace <code>intel-ucode.img</code> with <code>amd-ucode.img</code> if you have an AMD CPU</p> </div> </div> <pre class="astro-code css-variables" style="background-color:var(--astro-code-background);color:var(--astro-code-foreground); overflow-x: auto;" tabindex="0" data-language="plaintext"><code><span class="line"><span>efibootmgr -c -d /dev/nvme0n1 -p 1 -l /vmlinuz-linux -L "Artix" -u "cryptdevice=UUID=xxxx:root root=/dev/mapper/root rw initrd=\intel-ucode.img initrd=\initramfs-linux.img loglevel=3 quiet"</span></span></code></pre> <h3 id="grub">GRUB</h3> <ol> <li>Install grub on your boot partition</li> </ol> <pre class="astro-code css-variables" style="background-color:var(--astro-code-background);color:var(--astro-code-foreground); overflow-x: auto;" tabindex="0" data-language="plaintext"><code><span class="line"><span>pacman -S grub</span></span> <span class="line"><span>grub-install /dev/sda</span></span></code></pre> <ol start="2"> <li>Get the UUID of your root partition.</li> </ol> <pre class="astro-code css-variables" style="background-color:var(--astro-code-background);color:var(--astro-code-foreground); overflow-x: auto;" tabindex="0" data-language="plaintext"><code><span class="line"><span>blkid -s UUID -o value /dev/nvme0n1p2</span></span></code></pre> <ol start="3"> <li>Edit <code>/etc/default/grub</code></li> </ol> <pre class="astro-code css-variables" style="background-color:var(--astro-code-background);color:var(--astro-code-foreground); overflow-x: auto;" tabindex="0" data-language="plaintext"><code><span class="line"><span>nano /etc/default/grub</span></span></code></pre> <ol start="4"> <li>Add the following to the <code>GRUB_CMDLINE_LINUX</code> line, where xxxx is the UUID that you obtained earlier.</li> </ol> <pre class="astro-code css-variables" style="background-color:var(--astro-code-background);color:var(--astro-code-foreground); overflow-x: auto;" tabindex="0" data-language="plaintext"><code><span class="line"><span>cryptdevice=UUID=xxxx:root root=/dev/mapper/root</span></span></code></pre> <div data-callout="" data-callout-type="note"> <div data-callout-title="">Note</div> <div data-callout-body=""> <p>It should look something like this:</p> </div> </div> <pre class="astro-code css-variables" style="background-color:var(--astro-code-background);color:var(--astro-code-foreground); overflow-x: auto;" tabindex="0" data-language="plaintext"><code><span class="line"><span>GRUB_CMDLINE_LINUX="cryptdevice=UUID=550e8400-e29b-41d4-a716-446655440000:root root=/dev/mapper/root"</span></span></code></pre> <ol start="5"> <li> <p>Un-comment <code>#GRUB_ENABLE_CRYPTODISK=y</code></p> </li> <li> <p>Generate the config file.</p> </li> </ol> <pre class="astro-code css-variables" style="background-color:var(--astro-code-background);color:var(--astro-code-foreground); overflow-x: auto;" tabindex="0" data-language="plaintext"><code><span class="line"><span>grub-mkconfig -o /boot/grub/grub.cfg</span></span></code></pre> <hr> <h2 id="reboot">Reboot</h2> <ol> <li>You can reboot and enter into your new installation.</li> </ol> <pre class="astro-code css-variables" style="background-color:var(--astro-code-background);color:var(--astro-code-foreground); overflow-x: auto;" tabindex="0" data-language="plaintext"><code><span class="line"><span>exit</span></span> <span class="line"><span>umount -R /mnt</span></span> <span class="line"><span>reboot now</span></span></code></pre> <div data-callout="" data-callout-type="note"> <div data-callout-title="">Note</div> <div data-callout-body=""> <p>Unplug your flash drive after the screen turns black.</p> </div> </div> <hr> <h2 id="post-install">Post install</h2> <p>You will now be greeted with a similar screen as when you first booted from the flash drive. Login using the credentials that you set, if you followed the example your username would be <code>artix</code>.</p> <h3 id="add-arch-repositories-and-sort-for-fastest-mirrors">Add arch repositories and sort for fastest mirrors</h3> <h4 id="add-arch-extra-repository">Add arch extra repository</h4> <ol> <li>Install packages</li> </ol> <pre class="astro-code css-variables" style="background-color:var(--astro-code-background);color:var(--astro-code-foreground); overflow-x: auto;" tabindex="0" data-language="plaintext"><code><span class="line"><span>doas pacman -Syu artix-archlinux-support curl</span></span> <span class="line"><span>doas pacman-key --populate archlinux</span></span> <span class="line"><span>doas sh -c "curl https://archlinux.org/mirrorlist/all -o /etc/pacman.d/mirrorlist-arch"</span></span></code></pre> <ol start="2"> <li>Edit <code>/etc/pacman.d/mirrorlist-arch</code></li> </ol> <pre class="astro-code css-variables" style="background-color:var(--astro-code-background);color:var(--astro-code-foreground); overflow-x: auto;" tabindex="0" data-language="plaintext"><code><span class="line"><span>doas nano /etc/pacman.d/mirrorlist-arch</span></span></code></pre> <ol start="3"> <li> <p>Un-comment the first server entries under the worldwide section</p> </li> <li> <p>Edit <code>/etc/pacman.conf</code></p> </li> </ol> <pre class="astro-code css-variables" style="background-color:var(--astro-code-background);color:var(--astro-code-foreground); overflow-x: auto;" tabindex="0" data-language="plaintext"><code><span class="line"><span>doas nano /etc/pacman.conf</span></span></code></pre> <ol start="5"> <li>Add the following to the bottom of the file</li> </ol> <pre class="astro-code css-variables" style="background-color:var(--astro-code-background);color:var(--astro-code-foreground); overflow-x: auto;" tabindex="0" data-language="plaintext"><code><span class="line"><span>##Arch</span></span> <span class="line"><span>[extra]</span></span> <span class="line"><span>Include = /etc/pacman.d/mirrorlist-arch</span></span> <span class="line"><span></span></span> <span class="line"><span>##[multilib]</span></span> <span class="line"><span>##Include = /etc/pacman.d/mirrorlist-arch</span></span></code></pre> <h4 id="sort-for-fastest-mirrors">Sort for fastest mirrors</h4> <pre class="astro-code css-variables" style="background-color:var(--astro-code-background);color:var(--astro-code-foreground); overflow-x: auto;" tabindex="0" data-language="plaintext"><code><span class="line"><span>doas pacman -Syu reflector pacman-contrib</span></span> <span class="line"><span>doas reflector --verbose -p https -l 30 -f 5 --sort rate --save /etc/pacman.d/mirrorlist-arch</span></span> <span class="line"><span>doas sh -c "curl https://gitea.artixlinux.org/packages/artix-mirrorlist/raw/branch/master/mirrorlist -o /etc/pacman.d/mirrorlist.bak"</span></span> <span class="line"><span>doas sh -c "rankmirrors -v -n 5 /etc/pacman.d/mirrorlist.bak > /etc/pacman.d/mirrorlist"</span></span></code></pre> <h3 id="aur">AUR</h3> <h4 id="install-paru">Install Paru</h4> <pre class="astro-code css-variables" style="background-color:var(--astro-code-background);color:var(--astro-code-foreground); overflow-x: auto;" tabindex="0" data-language="plaintext"><code><span class="line"><span>doas pacman -S --needed base-devel</span></span> <span class="line"><span>git clone https://aur.archlinux.org/paru.git</span></span> <span class="line"><span>cd paru</span></span> <span class="line"><span>makepkg -si</span></span> <span class="line"><span>cd ..</span></span> <span class="line"><span>rm -rf paru</span></span></code></pre> <h4 id="replace-sudo-with-doas">Replace sudo with doas</h4> <pre class="astro-code css-variables" style="background-color:var(--astro-code-background);color:var(--astro-code-foreground); overflow-x: auto;" tabindex="0" data-language="plaintext"><code><span class="line"><span>doas pacman -Rdd sudo</span></span> <span class="line"><span>doas ln -s /usr/bin/doas /usr/bin/sudo</span></span></code></pre> <h3 id="laptop-power-profiles">Laptop power profiles</h3> <p>Install and enable the powerprofiles daemon</p> <pre class="astro-code css-variables" style="background-color:var(--astro-code-background);color:var(--astro-code-foreground); overflow-x: auto;" tabindex="0" data-language="plaintext"><code><span class="line"><span>doas pacman -S power-profiles-daemon power-profiles-daemon-openrc</span></span> <span class="line"><span>doas rc-update add power-profiles-daemon</span></span> <span class="line"><span>doas rc-service power-profiles-daemon start</span></span></code></pre> <h3 id="add-swap">Add swap</h3> <pre class="astro-code css-variables" style="background-color:var(--astro-code-background);color:var(--astro-code-foreground); overflow-x: auto;" tabindex="0" data-language="plaintext"><code><span class="line"><span>doas fallocate -l 4G /swapfile</span></span> <span class="line"><span>doas chmod 600 /swapfile</span></span> <span class="line"><span>daos mkswap /swapfile</span></span> <span class="line"><span>doas swapon /swapfile</span></span> <span class="line"><span>doas cp /etc/fstab /etc/fstab.bak</span></span> <span class="line"><span>echo '/swapfile none swap sw 0 0' | doas tee -a /etc/fstab</span></span></code></pre> <h3 id="auto-mount-an-external-luks-encrypted-drive">Auto-mount an external LUKS encrypted drive</h3> <pre class="astro-code css-variables" style="background-color:var(--astro-code-background);color:var(--astro-code-foreground); overflow-x: auto;" tabindex="0" data-language="plaintext"><code><span class="line"><span>doas fdisk /dev/sdb</span></span> <span class="line"><span>>g, n, w</span></span> <span class="line"><span></span></span> <span class="line"><span>doas cryptsetup luksFormat /dev/sdb1</span></span> <span class="line"><span>doas cryptsetup luksOpen /dev/sdb1 hdd1</span></span> <span class="line"><span>doas mkfs.ext4 /dev/mapper/hdd1</span></span> <span class="line"><span>doas mkdir /mnt/hdd1</span></span> <span class="line"><span>doas mount /dev/mapper/hdd1 /mnt/hdd1</span></span> <span class="line"><span>doas chown vega:vega /mnt/hdd1</span></span> <span class="line"><span>doas dd if=/dev/urandom of=/root/keyfile_hdd1 bs=512 count=4</span></span> <span class="line"><span>doas chmod 0400 /root/keyfile_hdd1</span></span> <span class="line"><span>doas cryptsetup luksAddKey /dev/sdb1 /root/keyfile_hdd1</span></span> <span class="line"><span>UUID=$(doas blkid -s UUID -o value /dev/sdb1)</span></span> <span class="line"><span></span></span> <span class="line"><span>doas sh -c "cat << EOF >> /etc/conf.d/dmcrypt</span></span> <span class="line"><span>target=hdd1</span></span> <span class="line"><span>source=UUID='$UUID'</span></span> <span class="line"><span>key=/root/keyfile_hdd1</span></span> <span class="line"><span>wait=2</span></span> <span class="line"><span>EOF"</span></span> <span class="line"><span></span></span> <span class="line"><span>doas rc-update add dmcrypt boot</span></span> <span class="line"><span>doas reboot</span></span></code></pre> <div class="grid grid-cols-2 gap-1.5 sm:gap-3"> <div class="invisible"></div> <div class="invisible"></div> </div> </article> </div> </main> <footer class="animate"> <div class="mx-auto max-w-screen-sm px-3"> <div class="relative"> <div class="absolute -top-12 right-0"> <button id="back-to-top" class="group relative flex w-fit flex-nowrap rounded border border-black/15 py-1.5 pl-8 pr-3 transition-colors duration-300 ease-in-out hover:bg-black/5 hover:text-black focus-visible:bg-black/5 focus-visible:text-black dark:border-white/20 dark:hover:bg-white/5 dark:hover:text-white dark:focus-visible:bg-white/5 dark:focus-visible:text-white"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" class="absolute left-2 top-1/2 size-4 -translate-y-1/2 rotate-90 fill-none stroke-current stroke-2"> <line x1="5" y1="12" x2="19" y2="12" class="translate-x-2 scale-x-0 transition-transform duration-300 ease-in-out group-hover:translate-x-0 group-hover:scale-x-100 group-focus-visible:translate-x-0 group-focus-visible:scale-x-100"></line> <polyline points="12 5 5 12 12 19" class="translate-x-1 transition-transform duration-300 ease-in-out group-hover:translate-x-0 group-focus-visible:translate-x-0"></polyline> </svg> <div class="text-sm">Back to top</div> </button> </div> </div> <div class="flex items-center justify-between"> <div>© 2025 • z0x</div> <div class="flex flex-wrap items-center gap-1.5"> <a aria-label="RSS" href="/rss.xml" target="_blank" class="group flex size-9 items-center justify-center rounded border border-black/15 hover:bg-black/5 focus-visible:bg-black/5 dark:border-white/20 dark:hover:bg-white/5 dark:focus-visible:bg-white/5"> <svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" class="transition-colors duration-300 ease-in-out group-hover:animate-pulse group-hover:stroke-black group-focus-visible:animate-pulse group-focus-visible:stroke-black group-hover:dark:stroke-white dark:group-focus-visible:stroke-white"> <path d="M5 19m-1 0a1 1 0 1 0 2 0a1 1 0 1 0 -2 0"></path> <path d="M4 4a16 16 0 0 1 16 16"></path> <path d="M4 11a9 9 0 0 1 9 9"></path> </svg> </a> <button id="light-theme-button" aria-label="Light theme" class="group flex size-9 items-center justify-center rounded border border-black/15 hover:bg-black/5 focus-visible:bg-black/5 dark:border-white/20 dark:hover:bg-white/5 dark:focus-visible:bg-white/5"> <svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" class="transition-colors duration-300 ease-in-out group-hover:animate-pulse group-hover:stroke-black group-focus-visible:animate-pulse group-focus-visible:stroke-black group-hover:dark:stroke-white dark:group-focus-visible:stroke-white"> <circle cx="12" cy="12" r="5"></circle> <line x1="12" y1="1" x2="12" y2="3"></line> <line x1="12" y1="21" x2="12" y2="23"></line> <line x1="4.22" y1="4.22" x2="5.64" y2="5.64"></line> <line x1="18.36" y1="18.36" x2="19.78" y2="19.78"></line> <line x1="1" y1="12" x2="3" y2="12"></line> <line x1="21" y1="12" x2="23" y2="12"></line> <line x1="4.22" y1="19.78" x2="5.64" y2="18.36"></line> <line x1="18.36" y1="5.64" x2="19.78" y2="4.22"></line> </svg> </button> <button id="dark-theme-button" aria-label="Dark theme" class="group flex size-9 items-center justify-center rounded border border-black/15 hover:bg-black/5 focus-visible:bg-black/5 dark:border-white/20 dark:hover:bg-white/5 dark:focus-visible:bg-white/5"> <svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" class="transition-colors duration-300 ease-in-out group-hover:animate-pulse group-hover:stroke-black group-focus-visible:animate-pulse group-focus-visible:stroke-black group-hover:dark:stroke-white dark:group-focus-visible:stroke-white"> <path d="M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z"></path> </svg> </button> <button id="system-theme-button" aria-label="System theme" class="group flex size-9 items-center justify-center rounded border border-black/15 hover:bg-black/5 focus-visible:bg-black/5 dark:border-white/20 dark:hover:bg-white/5 dark:focus-visible:bg-white/5"> <svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" class="transition-colors duration-300 ease-in-out group-hover:animate-pulse group-hover:stroke-black group-focus-visible:animate-pulse group-focus-visible:stroke-black group-hover:dark:stroke-white dark:group-focus-visible:stroke-white"> <rect x="2" y="3" width="20" height="14" rx="2" ry="2"></rect> <line x1="8" y1="21" x2="16" y2="21"></line> <line x1="12" y1="17" x2="12" y2="21"></line> </svg> </button> </div> </div> </div> </footer> </body></html>