MX Linux installation

Since 2018 my Panasonic Toughbooks (CF-19 mostly) run MX Linux with XFCE, and now with MX 21 also KDE. The ultimate combo of weathered hardware and current software. This pages briefly describes installation and configuration of an XFCE / KDE dual boot setup, as a quick reference to revisit when doing a fresh install.


Desktop, bitness and kernel options are listed on MX downloads page. System requirements can be found in MX manuals. MX 21 recommends a minimum of 2 GB memory, 20 GB harddisk space, and 4 GB for a live installer medium. Verify checksum after downloading an image:

$ sha256sum /path/to/file

bootable USB

Use downloaded .iso file to make a bootable USB disk. A size of 4GB is sufficient for MX21. Insert USB and find out its device name or full path respectively (careful with fdisk, it is a partitioning tool):

$ lsblk
$ sudo fdisk -l

Built-in harddisk is often /dev/sda and USB stick can be something like /dev/sdb or /dev/mmcblk0. Verify by their size. Copy .iso file to USB stick with command dd, where “if” is input file (image name and path) and “of” is output file (USB device, full path, no partition number). Be careful with output file name. Copying can take a few minutes.

$ sudo dd if=<image> of=<USBdevice> bs=4M; sync

BIOS settings

Bootable USB disk must have highest boot priority in BIOS. On Panasonic Toughbook press F2 at power on to enter BIOS menus. May be a different key for other brands.

live session

Optionally you can install extra packages in a live session. XFCE has synaptic preinstalled. Use “reload” button to get the list of available packages. KDE does not have synaptic preinstalled. Use apt instead, or install synaptic through apt.

$ sudo apt update
$ sudo apt install synaptic

In XFCE live session disable display blanking first because the display may go black during inactivity and not recover:

Menu > Settings > Power Manager > Display > Display power management


For a brand new ssd I do partitioning in the live session. MX with XFCE has graphical partitioning tool gparted preinstalled. KDE has a similar tool. The tool must first write a partition table before it can create partitions.

My current dual boot disk has two system partitions of 40 GB each, a small swap partition and a data partition. All with file system type ext4 except swap. I left some GB unallocated just to be sure, even though the ssd may have “overprovisioning” space by default.

partitions in dual boot setup

My older 120 GB disks have 20 GB system partitions. This is still sufficient for MX with preinstalled apps plus a few extra.


MX User Manual describes installation steps in chapter 2.5. The manual is also on the .iso image.

  1. First step is to select keyboard layout. With wrong keyboard layout troubleshooting on command line can be difficult.

  2. Second step is disk layout. For dual boot always select custom layout. In MX 21 this will present a graphical interface resembling a partitioning tool (but more confusing). You have to select from drop down lists here to assign partitions for root (the system) and swap (which I forgot sometimes).

  3. Next step will activate the installer and let you select boot options. Defaults are OK for my use case.

  4. Next step let you select computer names. Defaults are OK for me, except that I don’t need samba.

  5. Next window let you select locale (language etc.), timezone and clock format. A Sevice Settings popup let you enable / disable services. Here again I disable samba. For the rest I leave the defaults and configure some services later through utility “sysv-rc-conf”.

  6. Next window let you select user name and passwords for user and root. Here you can also enable autologin so you need no password to use the computer.

  7. Next window will present tips about MX while installation is in progress. When installation is complete, user input is awaited for finishing.

  8. Uncheck automatic reboot before finishing, otherwise you’ll reboot into the live USB.

disable blank display

In XFCE first of all I disable display blanking before doing anything. There is or was a bug where display will not recover from blank (black, really) display after inactivity.

Menu > Settings > Power Manager > Display > Display power management


After reboot into the fresh install, upgrade existing packages. Package manager Synaptic keeps a history of its actions which can be useful for troubleshooting. Also it displays package information in tabs for description, dependencies, installed files. MX XFCE comes with Synaptic preinstalled. In KDE it can be installed through apt:

$ sudo apt update
$ sudo apt install synaptic

Synaptic’s equivalent of “apt update” is the “reload” button, meaning to refresh its internal list of available packages. An “upgrade” in this context means (installation of) the most recent version of a package. In Synaptic before installing anything:

Settings > Preferences > Files
    > "Delete downloaded packages after installation" 

Also on tab General make sure that recommended packages are not automatically considered as dependencies. If Synaptic’s package list is up to date click “Mark All Upgrades”, then “Apply”. Directly after fresh install this may give a long list of changes to be made.

synaptic and apt-xapian

Synaptic has a Quick Search field but also a pop-up window with more search options. Quick Search relies on indexing tool apt-xapian which will rebuild the search index when Synaptic is started. Rebuilding may take quite a while and cause high CPU load. Worse, sometimes a package can not not be found during this time. For me it is not worth the hassle, therefore I uninstall apt-xapian. Quick Search field will disappear. Search results in pop-up window will not be instantaneous but take a few seconds. I’m fine with that.


Pre-installed packages are partly related to desktop GUI toolkit (GTK for XFCE and Qt for KDE). XFCE comes with code editor Geany while KDE comes with Kate. Yet GTK apps can be installed on KDE and the other way round. They do bring dependencies to a non-native desktop. No problem if an app is indispensable like Qasmixer. Installing a file browser from a different desktop project is never a good idea though.


Many preinstalled applications are useful to me.

Additional packages / applications I mostly install:

I tried once to get rid of libreoffice suite by uninstalling libreoffice-common. This left about 50 dependencies autoremovable according to Synaptic. Trying to remove these led to “broken packages” error. This could not be resolved via Synaptic but only through:

$ sudo apt install -f

cross compilers

Cross-compiler toolchains can be installed through the g++ compiler for a platform plus its dependencies. Do not install anything with “multilib” in the name. Wine can be installed to test build results for Windows. In Synaptic mark these packages for installation:

Synaptic will list all dependencies and mark them for installation. This will amount to a few gigabytes of disk space needed. These toochains can compile for old and new Raspberry Pi’s and other single board computers with Linux, Linux 32 bit on Intel / AMD hardware, Windows 32 and 64 bit systems. Tool chains for MacOS and iOS are not to be found here, not FLOSS.

MX Codecs Installer

Due to legal issues some media codecs are not preinstalled on MX and not to be found in its regular repositories. Those codecs are needed to play certain copyrighted media and streams like npostart. MX Codecs Installer can install them at the user’s responsibility. You will be asked to agree by clicking a button:

MX Codecs Installer

But which packages will be installed? Running the installer in terminal to see its output (trimmed to the relevant part here):

dpkg --remove libtxc-dxtn-s2tc:amd64
dpkg --remove libtxc-dxtn-s2tc:i386
dpkg -i libdvdcss2_1.4.3-dmo1_amd64.deb
dpkg -i libtxc-dxtn0_1.0.1-dmo4_amd64.deb
dpkg -i libtxc-dxtn0_1.0.1-dmo4_i386.deb
dpkg -i w64codecs_20071007-dmo2_amd64.deb
apt-get -f install

Hereafter the codec packages will be visible as installed in Synaptic’s package list but not be mentioned in its recorded history.

enable swap partition

What if you forgot to specify a swap partition during installation? It can be set afterward. See explanation on debian wiki. First find the swap partition UUID with:

$ sudo blkid

Then add in /etc/fstab:

UUID=<UUID> swap swap defaults 0 0

Attention: end file fstab with a newline! Mounting or unmounting issues may arise if fstab does not end with a newline.

mount data partition

A data partition may be mounted under /mnt at boot. Some systems will mount any device automatically (not MX KDE), but even then we need to add it permanently so applications will see them for file operations. First make this path:

$ sudo mkdir /mnt/data

Then find UUID of the data partition:

$ sudo blkid

Then add this line in /etc/fstab:

UUID=<UUID> /mnt/data ext4 defaults 0 0

Again: end file fstab with a newline!

ext4 permissions

The ext4 file system uses permissions to decide if a user may read, write and/or execute a file. A shared data partition in a dual boot setup will only work convenient if users have the same UID on both systems. The first user on a Debian (-based) system will have UID 1000. In my case with various single-user MX installs there should be no issue. To check UID:

$ id -u <username>

If owner and permissions were already configured in the other system of a dual boot, this will apply to both systems. In case of a new hard drive ownership of the data partition can be set recursively with:

$ sudo chown -R <username> /mnt/data

All directories and files in the home dir should be owned by the user. Sometimes ownership can be changed accidentally, for example when an app created a config file while it was being used with sudo permission. Ownership can be changed recursively and include hidden files when you first cd to the directory of concern and then:

$ sudo chown -R <username> * .*

Only once I’ve tried a shared home dir on a data partition. Not a good idea to let apps from different systems share their config dirs. So now my home dirs are on their own system partitions and will be refreshed together with them. But I want fast access as if “data” is a subdir in my home dir. This goes via a symlink. In terminal (while in the home dir):

