So this install covers a fresh Arch Install, dual booting Windows on UEFI partition.
This step verifies the image signature of an arch iso to catch malicious images. Do this step before install. Make sure you download the .sig file along with the iso. Then run the command below in terminal to verify the iso image. If everything looks good, then burn the iso to a usb and get ready to install Arch!
gpg --keyserver-options auto-key-retrieve --verify archlinux-*.iso.sig
If using Ethernet, you can skip to step edit this to include contents ***************
Most laptops usually come with an atheros Wi-Fi chipset included. If that is the case then use the daemon iwd to connect to a network. To get an interactive prompt type the command below to open the iwctl client program.
iwctl
To list your wifi device type the following commmand.
[iwd]# device list
This should give you the name of your wifi device. Something like wlan0
.
To connect to a network type the following commands, replace wlan0
with your device name.
Replace SSID
with the name of the network you want to connect to.
[iwd]# station wlan0 scan
[iwd]# station wlan0 get-networks
[iwd]# station wlan0 connect SSID
ping google.com or 8.8.8.8
ping 8.8.8.8
lsblk
partition scheme should be the following
partitions |
---|
efi partition created by windows |
linux swap should be 2x size of memory |
linux filesystem remaining available space |
cfdisk
If installing arch on NVME drive find name of drive using lsblk
. The drive name should be something like nvme0n1
. Then run cfdisk on this drive and create partitions on there.
cfdisk /dev/nvme0n1
the sda numbers can be different.
mkfs.btrfs /dev/sda1 #linux filesystem
mkswap /dev/sda3 #linux swap
swapon /dev/sda3
For an NVME drive
mkfs.btrfs /dev/nvme0n1p7 #linux filesystem
mkswap /dev/nvme0n1p6 #linux swap
swapon /dev/nvme0n1p6
For a non-Nvme disk
mount /dev/sda1 /mnt #linux filesystem
mkdir /mnt/{boot,home}
mount /dev/sda2 /mnt/boot #this should be the EFI partition
For an NVME disk
mount /dev/nvme0n1p7 /mnt #linux filesystem
mkdir /mnt/{boot,home}
mount /dev/nvme0n1p1 /mnt/boot #this should be the EFI partition
Mirrors |
---|
mirrors.unixheads.org |
mirror.neotuli.net |
mirror.rit.edu |
However this step is largely useless.
Once connected to internet reflector
will update mirror list automaticallly
To change enter command:
vim /etc/pacman.d/mirrorlist
Going to install archlinux base, linux and tools such as vim and vi.
pacstrap /mnt base base-devel linux linux-firmware vim vi
Install netctl and dependent packages to access wifi-menu.
pacstrap /mnt netctl dialog wpa_supplicant
So after installing Arch, we need to configure the system and install our desktop enviroment.
hostnamectl set-hostname archbox
or
echo archbox >> /mnt/etc/hostname
Keyboard is preset to US,so no change needed. However, if you want to know how to change to non-US keyboards check out Arch Wiki for Details.
genfstab -U -p /mnt > /mnt/etc/fstab
Enter the machine using the arch-chroot
command and create a password.
arch-chroot /mnt /bin/bash
passwd root
This sets timezone assuming central time. Change according to your local timezone.
ln -s /usr/share/zoneinfo/America/Chicago /etc/localtime
hwclock --systohc --utc
Uncomment en_US.UTF-8 UTF-8 and other needed localizations in /etc/locale.gen.
vim /etc/locale.gen
Then generate the localizations.
locale-gen
touch /etc/locale.conf # Create config locale file
echo "LANG=en_US.UTF-8" >> /etc/locale.conf # Add our locale to config file
Make sure that your efi partition is mounted to /mnt/boot.
if not run the command mount /dev/sda# /mnt/boot
or mount /dev/nvme0n1p# /mnt/boot
where # is your efi boot partition number.
arch-chroot /mnt
pacman -S grub efibootmgr #Installing grub and efibootmgr
mkdir /boot/EFI/
grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=GRUB
grub-mkconfig -o /boot/grub/grub.cfg
install dhcpcd
pacman -S dhcpcd
Do not enable dhcpcd if you plan on using wifi to connect to the internet. This is to make sure your ethernet works when you boot into the installed media.
systemctl enable dhcpcd
umount -R unmounts the installed media recursivly. So both /mnt/home /mnt/boot and /mnt would be unmounted.
exit
umount -R /mnt
swapoff /dev/sda3
reboot
On reboot windows isn't present but don't worry it will after some configuration. Once you reboot annd login, inorder to connect to wifi run the command
wifi-menu -o
If wifi-menu not working then follow the following instructions to get wifi-menu working. Instructions
In order to make windows visable in grub bootloader you need a package called OS-Prober. Install:
pacman -S os-prober
Now we have to update grub.cfg and reboot to check if windows appear.
grub-mkconfig -o /boot/grub/grub.cfg
reboot
pacman -Syu
pacman -S sudo
groupadd sudo
useradd -m -g sudo -s /bin/bash abfarah
passwd abfarah
visudo # give user sudo privlages
when doing visudo
make sure to uncomment the %sudo
line.
To make zsh the default terminal for the new user and root.
Get the lists of shells
chsh -l
Change root's shell to zsh.
chsh -s /usr/bin/zsh
Then lists the user's current shell.
grep abfarah /etc/passwd
Change the neew user's shell to zsh using usermod.
usermod --shell /usr/bin/zsh abfarah
confirm the shell was changed.
grep abfarah /etc/passwd
Log out and login to new user; in my case abfarah.
xf86-video-vesa has the nvideo drivers for GTX graphic cards. IE GTX3080. Make sure that yours matches.
sudo pacman -S xorg xorg-server xorg-server xorg-xinit xorg-apps mesa
sudo pacman -S xf86-video-nouveau nvidia
sudo pacman -S git wget curl zsh
pacman -S multilib-devel fakeroot jshon make pkg-config autoconf automake patch
git clone https://aur.archlinux.org/yay.git
cd yay
makepkg -si
cd ..
rm -rf yay
pacmixer is our frontend for managing our audio input/output.
yay -S alsa-lib alsa-utils alsa-oss alsa-plugins
yay -S pulseaudio
yay -S pacmixer
yay -S neofetch
yay -S xorg xterm xorg-twm xorg-xclock
The ttf installes are fonts for awesome.
when changing ~/.xinitrc
make it match the .xinitrc
file on github.
yay -S awesome
yay -S ttf-droid ttf-dejavu ttf-liberation
git clone https://github.com/abfarah/dotfiles.git
cp ./dotfiles/arch/.xinitrc ~/.xinitrc
mkdir -p .config/awesome
cp /etc/xdg/awesome/rc.lua .config/awesome/
cp -r /usr/share/awesome/* .config/awesome/
sudo yay -S rxvt-unicode pcmanfm
10. Installing ly. as our login manager
yay -S pam xorg-xauth
git clone https://github.com/nullgemm/ly.git
cd ly
make github
make
sudo make install
sudo systemctl enable ly.service
sudo systemctl disable [email protected]
To change color of login manager You should add this line:
ExecStartPre=/usr/bin/printf '%%b' '\e]P0{background-color}\e]P7{foreground-color}\ec'
On file /lib/systemd/system/ly.service
, line 8 (under type=idle). Change background-color and foreground-color to the RGB code of the desired color
My colors
ExecStartPre=/usr/bin/printf '%%b' '\e]P00A1529\e]P7FFFFFF\ec'
startx
The next steps from here will be to change default terminal to termite. Installing oh-my-zsh and configuring vim. Theming and adding extra coconut oil to the rest of our build.