├── LICENSE.txt ├── README.md └── logo.png /LICENSE.txt: -------------------------------------------------------------------------------- 1 | Apache License 2 | Version 2.0, January 2004 3 | http://www.apache.org/licenses/ 4 | 5 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 6 | 7 | 1. Definitions. 8 | 9 | "License" shall mean the terms and conditions for use, reproduction, 10 | and distribution as defined by Sections 1 through 9 of this document. 11 | 12 | "Licensor" shall mean the copyright owner or entity authorized by 13 | the copyright owner that is granting the License. 14 | 15 | "Legal Entity" shall mean the union of the acting entity and all 16 | other entities that control, are controlled by, or are under common 17 | control with that entity. For the purposes of this definition, 18 | "control" means (i) the power, direct or indirect, to cause the 19 | direction or management of such entity, whether by contract or 20 | otherwise, or (ii) ownership of fifty percent (50%) or more of the 21 | outstanding shares, or (iii) beneficial ownership of such entity. 22 | 23 | "You" (or "Your") shall mean an individual or Legal Entity 24 | exercising permissions granted by this License. 25 | 26 | "Source" form shall mean the preferred form for making modifications, 27 | including but not limited to software source code, documentation 28 | source, and configuration files. 29 | 30 | "Object" form shall mean any form resulting from mechanical 31 | transformation or translation of a Source form, including but 32 | not limited to compiled object code, generated documentation, 33 | and conversions to other media types. 34 | 35 | "Work" shall mean the work of authorship, whether in Source or 36 | Object form, made available under the License, as indicated by a 37 | copyright notice that is included in or attached to the work 38 | (an example is provided in the Appendix below). 39 | 40 | "Derivative Works" shall mean any work, whether in Source or Object 41 | form, that is based on (or derived from) the Work and for which the 42 | editorial revisions, annotations, elaborations, or other modifications 43 | represent, as a whole, an original work of authorship. For the purposes 44 | of this License, Derivative Works shall not include works that remain 45 | separable from, or merely link (or bind by name) to the interfaces of, 46 | the Work and Derivative Works thereof. 47 | 48 | "Contribution" shall mean any work of authorship, including 49 | the original version of the Work and any modifications or additions 50 | to that Work or Derivative Works thereof, that is intentionally 51 | submitted to Licensor for inclusion in the Work by the copyright owner 52 | or by an individual or Legal Entity authorized to submit on behalf of 53 | the copyright owner. For the purposes of this definition, "submitted" 54 | means any form of electronic, verbal, or written communication sent 55 | to the Licensor or its representatives, including but not limited to 56 | communication on electronic mailing lists, source code control systems, 57 | and issue tracking systems that are managed by, or on behalf of, the 58 | Licensor for the purpose of discussing and improving the Work, but 59 | excluding communication that is conspicuously marked or otherwise 60 | designated in writing by the copyright owner as "Not a Contribution." 61 | 62 | "Contributor" shall mean Licensor and any individual or Legal Entity 63 | on behalf of whom a Contribution has been received by Licensor and 64 | subsequently incorporated within the Work. 65 | 66 | 2. Grant of Copyright License. Subject to the terms and conditions of 67 | this License, each Contributor hereby grants to You a perpetual, 68 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 69 | copyright license to reproduce, prepare Derivative Works of, 70 | publicly display, publicly perform, sublicense, and distribute the 71 | Work and such Derivative Works in Source or Object form. 72 | 73 | 3. Grant of Patent License. Subject to the terms and conditions of 74 | this License, each Contributor hereby grants to You a perpetual, 75 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 76 | (except as stated in this section) patent license to make, have made, 77 | use, offer to sell, sell, import, and otherwise transfer the Work, 78 | where such license applies only to those patent claims licensable 79 | by such Contributor that are necessarily infringed by their 80 | Contribution(s) alone or by combination of their Contribution(s) 81 | with the Work to which such Contribution(s) was submitted. If You 82 | institute patent litigation against any entity (including a 83 | cross-claim or counterclaim in a lawsuit) alleging that the Work 84 | or a Contribution incorporated within the Work constitutes direct 85 | or contributory patent infringement, then any patent licenses 86 | granted to You under this License for that Work shall terminate 87 | as of the date such litigation is filed. 88 | 89 | 4. Redistribution. You may reproduce and distribute copies of the 90 | Work or Derivative Works thereof in any medium, with or without 91 | modifications, and in Source or Object form, provided that You 92 | meet the following conditions: 93 | 94 | (a) You must give any other recipients of the Work or 95 | Derivative Works a copy of this License; and 96 | 97 | (b) You must cause any modified files to carry prominent notices 98 | stating that You changed the files; and 99 | 100 | (c) You must retain, in the Source form of any Derivative Works 101 | that You distribute, all copyright, patent, trademark, and 102 | attribution notices from the Source form of the Work, 103 | excluding those notices that do not pertain to any part of 104 | the Derivative Works; and 105 | 106 | (d) If the Work includes a "NOTICE" text file as part of its 107 | distribution, then any Derivative Works that You distribute must 108 | include a readable copy of the attribution notices contained 109 | within such NOTICE file, excluding those notices that do not 110 | pertain to any part of the Derivative Works, in at least one 111 | of the following places: within a NOTICE text file distributed 112 | as part of the Derivative Works; within the Source form or 113 | documentation, if provided along with the Derivative Works; or, 114 | within a display generated by the Derivative Works, if and 115 | wherever such third-party notices normally appear. The contents 116 | of the NOTICE file are for informational purposes only and 117 | do not modify the License. You may add Your own attribution 118 | notices within Derivative Works that You distribute, alongside 119 | or as an addendum to the NOTICE text from the Work, provided 120 | that such additional attribution notices cannot be construed 121 | as modifying the License. 122 | 123 | You may add Your own copyright statement to Your modifications and 124 | may provide additional or different license terms and conditions 125 | for use, reproduction, or distribution of Your modifications, or 126 | for any such Derivative Works as a whole, provided Your use, 127 | reproduction, and distribution of the Work otherwise complies with 128 | the conditions stated in this License. 129 | 130 | 5. Submission of Contributions. Unless You explicitly state otherwise, 131 | any Contribution intentionally submitted for inclusion in the Work 132 | by You to the Licensor shall be under the terms and conditions of 133 | this License, without any additional terms or conditions. 134 | Notwithstanding the above, nothing herein shall supersede or modify 135 | the terms of any separate license agreement you may have executed 136 | with Licensor regarding such Contributions. 137 | 138 | 6. Trademarks. This License does not grant permission to use the trade 139 | names, trademarks, service marks, or product names of the Licensor, 140 | except as required for reasonable and customary use in describing the 141 | origin of the Work and reproducing the content of the NOTICE file. 142 | 143 | 7. Disclaimer of Warranty. Unless required by applicable law or 144 | agreed to in writing, Licensor provides the Work (and each 145 | Contributor provides its Contributions) on an "AS IS" BASIS, 146 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 147 | implied, including, without limitation, any warranties or conditions 148 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A 149 | PARTICULAR PURPOSE. You are solely responsible for determining the 150 | appropriateness of using or redistributing the Work and assume any 151 | risks associated with Your exercise of permissions under this License. 152 | 153 | 8. Limitation of Liability. In no event and under no legal theory, 154 | whether in tort (including negligence), contract, or otherwise, 155 | unless required by applicable law (such as deliberate and grossly 156 | negligent acts) or agreed to in writing, shall any Contributor be 157 | liable to You for damages, including any direct, indirect, special, 158 | incidental, or consequential damages of any character arising as a 159 | result of this License or out of the use or inability to use the 160 | Work (including but not limited to damages for loss of goodwill, 161 | work stoppage, computer failure or malfunction, or any and all 162 | other commercial damages or losses), even if such Contributor 163 | has been advised of the possibility of such damages. 164 | 165 | 9. Accepting Warranty or Additional Liability. While redistributing 166 | the Work or Derivative Works thereof, You may choose to offer, 167 | and charge a fee for, acceptance of support, warranty, indemnity, 168 | or other liability obligations and/or rights consistent with this 169 | License. However, in accepting such obligations, You may act only 170 | on Your own behalf and on Your sole responsibility, not on behalf 171 | of any other Contributor, and only if You agree to indemnify, 172 | defend, and hold each Contributor harmless for any liability 173 | incurred by, or claims asserted against, such Contributor by reason 174 | of your accepting any such warranty or additional liability. 175 | 176 | END OF TERMS AND CONDITIONS 177 | 178 | APPENDIX: How to apply the Apache License to your work. 179 | 180 | To apply the Apache License to your work, attach the following 181 | boilerplate notice, with the fields enclosed by brackets "[]" 182 | replaced with your own identifying information. (Don't include 183 | the brackets!) The text should be enclosed in the appropriate 184 | comment syntax for the file format. We also recommend that a 185 | file or class name and description of purpose be included on the 186 | same "printed page" as the copyright notice for easier 187 | identification within third-party archives. 188 | 189 | Copyright [yyyy] [name of copyright owner] 190 | 191 | Licensed under the Apache License, Version 2.0 (the "License"); 192 | you may not use this file except in compliance with the License. 193 | You may obtain a copy of the License at 194 | 195 | http://www.apache.org/licenses/LICENSE-2.0 196 | 197 | Unless required by applicable law or agreed to in writing, software 198 | distributed under the License is distributed on an "AS IS" BASIS, 199 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 200 | See the License for the specific language governing permissions and 201 | limitations under the License. 202 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | 2 | 3 |
4 | 5 | [![Author](https://img.shields.io/badge/Author-Maxim_Pershin-ff6f00)](https://github.com/silentz) 6 | [![License](https://img.shields.io/badge/License-Apache--2.0-blue)](./LICENSE.txt) 7 | ![Last Updated](https://img.shields.io/badge/Last_Updated-April_2025-02b532) 8 | 9 |
10 | 11 |

Arch Linux with Xfce4 and i3 Window Manager Installation Guide

12 | 13 |
14 | How to install Arch Linux with Xfce/i3 and not spend ages on debugging 15 |
16 | 17 | ### Getting Started 18 | 19 | Welcome to the Arch Linux with Xfce4 and i3 Window Manager Installation Guide! 20 | 21 | This guide provides you with a step-by-step walkthrough of installing 22 | Arch Linux along with the Xfce4 and i3 window manager. It has been carefully created 23 | based on my own experience of installation Arch Linux on multiple devices over the years. 24 | This guide aims to make your installation process as smooth as possible. 25 | 26 | To begin your Arch Linux installation journey, please follow the step-by-step instructions provided below. 27 | 28 | ### Support and Feedback 29 | 30 | If you have any suggestions, corrections, or encounter any issues while following 31 | the guide, I encourage you to get involved through Github. 32 | 33 | **Issues:** If you come across any problems or have specific questions, please open 34 | an issue on the Github repository for this guide. This allows me to track and 35 | address your concerns effectively. 36 | 37 | **Pull Requests:** If you have improvements or additions to the guide, feel free to submit 38 | a pull request. Your contributions can help enhance the clarity of the guide for everyone. 39 | 40 |

41 | Section 01: Step-by-step guide of installing Arch Linux on your hardware 🚀 42 |

43 | 44 | ### Step 01: Downloading Arch Linux image 45 | 46 | 1. Go to Arch Linux downloads page https://archlinux.org/download/ 47 | 48 | 2. Find **HTTP Direct Downloads** section and choose any download mirror. 49 | Select a mirror that is geographically closer to your location. 50 | 51 | 3. On the mirror page find archive named like `archlinux-YYYY.MM.DD-x86_64.iso` or `archlinux-x86_64.iso` 52 | or any other file with `.iso` suffix. Other files (like _.txt_, _.tar.gz_ and even _.iso.sig_) 53 | are not needed for installation process. 54 | 55 | ### Step 02: Preparing installation medium 56 | 57 | 1. Insert a USB-stick into your PC with at least 2Gb of space available on it. 58 | 59 | 2. Find corresponding block device for USB-stick in `/dev` folder. Usually it is `/dev/sdb`. 60 | 61 |
62 | 💡 IMPORTANT NOTE: you need block device without a number on the end. 63 | If you have for example /dev/sdb, /dev/sdb1 and /dev/sdb2 you need /dev/sdb ! 64 |
65 | 66 | 3. Burn previously downloaded Arch Linux ISO-image on a USB-stick (in my case it is `/dev/sdb`): 67 | 68 |
69 |
  70 | $ sudo dd conv=fsync oflag=direct status=progress bs=4M \
  71 |           if=./archlinux-YYYY.MM.DD-x86_64.iso of=/dev/sdb
  72 | 
73 |
74 | 75 | ### Step 03: Boot into Arch Linux medium 76 | 77 | 1. Insert the installation medium into the computer on which you are installing Arch Linux. 78 | 79 | 2. Power on your PC and press _boot menu key_. For _Lenovo ThinkPad X1 Carbon_ series laptop, 80 | this key is `F12`. 81 | 82 | 3. Boot from USB-stick and wait until boot process is finished. 83 | 84 |
85 | 💡 IMPORTANT NOTE: not every device can run a system from USB-stick out of the box. 86 | Many BIOS'es by default come with activated Secure boot option.You might need to 87 | deactivate it in your BIOS. 88 |
89 | 90 | ### Step 04: Syncronize packages 91 | 92 | 1. [Optional] Connect to WiFi using `iwctl` and check connection is established: 93 | 94 |
95 |
  96 | $ iwctl
  97 | [iwd]# station wlan0 get-networks
  98 | [iwd]# station wlan0 connect <Name of WiFi access point>
  99 | [iwd]# exit
 100 | $ ping 1.1.1.1
 101 | 
102 |
103 | 104 | 2. Synchronize pacman packaes: 105 | 106 |
107 |
 108 | $ pacman -Syy
 109 | 
110 |
111 | 112 | ### Step 05: Disk partitioning 113 | 114 | 1. Partition main storage device using `fdisk` utility. You can find storage device name using `lsblk` command. 115 | 116 |
117 |
 118 | $ fdisk /dev/nvme0n1
 119 |                 [repeat this command until existing partitions are deleted]
 120 | Command (m for help): d
 121 | Command (m for help): d
 122 | Command (m for help): d
 123 | 
 124 |                 [create partition 1: efi]
 125 | Command (m for help): n
 126 | Partition number (1-128, default 1): Enter ↵
 127 | First sector (..., default 2048): Enter ↵
 128 | Last sector ...: +256M
 129 | 
 130 |                 [create partition 2: main]
 131 | Command (m for help): n
 132 | Partition number (2-128, default 2): Enter ↵
 133 | First sector (..., default ...): Enter ↵
 134 | Last sector ...: -32G // double size of your RAM
 135 | 
 136 |                 [create partition 3: swap]
 137 | Command (m for help): n
 138 | Partition number (3-128, default 3): Enter ↵
 139 | First sector (..., default ...): Enter ↵
 140 | Last sector ...: Enter ↵
 141 | 
 142 |                 [change partition types]
 143 | Command (m for help): t
 144 | Partition number (1-3, default 1): 1
 145 | Partion type or alias (type L to list all): uefi
 146 | Command (m for help): t
 147 | Partition number (1-3, default 2): 2
 148 | Partion type or alias (type L to list all): linux
 149 | Command (m for help): t
 150 | Partition number (1-3, default 3): 3
 151 | Partion type or alias (type L to list all): swap
 152 | 
 153 |                 [write partitioning to disk]
 154 | Command (m for help): w
 155 | 
156 |
157 | 158 | 2. Create filesystems on created disk partitions: 159 | 160 |
161 |
 162 | $ mkfs.fat -F 32 /dev/nvme0n1p1 # on EFI System partition
 163 | $ mkfs -t ext4 /dev/nvme0n1p2   # on Linux filesystem partition
 164 | $ mkswap /dev/nvme0n1p3         # on Linux swap partition
 165 | 
166 |
167 | 168 | 3. Correctly mount all filesystems to the `/mnt`: 169 | 170 |
171 |
 172 | $ mount /dev/nvme0n1p2 /mnt
 173 | $ mkdir -p /mnt/boot/efi
 174 | $ mount /dev/nvme0n1p1 /mnt/boot/efi
 175 | $ swapon /dev/nvme0n1p3
 176 | 
177 |
178 | 179 | 4. Install essential packages into new filesystem and generate fstab: 180 | 181 |
182 |
 183 | $ pacstrap -i /mnt base linux linux-firmware sudo vim
 184 | $ genfstab -U -p /mnt > /mnt/etc/fstab
 185 | 
186 |
187 | 188 | ### Step 06: Basic configuration of new system 189 | 190 | 1. Chroot into freshly created filesystem: 191 | 192 |
193 |
 194 | $ arch-chroot /mnt
 195 | 
196 |
197 | 198 | 2. Setup system locale and timezone, sync hardware clock with system clock: 199 | 200 |
201 |
 202 | $ vim /etc/locale.gen   # uncomment your locales, i.e. `en_US.UTF-8` or `en_GB.UTF-8`
 203 | $ locale-gen
 204 | $ echo "LANG=en_US.UTF-8" > /etc/locale.conf                # choose your locale
 205 | $ ln -sf /usr/share/zoneinfo/Europe/Berlin /etc/localtime   # choose your timezone
 206 | $ hwclock --systohc
 207 | 
208 |
209 | 210 | 3. Setup system hostname: 211 | 212 |
213 |
 214 | $ echo yourhostname > /etc/hostname
 215 | $ vim /etc/hosts
 216 |     127.0.0.1 localhost
 217 |     ::1       localhost
 218 |     127.0.1.1 yourhostname
 219 | 
220 |
221 | 222 | 4. Add new users and setup passwords: 223 | 224 |
225 |
 226 | $ useradd -m -G wheel,storage,power,audio,video -s /bin/bash yourusername
 227 | $ passwd root
 228 | $ passwd yourusername
 229 | 
230 |
231 | 232 | 5. Add wheel group to sudoers file to allow users to run sudo: 233 | 234 |
235 |
 236 | $ visudo
 237 |     [uncomment following line in file]
 238 |     %wheel ALL=(ALL) ALL
 239 | 
240 |
241 | 242 | 6. Install and configure GRUB: 243 | 244 |
245 |
 246 | $ pacman -S grub efibootmgr
 247 | $ grub-install /dev/nvme0n1
 248 | $ grub-mkconfig -o /boot/grub/grub.cfg
 249 | 
250 |
251 | 252 | 7. Setup networking stack: 253 | 254 |
255 |
 256 | $ pacman -S dhcpcd networkmanager resolvconf
 257 | $ systemctl enable dhcpcd
 258 | $ systemctl enable NetworkManager
 259 | $ systemctl enable systemd-resolved
 260 | 
261 |
262 | 263 | 8. Exit chroot, unmount all disks and reboot: 264 | 265 |
266 |
 267 | $ exit
 268 | $ umount /mnt/boot/efi
 269 | $ umount /mnt
 270 | $ reboot
 271 | 
272 |
273 | 274 |

275 | Section 02: Configuring userspace after initial system setup 🎯 276 |

277 | 278 | ### Step 01: Basic configuration of userspace 279 | 280 | 1. Activate time syncronization using NTP: 281 | 282 |
283 |
 284 | $ timedatectl set-ntp true
 285 | 
286 |
287 | 288 | 2. [Optional] Connect to WiFi using `nmcli`: 289 | 290 |
291 |
 292 | $ nmcli device wifi connect <Name of WiFi access point> password <password>
 293 | 
294 |
295 | 296 | 3. Install X.Org and its utilities: 297 | 298 |
299 |
 300 | $ sudo pacman -S xorg xorg-apps xorg-xinit xorg-xlsfonts xdotool xclip xsel
 301 | 
302 |
303 | 304 | 4. Install a bunch of useful utilities: 305 | 306 |
307 |
 308 | $ sudo pacman -S dbus              # Message bus used by many applications
 309 | $ sudo pacman -S intel-ucode       # Microcode update files for Intel CPUs
 310 | $ sudo pacman -S fuse2             # Interface for programs to export a filesystem to the Linux kernel
 311 | $ sudo pacman -S lshw              # Provides detailed information on the hardware of the machine
 312 | $ sudo pacman -S powertop          # A tool to diagnose issues with power consumption and power management
 313 | $ sudo pacman -S inxi              # Full featured CLI system information tool
 314 | $ sudo pacman -S acpi              # Client for battery, power, and thermal readings
 315 | 
316 | $ sudo pacman -S base-devel # Basic tools to build Arch Linux packages 317 | $ sudo pacman -S git # Distributed version control system 318 | $ sudo pacman -S zip # Compressor/archiver for creating and modifying zipfiles 319 | $ sudo pacman -S unzip # For extracting and viewing files in .zip archives 320 | $ sudo pacman -S p7zip # For extracting and viewing files in .7z archives 321 | $ sudo pacman -S htop # Interactive CLI process viewer 322 | $ sudo pacman -S tree # A directory listing program 323 |
324 | $ sudo pacman -S dialog # A tool to display dialog boxes from shell scripts 325 | $ sudo pacman -S reflector # Script to retrieve and filter the latest Pacman mirror list 326 | $ sudo pacman -S bash-completion # Programmable completion for the bash shell 327 |
328 | $ sudo pacman -S iw # CLI configuration utility for wireless devices 329 | $ sudo pacman -S wpa_supplicant # A utility providing key negotiation for WPA wireless networks 330 | $ sudo pacman -S tcpdump # Powerful command-line packet analyzer 331 | $ sudo pacman -S mtr # Combines the functionality of traceroute and ping into one tool 332 | $ sudo pacman -S net-tools # Configuration tools for Linux networking 333 | $ sudo pacman -S conntrack-tools # Userspace tools to interact with the Netfilter tracking system 334 | $ sudo pacman -S ethtool # Utility for controlling network drivers and hardware 335 | $ sudo pacman -S wget # Network utility to retrieve files from the Web 336 | $ sudo pacman -S rsync # File copying tool for remote and local files 337 | $ sudo pacman -S socat # Multipurpose socket relay 338 | $ sudo pacman -S openbsd-netcat # Netcat program. OpenBSD variant. 339 | $ sudo pacman -S axel # Light command line download accelerator 340 | $ sudo pacman -S bind # I use dig utility for DNS resolution from this package 341 |
342 |
343 | 344 | 5. Install Xfce4, i3, or both: 345 | 346 |
347 |
 348 | # Instructions for installing Xfce4
 349 | 
350 | $ sudo pacman -S xfce4 351 | $ sudo pacman -S xfce4-notifyd xfce4-screensaver xfce4-screenshooter 352 | $ sudo pacman -S thunar-archive-plugin thunar-media-tags-plugin 353 | $ sudo pacman -S network-manager-applet 354 | $ sudo pacman -S xfce4-xkb-plugin xfce4-battery-plugin \ 355 | xfce4-datetime-plugin xfce4-mount-plugin \ 356 | xfce4-netload-plugin xfce4-wavelan-plugin \ 357 | xfce4-pulseaudio-plugin xfce4-weather-plugin \ 358 | xfce4-whiskermenu-plugin 359 |
360 | # Instructions for installing i3 361 |
362 | $ sudo pacman -S i3-wm i3status i3lock pango 363 | $ sudo pacman -S lxappearance 364 |
365 | # You will most probably need these apps for i3 366 |
367 | $ sudo pacman -S polybar # nice statusbar for i3-based UIs 368 | $ sudo pacman -S rofi # like dmenu, but more customizable 369 | $ sudo pacman -S alacritty # terminal emulator 370 | $ sudo pacman -S dunst # notification manager 371 | $ sudo pacman -S feh # fast and light image viewer 372 | $ sudo pacman -S xss-lock # screen lock controller 373 | $ sudo pacman -S flameshot # screenshot app 374 | $ sudo pacman -S gsimplecal # small calendar widget 375 | $ sudo pacman -S yazi # console file manager 376 |
377 | # additionals to yazi: 378 |
379 | $ sudo pacman -S ueberzugpp # viewing images in terminal 380 |
381 |
382 | 383 | 6. Install login session manager, I prefer `ly` for it's minimalism: 384 | 385 |
386 |
 387 | $ sudo pacman -S ly
 388 | $ sudo systemctl enable ly
 389 | 
390 |
391 | 392 | 7. Install essential system fonts: 393 | 394 |
395 |
 396 | $ sudo pacman -S ttf-dejavu ttf-freefont ttf-liberation ttf-droid terminus-font
 397 | $ sudo pacman -S noto-fonts noto-fonts-emoji ttf-ubuntu-font-family ttf-roboto ttf-roboto-mono ttf-ibm-plex
 398 | 
399 |
400 | 401 | 8. [Optional] Enable sound support on your PC: 402 | 403 |
404 |
 405 | $ sudo pacman -S sof-firmware    # Sound Open Firmware
 406 | $ sudo pacman -S pulseaudio      # A featureful, general-purpose sound server
 407 | $ sudo pacman -S pavucontrol     # PulseAudio Volume Control
 408 | $ sudo pacman -S alsa-utils      # Advanced Linux Sound Architecture - Utilities
 409 | $ sudo pacman -S alsa-plugins    # Additional ALSA plugins
 410 | 
411 |
412 | 413 | 9. [Optional] Enable bluetooth support on your PC: 414 | 415 |
416 |
 417 | $ sudo pacman -S bluez bluez-utils blueman
 418 | $ sudo systemctl enable bluetooth
 419 | 
420 |
421 | 422 | 10. [Optional] Enable printing support on your PC: 423 | 424 |
425 |
 426 | $ sudo pacman -S cups cups-filters cups-pdf system-config-printer
 427 | $ sudo pacman -S hplip    # for HP devices
 428 | $ sudo systemctl enable cups.service
 429 | 
430 |
431 | 432 |
433 | 💡 IMPORTANT NOTE: if there is no option for system-config-printer in xfce4-settings-manager, 434 | go to /usr/share/applications/system-config-printer.desktop and set 435 | Categories=System;Settings;X-XFCE-SettingsDialog;X-XFCE-HardwareSettings; 436 |
437 | 438 | 11. [Optional] Improve battary usage with TLP - utility that basically does kernel settings 439 | tweaking that improve power consumption. More information about TLP 440 | [can be found here](https://linrunner.de/tlp/). More information about TLP-RDW (radio device wizard) 441 | [can be found here](https://linrunner.de/tlp/settings/rdw.html). 442 | 443 |
444 |
 445 | $ sudo pacman -S tlp tlp-rdw
 446 | $ sudo systemctl enable tlp
 447 | 
448 | # execute following commands only if using TLP-RDW: 449 |
450 | $ sudo systemctl enable NetworkManager-dispatcher.service 451 | $ sudo systemctl mask systemd-rfkill.service 452 | $ sudo systemctl mask systemd-rfkill.socket 453 |
454 |
455 | 456 | 12. [Optional] Run service that will discard unused blocks on mounted filesystems. This is useful for 457 | solid-state drives (SSDs) and thinly-provisioned storage. More information on fstrim 458 | [can be found here](https://man7.org/linux/man-pages/man8/fstrim.8.html). 459 | 460 |
461 |
 462 | $ sudo systemctl enable fstrim.timer
 463 | 
464 |
465 | 466 | 13. [Optional] Install GTK themes and icons: 467 | 468 |
469 |
 470 | $ sudo pacman -S arc-gtk-theme adapta-gtk-theme materia-gtk-theme
 471 | $ sudo pacman -S papirus-icon-theme
 472 | 
473 |
474 | 475 | 14. [Optional] Choose fastest pacman mirrors (use your own country list): 476 | 477 |
478 |
 479 | $ sudo reflector --country Germany,Austria,Switzerland \
 480 |                  --fastest 10 \
 481 |                  --threads $(nproc) \
 482 |                  --save /etc/pacman.d/mirrorlist
 483 | 
484 |
485 | 486 | 15. [Optional] Install NetworkManager addons: 487 | 488 |
489 |
 490 | $ sudo pacman -S nm-connection-editor networkmanager-openvpn
 491 | 
492 |
493 | 494 | 16. [Optional] Install vulkan drivers: 495 | 496 |
497 |
 498 | $ pacman -S mesa vulkan-intel   # only for systems with Intel graphics
 499 | $ pacman -S nvidia-utils        # only for systems with Nvidia graphics
 500 | $ pacman -S amdvlk              # only for systems with AMD graphics
 501 | 
502 |
503 | 504 | 17. Reboot to finalize installation: 505 | 506 |
507 |
 508 | $ reboot
 509 | 
510 |
511 | 512 | ### Step 02: Enable hibernation support 513 | 514 | 1. Open your `/etc/fstab` and find UUID for your swap partition 515 | 516 | 2. Open GRUB configuration file and add resume UUID to `GRUB_CMDLINE_LINUX_DEFAULT`: 517 | 518 |
519 |
 520 | $ sudo vim /etc/default/grub
 521 |   Example: 
 522 |   ...
 523 |   GRUB_CMDLINE_LINUX_DEFAULT="quiet splash resume=UUID=<UUID of your swap partition>"
 524 |   GRUB_CMDLINE_LINUX_DEFAULT="quiet splash resume=UUID=97d9e9f5-899f-4e9e-910e-623a5f665271"
 525 |   ...
 526 | 
527 |
528 | 529 | 3. Generate GRUB config: 530 | 531 |
532 |
 533 | $ sudo grub-mkconfig -o /boot/grub/grub.cfg
 534 | 
535 |
536 | 537 | 4. Open mkinitcpio configuration file and add `resume` hook: 538 | 539 |
540 |
 541 | $ sudo vim /etc/mkinitcpio.conf
 542 |   Example: 
 543 |   ...
 544 |   HOOKS="base udev resume autodetect modconf block filesystems keyboard fsck"
 545 |   ...
 546 | 
547 |
548 | 549 | 5. Generate initramfs: 550 | 551 |
552 |
 553 | $ sudo mkinitcpio -p linux
 554 | 
555 |
556 | 557 | 6. From now onwards, you can hibernate your system using: 558 | 559 |
560 |
 561 | $ sudo systemctl hibernate
 562 | 
563 |
564 | 565 |

566 | Section 03: Installing third-party apps and
567 | setting up dev environment 🧑‍💻 568 |

569 |
570 | These is my personal list of apps and utilities which I use on regular basis, 571 | so feel free to fork this repo and add something yours 572 |
573 | 574 | ### Step 01: General-purpose apps 575 | 576 |
577 |
 578 | $ sudo pacman -S chromium          # web-browser
 579 | $ sudo pacman -S obsidian          # note-taking app
 580 | $ sudo pacman -S bitwarden         # password manager for all devices (use keepassxc provider)
 581 | $ sudo pacman -S bitwarden-cli     # command line bitwarden client
 582 | $ sudo pacman -S mousepad          # simple graphical text editor
 583 | $ sudo pacman -S file-roller       # archive manager
 584 | $ sudo pacman -S evince            # pdf viewer
 585 | $ sudo pacman -S xournalpp         # pdf editor
 586 | $ sudo pacman -S libreoffice       # office packages
 587 | $ sudo pacman -S gimp              # image editor
 588 | $ sudo pacman -S gpick             # color picker
 589 | $ sudo pacman -S inkscape          # vector graphics editor
 590 | $ sudo pacman -S fontforge         # fonts editor
 591 | $ sudo pacman -S gparted           # grphical disk management tool
 592 | $ sudo pacman -S vlc               # video player
 593 | $ sudo pacman -S remmina           # remote desktop client
 594 | $ sudo pacman -S shotcut           # video editing tool
 595 | $ sudo pacman -S evolution         # email client
 596 | $ sudo pacman -S redshift          # adjusts the color temperature of your screen
 597 | $ sudo pacman -S obs-studio        # screencasting and streaming app
 598 | $ sudo pacman -S wireshark-qt      # network protocol analyzer
 599 | $ sudo pacman -S spotify-launcher  # spotify client
 600 | $ sudo pacman -S telegram-desktop  # my preffered messenger
 601 | $ sudo pacman -S rclone            # manage or migrate files on cloud storage
 602 | $ sudo pacman -S openvpn           # openvpn client
 603 | $ sudo pacman -S wireguard-tools   # wireguard client
 604 | $ sudo pacman -S arandr            # gui for xrandr
 605 | 
606 |
607 | 608 | ### Step 02: Install package manager for AUR (Arch User Repository) 609 | 610 |
611 |
 612 | $ git clone https://aur.archlinux.org/yay.git
 613 | $ cd yay
 614 | $ makepkg -si
 615 | 
616 |
617 | 618 | ### Step 03: Software development tools 619 | 620 | 1. General purpose development tools: 621 | 622 |
623 |
 624 | $ sudo pacman -S neovim          # powerful console editor
 625 | $ sudo pacman -S zed             # ultimate graphical editor
 626 | $ sudo pacman -S tree-sitter     # parsing system for programming tools
 627 | $ sudo pacman -S tree-sitter-cli # cli tool tree-sitter parsers
 628 | $ sudo pacman -S stow            # configuration manager
 629 | $ sudo pacman -S sqlite3         # console sqlite client
 630 | $ sudo pacman -S tldr            # collection of simplified man pages
 631 | $ sudo pacman -S jq              # cli json processor
 632 | $ sudo pacman -S tmux            # terminal session multiplexer
 633 | $ sudo pacman -S nmap            # network scanner with advanced features
 634 | $ sudo pacman -S masscan         # high performance network scanner
 635 | $ sudo pacman -S pgcli           # console client for PostgreSQL
 636 | $ sudo pacman -S redis           # console client for Redis
 637 | $ sudo pacman -S apache          # http server + some useful utilities (htpasswd)
 638 | $ sudo pacman -S meld            # git visual diff and merge tool
 639 | $ sudo pacman -S websocat        # command line client for websockets
 640 | $ sudo pacman -S sshpass         # noninteractive ssh password provider
 641 | $ sudo pacman -S git-filter-repo # faster and safer git-filter-branch alternative
 642 | $ sudo pacman -S httpie          # human-friendly CLI HTTP client for the API era
 643 | 
644 |
645 | 646 |
647 | 💡 IMPORTANT NOTE: execute sudo setcap 'cap_net_raw+epi' /usr/bin/masscan to enable 648 | the ability to run masscan as non-root user. 649 |
650 | 651 | 2. Infrastructure as a Code and DevOps tools: 652 | 653 |
654 |
 655 | $ sudo pacman -S ansible          # infrastructure as a code tool (bare metal)
 656 | $ sudo pacman -S podman           # cli tool for container management
 657 | $ sudo pacman -S podman-compose   # run multi-container applications with podman
 658 | $ sudo pacman -S docker           # cli tool for container management
 659 | $ sudo pacman -S docker-compose   # run multi-container applications with docker
 660 | $ sudo pacman -S kubectl          # cli tool for managing kubernetes clusters
 661 | $ sudo pacman -S helm             # package manager for kubernetes
 662 | $ sudo pacman -S terraform        # infrastructure as a code tool (clouds)
 663 | 
664 | # configure docker 665 |
666 | $ sudo systemctl enable docker # enable docker daemon on system start 667 | # sudo usermod -a -G docker yourusername # to be able to run docker as non-root 668 | $ newgrp docker # login to docker group without restart 669 |
670 |
671 | 672 | 3. Install Golang and its tools: 673 | 674 |
675 |
 676 | $ sudo pacman -S go
 677 | $ go install github.com/fullstorydev/grpcurl/cmd/grpcurl@latest
 678 | $ go install github.com/hairyhenderson/gomplate/v4/cmd/gomplate@latest
 679 | 
680 |
681 | 682 | 4. Install Java and its tools: 683 | 684 |
685 |
 686 | $ sudo pacman -S jdk8-openjdk    # OpenJDK Java  8 development kit
 687 | $ sudo pacman -S jdk11-openjdk   # OpenJDK Java 11 development kit
 688 | $ sudo pacman -S jdk17-openjdk   # OpenJDK Java 17 development kit
 689 | $ sudo pacman -S jdk21-openjdk   # OpenJDK Java 21 development kit
 690 | $ sudo pacman -S jdk-openjdk     # OpenJDK Java 22 development kit
 691 | $ sudo pacman -S maven           # Java project management tool
 692 | $ sudo pacman -S gradle          # Java project management tool
 693 | 
694 |
695 | 696 |
697 | 💡 IMPORTANT NOTE: JVM version can be switched using archlinux-java. List all available 698 | JVM versions using archlinux-java status and set one using archlinux-java set VERSION. 699 |
700 | 701 | 5. Install Dart and Flutter following instructions from https://docs.flutter.dev/get-started/install/linux 702 | 703 | 6. Install C, C++ and tools for low-level development: 704 | 705 |
706 |
 707 | $ sudo pacman -S gcc         # GNU Compiler Collection, C and C++ frontends
 708 | $ sudo pacman -S gdb         # GNU Debugger
 709 | $ sudo pacman -S clang       # C/C++ frontend compiler for LLVM
 710 | $ sudo pacman -S cmake       # C/C++ project management tool
 711 | $ sudo pacman -S ninja       # Build system with a focus on speed
 712 | $ sudo pacman -S cuda        # NVIDIA GPU programming toolkit
 713 | $ sudo pacman -S nasm        # Asssembler for the x86 CPU architecture
 714 | $ sudo pacman -S boost       # C++ library with general purpose utils and data structures
 715 | $ sudo pacman -S cdrtools    # CD/DVD/BluRay command line recording software
 716 | $ sudo pacman -S qemu-full   # Open source machine emulator and virtualizer
 717 | 
718 |
719 | 720 | 7. Install Python and its tools: 721 | 722 |
723 |
 724 | $ sudo pacman -S python             # python itself
 725 | $ sudo pacman -S python-pip         # python package manager
 726 | $ sudo pacman -S python-virtualenv  # python virtualenv
 727 | $ sudo pacman -S python-poetry      # python package manager (better one)
 728 | 
729 |
730 | 731 | 8. Install Lua: 732 | 733 |
734 |
 735 | $ sudo pacman -S lua       # Collection of Lua tools
 736 | 
737 |
738 | 739 | 9. Install JavaScript and its tools: 740 | 741 |
742 |
 743 | $ sudo pacman -S nodejs    # JavaScript runtime
 744 | $ sudo pacman -S npm       # JavaScript package manager
 745 | $ sudo pacman -S yarn      # JavaScript package manager
 746 | 
747 |
748 | 749 | 10. Install Rust and its tools: 750 | 751 |
752 |
 753 | $ sudo pacman -S rust     # Rust compiler and tools for project management
 754 | 
755 |
756 | 757 | 11. Install Virtualbox: 758 | 759 |
760 |
 761 | $ sudo pacman -S linux-headers          # Headers for building Linux kernel modules
 762 | $ sudo pacman -S virtualbox-host-dkms   # VirtualBox Host kernel modules sources
 763 | $ sudo pacman -S virtualbox             # Hypervisor for x86 virtualization
 764 | 
765 |
766 | 767 | 12. Architecture diagraming tools: 768 | 769 |
770 |
 771 | $ sudo pacman -S plantuml    # Tool for creating UML diagrams
 772 | 
773 |
774 | 775 | 13. Install hugo (static website generator): 776 | 777 |
778 |
 779 | $ sudo pacman -S hugo        # fast and flexible static site generator in go
 780 | $ sudo pacman -S dart-sass   # implementation of sass (required for hugo)
 781 | 
782 |
783 | 784 | 14. Accounting software: 785 | 786 |
787 |
 788 | $ sudo pacman -S gnucash   # Personal and small-business financial-accounting application
 789 | 
790 |
791 | 792 | 15. 3D-Printing software: 793 | 794 |
795 |
 796 | $ sudo pacman -S freecad       # Feature based parametric 3D CAD modeler
 797 | $ sudo pacman -S prusa-slicer  # G-code generator for 3D printers
 798 | 
799 |
800 | 801 | 16. Reverse engineering software 802 | 803 |
804 |
 805 | $ sudo pacman -S radare2         # open-source tools to disasm, debug, analyze and manipulate binary files
 806 | $ sudo pacman -S ghidra          # software reverse engineering framework
 807 | $ r2pm -U && r2pm -ci r2ghidra   # integrate ghidra decompiler into radare2
 808 | 
809 |
810 | 811 | ### Step 04: Install Wine (Windows application runner) 812 | 813 | 1. Go to `/etc/pacman.conf` and uncomment (or add) following lines: 814 | 815 |
816 |
 817 | [multilib]
 818 | Include = /etc/pacman.d/mirrorlist
 819 | 
820 |
821 | 822 | 2. Update package database: 823 | 824 |
825 |
 826 | $ sudo pacman -Syu
 827 | 
828 |
829 | 830 | 3. Install Wine and its utilities: 831 | 832 |
833 |
 834 | $ sudo pacman -S wine         # Compatibility layer for running Windows programs
 835 | $ sudo pacman -S wine-mono    # Wine's replacement for Microsoft's .NET Framework
 836 | $ sudo pacman -S wine-gecko   # Wine's replacement for Microsoft's Internet Explorer
 837 | $ sudo pacman -S winetricks   # Installer for various runtime libraries in Wine
 838 | $ sudo pacman -S zenity       # Display dialog boxes from shell scripts (wine dependency)
 839 | 
840 |
841 | 842 | 4. Configure smooth font in Wine applications: 843 | 844 |
845 |
 846 | $ winetricks settings fontsmooth=rgb
 847 | 
848 |
849 | 850 |
851 | 💡 IMPORTANT NOTE: if you are facing error 852 | wine: Read access denied for device L"\\??\\Z:\\", FS volume label and serial are not available, 853 | go to ~/.wine/dosdevices, remove z: symbolic link and make it point to your $HOME 854 |
855 | 856 | ### Step 05: Install texlive (LaTeX distribution) 857 | 858 | 1. Download texlive installer: 859 | 860 |
861 |
 862 | $ wget http://mirrors.ctan.org/systems/texlive/tlnet/install-tl-unx.tar.gz
 863 | 
864 |
865 | 866 | 2. Unpack texlive installer archive: 867 | 868 |
869 |
 870 | $ mkdir ./texlive
 871 | $ tar -xvf install-tl-unx.tar.gz -C texlive --strip-components=1
 872 | 
873 |
874 | 875 | 3. Run texlive install and select nearest CTAN mirror: 876 | 877 |
878 |
 879 | $ cd ./texlive
 880 | $ sudo ./install-tl -select-repository
 881 | 
882 |
883 | 884 | ### Step 06: Setup Android development tools 885 | 886 | 1. Download zip-archive from here: https://developer.android.com/studio from _Command line tools only_ section. 887 | 888 | 2. Unpack archive and copy cmdline-tools to `$ANDROID_HOME` (in my case `~/Android`): 889 | 890 |
891 |
 892 | $ unzip commandlinetools-linux-..._latest.zip    # archive you got from website
 893 | $ mkdir -p ~/Android/cmdline-tools/latest
 894 | $ mv ./cmdline-tools/* ~/Android/cmdline-tools/latest/
 895 | 
896 |
897 | 898 | 3. Set `ANDROID_HOME` environment variable to `~/Andoird` in `.bashrc` 899 | 900 | 4. Install platform tools, build tools and accept all licenses: 901 | 902 |
903 |
 904 | $ sdkmanager "platform-tools" "platforms;android-29"
 905 | $ sdkmanager "build-tools;29.0.3"
 906 | $ sdkmanager --licenses
 907 | $ sdkmanager --update
 908 | 
909 |
910 | 911 | ### Step 07: Install Yubikey tools 912 | 913 |
914 |
 915 | $ sudo pacman -S yubikey-manager
 916 | $ sudo pacman -S yubikey-personalization-gui
 917 | 
918 |
919 | 920 | ### Bonus: My list of reverse engineering tools 921 | 922 | 1. Binary reverse engineering: 923 | `gdb`, `strace`, `ltrace`, `ldd`, `objdump` `radare2`, `frida`, 924 | `Ghidra`, `IDA Pro`, `cutter` + `rz-ghidra` + `cutterref`, `angr-management` 925 | `API Monitor`, `PEiD`, `UpxUnpacker` 926 | 927 | 2. Python: `pycdc` 928 | 929 | 3. Java: `jd-gui`, `jadx` 930 | 931 | 4. C#: `Avalonia ILSpy` 932 | 933 |

934 | Section 04: F.A.Q.s, bug fixes and other useful tips and playbooks 935 | for Arch Linux 🪲 936 |

937 | 938 | ### Playbook 01: Fix XHCI hibernation error 939 | 940 | In some Linux kernels there are some broken USB 3.0 device drivers, that _sometimes_ wake up 941 | the system right after you launch hibernation process. If you see errors like this in your 942 | `dmesg` command output after an unsuccessful hibernation: 943 | 944 |
945 |
 946 | xhci_hcd 0000:00:14.0: PM: pci_pm_freeze(): hcd_pci_suspend+0x0/0x20 returns -16
 947 | xhci_hcd 0000:00:14.0: PM: dpm_run_callback(): pci_pm_freeze+0x0/0xc0 returns -16
 948 | xhci_hcd 0000:00:14.0: PM: failed to freeze async: error -16
 949 | 
950 |
951 | 952 | To fix the issue put following lines in `/usr/lib/systemd/system-sleep/xhci` and make this file executable: 953 | 954 |
955 |
 956 | #!/bin/sh
 957 | 
958 | run_pre_hook() { 959 | echo "Disable xhci module before suspend at $(date)..." >> /tmp/systemd_suspend_log 960 | grep XHC.\*enable /proc/acpi/wakeup && echo XHC > /proc/acpi/wakeup 961 | } 962 |
963 | run_post_hook() { 964 | echo "Enable xhci module after wakeup from $(date)" >> /tmp/systemd_suspend_log 965 | grep XHC.\*disable /proc/acpi/wakeup && echo XHC > /proc/acpi/wakeup 966 | } 967 |
968 | case $1 in 969 | pre) run_pre_hook ;; 970 | post) run_post_hook ;; 971 | esac 972 |
973 |
974 | 975 | Original solution: https://gist.github.com/ioggstream/8f380d398aef989ac455b93b92d42048 976 | 977 | ### Playbook 02: Fix GRUB screen resolution 978 | 979 | _This can help if you have very tiny grub font on your 4k monitor_ 980 | 981 | 1. Open `/etc/default/grub` with text editor and add following lines: 982 | 983 |
984 |
 985 | GRUB_TERMINAL_OUTPUT="gfxterm"
 986 | GRUB_GFXPAYLOAD_LINUX=keep
 987 | GRUB_GFXMODE=1920x1080x32,1024x768x32,auto
 988 | 
989 |
990 | 991 | 2. Generate `grub.cfg`: 992 | 993 |
994 |
 995 | $ sudo grub-mkconfig -o /boot/grub/grub.cfg
 996 | 
997 |
998 | 999 | ### Playbook 03: Fix Lightdm screen resolution 1000 | 1001 | _This can help if you use lightdm and have very tiny font on your 4k monitor_ 1002 | 1003 |
1004 |

Open /etc/lightdm/lightdm.conf file and add following line under [Seat:\*] section:

1005 |
1006 | display-setup-script=xrandr --output eDP-1 --mode 1920x1080
1007 | 
1008 | P.S. your screen output name, like eDP-1 in my case, can be found in xrandr -q 1009 |
1010 | 1011 | ### Playbook 04: Activate dark mode in GTK apps 1012 | 1013 |
1014 |
1015 | $ gsettings set org.gnome.desktop.interface color-scheme 'prefer-dark'
1016 | 
1017 |
1018 | 1019 | ### Playbook 05: System goes to sleep too fast with Xfce 1020 | 1021 | - If system goes to sleep after 3-5 minutes, this might be screensaver. 1022 | To stop this, disable option `Settings -> Screensaver -> Activate Screensaver when computer is idle`. 1023 | 1024 | ### Playbook 06: All requests, expept those to internal addresses, fail after launching Wireguard VPN 1025 | 1026 | - This happens when your Wireguard server can only handle requests only to configured IP addresses and DNS names. 1027 | Use `resolvectl revert wg0` (change `wg0` to your wireguard interface name). 1028 | This will prevent system from using Wireguard interface for all routes. 1029 | 1030 | ### Playbook 07: Screen freezed (or hangs) after 2-10 minutes of inactivity when using Picom 1031 | 1032 | - If you screen freezes (or hangs) while not touching keyboard or mouse for some time (usually 2-10 minutes), 1033 | this might be an issue with picom. Try first stopping picom at all to see if this helps. 1034 | If yes, try to change rendering backend of picom from `xrender` to `glx` and check if it helps. 1035 | Worked for me. 1036 | 1037 | ### Playbook 08: Remove annoying menubar from Slack 1038 | 1039 | - `Window -> Always show menu bar -> disable` 1040 | 1041 | ### Playbook 09: Encrypt external disk 1042 | 1043 | 1. [Only once] Select disk partition to be encrypted (in this example `/dev/sdb1`) and initialize LUKS: 1044 | 1045 |
1046 |
1047 | $ sudo cryptsetup luksFormat /dev/sdb1
1048 | 
1049 |
1050 | 1051 | 2. Open and decrypt LUKS partition, this will create decrypted device at `/dev/mapper/cryptdev`: 1052 | 1053 |
1054 |
1055 | $ sudo cryptsetup open /dev/sdb1 cryptdev
1056 | 
1057 |
1058 | 1059 | 3. [Only once] Initialize filesystem on decrypted partition, in this example `ext4`: 1060 | 1061 |
1062 |
1063 | $ sudo mkfs.ext4 /dev/mapper/cryptdev
1064 | 
1065 |
1066 | 1067 | 4. Mount created filesystem, to `/mnt` folder in this example, and use it as you want: 1068 | 1069 |
1070 |
1071 | $ sudo mount /dev/mapper/cryptdev /mnt
1072 | 
1073 |
1074 | 1075 | 5. Unmount filesystem and close LUKS device after using it: 1076 | 1077 |
1078 |
1079 | $ sudo umount /mnt
1080 | $ sudo cryptsetup close cryptdev
1081 | 
1082 |
1083 | 1084 | 6. [If needed] Change LUKS disk encryption passphrase: 1085 | 1086 |
1087 | TLDR: LUKS generates a single master key (also known as the "encryption key"), which is used to encrypt 1088 | the data on the disk. Instead of storing the master key directly, LUKS uses key slots. Each slot contains the 1089 | master key encrypted with a unique password or other authentication information. To change the password, we 1090 | need to obtain LUKS slot number for the current key. 1091 |
1092 | 1093 |
1094 |
1095 | $ sudo cryptsetup luksDump /dev/sdb1             # most probably it will be 0
1096 | $ sudo cryptsetup luksChangeKey /dev/sdb1 -S 0   # use your own slot number in -S parameter
1097 | 
1098 |
1099 | 1100 | ### Playbook 10: Fix external microphone artefacts happening after ~20 minutes of connection 1101 | 1102 | 1. Open `/etc/pulse/daemon.conf`. 1103 | 2. Set `exit-idle-time = -1`. Don't forget to uncomment this line if it's commented. 1104 | 3. Stop pulseaudio service: `pulseaudio -k` 1105 | 4. Clear pulseaudio cache: `rm -r ~/.config/pulse/*` 1106 | 5. Start pulseaudio once again: `pulseaudio --start` 1107 | -------------------------------------------------------------------------------- /logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/silentz/arch-linux-install-guide/d89b84fe65a472c24967ccf903fec3d70fe80899/logo.png --------------------------------------------------------------------------------