This is just a brief description of the steps to perform after an Archlinux install to get a fully functional Gnome desktop. These are very specific for my usual setup. for a general discussion see the Beginners' guide or the Installation guide
Base install
The following steps are to be done inside the initial chroot during install.
Initramfs creation
Before creating the initramfs, edit /etc/mkinitcpio.conf
to add the necessary
modules for KMS (depending on graphics adapter of the systems). Use lspci to
know which one applies. For example nouveau, i915 or radeon. Also include the
'resume' hook to be able to boot from hibernate.
MODULES="nouveau"
HOOKS="base udev resume autodetect modconf block filesystems keyboard fsck"
Then build the initramfs:
sudo mkinitcpio -p linux
See Power management and mkinitcpio in archwiki.
Install bootloader (GRUB)
To install GRUB for BIOS boot in MBR disk:
pacman -S grub
grub-install --recheck /dev/sda
Then edit /etc/default/grub
to add support to resume from hibernation
(suspend to disk). Also change the GRUB_TIMEOUT to reduce boot time:
GRUB_TIMEOUT=2
GRUB_CMDLINE_LINUX_DEFAULT="resume=/dev/sda2"
Finally build the Grub configuration file:
grub-mkconfig -o /boot/grub/grub.cfg
For other setups (UEFI, etc) see grub.
Network Manager
Install NetworkManager before reboot. This way network is available after reboot without needing to use dhclient and you can go on installing the rest of the packages:
pacman -S networkmanager
systemctl enable networkmanager
Create your user account
I prefer Zsh to Bash. For administration I like sudo.
pacman -S sudo zsh
Configure sudo so that wheel group can execute commands.
Edit /etc/sudoers
and uncomment this line:
%wheel ALL=(ALL) ALL
Add user:
useradd -s /bin/zsh -G wheel <myusername>
passwd <myusername>
Disable PC speaker beep
PC speaker beep is annoying, so disable it. Create file /etc/modprobe.d/nobeep.conf with content:
blacklist pcspkr
Finish base install and reboot
Exit the chroot, umount root and home partitions:
exit
umount /mnt/home
umount /mnt
reboot
After rebooting, login to your account and try to use sudo to check that everything is properly configured.
Some basic utilities
If you didn't install NetworkManager you will need to know your network interface (assuming ethernet) to activate it. Use ip l
to kget the name:
ip l
sudo dhclient <interface>
sudo dhclient enp4s0
Before installing the desktop, I like to setup some basic utilities. The vim package can be later changed to gvim when a desktop is available.
sudo pacman -S vim ctags htop strace lsof git
sudo pacman -S unrar unzip zip
sudo pacman -S python-virtualenvwrapper keychain
If you have a VPN you can install networkmanager-openvpn and edit
/etc/hosts
.
Yaourt
To install packages from the AUR yaourt is very useful. Download yaourt and package-query from AUR to install them manually:
cd /tmp
curl -O https://aur.archlinux.org/cgit/aur.git/snapshot/yaourt.tar.gz
curl -O https://aur.archlinux.org/cgit/aur.git/snapshot/package-query.tar.gz
tar xzvf package-query.tar.gz
tar xzvf yaourt.tar.gz
Install the compiler tools:
sudo pacman -S base-devel
Edit /etc/makepkg.conf
:
MAKEFLAGS="-j2"
PACKAGER="User Name <user@example.com>"
Compile the package-query and yaourt packages:
cd package-query
makepkg -s
sudo pacman -U package-query*.xz
cd ../yaourt
makepkg -s
sudo pacman -U yaourt*.xz
Services
SSH and firewall
sudo pacman -S openssh ufw
sudoedit /etc/ssh/sshd_config
(habilitar RSA authentication)
sudo systemctl enable sshd
sudo systemctl start sshd
sudo ufw enable
sudo ufw allow ssh
sudo ufw limit ssh
NTP
Install NTP:
sudo pacman -S ntp
Setup the server in /etc/ntp.conf
, for example:
server dnscache-madrid.eu.verio.net
Start the server, wait some seconds and check it is running:
sudo systemctl enable ntpd
sudo systemctl start ntpd
ntpq -p
NFS client + autofs
For ethernet gigabit networks I like to use NFS and autofs.
Add the hostname and IP of your NFS server to /etc/hosts
.
sudo pacman -S nfs-utils
sudo systemctl enable rpcbind.service
sudo systemctl enable nfs-client.target
sudo systemctl enable remote-fs.target
sudo systemctl start rpcbind.service
sudo systemctl start nfs-client.target
sudo systemctl start remote-fs.target
sudo pacman -S autofs
sudo systemctl start autofs
sudo systemctl enable autofs
Edit /etc/autofs/auto.master to uncomment the line starting with "/net".
This way you can find your NFS exports in /net/
CUPS
Install CUPS and Avahi (to be able to automatically detect new printers).
sudo pacman -S avahi
sudo systemctl enable avahi-dnsconfd.service
sudo systemctl start avahi-dnsconfd.service
sudo pacman -S cups cups-filters ghostscript gsfonts gutenprint
sudo systemctl start cups-browsed.service
sudo systemctl enable cups-browsed.service
sudo systemctl enable org.cups.cupsd.service
sudo systemctl start org.cups.cupsd.service
To give permissions to an user to be able to add/remove and administer printers with CUPS and from the web http://localhost:631 interface:
sudo groupadd printadmin
sudo gpasswd -a <username> printadmin
sudo gpasswd -a <username> lp
Edit /etc/cups/cups-files.conf and add printadmin:
SystemGroup sys root printadmin
Then restart CUPS:
sudo systemctl restart org.cups.cupsd.service
Before adding printers, ensure you have the necessary drivers installed. See epson drivers and canon drivers.
Samba
sudo pacman -S samba
Desktop install
Xorg
Install Xorg server:
sudo pacman -S xorg-server
sudo pacman -S mesa-vdpau libva-mesa-driver
sudo pacman -S pulseaudio pulseaudio-alsa pavucontrol
Depending on your graphics hardware you will need any of these packages. For Nvidia:
sudo pacman -S xf86-video-nouveau
For ATI Radeon, although kernel module is called radeon, the package containing the driver is called 'ati':
sudo pacman -S xf86-video-ati
For Intel (i.e. i915):
sudo pacman -S xf86-video-intel
Additionally, if your laptop has a touch pad:
xf86-input-synaptics
Configure your locale for X11:
sudo localectl set-x11-keymap es
Add some fonts (can be improved with infinality, see later):
sudo pacman -S ttf-dejavu ttf-droid ttf-ubuntu-font-family ttf-liberation
Gnome
To install Gnome Shell desktop with GDM display manager (necessary to be able to lock screen):
sudo pacman -S gnome gnome-extra
sudo pacman -S gdm
sudo systemctl enable gdm
sudo systemctl start gdm
The keyring isn't installed by default:
sudo pacman -S gnome-keyring seahorse
Don't install keyring because gnome-keyring provides the same funcionality inside Gnome. With keyring the gnome-keyring can't work as expected (id_rsa ssh key isn't unlocked with login, for example).
To use the dark theme in gnome-terminal (it doesn't recognize GTK_THEME environment variable):
yaourt -S gnome-terminal-dark-variant
Install Nemo (for recursive searches in remote paths without requiring a previous index)
sudo pacman -S nemo
KDE Plasma 5
To install KDE Plasma 5 desktop with KDM display manager:
sudo pacman -S plasma kde-applications
sudo pacman -R kdegames
sudo systemctl enable kdm
sudo systemctl start kdm
If you don't want akonadi, this is a way to avoid loading it:
yaourt -S akonadi-fake
To integrate graphically the KDE4, GTK2 and GTK3 applications add:
sudo pacman -S breeze-kde4
yaourt -S gnome-breeze-git
LightDM display manager
With the GTK greeter:
sudo pacman -S lightdm-gtk-greeter
With the KDE greeter
sudo pacman -S lightdm-kde-greeter
Then edit /etc/lightdm/lightdm.conf
:
greeter-session=lightdm-gtk-greeter
# or for KDE
greeter-session=lightdm-kde-greeter
Enable and run it:
sudo systemctl start lightdm
sudo systemctl enable lightdm
To configure themes from KDE control panel use:
kcmshell4 kcm_lightdm
Infinality fonts
To install Infinality it is necessary to add the "bohoomil" repository:
sudo -i
dirmngr < /dev/null
sudo pacman-key -r 962DDE58
sudo pacman-key --lsign-key 962DDE58
Edit /etc/pacman.conf
and add the repository:
[infinality-bundle]
Server = http://bohoomil.com/repo/$arch
[infinality-bundle-fonts]
Server = http://bohoomil.com/repo/fonts
Install Infinality (answer yes to the three questions to substitute packages):
sudo pacman -Sy
sudo pacman -S infinality-bundle
Install improved fonts for Infinality:
sudo pacman -S otf-cantarell-ib ttf-dejavu-ib \
ttf-droid-ib ttf-ubuntu-font-family-ib
Applications
These are some of my favourite applications to install:
yaourt -S gnome-terminal-dark-variant
sudo pacman -S firefox firefox-i18n-es-es gst-libav
sudo pacman -S geary
sudo pacman -S libreoffice-fresh libreoffice-fresh-es
sudo pacman -S hunspell-en hunspell-es aspell-en aspell-es
sudo pacman -S gimp inkscape darktable hugin luminancehdr
sudo pacman -S vlc smplayer
sudo pacman -S gnome-maps
sudo pacman -S calibre fbreader
sudo pacman -S pavucontrol
sudo pacman -S quodlibet
sudo pacman -S libvirt ebtables dnsmasq bridge-utils qemu
sudo pacman -S gnome-boxes
sudo pacman -S virtualbox net-tools
To install Thunderbird with Enigmail support (GPG crytofraphy) :
sudo pacman -S thunderbird thunderbird-i18n-es-es
gpg --keyserver pgp.mit.edu --recv-keys DB1187B9DD5F693B
yaourt -S thunderbird-enigmail