Notes to install Windows alongside Arch Linux (using GNOME)
- Windows USB set with Windows tool
- Arch Linux ISO set with Rufus
- Partition Scheme:
MBR
- Partition Scheme:
- BIOS configured:
- Disable fast boot: Advanced Mode > Boot > Boot Configuration > Fast Boot > Disabled
- Disable CSM: Advanced Mode > Boot > CSM > Launch CSM > Disabled
- Configure Secure boot:
- Advanced Mode > Boot > Secure Boot > OS Type > Other OS
- Advanced Mode > Boot > Secure Boot > Secure Boot Mode > Custom
- Make sure that RAM is using the right profile.
- This might require using latest BIOS FW, otherwise, it might result in the OS crashing
- For Windows, it is a blue screen
- For Linux, it just froze
- This might require using latest BIOS FW, otherwise, it might result in the OS crashing
- Install with custom installation
- Delete all partitions
- Allocate memory for your Windows partition
- Allocate the unallocated space into an empty partition, which will be later used for Arch
- Finish installation
- Disable Fast Boot from Windows
- Settings > System > Power & Sleep > Additional power settings > Choose what power buttons do > Untick Fast Boot
- Boot the USB
- Set the console keyboard layout:
loadkeys es
- Verify the boot mode:
ls /sys/firmware/efi/efivars
- If the command shows the directory without error, then the system is booted in UEFI mode. If the directory does not exist, the system may be booted in BIOS (or CSM) mode.
- Connect to the internet:
- Verify that your connection is up:
ip link
- If the desired interface does not show as up:
ip set dev <interface> up
- If the desired interface does not show as up:
- Verify that your connection is up:
- Update the system clock:
timedatectl
- List disk partitions:
fdisk -l
. We need to identify the following partitions:- An EFI System partition: It should have been generated during Windows installation (usually
sda1
ornvme0n1p1
) - A root partition: The free partition that we made during Windows installation with type labeled as “Microsoft basic data” (usually
sda5
ornvme0n1p5
)
- An EFI System partition: It should have been generated during Windows installation (usually
- Format the disk partition:
mkfs.ext4 /dev/<root_partition>
- Mount the file systems:
- Root partition:
mount /dev/<root_partition> /mnt
- EFI partition:
mount --mkdir /dev/<efi_partition> /mnt/efi
- Root partition:
- Install essential packages:
pacstrap -K /mnt base linux linux-firmware
- Fstab:
genfstab -U /mnt >> /mnt/etc/fstab
The fstab file can be used to define how disk partitions, various other block devices, or remote file systems should be mounted into the file system.
- Chroot:
arch-chroot /mnt
chroot is an operation that changes the apparent root directory for the current running process and their children.
- Time zone:
ln -sf /usr/share/zoneinfo/Europe/Madrid /etc/localtime
hwclock --systohc
- Install nano:
pacman -S nano
- Localization:
- Edit
/etc/locale.gen
:nano /etc/locale.gen
- Uncomment
en_US.UTF-8 UTF-8
- Uncomment
- Generate the locales:
locale-gen
- Create the
locale.conf
file, and set the LANG variable accordingly:nano /etc/locale.conf
LANG=en_US.UTF-8
- Set console keyboard layout:
nano /etc/vconsole.conf
KEYMAP=es
- Edit
- Network Configuration
- Create the hostname file:
nano /etc/hostname
Zephyr
- Install and set NetworkManager:
pacman -S networkmanager
systemctl enable NetworkManager
- Create the hostname file:
- Recreate the initramfs image:
mkinitcpio -P
- Set the root password:
passwd
- Configure the bootloader, GRUB
- Install the necessary packages:
pacman -S grub os-prober efibootmgr
- To recognize other OSs, edit
/etc/default/grub
and add/uncomment:GRUB_DISABLE_OS_PROBER=false
- Mount EFI partition:
mount /dev/<efi_partition> /efi
- This may be not required since its already mounted
- Install GRUB EFI application:
grub-install --target=x86_64-efi --efi-directory=/efi --bootloader-id=GRUB
- Use the grub-mkconfig tool to generate
/boot/grub/grub.cfg
:grub-mkconfig -o /boot/grub/grub.cfg
- Install the necessary packages:
- Enable Microcode
- Install the correct package intel/amd) :
pacman -S amd-ucode
- Reconfigure GRUB:
grub-mkconfig -o /boot/grub/grub.cfg
- Install the correct package intel/amd) :
- Exit arch: Ctrl + d
- Unmount partitions:
umount -R /mnt
- Reboot
- Log in with: root -
Post-Installation: General Recommendations
- Add your user to a group :
useradd -m -G wheel -s /bin/bash sergio
- Set a password:
passwd sergio
- Set up sudo:
- Install the package:
pacman -S sudo
- Configure it:
EDITOR=nano visudo
- Uncomment the line:
%wheel ALL=(ALL:ALL) ALL
- Uncomment the line:
- Install the package:
- Display server, Xorg or Wayland
-
Identify your GPU:
lspci -v | grep -A1 -e VGA -e 3D
-
Install the proper drivers:
pacman -S nvidia nvidia-utils
For the Turing (NV160/TUXXX) series or newer the nvidia-open package may be installed for open source kernel modules on the linux kernel (On other kernels nvidia-open-dkms must be used).
-
Install a display server:
- Wayland:
pacman -S wayland weston
- Xorg:
pacman -S xorg-server xorg-apps
- Wayland:
-
- Desktop environment, GNOME
- Install the necessary packages
pacman -S gnome gnome-extra
- Use default config
- Enable it:
systemctl enable gdm.service
- Reboot
- Install the necessary packages
- Settings > Keyboard > Add "Spanish" input source and remove the others
- Settings > Multitasking > Multi-Monitor > Workspaces on all displays
- Install necessary packages for blueetooth (pulseaudio and
bluedoid
might also be required):sudo pacman -S pulseaudio pulseaudio-alsa pulseaudio-bluetooth blueberry bluez bluez-utils
- Enable and start the service
systemctl start bluetooth.service systemctl enable bluetooth.service
- Use Grub Customizer to rename the entries and order
- Change grub-theme:
git clone https://github.com/vinceliuice/grub2-themes cd grub2-themes sudo ./install.sh -t vimix -b
- Go to Settings > Keyboard Shortcuts > View and Customize Shortcuts
- Settings > Keyboard Shortcuts> Set "Switch windows" to
Alt+Tab
. - Set
Ctrl+Alt+T
to openalacritty
.
- Settings > Keyboard Shortcuts> Set "Switch windows" to
- Install reflector:
sudo pacman -S reflector rsync
- Sort the 30 most recently synchronized mirrors by download speed and overwrite the local mirrorlist:
sudo reflector --latest 50 --sort rate --save /etc/pacman.d/mirrorlist
- Run:
sudo usermod -a -G "$(stat -c "%G" /dev/ttyUSB0)" $USER
- Port may need to be updated
- Enable the daemon:
systemctl enable docker
- Create the docker group:
sudo groupadd docker
- Add your user to the docker group:
sudo usermod -aG docker $USER
- Reboot
- Verify that you can run
docker
commands withoutsudo
.
- Enable Search plugin: View > Search Engine
- Go to the Search tab. Search plugins> Check for updates.
- Install any other plugin
- Clone the git repo with vale rules
- Initialize it:
vale sync
- Configure VS Code
vale.valeCLI.config
configuration to point at the.vale.ini
of the cloned repo.
In Linux:
timedatectl set-local-rtc 1 --adjust-system-clock
On Windows, make sure the time is automatically set
- Go to Bluetooth & devices > Mouse > Additional mouse settings
- Switch to the Pointer Options tab, then untick the Enhanced pointer precision box.
- Right click on desktop > Display settings > Choose the display > Update the Choose a refresh rate field
- Edit
C:\Riot Games\League of Legends\Config\game.cfg
file- Set
WindowMode
to 2 instead of 0
- Set
- Set
C:\Riot Games\League of Legends\Config\game.cfg
to read-only- Right click > Properties > Check the Read-only attribute
- Enable Search plugin: View > Search Engine
- Go to the Search tab. Search plugins > Check for updates.
- Install any other plugin
- Disable
Win+Space
shortcut- Open PowerToys > Keyboard manager > Enable it > Remap a shortcut
- Select:
Win (Left) + Space
- To send:
Disable
- Select:
- Open PowerToys > Keyboard manager > Enable it > Remap a shortcut
- Disable Performance Overlay: Settings > General > Turn off In-game Overlay