Install Archlinux on XPS 13 9370 DualBoot with Windows
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Resource | |
# https://gist.github.com/brammitch/281e9a2f3aca57ae4a333fc63732f602 | |
# https://wiki.archlinux.org/index.php/Installation_guide | |
# https://wiki.archlinux.org/index.php/Dell_XPS_13_(9370) | |
# Switching from RAID to AHCI | |
# https://gist.github.com/chenxiaolong/4beec93c464639a19ad82eeccc828c63 | |
# https://www.tenforums.com/drivers-hardware/15006-attn-ssd-owners-enabling-ahci-mode-after-windows-10-installation.html | |
# Turn off Windows fast boot | |
# http://lifehacker.com/enable-this-setting-to-make-windows-10-boot-up-faster-1743697169 | |
# Set the keyboard layout and font | |
loadkeys it | |
setfont latarcyrheb-sun32 | |
# Verify the boot mode | |
ls /sys/firmware/efi/efivars | |
# Connect to the Internet | |
# If you have a WPA2 Enterprise (user+password) setup netctl or easly use NetShare android app (wifi bridge) | |
wifi-menu -o | |
# if you need to use a proxy (e.g. NetShare) | |
export http_proxy=172.25.21.6:44355 | |
# Update the system clock | |
timedatectl set-ntp true | |
# Check service status | |
timedatectl status | |
# if under a proxy (e.g. NetShare app), set the date manually: date +%T -s "11:14:00" and execute timedatectl after installation | |
# Resizing NTFS Windows partition | |
# Display partitions status | |
# https://gparted.sourceforge.io/download.php | |
# Partition the disks | |
# EFI partition will not be created since we are dual booting with Windows 10 | |
# Existing EFI partition will be mounted to /boot | |
# Identify disks | |
lsblk | |
cgdisk /dev/nvme0n1 | |
# Create 8GiB swap partition (8200) | |
# Create 100% LVM partition (8e00) | |
# Exit cgdisk | |
# List devices for LVM | |
lvmdiskscan | |
# Create physical volume | |
pvcreate /dev/nvme0n1p8 | |
# Verify physical volumes | |
pvdisplay | |
# Create volume group | |
vgcreate xps_vg /dev/nvme0n1p8 | |
# Verify volume groups | |
vgdisplay | |
# Create logical volumes | |
lvcreate -l100%FREE xps_vg -n lv_root | |
#lvcreate -L 40G xps_vg -n lv_home | |
# Verify logical volumes | |
lvdisplay | |
# Format the partitions | |
# Format /root and /home as ext4 | |
mkfs.ext4 /dev/xps_vg/lv_root | |
#mkfs.ext4 /dev/xpsvg/lvhome | |
# Setup swap partition | |
mkswap /dev/nvme0n1p7 | |
swapon /dev/nvme0n1p7 | |
# Mount the file systems | |
# Mount /root | |
mount /dev/xps_vg/lv_root /mnt | |
# Mount /home | |
mkdir /mnt/home | |
# mount /dev/xps_gv/lv_home /mnt/home | |
# Mount existing EFI partition | |
mkdir /mnt/boot | |
mount /dev/nvme0n1p1 /mnt/boot | |
# Select mirrors | |
# Edit mirros list | |
vim /etc/pacman.d/mirrorlist | |
# Install the base packages | |
pacstrap /mnt base vim git efibootmgr wpa_supplicant iw zsh dialog sudo binutils make base-devel | |
# Configure the system | |
# Fstab | |
# Generate an fstab file | |
genfstab -L /mnt >> /mnt/etc/fstab | |
# Verify and adjust /mnt/etc/fstab | |
# Chroot | |
# Change root into the new system | |
arch-chroot /mnt | |
# Time zone | |
# Set the time zone | |
ln -sf /usr/share/zoneinfo/Europe/Rome /etc/localtime | |
# Generate /etc/adjtime | |
hwclock --systohc | |
# Locale | |
# Uncomment en_US.UTF-8 UTF-8 in /etc/locale.gen and generate them with | |
locale-gen | |
# Set the LANG variable in /etc/locale.conf | |
echo 'LANG=en_US.UTF-8' > /etc/locale.conf | |
# Set keyboard font | |
echo 'FONT=latarcyrheb-sun32' > /etc/vconsole.conf | |
# Set keyboard layout | |
echo 'KEYMAP=it' >> /etc/vconsole.conf | |
# 3.5 Hostname | |
echo 'arch-xps' > /etc/hostname | |
vi /etc/hosts | |
127.0.0.1 localhost | |
::1 localhost | |
127.0.1.1 arch-xps.localdomain arch-xps | |
# Initramfs | |
# Get rid of errors for psmouse | |
echo 'blacklist psmouse' >> /etc/modprobe.d/modprobe.conf | |
# Configure mkinitcpio | |
vi /etc/mkinitcpio.conf | |
# Update HOOKS=(...) to add: systemd sd-vconsole sd-lvm2 | |
# note: s/udev/systemd/ and sd-lvm2 before filesystem | |
# Update FILES=(/etc/modprobe.d/modprobe.conf) | |
# Generate initrd image | |
mkinitcpio -p linux | |
# Add user | |
useradd -m -g users -G wheel -s /bin/zsh <username> | |
# Set password | |
passwd <username> | |
# Enable wheel group as sudoers | |
visudo | |
# Uncomment %wheel ALL=(ALL) ALL | |
# Disable root user | |
passwd -l root | |
# Boot loader | |
# Setup systemd-boot | |
bootctl --path=/boot install | |
# Enable Intel microcode updates | |
pacman -S intel-ucode | |
# Create bootloader entry | |
vi /boot/loader/entries/arch.conf | |
title Arch Linux | |
linux /vmlinuz-linux | |
initrd /intel-ucode.img | |
initrd /initramfs-linux.img | |
options root=/dev/xps_vg/lv_root rw | |
# Set default bootloader entry | |
vi /boot/loader/loader.conf | |
timeout 8 | |
default arch | |
editor 0 | |
# Reboot | |
exit | |
umount -R /mnt | |
reboot | |
# Post-installation | |
# zsh Key bindings (home-end key fix) | |
# https://wiki.archlinux.org/index.php/Zsh#Key_bindings | |
# also add this lines to ~/.zshrc for ctrl+r history | |
key[CtrlR]="${terminfo[^r]}" | |
# [...] | |
[[ -n "${key[CtrlR]}" ]] && bindkey -- "${key[CtrlR]}" history-incremental-search-backward: | |
# Connect to wifi | |
sudo wifi-menu -o | |
# if you need to use a proxy (e.g. NetShare) | |
export http_proxy=172.25.21.6:44355 | |
# Install Intel graphic drivers (-E if you use http_proxy) | |
sudo -E pacman -S xf86-video-intel | |
sudo -E pacman -S xorg-server plasma-meta kde-applications-meta | |
sudo systemctl enable --now sddm.service | |
sudo systemctl enable --now NetworkManager.service | |
# Install pacaur | |
su - <username> | |
mkdir aur | |
cd aur | |
git clone https://aur.archlinux.org/cower.git | |
cd cower | |
makepkg -si --skipinteg | |
cd .. | |
git clone https://aur.archlinux.org/pacaur.git | |
cd pacaur | |
makepkg -si | |
# Enable fstrim | |
sudo systemctl enable --now fstrim.timer | |
# set issue_discards=1 in /etc/lvm/lvm.conf | |
# Firmware update | |
sudo pacman -S fwupd | |
fwupdmgr refresh | |
fwupdmgr get-updates | |
fwupdmgr update | |
# Enable Suspend-To-RAM (deep) instead of default Suspend-To-Idle (s2idle) | |
cat /sys/power/mem_sleep | |
[s2idle] deep | |
# append "mem_sleep_default=deep" to /boot/loader/entries/arch.conf | |
# Enable Chrome dark mode | |
vim ~/.config/chrome-flags.conf | |
--enable-features=WebUIDarkMode | |
--force-dark-mode | |
# or install Dark Reader | |
# /etc/sddm.conf | |
# [X11] | |
# ServerArguments=-nolisten tcp -dpi 276 | |
# Useful programs | |
pacaur -S chromium | |
pacaur -S libreoffice-fresh hunspell hunspell-it hunspell-en_US | |
pacaur -S breeze-gtk kde-gtk-config | |
pacaur -S ttf-bitstream-vera ttf-croscore ttf-dejavu ttf-droid ttf-roboto noto-fonts ttf-liberation ttf-ubuntu-font-family | |
pacaur -S cups cups-pdf | |
pacaur -S copyq | |
pacaur -S kdeconnect | |
pacaus -S keeweb-desktop | |
pacaur -S syncthing | |
pacaur -S kernel-modules-hook # Keeps your Arch Linux fully functional after a kernel upgrade | |
pacaur -S etckeeper | |
pacaur -S zsh-completions | |
pacaur -S pacman-contrib | |
systemctl enable --now paccache.timer | |
pacaur -S broot # ls with steroid (https://github.com/Canop/broot) | |
pacaur -S fzf # grep with steroid, interactive filter for command-line (https://github.com/junegunn/fzf, https://wiki.archlinux.org/title/fzf) | |
pacaur -S antibody # zsh shell plugin manager (https://getantibody.github.io/) | |
pacaur -S kwin-bismuth-bin # kde/kwin tiling window managers (https://github.com/Bismuth-Forge/bismuth) | |
# Reminder | |
# on "Failed to create EFI Boot variable entry: No space left on device" or stuck on Dell logo on boot process: | |
ls /sys/firmware/efi/efivars/dump-* | |
rm /sys/firmware/efi/efivars/dump-* | |
# TODO: | |
https://github.com/robbyrussell/oh-my-zsh | |
https://github.com/systemd/systemd/issues/2750 | |
https://bbs.archlinux.org/viewtopic.php?pid=1775108#p1775108 | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment