User:NTia89/My XPS System Installation

From ArchWiki
Note: First, this page is for my XPS 9343 only.
Note: Second, handle it as a recap-page. Rely on main ArchWiki pages instead.
Note: Third, treat backed-up configuration files on Dropbox as example/reminder. Don't substitute them entirely, rather use them as help for editing original/system files.

Things to do BEFORE formatting

  • Save Firefox stuff:
  1. Backup manually bookmarks into both .html and .json files.
  2. Backup manually uBlock Origin settings.
  3. Stop PSD daemon and only then save Firefox file: userChrome.css.
  • Update every backups!
  1. /boot
  2. /etc
  3. $HOME
Note: For point 1. This is done for emergency-case only because Firefox Sync already saves bookmarks and retrieve them automatically when I log-in in Firefox.
Note: For point 2. This is done for emergency-case only because uBlock Origin already saves settings using the Firefox Sync cloud storage; they have to be retrieved manually from the uBlock Origin interface.

Getting and installing Arch

Prepare the system

  • Disable Secure boot feature from the EFI interface (press F2 during the boot)
Note: Because worthless on a such system.

Installation guide

  • Install the system, with this Partition layout:
Device Partition type File system Size Mount point Notes
/dev/sda1 EFI System FAT32 1 GiB /boot boot stuff will reside here
/dev/sda2 Linux swap linux-swap 9 GiB --- swap space, mostly for suspend the laptop
/dev/sda3 Linux filesystem ext4 40 GiB / the root
/dev/sda4 Linux filesystem ext4 187 GiB /home my home
unallocated space --- --- remaining space (1.49 GiB) --- round up partitions size, and WIP, see note below
Note: Leave unallocated space at the end of the SSD was a good practice to lower wearing. NEED SOURCE
  • Configure the SSD
Note: Despite many suggestions[1] to use periodic TRIM over continuous TRIM due to firmware bugs and more, I have never had problems with my hardware, thus I continue prefer this option.
  • Install base software sudo pacman -S base linux-lts linux-lts-headers nano
Note: New base metapackage does not provide neither a kernel nor a text editor.
  • Install first bunch of extra software sudo pacman -S base-devel broadcom-wl-dkms efibootmgr intel-ucode
  • Install the bootloader systemd-boot
Note: You have to add a temporary entry (just follow the wiki) because you have to reboot the system and neither Dropbox (for configuration files) and Linux-ck packages are not yet ready.
  • Clean-up EFI boot entries with efibootmgr
Warning: An UEFI firmware bug makes impossible to delete boot entries (if you delete them, they will be recreated automatically on next boot).
Workaround: set them as inactive with sudo efibootmgr -v -b N -A where N={4,3,2,1}.


  • first, install basic GNOME software to have a working, graphical and internet connected environment:
sudo pacman -S firefox gdm gnome-control-center gnome-keyring gnome-terminal nautilus networkmanager

Configure GDM, GNOME, NetworkManager and reboot.

Note: Now you have a basic graphical DE.
  • second, complete GNOME packages installation:
sudo pacman -S baobab caribou cheese dconf-editor drawing eog eog-plugins evince file-roller gcolor3 gedit gedit-plugins gnome-backgrounds gnome-calculator gnome-characters gnome-clocks gnome-disk-utility gnome-firmware gnome-font-viewer gnome-logs gnome-mines gnome-nettool gnome-screenshot gnome-shell-extensions gnome-sound-recorder gnome-system-monitor gnome-tweaks gnome-user-docs gnome-user-share gnome-video-effects gpaste grilo-plugins gst-libav gst-plugins-ugly gstreamer-vaapi gvfs-mtp libcanberra-gstreamer net-tools libopenraw nuspell p7zip pipewire-jack python-pyudev rygel tumbler libgepub system-config-printer texlive-bin texlive-core unrar unace usbguard xdg-user-dirs yelp
  • finally tweak it (you can do it graphically via dconf-editor):
    • set Search as recursive in Downloads and Dropbox folders with:
$ gsettings set org.freedesktop.Tracker3.Miner.Files index-recursive-directories "['&DOWNLOAD', 'Dropbox']"
    • tune volume step with:
$ gsettings set volume-step 3

Software, software and fonts

  • install software packages from official repo:
