Inital commit. there isnt much here, but its a start
This commit is contained in:
		
						commit
						7365c708e3
					
				
					 2 changed files with 267 additions and 0 deletions
				
			
		
							
								
								
									
										13
									
								
								TODO
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								TODO
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,13 @@
 | 
				
			||||||
 | 
					host this thing with gatsby, jekyll, hugo, or antora
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					write about interacting with nextcloud instance via cli with cadaver, rclone, maybye lftp?
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					write about synthing, talk about cli program syncthingmanager
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					write about installing gittea
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					write about how static site is generated
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					write about w3ms featurs. Many people dont realize it has tabs and bookmarks.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					write about magic-wormhole
 | 
				
			||||||
							
								
								
									
										254
									
								
								arch.adoc
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										254
									
								
								arch.adoc
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,254 @@
 | 
				
			||||||
 | 
					installing btrfs, systemd-boot, and LUKS with a hibernateable swap partition.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					== Installing via ssh
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					It can sometimes be nice to install using the same computer you are reading this documentation on.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[IMPORTANT]
 | 
				
			||||||
 | 
					====
 | 
				
			||||||
 | 
					On a normal, already installed machine, *NEVER* use just a password for SSH. *ESPECIALLY* if it is internet-facing or connected to a public network. 
 | 
				
			||||||
 | 
					We are only doing this because we are (hopefully) on a personal network, and the password-based SSH session only exists on the Arch ISO, so as soon as you boot into your fresh system, the SSH session will be gone.
 | 
				
			||||||
 | 
					====
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					On the installee, make a password for the root account
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 # passwd
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Enable SSH using
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 # systemctl start sshd.service
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Find the ip adress with
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 # ip addr show
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					you are looking for a line like
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 inet 192.168.1.162/24 brd 192.168.1.255 scope global dynamic enp0s25
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					in this case, my LAN IP is 192.168.1.162
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					now, on the pc you are going to be SSHing from,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 # ssh root@[ip we just found on installee]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					and type in the password you set on the installee
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					now lets continue with the installation.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					== inital setup
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					verify you are connected to the internet
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 # ping 1.1.1.1
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					turn on ntp
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 # timedatectl set-ntp true
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					== Partitioning
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					create paritions using the tools of your choice. I will be using the following partition map. If you use a different one, then 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					an EFI partition of 512M
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					a swap partition with a size equal to your RAM.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					a btrfs partition containing the rest of the space.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					== Encryption
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Encrypt the btrfs parition with
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 # cryptsetup luksFormat /dev/sda3
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 # cryptsetup config --label="btrfs" /dev/sda3
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					and enter the encryption passkey. I reccomend making it a full sentence for security.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Encrypt the swap partition. Use the same password as last time.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 # cryptsetup luksFormat /dev/sda2
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 # cryptsetup config --label="swap" /dev/sda2
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					now open the newly encrypted partitions
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 # cryptsetup open /dev/sda2 swap
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 # cryptsetup open /dev/sda3 btrfs
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					== Filesystem creation
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					format the EFI poartion with FAT32 and give it the label EFI (label can be something else.)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 # mkfs.vfat -F32 -n EFI /dev/sda1
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					format the swap partiton as swap
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 # mkswap /dev/mapper/swap
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					format the root partition with btrfs and give the label root (label can be something else.)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 # mkfs.btrfs -L btrfs /dev/mapper/btrfs
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					== Creating and mounting subvolumes
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					....
 | 
				
			||||||
 | 
					# mount /dev/mapper/btrfs /mnt           
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# btrfs subvolume create /mnt/root
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# btrfs subvolume create /mnt/home
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# umount /mnt
 | 
				
			||||||
 | 
					....
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					mount subvols and EFI partition
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					....
 | 
				
			||||||
 | 
					# mount -o noatime,nodiratime,compress=zstd,ssd,discard,subvol=root /dev/mapper/btrfs /mnt
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# mkdir /mnt/home
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# mount -o noatime,nodiratime,compress=zstd,ssd,discard,subvol=home /dev/mapper/btrfs /mnt/home
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# mkdir /mnt/boot
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# mount /dev/sda1 /mnt/boot
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# swapon /dev/mapper/swap
 | 
				
			||||||
 | 
					....
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					== installing base system, generating *stab
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					install arch (ajust this to suit your needs), change intel-ucode if using an AMD processor.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 # pacstrap /mnt linux linux-firmware base base-devel btrfs-progs zsh neovim git stow tmux connman wpa_supplicant openvpn fzf htop rsync tig tree xdg-user-dirs units python tree openssh w3m curl intel-ucode
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					generate an fstab
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 # genfstab -U /mnt > /mnt/etc/fstab
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					make /mnt/etc/crypttab.initramfs containing:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					....
 | 
				
			||||||
 | 
					#our swap device
 | 
				
			||||||
 | 
					swap LABEL=swap
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#our main device
 | 
				
			||||||
 | 
					btrfs LABEL=btrfs
 | 
				
			||||||
 | 
					....
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					== system config
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					chroot into the new system
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 # arch-chroot /mnt/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					set time zone.
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 # ln -sf /usr/share/zoneinfo/Region/City /etc/localtime
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					run hwclock
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 # hwclock --systohc
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					uncomment needed locales in /etc/locale.gen (you always need to at least uncomment en_US.UTF-8 UTF-8.)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					gen locales
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 # locale-gen
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					set LANG variable
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 # echo 'LANG=en_US.UTF-8' > /etc/locale.conf
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					create the hostname file
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 # echo '[myhostname]' > /etc/hostname
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					and add maching entries to /etc/hosts, like so (if static ip, use that. if dynamic, use 127)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					....
 | 
				
			||||||
 | 
					127.0.0.1	localhost
 | 
				
			||||||
 | 
					::1		localhost
 | 
				
			||||||
 | 
					127.0.1.1	myhostname.localdomain	myhostname
 | 
				
			||||||
 | 
					....
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					== installing the boot loader
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					edit /etc/mkinitcpio.conf so the HOOKS line looks like this:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					....
 | 
				
			||||||
 | 
					HOOKS=(base systemd udev autodetect modconf block sd-encrypt btrfs resume filesystems keyboard fsck)
 | 
				
			||||||
 | 
					....
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					and regen the initramfs
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 # mkinitcpio -p linux
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					install systemd-boot
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 # bootctl install
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					create /boot/loader/entries/arch.conf containing:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					....
 | 
				
			||||||
 | 
					title Arch Linux
 | 
				
			||||||
 | 
					linux /vmlinuz-linux
 | 
				
			||||||
 | 
					initrd /intel-ucode.img
 | 
				
			||||||
 | 
					initrd /initramfs-linux.img
 | 
				
			||||||
 | 
					options root=/dev/mapper/btrfs rootflags=subvol=/root resume=/dev/mapper/swap
 | 
				
			||||||
 | 
					....
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					edit /boot/loader/loader.conf and add:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					....
 | 
				
			||||||
 | 
					default arch.conf
 | 
				
			||||||
 | 
					timeout 2
 | 
				
			||||||
 | 
					console-mode max
 | 
				
			||||||
 | 
					editor no
 | 
				
			||||||
 | 
					....
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					== system config
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					set root password
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 # passwd
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					exit and shutdown the system
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 # exit
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 # shutdown now
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					remove the install media, and boot back up. make sure everythign boots. from now on, configure the system as normal.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					== configuring userspace
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					add a non-root user
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 # useradd -m -G wheel -s /bin/sh your_username
 | 
				
			||||||
 | 
					 # passwd your_username
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					symlink neovim to vi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 # ln -s /usr/bin/nvim /usr/bin/vi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					configure sudo
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 # visudo
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					uncomment the line that reads
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 %wheel ALL=(ALL) ALL
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					enable multilib: uncomment the following lines in /ec/pacman.conf
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					....
 | 
				
			||||||
 | 
					[multilib]
 | 
				
			||||||
 | 
					Include = /etc/pacman.d/mirrorlist
 | 
				
			||||||
 | 
					....
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Congrats! you now have a barebones, but functional, encrypted arch install!
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue