User:NTia89/My XPS System Installation
Things to do BEFORE formatting
- Close/save all opened tabs in Firefox
- Clean-up the $HOME:
- then backup the content on an external storage
- Save Firefox stuff:
- Backup manually bookmarks into both .html and .json files (straight away from FF > Bookmarks > Manage).
- Backup manually uBlock Origin settings (directly from extension's preference window).
- Update every customized file! (should be already backed-up in Dropbox)
- /boot
- /etc
- $HOME
- /usr
Getting and installing Arch
Prepare the system
- Disable Secure boot feature from the EFI interface (press F2 during the boot)
- Boot the USB (press F12 during the boot)
- Erase (securely) the disk, Securely wipe disk#hdparm from a live environment i.e. SystemRescue on USB
Installation guide
- Install the system, with this Partition layout:
UEFI with GPT | |||||
---|---|---|---|---|---|
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 | 11 GiB | --- | swap space[1] |
/dev/sda3
|
Linux filesystem | ext4 | 45 GiB | /
|
the root |
/dev/sda4
|
Linux filesystem | ext4 | 173 GiB | /home
|
my $HOME |
unallocated space | --- | --- | remaining space (8.49 GiB) | --- | see note below |
- Configure the SSD
- Install base software
sudo pacman -S base linux-zen linux-zen-headers nano
- Install first bunch of extra software
sudo pacman -S base-devel broadcom-wl-dkms efibootmgr intel-ucode
- Finally, install the bootloader systemd-boot
- Clean-up EFI boot entries with
efibootmgr
Workaround: set them as inactive with
sudo efibootmgr -v -b N -A
where N={4,3,2,1}.GNOME
- 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.
- 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 libgepub system-config-printer texlive-bin texlive-core unrar unace usbguard xdg-desktop-portal-gnome xdg-user-dirs yelp
- then configure it:
- 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 org.gnome.settings-daemon.plugins.media-keys volume-step 3
- adjust border drag-ability
$ gsettings set org.gnome.mutter draggable-border-width 20
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 btop bwm-ng ccid cdtools chromium clonezilla clinfo coin-or-mp colord-sane cpupower crda cups dialog dmidecode dnsmasq easyeffects easytag ed exfatprogs expac ext4magic f2fs-tools filezilla firefox-i18n-en-gb firefox-i18n-it geeqie gimagereader-gtk gimp gimp-dbp glmark2 gnome-shell-extension-appindicator gparted gping gpxsee grsync gsmartcontrol gthumb java-runtime-common jre-openjdk handbrake hugin hunspell-en_GB hunspell-it hyphen-en hwinfo img2pdf intel-compute-runtime intel-gpu-tools intel-media-driver iotop libdvdcss libmythes libreoffice-fresh libreoffice-fresh-en-gb libreoffice-fresh-it libva-mesa-driver libva-utils libvdpau-va-gl linux-lts linux-lts-headers lostfiles lynx malcontent mangohud mariadb-libs mediainfo-gui meld memtest86+-efi 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-pipx python-pycryptodome python-pyopenssl python-pysmbc python-pysocks qt5-svg qt{5,6}-wayland rawtherapee realtime-privileges reflector rmlint rmlint-shredder sof-firmware squashfs-tools stress supertuxkart tesseract-data-eng tesseract-data-ita tlp transmission-gtk tree ttf-linux-libertine udftools unixodbc vdpauinfo vkmark vulkan-intel vulkan-mesa-layer vulkan-tools wavemon workrave yt-dlp
- then start reflector by enabling its .timer
systemctl enable reflector.timer
(September-2019) Yaourt is not maintained anymore![4] and removed from AUR, as well. I have switched to pikaur[5]. All commands stay the same due to my aliases.
(January-2024) Switching from pikaur to paru[6], a brand-new, blazing-fast AUR helper.
- install software from AUR:
- First, let's install
paru
from scratch: - Install
git
package - Move to
/tmp
- Download snapshot
git clone https://aur.archlinux.org/paru.git
- Enter in its directory
cd paru
- Compile and install it
makepkg -si
- Lastly, install its own optional dependency
bat devtools
- continue with installation of dropbox
paru dropbox
- execute and sync
- change Dropbox folder icon, using SVG icon from
/usr/share/pixmaps/
folder - and copy/use every files backed up in arch-xps.Warning: prior to compile any of the following packages.
- Create and own BUILDDIR and PKGDEST directories
sudo mkdir -p /var/cache/pacman/pkg/{paru-sources,paru-packages} sudo chown mattia:mattia /var/cache/pacman/pkg/{paru-sources,paru-packages}
- now disable Password timeout for sudo by adding the following lines using
visudo
# this disable the timeout of password using `sudo`: # once you entered the password correctly, it will never expire, # asking you it again; this help long tasks like software compilation # and installation with `paru`. # [https://wiki.archlinux.org/title/Sudo#Disable_password_prompt_timeout] Defaults passwd_timeout=0
- conclude by installing all remaining pip packages:
pipx install tcx2gpx
- 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 pipes.sh
yy powerstat-git
yy tor-browser
yy diffpdf
yy spectre-meltdown-checker
yy extension-manager
yy downgrade
yy reboot-arch-btw
rm -rf ~/.cache/paru/
Further steps + Tuning
- Install Gnome-shell's extensions via extension-manager:
- Open extension-manager, go to Browse, type their name and install them
Bluetooth Quick Connect
Blur my Shell
Clipboard Indicator
Fullscreen Notifications
Just Perfection
Tiling Assistant
TopHat
- then configure them all.
- Open extension-manager, go to Browse, type their name and install them
- Install Firefox's extensions:
- First, login with your Account and let it to sync
- Open Firefox, then go to Add-ons and themes
enhanced-h264ify
Load Progress Bar
Reload in address bar
Simple Translate
Swift Selection Search
uBlock Origin
YouTube Auto HD + FPS
- and configure them all (remember backups!).
- Enable boot script:
- Run the command
$ systemctl enable boot-script.service; systemctl start boot-script.service
- Run the command
$ systemctl status boot-script.service
.- Check Java environment (installed as optional dependency of previously installed packages):
$ archlinux-java status
- Enable native systemd-boot automatic updater:
$ systemctl enable systemd-boot-update.service}}
- Enable experimental feature for Bluez:
- Just uncomment the right line here
/etc/bluetooth/main.conf
.
- Just uncomment the right line here
- Copy customized pacman's hooks (backed up in Dropbox) in
/etc/pacman.d/hooks/
:11-reboot-on-kernel-upgrade.hook
, automate reboot-arch-btw execution on linux-zen upgrade81-hunspell.hook
, for removing useless variants of English or Italian dictionaries from hunspell82-hyphen.hook
, for removing useless variants of English or Italian dictionaries from hyphen83-mythes.hook
, for removing useless variants of English or Italian dictionaries from mythes94-lsp-plugins.hook
, for removing useless .desktop entries from lsp-plugins
- Install pre-compiled packages (by me! from Dropbox):
- Go into
$HOME/Dropbox/arch-xps/pre-compiled packages
- Install ttf-weblysleekui font
- Install Bluetooth firmware bcm20702a1-firmware
- Go into
- Install SystemRescueCd 5.3.2 directly in
/boot
(as emergency tool, useful if Arch is broken):- Download ISO[7] and check its hash.
- Mount the .iso file and copy
isolinux/{rescue64,initram.igz}
files into/boot/SRCD
as well as the entire ISOsystemrescuecd-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
Anyway, version 5.3.2 fits perfectly for me and my XPS.
In the meantime, project changed its name from SystemRescueCd to SystemRescue.
- Install UEFI Shell (as emergency tool, useful if the boot manager is broken):
- Download latest UEFI Shell binary from the package ShellBinPkg.zip, located here[8].
- 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
- In case of need, boot into UEFI Shell, cd into $ESP with
fs0:
and launch kernel usingvmlinuz-linux{-lts} initrd=initramfs-linux{-lts}.img root=/dev/sda3 rw
- In case of need, boot into UEFI Shell, cd into $ESP with
- Get rid of old wpa_supplicant in favour of iwd as new NetworkManager's default backend:
- Install iwd package,
- Add the configuration file source (backed up in Dropbox) in /etc/NetworkManager/conf.d,
- Finally, to get all these customizations working, reboot the entire system
Sources + ToDos
- Dell XPS 13 (9343)
- Browser plugins
- Chromium
- CUPS
- Firefox
- Font configuration
- GDM
- GNOME
- Java
- Makepkg
- NetworkManager
- Pacman
- Pkgstats
- Profile-sync-daemon
- PipeWire
- Smartcards
- TLP
- XDG user directories
Here is a Future Developments or Work In Progress list. In the list below I keep track of long-term ToDos where their development requires much time.
- WIP-0, update this guide to ARCHINSTALL [9] because this is the future! AND report my experience HERE! updating this tutorial; THIS WILL BE THE LAST STEP
,WIP-0
- 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! EVEN IF, NOT PERFECT AT ALL!! This is the new challenge. Così finalmente potrò usare le gesture di GNOME! [...] GNOME on Xorg does not natively implement any gestures. [...]. vedi [10] ed altro...; così finalmente funzionerà l'HW-accel su FF! [11][12].
- as of 09-dic-22 ancora troppi problemi, vedi: mpv [13]+[14], gtk [15], gnome-shell missing RESTART under WAYLAND [16] & eog cannot zoom with mouse scrolling/touchpad [17], file-roller [18].
- as of 29-dic-22, still has: FF non riesci ad aprire menu principale + vari glitch grafici + scrolling kinetico è da mal di mare SEBBENE PERFORMANCE SEMBRINO MIGLIORATE... quindi peccato [19]; possibili con la TRAY ICON di dropbox, (non so se è un problema di DropBox stesso oppure dell'estensione di gnome-shell che ne permette la visualizzazione nella tray bar! provato con GNOME v41.1 al 14 novembre 2021; qualche BUG VARI di gnome-shell, tipo la mancanza di suoni per gli eventi (anche se questo potrebbe essere un problema di PIPEWIRE... e SEBBENE guadagni, finalmente, le GESTUREs native!!!); MPV ha qualche problema con la sua finestra; supporto HW-accell. / VAAPI buggy on wayland, both FF che MPV; BONUS: miglioramento consumi [20];
- as of 04-gen-23, FF cannot go WAYLAND [21];
- as of GNOME 43 version is out, I switched to WAYLAND-only (by disabling XWayland !!! too !!!) and it (GNOME) works! well!! and I use it as daily-driver;
- as of 10-oct-23, GNOME fully working on WAYLAND and main apps too (Firefox, even if not-"officially" supported, it works and I have enabled it and I use it daily) but other common-used apps do not work, completely or partially; e.g. GIMP does not work at all, PICARD works but not-perfectly...
- gparted requires X11 as well...
- tor-browser-launcher does not work except when launched from terminal (a GNOME-SHELL bug?)
- WIP7, ToDo: switch file-system, from EXT4 to ... see [22]
- to F2FS!
- benchmark non affidabili! basati su ALPHA... infatti impossibile che EXT4 sia così lento...
- ad oggi (01-11-2023) la configurazione sembra essere ext4/xfs per la root e zfs per la home... certo data la conndizione di zfs su linux, è più facile a dirsi che a farsi;...
- benchmark non affidabili! basati su ALPHA... infatti impossibile che EXT4 sia così lento...
- to F2FS!
- WhenNewLaptop(1), quando avrò hw che supporta BENE! EFI STUB:... [24]
- WhenNewLaptop(2), questo video [25] mi ha aperto gli occhi su un aspetto sempre snobbato: TPM; configure the TPM support for the next laptop, since my 9343 does not have it! [26]; quindi per il futuro, se il nuovo hardware lo supporterà, ed è molto probabile visto che è mandatory per WIN11! la nuova installazione di Arch avrà la FDE (full disk encryption) [27] coadiuvata dal modulo TPM2.0 [28]; + add new information here and on 9343 arch-wiki page;
- todo 11 get rid of GTK2 [29]; this probably means removing appindicator-gtk2... but I have -> already removed!
- as of 09-dic-22 `calf` and `gimp` requires GTK2; the former will fix it with gimp3; just wait for new version hits repo; `calf` removed since I do not think I need it; let's start a trial period!;
- as of 01-nov-23, still here with GTK2, at least ONLY GIMP relies on gtk2 and this will end when GIMP-3.0 will be released. waiting for it...; on the other hand, `calf` has been fixed! (see comment above.);
- as of 09-dic-22 `calf` and `gimp` requires GTK2; the former will fix it with gimp3; just wait for new version hits repo; `calf` removed since I do not think I need it; let's start a trial period!;
- todo 1:1 BIG OVERHAUL, FF: attualmente sto usando ancora la configurazione di partenza di FF (impostazioni e settaggi derivanti da ANNI di utilizzo, certo evoluti, cambiati durante il tempo ma non sono mai partito da una BASE PULITA!); l'obiettivo è partire da una base pulita e cambiare le impostazioni;
- questo deve essere fatto un po' alla volta (& dopo aver fatto switch vs WAYLAND) per testare i cambiamenti ed essere sicuro che non rompano alcun sito; poichè i parametri sono tantissimi, non esiste una guida completa o addirittura ne esistono di troppo complete, che inficiano in modo eccessivo sulla privacy e per questo rompono alcuni siti, devo procedere così; devo quindi partire da un profilo di FF pulito MA DEVE ESSERE QUELLO CHE UTILIZZO TUTTI I GIORNI PER TESTARNE LA NON-ROTTURA DEI SITI! ma per questo devo fare pulizia dei TABs; dopo, installo le estensioni (e qui ho già fatto una pulita...) alcune risorse da prendere in considerazione [30], [31]; BUT, I hope for a thing like this: [32]; devo dare importanza alle performance, migliorarle piuttosto/oltre che alla privacy; NB: che ho scoperto che i parametri in about:config sono ssalvabili nel file user.js, quindi non dovrò più segnarmi sul file FF tweaks cosa fare a mano (quantomeno non tutto...); a questo punto aggiornare le istruzioni di questa pagina! E anche i file di backup su Dropbox!!
- un'altra risorsa fondamentale per l'operazione [33]
- l'idea è: 1, partire da un profilo pulito; 2, fare un backup di pref.js -> pref_ORIG.js; 3, cambiare le impostazione da GUI about:preferences e fare backup di pref.js -> pref_1E.js; 4, fare un diff tramite MELD delle differenze; 5, ... continuare a lavorare sui settaggi nascosti about:config, con backup incrementali del file pref.js -> pref_2E.js, testando la configurazione per diciamo un mese, prima di promuoverla, e partendo dai settaggi più sicuri; FINO A CHE SONO SODDISFATTO!
- un'altra risorsa fondamentale per l'operazione [33]
- questo deve essere fatto un po' alla volta (& dopo aver fatto switch vs WAYLAND) per testare i cambiamenti ed essere sicuro che non rompano alcun sito; poichè i parametri sono tantissimi, non esiste una guida completa o addirittura ne esistono di troppo complete, che inficiano in modo eccessivo sulla privacy e per questo rompono alcuni siti, devo procedere così; devo quindi partire da un profilo di FF pulito MA DEVE ESSERE QUELLO CHE UTILIZZO TUTTI I GIORNI PER TESTARNE LA NON-ROTTURA DEI SITI! ma per questo devo fare pulizia dei TABs; dopo, installo le estensioni (e qui ho già fatto una pulita...) alcune risorse da prendere in considerazione [30], [31]; BUT, I hope for a thing like this: [32]; devo dare importanza alle performance, migliorarle piuttosto/oltre che alla privacy; NB: che ho scoperto che i parametri in about:config sono ssalvabili nel file user.js, quindi non dovrò più segnarmi sul file FF tweaks cosa fare a mano (quantomeno non tutto...); a questo punto aggiornare le istruzioni di questa pagina! E anche i file di backup su Dropbox!!
NEW_2: aggiornare lo script/.bashrc per rispecchiare il cambiamento, la modifica al fatto che il gruppo base-devel non esiste più, ma: "moved to a meta package for base-devel"; the same as for `base`...;
NEW_6: valutare `auto-cpufreq` [34] & se possibile combinazione con TLP [35] [36];
NEW_7: completely disable XWayland [37]; I hope that will be done upstream in the near future; if not, do it by yourself! this means all app would must work in Wayland!!
NEW_8: valutare VIVALDI due to its customizeability
NEW_9: ho scoperto che gpaste non funziona nativamente con wayland, infatti viene lanciato Xwayland; sostituito con estensione di gnome-shell; in TESTING al momento, su AUR anche altrimenti installa direttamente da extension [gnome-shell-extension-clipboard-indicator]
NEW_10: disable XWayland completely `$ systemctl --user edit org.gnome.Shell@wayland.service` ```[Service] ExecStart= ExecStart=/usr/bin/gnome-shell --no-x11``` [38]
NEW_11: easytag is going to be replaced: evaluating `tagger` but it has a bunch of *brutte* deps and `eartag`
NEW_12: installed `mglru-desktop-settings` and trying if it helps performance (as of 04-10-2023);
NEW_13: add a section `GNOME extensions` since I started installing extaension not from repo/AUR but directly from extension manager; e.g. (Hibernate Status Button);
NEW_14: add somewhere this `https://github.com/albfan/miraclecast` provides .sh test for testing P2P capabilities of Wi-Fi driver mandatory for screencasting;
NEW_15: fix bash's history [39];
NEW_16: gnome-terminal is porting in GTK4 (probably v46); when it's done, try it again (today I switched to console...) [40];
NEW_17: [41] but requiring EFISTUB, it a matter for when new HW;