{"id":22382555,"url":"https://github.com/slothspunky77/arch-linux-installation","last_synced_at":"2026-02-13T12:46:59.827Z","repository":{"id":245006493,"uuid":"816774180","full_name":"SlothSpunky77/Arch-Linux-Installation","owner":"SlothSpunky77","description":null,"archived":false,"fork":false,"pushed_at":"2025-05-11T14:26:18.000Z","size":103,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-05-11T15:29:37.395Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/SlothSpunky77.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2024-06-18T11:32:30.000Z","updated_at":"2025-05-11T14:26:21.000Z","dependencies_parsed_at":"2024-06-24T15:15:01.304Z","dependency_job_id":"d6d81a07-8943-4fd3-a0b7-8fe5c9e4d13a","html_url":"https://github.com/SlothSpunky77/Arch-Linux-Installation","commit_stats":null,"previous_names":["slothspunky77/arch-linux-installation"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/SlothSpunky77/Arch-Linux-Installation","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SlothSpunky77%2FArch-Linux-Installation","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SlothSpunky77%2FArch-Linux-Installation/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SlothSpunky77%2FArch-Linux-Installation/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SlothSpunky77%2FArch-Linux-Installation/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/SlothSpunky77","download_url":"https://codeload.github.com/SlothSpunky77/Arch-Linux-Installation/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SlothSpunky77%2FArch-Linux-Installation/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":274907813,"owners_count":25371819,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-12T02:00:09.324Z","response_time":60,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-12-05T00:13:27.056Z","updated_at":"2026-02-13T12:46:54.790Z","avatar_url":"https://github.com/SlothSpunky77.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# Arch-Linux-Installation-Guide\nWhat you get: UEFI + systemd-boot + LVM + swap file + Xorg + awesomeWM + tablet mode  \nTested (2024) on: Intel i7 12th Gen, Iris Xe Graphics, 512G SSD, touch screen foldable\n\n## Get Started:\nDownload the arch linux iso file (https://archlinux.org/download/#download-mirrors) and use an empty USB stick. The following command writes into the USB stick in any linux distribution:\n\u003e `cat path/to/archlinux-version-x86_64.iso \u003e /dev/disk/by-id/usb-My_flash_drive`    \n\nBoot into the USB stick. You have to refer to your laptop's instructions for how to display the boot options.\n\n## In the live environment:\nConnect to wifi using `iwctl`\n```\n[iwd]# device list          \n[iwd]# station wlan0 scan    \n[iwd]# station wlan0 get-networks    \n[iwd]# station wlan0 connect wifi-name    \n[iwd]# exit\n```\n\nTest your connection using `ping archlinux.org`    \n\nNext,\n\u003e `timedatectl set-ntp true`  \n\n### Partitioning your disk (LVM):\n\u003e `fdisk -l`    \n\u003e `fdisk /dev/thenameofyourdisk`\n\nI will be creating two partitions, one for EFI and the other for LVM.    \nCreate a GPT:\n\u003e `Command (m for help): g`\n\nFirst partition:\n\u003e `Command (m for help): n`\n\nAccept the defaults (hit enter on a blank entry) but for the last sector, use `+500M` \n\nSecond partition:\n\u003e `Command (m for help): n`\n\nAccept all the defaults. For the system to know the type,\n\u003e `Command (m for help): t`\n\nAccept the defaults if it matches and use `L` when prompted to show the list of types. Use the number against LVM in the list:\n\u003e `Partition type (type L to list all types): xx`\n\nWrite the changes:\n\u003e `Command (m for help): w`\n\nFormat the EFI partition.\n\u003e `mkfs.fat -F32 /dev/devicename1`\n\nLVM:    \nWe're allocating 60GB for root, tools like Android Studio and docker take up space if you're going to use them.    \n\u003e `pvcreate /dev/devicename2`  \n\u003e `vgcreate GROUPNAME /dev/devicename2`  \n\u003e `lvcreate -L 60GB GROUPNAME -n rootname`  \n\u003e `lvcreate -l 100%FREE GROUPNAME -n homename`\n\nVerify with `lvdisplay`\n\nFew more commands before we move to the next section.\n\u003e `modprobe dm_mod`  \n\u003e `vgscan`  \n\u003e `vgchange -ay`  \n\nFormat and mount the root partition:\n\u003e `mkfs.ext4 /dev/GROUPNAME/rootname`  \n\u003e `mount /dev/GROUPNAME/rootname /mnt`  \n\nMount the EFI partition:\n\u003e `mkdir /mnt/boot`  \n\u003e `mount /dev/devicename1 /mnt/boot`\n\nVerify with `lsblk`  \n\nFormat and mount the home partition:\n\u003e `mkfs.ext4 /dev/GROUPNAME/homename`  \n\u003e `mkdir /mnt/home`  \n\u003e `mount /dev/GROUPNAME/homename /mnt/home`\n\nGet essential packages:\n\u003e `pacstrap -K /mnt base linux linux-firmware vim lvm2`\n\nNext,\n\u003e `genfstab -U /mnt \u003e\u003e /mnt/etc/fstab`\n\nCheck with `cat /mnt/etc/fstab`  \n\n### Enter into '/':    \n\u003e `arch-chroot /mnt`\n\nMake a link for your localtime (figure out your own timezone though):\n\u003e `ln -sf /usr/share/zoneinfo/Asia/Kolkata /etc/localtime`\n\nMore commands:\n\u003e `hwclock --systohc`\n\nEdit `/etc/locale.gen` to uncomment `en_US.UTF-8 UTF-8` and then generate the locale:\n\u003e `locale-gen`    \n\nEdit `/etc/locale.conf` to insert `LANG=en_US.UTF-8`    \nEdit `/etc/hostname` to insert a custom `hostname`    \nEdit the `/etc/hosts` file:\n```\nvim /etc/hosts  \n# See hosts(5) for details.  \n127.0.0.1    localhost  \n::1          localhost  \n127.0.1.1    username.localdomain    username\n```\n\nEdit the `/etc/mkinitcpio.conf` file:  \n\u003e `HOOKS=(base systemd autodetect microcode modconf kms keyboard sd-vconsole block lvm2 filesystem fsck)`\n\nRun:\n\u003e `mkinitcpio -p linux`    \n\n### Swapfile:    \nI would recommend that you allocate RAMsize + 2GB to the swapfile.\n\u003e `fallocate -l 18G /swapfile`    \n\u003e `mkswap /swapfile`\n\u003e `chmod 600 /swapfile`\n\u003e `swapon /swapfile`\n\nEdit `/etc/fstab` to include the swap file in it:\n\n```\n# Static information about the filesystems.\n# See fstab(5) for details.\n\n# \u003cfile system\u003e \u003cdir\u003e \u003ctype\u003e \u003coptions\u003e \u003cdump\u003e \u003cpass\u003e\n# /dev/mapper/LVM00-lvmroot\nUUID=2dfee3da-c567-4509-81bd-46b6220f27a3\t/         \text4      \trw,relatime\t0 1\n\n# /dev/nvme0n1p1\nUUID=55AC-0C30      \t/boot     \tvfat      \trw,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=ascii,shortname=mixed,utf8,errors=remount-ro\t0 2\n\n# /dev/mapper/LVM00-lvmhome\nUUID=728f1042-3331-4427-a651-4bb539e83a9e\t/home     \text4      \trw,relatime\t0 2\n\n/swapfile none swap defaults 0 0\n```\n\nInstall packages:  \n\u003e `pacman -Syu efibootmgr networkmanager base-devel linux-headers iwd linux-firmware pipewire-audio xorg xorg-xinit xorg-server awesome picom mesa`\n\nNext,\n\u003e `bootctl --path=/boot install`\n\nGo into `/boot/loader`  \nEdit `loader.conf`:\n\u003e `#console-mode keep` \n\u003e `default arch-*`\n\nGo into `/boot/loader/entries`    \nEdit `arch.conf`:\n```\ntitle    Arch Linux  \nlinux    /vmlinuz-linux  \ninitrd   /initramfs-linux.img  \noptions  root=/dev/GROUPNAME/rootname rw\n```\n\nEnable NetworkManager: \n\u003e `systemctl enable NetworkManager`\n\nBefore you add a new user, set the root password with `passwd`\nAdd new user: \n\u003e `useradd -mG wheel username`  \n\u003e `passwd username`  \n\u003e `EDITOR=vim visudo`\n\nEdit `/etc/sudoers.tmp` by uncommenting `%wheel ALL=(ALL:ALL) ALL`  \n\nExit the root and unmount all (should tell you everything's busy):\n\u003e `exit`    \n\u003e `umount -a`\n\n`reboot` the system.  \n## Outside your live environment (normal usage):    \nInstall a terminal and a web browser to get you started:\n\u003e `sudo pacman -Syu alacritty firefox nautilus gvfs-mtp`\n\nInstall graphic drivers:\n\u003e `sudo pacman -Syu vulkan-icd-loader vulkan-intel intel-ucode intel-media-driver`\n\nEdit `arch.conf` in `/boot/loader/entries`:\n```\ntitle\tArch Linux    \nlinux\t/vmlinuz-linux    \ninitrd\t/initramfs-linux.img    \ninitrd  /intel-ucode.img    \noptions\troot=/dev/LVM00/lvmroot rw\n```\n\n### ClamAV:\n\u003e `sudo pacman -S clamav`    \n\u003e `sudo freshclam`    \n\u003e `sudo systemctl enable clamav-freshclam-once.timer`\n\n### Install for gaming:\nEnable multilib first:    \nEdit `/etc/pacman.conf`:    \nLook for the following lines and uncomment them:    \n```\n#[multilib]    \n#Include = /etc/pacman.d/mirrorlist\n```\nThen, install the following:    \n\u003e `sudo pacman -Syu discord steam lutris wine wine-mono`    \n\u003e `paru protonup-qt`\n\n\n### Gestures for trackpad:\n\u003e `sudo pacman -S xf86-input-libinput xorg-xinput wmctrl xdotool`    \n\u003e `paru libinput-gestures`    \n\u003e `libinput-gestures-setup autostart start`\n\n\n## Swapfile for hibernation:\nFind your swapfile offset:    \n\u003e `filefrag -v swap_file`\n\nFrom the output, take the first number from the physical offset.    \nAdd the `resume=` and `resume-offset=` flags to your `arch.conf`:\n```\ntitle\tArch Linux    \nlinux\t/vmlinuz-linux    \ninitrd\t/initramfs-linux.img    \ninitrd\t/intel-ucode.img    \noptions\troot=/dev/LVM00/lvmroot resume=/dev/LVM00/lvmroot resume_offset=3887104 rw\n```\n  \nRegenerate using `sudo mkinitcpio -p linux` and you're good to go after a `reboot`.\n \n## Custom Configuration:    \n\u003e `sudo cp /etc/libinput-gestures.conf ~/.config/`\n\nDownload my configuration from the files if you need it, else make your own by editing the file in the `.config` directory.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fslothspunky77%2Farch-linux-installation","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fslothspunky77%2Farch-linux-installation","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fslothspunky77%2Farch-linux-installation/lists"}