$ ln -s /mnt/data data

Or else create symlinks for all subdirs of /mnt/data:

$ ln -s /mnt/data/* .

disable splash

MX Linux will by default not display kernel messages during startup but a “splash screen” instead. This can be changed via:

Menu > MX Tools > MX Boot Options

Erase “quiet” and “splash” from the kernel parameters field. Also you can change boot menu time out. After “apply” the tool will update GRUB which can take a while. This will also set the current system as default in boot menu. Boot and kernel messages are stored in log files which can be inspected with:

$ sudo cat /var/log/kern.log
$ sudo cat /var/log/boot.log 

disable tlp

If you find your UI frozen, or your soundcard shut off; that could be tlp. This power saving utility should never be activated without the user’s explicit consent as it may cost you hours or days of puzzling in the dark as I can tell from experience. See tlp’s troubleshooting page. Rather than troubleshoot I’ll just disable or remove tlp. To disable modify this file:


By default this will have:


This must be set to 0, and don’t forget to remove the comment. The new setting will be effective after reboot.

disable auto-updates

MX Linux will by default automatically check for software updates and display notifications about them. This check seems to happen not very long after start up. It causes high CPU load during a minute or so, shown in the CPU monitor widget. Command htop will then show apt-notifier or unattended-upgrades on top. This unsolicited activity may come at inconvenient moments, for example during a presentation, therefore I want to disable it. But there is no simple button, and XFCE and KDE have different auto-update methods.

First I have disabled the systray app. In XFCE that is MX Updater (apt-notifier under the hood) which can be prevented to autostart. In KDE there is plasma-discover, a package manager for the KDE store which can be uninstalled. Notifications will now stop.

On XFCE there still is “unattended upgrades” behind the scenes. This can be prevented to autostart via a command (which must be installed first):

$ sudo sysv-rc-conf

We’re not done yet on XFCE because there is this script which will be called every day to search for updates:


And this configuration file will enable or disable the cron job:


The daily update is enabled by default, but can be set to “0”:

APT::Periodic::Enable "1";

disable PulseAudio

PulseAudio is an audio mixer daemon installed by default on MX. From ALSA perspective it is configured as default audio card, a virtual device. The user is allowed to operate the master channel while controls like pcm, headphones and speakers will be automatically set to 0 dB for optimal resolution, or off when not in use. See PulseAudio’s own explanation.

After every fresh install I try to tolerate PulseAudio. But I wish PA could be told to never touch any of my alsamixer settings. There is only one simple way to do that: complete removal.

Some apps like Firefox cannot work without PulseAudio. Package apulse can be installed in its place. Then Firefox must be started as:

$ apulse firefox

In Firefox’s .desktop file the command should be changed as well. This can be done conveniently through editing its menu item.

apulse firefox %u

PulseAudio’s panel widget can be removed as well and QasMixer can take its place in the systray.


QasMixer is a Qt app to control ALSA audio settings. An indispensible tool for me, both on XFCE and KDE (XFCE’s mixer is long discontinued). Wide sliders, ideal for touch screen.


QasMixer can show the same controls for all audio devices as keyboard-operated ncurses tool AlsaMixer. Its display can be set to show a hardware card by default.


Services which are rarely used may be prevented from autostart to speed up boot time and save memory. Under SysV service manager an ncurses tool let you configure autostart options for services:

$ sudo sysv-rc-conf

You may incidentally need a service for which autostart was disabled. They can be started and stopped in runtime with:

$ sudo service <service name> start
$ sudo service <service name> stop

Some services will not start before user login. Services and other processes can be seen in tree view:

$ pstree

touch screen

Calibrating a resistive touch screen can be simple or complex. I have a separate page touch screen but in the simplest case evdev is preconfigured to catch touch screen events. Try to read the conf file:

$ sudo cat /etc/X11/xorg.conf.d/10-evdev.conf

For a touch panel set as “tablet” in BIOS, uncomment the tablet section. Install package xinput-calibrator first. Let it list calibratable devices, then calibrate the intended device (note underscore in command, as opposed to dash in package name):

$ xinput_calibrator --list
$ xinput_calibrator --device <id>

Touch each of the four crosshairs precisely. If calibration seems to function hereafter, it can be made permanent accross sessions by writing the calibrator’s response in a config file. Be sure to not add a newline this time.