blog.z0x.ca/dist/artix-install-guide/index.html
2025-01-19 06:08:07 +00:00

695 lines
No EOL
71 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html><html lang="en"> <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"><meta name="generator" content="Astro v5.1.7"><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"><script>
function init() {
preloadTheme();
onScroll();
updateThemeButtons();
addCopyCodeButtons();
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 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);
}
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);
});
}
}
document.addEventListener("DOMContentLoaded", () => init());
document.addEventListener("astro:after-swap", () => init());
preloadTheme();
</script><link rel="stylesheet" href="/_astro/_id_.C3NArMbW.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="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>
&bull;
<div class="font-base text-sm">10 min read</div> </div> <h1 class="text-3xl font-semibold text-black dark:text-white"> Artix Linux install guide </h1> </div> <details open class="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="#introduction" 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="#acquire-an-installation-image" 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="#prepare-an-installation-medium" 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="#windows" 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="#linux" 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="#boot-the-live-environment" 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="#enter-the-live-environment" 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="#connect-to-the-internet" 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="#via-ethernet" 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="#via-wifi" 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="#verify-internet-connectivity" 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="#update-the-system-clock" 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="#partition-the-disk" 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="#encrypt-root-partition" 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="#create-file-systems" 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="#mount-file-systems" 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="#install-essentials" 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="#amd-cpu" 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="#intel-cpu" 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> </ul> </li><li class="list-inside list-disc px-6 py-1.5 text-sm"> <a href="#generate-file-system-table" 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="#switch-to-new-installation" 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="#network-stack" 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="#mac-randomization" 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><li class="list-inside list-disc px-6 py-1.5 text-sm"> <a href="#localization" 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="#set-the-locale" 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="#set-the-time-zone" 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="#set-hardware-clock-from-system-clock" 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="#hostname-and-host" 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="#initramfs" 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="#add-a-user" 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="#configure-doas" 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="#boot-loader" 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="#check-for-uefi-support" 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="#efistub" 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="#grub" 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="#reboot" 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="#post-install" 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="#add-arch-repositories-and-sort-for-fastest-mirrors" 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="#add-arch-extra-repository" 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="#sort-for-fastest-mirrors" 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="#aur" 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="#install-paru" 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="#replace-sudo-with-doas" 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="#laptop-power-profiles" 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="#add-swap" 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="#auto-mount-an-external-luks-encrypted-drive" 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> <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 wikis.</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>
<p>Login with the default credentials.</p>
<ul>
<li>Username: <code>root</code></li>
<li>Password: <code>artix</code></li>
</ul>
<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>
<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>
<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 computers 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 systems 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>
<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="network-stack">Network stack</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>pacman -S 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 &#x3C;&#x3C; 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>
<h3 id="mac-randomization">MAC randomization</h3>
<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 &#x3C;&#x3C; 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>
<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>
<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>
<ol start="3">
<li>Run this</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>
<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 where xxxx is the UUID that you obtained earlier.</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 &#x3C;&#x3C; 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> <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>&copy; 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>