sudo pacman -S 0ad alsa-utils android-tools android-udev aspell-en aspell-it atomicparsley audacity bash-completion beanshell bluez-utils bwm-ng ccid chromium clonezilla clinfo coin-or-mp colord-sane cpupower crda cups dialog dmidecode dnsmasq easyeffects easytag ed exfatprogs ext4magic f2fs-tools filezilla firefox-i18n-en-gb firefox-i18n-it geeqie gimagereader-gtk gimp gimp-dbp gnome-shell-extension-appindicator gparted gpx-viewer grsync gsmartcontrol gthumb java-rhino jre-openjdk handbrake hugin hunspell-en_GB hunspell-it hyphen-en hwinfo img2pdf intel-compute-runtime intel-gpu-tools iotop libappindicator-gtk2 libdvdcss libmythes libreoffice-fresh libreoffice-fresh-en-gb libreoffice-fresh-it libva-intel-driver libva-mesa-driver libva-utils libvdpau-va-gl lostfiles lynx mariadb-libs mediainfo-gui meld mesa-utils mkvtoolnix-gui mpv mpv-mpris mtools mythes-en namcap ncdu nethogs nfoview openblas opensc otf-cormorant pacman-contrib pcsc-tools pdfarranger perl-file-mimeinfo perl-image-exiftool picard pkgstats postgresql-libs powertop profile-cleaner profile-sync-daemon pstoedit python-libevdev python-pycryptodome python-pyopenssl python-pysmbc python-pysocks qt5-svg rawtherapee realtime-privileges reflector rmlint rmlint-shredder rkhunter sof-firmware squashfs-tools stress supertuxkart tesseract-data-eng tesseract-data-ita tlp transmission-gtk tree ttf-linux-libertine udftools unhide unixodbc vdpauinfo vulkan-intel vulkan-mesa-layer vulkan-tools workrave youtube-dl
  • rkhunter ^?? è davvero utile??? se faccio immagine di sistema con sw-1.1 sarà diverso da immagine con sw-2.1, no? quindi utile? darà sempre un risultato negativo perchè sempre diverso dall'immagine iniziale, no?
Warning: ToDo-ToDo-ToDo: The file of stored file properties (rkhunter.dat) does not exist, and should be created. To do this type in 'rkhunter --propupd'.

Info: The file properties check will still run as there are checks that can be performed without the 'rkhunter.dat' file. Warning: WARNING! It is the users responsibility to ensure that when the '--propupd' option is used, all the files on their system are known to be genuine, and installed from a reliable source. The rkhunter '--check' option will compare the current file properties against previously stored values, and report if any values differ. However, rkhunter cannot determine what has caused the change, that is for the user to do.

Note: Yaourt is not maintained anymore![2] and removed from AUR, as well. I have switched to pikaur[3]. All commands stay the same due to my aliases.
  • install software from AUR:
  1. First, let's install pikaur from scratch:
  2. Install git package
  3. Move to /tmp
  4. Download snapshot git clone
  5. Enter in its directory cd pikaur
  6. Compile and install it makepkg -fsi
  7. Lastly, install its own optional dependency python-defusedxml
Note: Remember to install asp for ABS support; it is listed as optional dependency for pikaur.
  • continue with installation of dropbox
  1. pikaur dropbox
  2. execute and sync
  3. change Dropbox folder icon, using SVG icon from /usr/share/pixmaps/ folder
  4. and copy/use every files backed up in arch-xps.
    Warning: Prior to compile any of the following packages.
  5. Create and own BUILDDIR and PKGDEST directories
sudo mkdir -p /var/cache/pacman/pkg/{pikaur-sources,pikaur-packages}
sudo chown mattia:mattia /var/cache/pacman/pkg/{pikaur-sources,pikaur-packages}
  • now disable Password timeout for Sudo by adding the following lines using visudo
# This disable the timeout of password request by sudo:
# once Sudo asks you for the password, it will wait for it, endless
# in this way, long processes like kernel compilation and installation with `pikaur` doesn't fail
# without any trick (see `sudoloopinterval` from `man pikaur`)
# []

Defaults passwd_timeout=0
  • conclude by installing all remaining AUR packages:
    • yy fonts-meta-base
    • yy fonts-meta-extended-lt
    • yy ttf-impallari-libre-baskerville
    • yy otf-latin-modern
    • yy otf-latinmodern-math
    • yy mei-amt-check-git
    • yy phantomjs-bin
    • yy masterpdfeditor
    • yy memtest86-efi
    • yy powerstat-git
    • yy tor-browser
    • yy diffpdf
    • yy spectre-meltdown-checker
    • yy gnome-shell-extension-just-perfection-desktop-git
    • yy gnome-shell-extension-sound-output-device-chooser-git
    • yy gnome-shell-extension-system-monitor-git
    • yy unigine-superposition
    • yy linux-ck
    • yy etcher-bin
    • yy downgrade
Warning: Now you should remove pikaur cache in $HOME.
rm ~/.cache/pikaur/
rm ~/.local/share/pikaur/
Warning: Now you should recompile and reinstall pikaur due to customized configuration files added later, which includes pikaur 's configuration file.

Further steps + Tuning

  • Enable boot script:
    • Run the command $ systemctl enable boot-script.service; systemctl start boot-script.service
Note: You can check any problem with $ systemctl status boot-script.service.
  • Check Zswap if it's enabled and zpool used with cat /sys/module/zswap/parameters/*
Note: Starting with kernel 5.7 [4] this is a feature enabled by default directly from kernel; this means I do not need `systemd-swap` anymore since 1) it's enabled by default, and 2) already with the "right" options too.
  • Check Java environment (installed as optional dependency of previously installed packages):
archlinux-java status
  • Install pre-compiled packages (by me! from my Dropbox):
    • Go into $HOME/Dropbox/arch-xps/pre-compiled packages
    • Install ttf-weblysleekui font
    • Install Bluetooth firmware bcm20702a1-firmware
  • Install SystemRescueCd 5.3.2 directly in /boot (as emergency tool, useful if Arch is broken):
    • Download ISO[5] and check its hash.
    • Mount the .iso file and copy isolinux/{rescue64,initram.igz} files into /boot/SRCD as well as the entire ISO systemrescuecd-x86-5.3.2.iso
    • Add menu entry placing .conf file in the /boot/loader/entries folder; the interested file it's backed up in Dropbox, thus already placed there
Note: Current version 6.x is based on Arch Linux, in place of Debian; this led me huge problems that makes me decide to skip new version and stay with the legacy one.
Anyway, version 5.3.2 fits perfectly for me and my XPS.
  • Install UEFI Shell (as emergency tool, useful if the boot manager is broken):
Note: Some systems have already an UEFI Shell, built-in, this is not my case! An UEFI Shell acts like a minimal boot-loader. I want to have it, I need it as emergency boot-loader, since systemd-boot future upgrades could break it up.
    • Download latest UEFI Shell binary from the package, located here[6].
    • Unpack and place the right version (UefiShell/X64/Shell.efi) in the folder /boot/EFI/Boot/
    • Add menu entry using sudo efibootmgr --create --label "UEFI Shell" --loader /EFI/Boot/Shell.efi --verbose
    • Reorder boot order with sudo efibootmgr -o 0000,0005
Note: You can do it also directly from EFI/BIOS settings.
    • In case of need, boot into UEFI Shell, cd into $ESP with fs0: and launch kernel using vmlinuz-linux{-lts} initrd=initramfs-linux{-lts}.img root=/dev/sda3 rw
Warning: I would have booted directly from EFI using EFISTUB feature; unfortunately, booting from EFISTUB is broken on this machine. See Dell XPS 13 (9343)#EFISTUB does not boot.
  • Switch NetworkManager's default backend, from wpa_supplicant to iwd:
  • Enable native systemd-boot automatic updater:
    • Run this command: systemctl enable systemd-boot-update.service
  • Enable experimental feature for Bluez:
    • Just uncomment the right line here /etc/bluetooth/main.conf.

Sources & other things

Warning: WIP1, official Intel page[7] states: [...]The intel-vaapi-driver(-> now `libva-intel-driver`) will not be actively maintained. From BDW and SKL+, intel-media-driver for VAAPI is recommended.[...]. I do not exclude in the future I have to/I opt to switch to new driver! At the moment, (I personally tried them) the old one is better (wider format support)).
  • Da oggi (17 gennaio 2020) oltrettutto è dipendenza di `ffmepg` quindi già installato sul sistema...
  • Da oggi (18 gennaio 2020) `libva` ha entrambi come opt deps
  • Ad oggi (30 marzo 2020) non conviene ancora eliminare `libva-intel-driver` (warning con MPV)

WIP2, switch to Wayland. Mainly I am waiting for official Firefox (the "foreign"/not-GNOME application I use the most) support because GNOME is in good shape, now! This is the new challenge. Così finalmente potrò usare le gesture di GNOME! [...] GNOME on Xorg does not natively implement any gestures. [...]. vedi [8] ed altro...; così finalmente funzionerà l'HW-accel su FF! [9]

WIP3, this laptop with Linux has only one serious problem: resume from suspend often doesn't work! (a very common issue in Linux...) I tried to find a workaround but with no luck. Because this is a laptop is an not-under-valuable issue. Honestly for me and my actual use (not a proper laptop...) this is not much a problem also because cold boot is very fast.

WIP3.bis, for example with kernel series 5.5 suspend and resume works flawlessly. WIP3.tris, with kernel series 5.7 suspend and resume does not work well.

WIP4, fare una sezione "CHECK"?

WIP5, rework zswap section.

WIP6, TODO: remove `xorg-font-utils` package.

WIP7, ToDo: switch file-system, from EXT4 to ... SEE (

WIP8, ToDo: switch `torbrowser` from AUR to `torbrowser-launcher` from commmunity, ma non perchè in AUR, ma perchè si aggiorna meglio; attualmente in prova!

WIP9, Tearing has gone!: both fullscreen and "normal"

WIP10, switch from `workrave` to `gnome-break-timer` ???

ToDo,, quando avrò hw che supporta BENE! EFI STUB:...

ToDo 2,, fare switch da linux-ck a linux-zen a causa dello stop nello sviluppo di muqss e co. [10]

ToDo 3, pensare se separare sezioni installazione paccketti AUR, sezione ToDo.

ToDo 4, re-bind F1 key in order to get back normal F1 behaviour in e.g. LibreOffice , because balena-Etcher ""steals"" it! `xdg-mime default firefox.desktop text/html`

ToDo 5, il progetto system-rescue-cd ha cambiato nome; aggiornare..., anche links

ToDo 6, abilitare *fast_commit*? [11]