pacman -Sy git
git clone https://github.com/matteocrippa/arch-linux.git
Then edit vars.sh
according to your setup.
vim vars.sh
If testing on vmware you need to:
- add in vmware a NVME disk
- enable efi firmware editing
.vmx
and addingfirmware = "efi"
- lower swap size to 1GB
Name | Type | Mountpoint |
---|---|---|
nvme0n1 | disk | |
├─nvme0n1p1 | part | /boot |
├─nvme0n1p2 | part | |
└─cryptlvm | crypt | |
├─vg0-swap | lvm | [SWAP] |
└─vg0-root | lvm | / |
sda | disk | |
├─sda1 | part | |
└─crypthome | crypt | |
└─vg1-home | lvm | /home |
- Download and boot into the latest Arch Linux iso
- Connect to the internet. If using wifi, you can use
iwctl
to connect to a network:- scan for networks:
station wlan0 scan
- list available networks:
station wlan0 get-networks
- connect to a network:
station wlan0 connect SSID
- scan for networks:
- Clear all existing partitions (see below: MISC - How to clear all partitions)
- Give highest priority to the closest mirror to you on /etc/pacman.d/mirrorlist by moving it to the top
- Sync repos:
pacman -Sy
and install wgetpacman -S wget
wget https://raw.githubusercontent.com/exah-io/arch-linux/master/1_install.sh
- Change the variables at the top of the file (lines 3 through 9)
- continent_country must have the following format: Zone/SubZone . e.g. Europe/Berlin
- run
timedatectl list-timezones
to see full list of zones and subzones
- Make the script executable:
chmod +x 1_install.sh
- Run the script:
./1_install.sh
- Reboot into Arch Linux
- Connect to wifi with
nmtui
wget https://raw.githubusercontent.com/exah-io/arch-linux/master/2_gnome.sh
or2_plasma.sh
or2_sway.sh
- Make the script executable:
chmod +x 2_gnome.sh
orchmod +x 2_plasma.sh
orchmod +x 2_sway.sh
- Run the script:
./2_gnome.sh
or./2_plasma.sh
or./2_sway.sh
gdisk /dev/nvme0n1
x
z
y
y
- Run
sudo flatpak override --socket=wayland --env="MOZ_ENABLE_WAYLAND=1 GTK_USE_PORTAL=1" org.mozilla.firefox
- At about:config set
gfx.webrender.enabled
andwidget.wayland-dmabuf-vaapi.enabled
to true and restart browser- Read original blog post here
- Note: base script already sets the required environment variables. Only changing these 2 configs suffices
- Download sbctl-git
- Confirm secure boot is disabled and delete existing keys in the bios (should automatically go into setup mode)
- Confirm status (setup mode):
sudo sbctl status
- Create new keys:
sudo sbctl create-keys
- Enroll new keys:
sudo sbctl enroll-keys
- Confirm status (setup mode should now be disabled):
sudo sbctl status
- Confirm what needs to be signed:
sudo sbctl verify
- Sign with new keys:
sudo sbctl sign -s /boot/EFI/BOOT/BOOTX64.EFI
sudo sbctl sign -s /boot/EFI/systemd/systemd-bootx64.efi
sudo sbctl sign -s /boot/vmlinuz-linux
sudo sbctl sign -s /boot/vmlinuz-linux-lts
sudo sbctl sign -s /usr/lib/fwupd/efi/fwupdx64.efi -o /usr/lib/fwupd/efi/fwupdx64.efi.signed
- Reboot and enable secure boot in the bios
- Confirm status (secure boot enabled):
sudo sbctl status
mkdir -p /mnt/boot
mount /dev/nvme0n1p1 /mnt/boot
cryptsetup luksOpen /dev/nvme0n1p2 cryptlvm
mount /dev/vg0/root /mnt
arch-chroot /mnt