(The visually stunning web page you are reading right now was created with nano)

Ted Home


Ted's Arch Linux / Xfce laptop installation notes for Dell Latitude 3550

Updated 3/25/2022

(Original version for Toshiba Tecra M6 EZ6612 here)

  1. Introduction
  2. Initial installation
  3. Entering the chroot environment
  4. Setting up a swapfile and hibernate
  5. Configuring systemd boot with UEFI
  6. Booting the system for the first time and adding users; continuing installation
  7. Installing pamac
  8. Make sure alsa is working properly
  9. Installing Xorg
  10. Installing xfce
  11. Some miscellanous things
  12. Installing lightdm display manager
  13. Installing Network Manager
  14. Installing a browser
  15. Getting Bluetooth working
  16. Getting printing working
  17. Adding search to thunar
  18. Some useful applications (office, email, etc)
  19. Enabling Avahi
  20. Setting up network time
  21. Setting up Japanese language entry
  22. Pointless screenshot

Introduction

This document is not a how-to or a tutorial, but if you are setting up Linux on a not-too-old laptop, you might find it useful. If you have a Latitude 3550 with an i3 and plain-Jane, Intel graphics, it should very useful. If you are using this as a "cheat sheet", you will of course need to adapt it to your system. Read up, and be advised you are doing this at your own risk.

Apparently, it is possible to "brick" your Latitude 3550 if you change out your HHD. I took out the old hard drive and replaced it with an Lexar NQ100, and after that the power LED would turn on for about 15 seconds and then turn off, but other than that there were no signs of life. I fixed it by tearing the whole thing apart, finding the NVRAM battery, unplugging it, and shorting out its connector pins with tweezers, and then putting it all back together again. It's major surgery for sure. It powered up into BIOS after that.

Refer to the Dell Latitude 3550 Owner's Manual if you need to open up your laptop for anything which has excellent disassembly/assembly instructions.

This computer has a UEFI BIOS. I opted not to use legacy boot. You need to set the BIOS for UEFI boot. To get into the BIOS hold down at power on. To get the boot options menu hold down at power on.

I set this computer up for UEFI boot. The SSD is set up with a GUID partition table (GPT). I am using systemd-boot, not GRUB. It seems to work pretty well, but as of writing this I have not tried anything fancy with it.

Note that it is my style to install things in stages instead of all at once. For example, I make sure a basic XOrg setup is working before installing xfce. This is for ease of debugging. Anytime you install something on an unfamiliar machine, there will be problems

Comments to haneda660@gmail.com

Initial installation

References:
Arch Linux Installation Guide
USB flash installation media
Arch Linux Downloads

Note, you MUST boot up the USB thumb drive install media in UEFI mode if you want this install to work. The first thing to do after booting the USB thumb drive is set up networking.

(Wireless) During the install, I'm using iwctl to set up wireless networking.

Find out what the interface is with
# iw dev
or
# ip link
For this computer, it's wlan0. Follow the instructions for iwctl to get connected to the wireless network, here: Arch page for iwctl.

(Wired) If wired ethernet is available, it should work with out doing anything.

Check the connection, eg.

# ping tedsims.com

Please study this Excellent Video on installing Arch Linux with the systemd-boot bootloader ,which includes instructions on using fdisk to create GPT partitions.

On my own system, I set up my partitions as follows:


/dev/sda1 as type EFI System Partition, formatted FAT32, which will be mounted on /boot, size 333MB
/dev/sda2 as type Linux filesystem, formatted ext4, mounted on / with size 160GB
/dev/sda3 as type Linux filesystem, formatted ext4, mounted on /home using the remainder of the drive

Using a separate partition as home is optional, but it's not a bad idea. Study the video and use fdisk to set up the partitions as you like. The example below continues doing it my way.

Format the partitions and mount them:

# mkfs.fat -F32 /dev/sda1
# mkfs.ext4 /dev/sda2
# mkfs.ext4 /dev/sda3
# mount /dev/sda2 /mnt
# mkdir /mnt/boot
# mount /dev/sda1 /mnt/boot
# mkdir /mnt/home
# mount /dev/sda3 /mnt/home

Install the basic system:

# pacstrap /mnt base base-devel linux linux-firmware intel-ucode nano

Create fstab. We'll edit it later to add the swapfile information:

# genfstab -U /mnt >> /mnt/etc/fstab

Entering the chroot environment

Enter the Arch chroot environment:

# arch-chroot /mnt

Set the root password:

# passwd

Set time zone:

# ln -sf /usr/share/zoneinfo/America/Kentucky/Louisville /etc/localtime
# hwclock --systohc

Uncomment 'en_US.UTF-8' in /etc/locale.gen:

# nano /etc/locale.gen

Generate locales:

# locale-gen
Tell the system which locale to use (though we only made one):
# echo LANG=en_US.UTF-8 > /etc/locale.conf

This computer is named after the cat:

# echo kittypet > /etc/hostname
Create or open /etc/hosts -
# nano /etc/hosts
and add the following:
127.0.0.1		localhost
::1			localhost
127.0.1.1		kittypet.localdomain kittypet

Setting up a swapfile and hibernate

We need to set up swap to have hibernate working. Hibernate is a really, really useful thing to have working on a laptop.

Make a swapfile the same size as RAM, in this case, 4GB:

# fallocate -l 4G /swapfile
# chmod 600 /swapfile
# mkswap /swapfile
# swapon /swapfile

Append the swap information to the end of /etc/fstab:

# echo /swapfile none swap defaults 0 0 >> /etc/fstab

We don't really need swap, except that we are going to use it for hibernate, so let's make sure it stays out of the way:

# echo vm.swappiness=10 > /etc/sysctl.d/99-sysctl.conf

Edit mkinitcpio.conf to add a hook for resume:

# nano /etc/mkinitcpio.conf

Add resume somewhere after udev but before fsck like this:

HOOKS="base udev autodetect modconf block filesystems keyboard resume fsck"

Regenerate the initramfs:

# mkinitcpio -p linux

Take a look at /etc/fstab and write down the uuid of root device.

Then find the first large number reported by

# filefrag -v /swapfile
under "physical offset" and write that down too. This is the offset number to be used for resume.

Configuring systemd boot with UEFI

Install some packages we will need shortly:

# pacman -Sv efibootmgr polkit dialog wpa_supplicant iwd dhcpcd openssh linux_headers mtools dosfstools

Installing the EFI boot manager

# bootctl --path=/boot install
Edit loader.conf as follows:
# nano /boot/loader/loader.conf
   timeout 3
   #console-mode keep
   default arch-*
Under /boot/loader/entries create a file arch.conf and edit it as follows, substituting the uuid and offset numbers written down earlier:
# nano /boot/loader/entries/arch.conf
   title	Arch Linux
   linux	/vmlinuz-linux
   initrd	/intel-ucode.img
   initrd	/initramfs-linux.img
   options	root=/dev/sda2 rw
   options	resume=UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
   options	resume_offset=xxxxxx
The system should be bootable at this point.

Booting the system for the first time and adding users; continuing installation

Shutdown (exit out of chroot first), remove the thumb drive, boot and log in to the new system. Check hibernate with:

# systemctl hibernate

Add a non-privileged user:

# useradd --create-home ted
# passwd ted
# usermod -aG wheel ted

Note: If you don't want a user to be able to make system changes, don't add them to group wheel, because we are going to enable sudo for group wheel. However, you need to add at least one user to group wheel, to complete installation.

Set up sudo for users in wheel group:

EDITOR=nano visudo

Uncomment out %wheel ALL=(ALL) ALL

Now enable networking services so networking starts right up after booting. We only need to do this until we get Network Manager going in a GUI environment:

# systemctl enable dhcpcd iwd

Reboot and log back in as the non-privileged user. Log in to the wireless again if you need to.

Under the user's home account, make a temp directory so we can build some things:

$ mkdir temp

Installing pamac

Install pamac to use as a GUI package manager, and for installing packages from AUR (Note this installs a lot of other things as dependencies of pamac, so if you decide not to install pamac, you could possibly have to install some of these explicitly at some point.):

$ sudo pacman -Sv git
$ cd ~/temp
$ git clone https://aur.archlinux.org/libpamac-aur.git
$ cd libpamac-aur
$ makepkg -si

$ cd ~/temp
$ git clone https://aur.archlinux.org/pamac-aur.git
$ cd pamac-aur
$ makepkg -si

Note: yay is very good if you don't like pamac, but you should like pamac.

Make sure alsa is working properly

Before installing Xorg, make sure alsa is working:

$ sudo pacman -Syu alsa-utils
On this laptop, we need to add the following file, else sound won't work properly:
$ sudo nano /etc/modprobe.d/default.conf
   options   snd_hda_intel  index=1
Save and close that.
$ alsamixer

(Use 'm' to unmute pcm, master, etc and turn the volumes up)

$ speaker-test -c2
You should hear noise through the left speaker, then the right. If not, go figure out what went wrong:)

Installing Xorg

We'll try X by itself before setting up xfce. This laptop has integrated Intel video, so it's pretty easy. We're also going to install some things we need later:

$ sudo pacman -Syu xorg xf86-video-intel mesa xorg-twm xorg-xclock xterm xorg-xinit

$ startx

Xorg should start right up. If it doesn't, go figure out what went wrong. If it's working, ctrl-D out of all the windows.

Installing xfce

$ sudo pacman -Syu xfce4 xfce4-goodies gvfs catfish ttf-dejavu ttf-liberation ttf-droid gspell

Make a simple .xinitrc in the user's home directory and make it executable:

$ cd
$ echo exec startxfce4 >> .xinitrc
$ chmod +x .xinitrc

Start up xfce:

$ startx

Spend some time admiring what a virgin xfce install looks like.

Open the Power Manager under settings, and turn on "Status Notifications"

Some miscellanous things

When I did this install the first time, I found some errors in the output of journalctl. This section of the install fixes these problems. I offer the following without explanation:

$ sudo pacman -Syu ffmpegthumbnailer libgsf libgepub libopenraw accountsservice gvfs-smb

On boot the system looks for keyboard backlight, but can't find one and throws a benign error, but anyway this gets rid of it:

$ sudo systemctl mask systemd-backlight@leds\:dell\:\:kbd_backlight.service

Installing lightdm display manager.

$ sudo pacman -Syu lightdm-slick-greeter
$ sudo nano /etc/lightdm/lightdm.conf
Under [seat:*] change greeter-session to read as follows:
greeter-session=lightdm-slick-greeter Make sure the line is uncommented. Save and close.

Enable lightdm service

$ sudo systemctl enable lightdm.service

Reboot, and lightdm should come up. There will be an icon for pamac-manager in the notification bar. Click on it to start pamac-manager. Open preferences and enable AUR support.

Installing Network Manager

$ sudo pacman -Syu network-manager-applet
$ sudo systemctl enable NetworkManager.service

Turn off some things we don't need anymore:

$ sudo systemctl disable dhcpcd iwd

Then reboot the computer. When you come back in, the Network Manager should be active on the task bar. Make sure it's working properly.

Installing a browser

This is probably a good point to install a browser. I suggest Firefox:

$ sudo pacman -Syu firefox
If you want Google Chrome, you have to install it from AUR. It takes a while to build.

# pamac build google-chrome

Getting Bluetooth working

Install Bluetooth packages along with pulseaudio. Install the following packages:

bluez
bluez-utils
pulseaudio
pulseaudio-alsa
pulseaudio-bluetooth
pulseaudio-zeroconf
libcanberra-pulse
pavucontrol
blueman

Create the file /etc/polkit-1/rules.d/51-blueman.rules using the instructions on the Arch web site under Permissions.

Bluetooth service will usually need to be restarted after coming out of hibernate or suspend. This script will make that happen automatically (thanks, Dennis Field).

/lib/systemd/system-sleep/00bluetooth

	#!/bin/sh
	if [ $1 = post ]
	then
		systemctl restart bluetooth
		echo "Hello, I'm resuming from $2"
	fi
Be sure to make the script executable.

$ sudo chmod a+x /lib/systemd/system-sleep/00bluetooth

Enable the bluetooth service:

$ sudo systemctl enable bluetooth.service

Reboot and make sure Bluetooth is working, for example, by pairing with a Bluetooth speaker. Bluetooth and expecially Blueman has a deserved reputation for being flaky. You might have to play with it. If you are having trouble, a good place to start is by seeing if it works using the command line utility bluetoothctl.

Getting printing working

Install the following packages:

Note: This is a "well-tinkered" setup for printing. Among other things, it can find Windows networked printers and set them up as automagically as possible.

cups
cups-pdf
bluez-cups
cups-pk-helper
gutenprint
hplip
sane
python-pyqt5
splix
system-config-printer

Enable cupsd:

$ sudo systemctl enable cups.service
$ sudo systemctl start cups.service

Open Print Settings under Applications --> Settings and add your printers.

Adding search to thunar

Use the instructions at How to make xfce's file manager more usable to add catfish search to thunar file manager and some other things. Note, if you want to be able to use thunar as superuser as it suggests you need to gksu:
$ pamac build gksu

Some useful applications

Install the following useful applications (office, mail, etc.):

libreoffice
audacious
audacity
vlc
atom
emacs
vim
gimp
gthumb
unzip
noto-fonts-cjk
ttf-ms-fonts [from AUR]
ttf-ms-win10-auto [from AUR]
etcher-bin  [from AUR]

Recently, I'm using webmail. If you want to install a mail client a good lightweight one is claws. I also have used sylpheed a lot but I don't think it's maintained anymore. I've heard thunderbird is easier to set up but I haven't used it. You're on your own. There is a possibly useful, but surely outdated guide to setting up sylpheed on my home page.

Enabling Avahi

This enables Avahi (Bonjour), if you should need it (I can't imagine why anyone needs this and you can probably skip it. I used it once for something):
$ sudo pacman -S nss-mdns
$ sudo nano /etc/nsswitch.conf
Add mdns_minimal after hosts: files in /etc/nsswitch.conf
$ sudo systemctl enable avahi-daemon

Setting up network time synchronization using systemd-timesyncd

Follow the instructions on the Arch wiki page on systemd-timesyncd.

Setting up Japanese language entry

Use Mosc and Fcitx. Obviously you can skip this part if you don't need Japanese language text entry.
sudo pacman -Syu fcitx5-im fcitx5-mozc

Log out and log back in. Follow the Instructions for fcitx5 on the Arch site


Pointless screenshot