📅 July 12, 2016
“Yes! Linux Mint 18 has been released, and it feels like Christmas!”
The Linux world is an exciting landscape of ingenuity to explore, and this new distribution brings improvements that solidify Linux Mint as one of the most stable and user-friendly operating systems available today.
I have been using Linux Mint 18, but a few things are different from past releases. I also encountered a few bumps along the installation road, so here are a few points to be aware of.
- Kernel Upgrade
- Samsung 950 Pro NVMe Installation
- Installation Not Detecting Solid State Drives
- Using a Local Repository
- R.A.T.7 and M.M.O.7 Mice
- Link Aggregation (Not Yet Resolved)
- Disabling Predictable Network Interface Names
- Disabling IPv6
- Installing VirtualBox 5.0 with libvpx1 Dependency Error
Being a fan of the Cinnamon desktop interface, I installed Linux Mint 18 Cinnamon 64-bit (Codenamed “Sarah”). Linux Mint 18 is based on Ubuntu 16.04 Xenial Xerus, so this is a Long Term Support (LTS) release.
I installed LM18 fresh on real hardware. With a USB 3.0 image made with Yumi, LM18 installs to a solid state drive in about one minute depending upon the hardware. I had a completely working operating system in under two minutes from start to finish — including the necessary reboot. That’s fast. The longest installation took 3m14s on slower hardware.
Even better, with the Samsung 950 Pro M.2 NVMe, installation completes in under a minute (assuming the other hardware is also fast).
While LM18 installs with kernel 4.4.0-21-generic, I manually installed the 4.6.3 Ubuntu mainline kernel — the most recent as of the date of installation. The new “Yakkety” kernel (4.6.3-040603-generic) works perfectly.
Kernel 4.6.4 also works installs and works well. To install a new kernel, download three files for your architecture. For example, a 64-bit Linux Mint 18 system needs these three files:
- linux-headers-4.6.4-040604-generic_4.6.4-040604.201607111332_amd64.deb (1.0M)
- linux-headers-4.6.4-040604_4.6.4-040604.201607111332_all.deb (9.4M)
- linux-image-4.6.4-040604-generic_4.6.4-040604.201607111332_amd64.deb (55M)
Place them in their own directory, and then open a terminal in that directory. Enter,
sudo dpkg -i *.deb
This saves typing. The kernel will install. Be careful to download the correct set of files since several architectures are lumped together in the same directory on the web site. It can be easy to accidentally download an incorrect file and then wonder why it will not install.
In my case, I use the generic kernels. The low latency kernels are better suited for music production and recording systems.
Does Linux Mint 18 Install and Boot from the Samsung 950 Pro NVMe?
From the start, the Linux Mint 18 installer automatically recognized the 256G Samsung 950 Pro NVMe M.2 (Non-volatile Memory Express) module in a PCIe adapter and installed to it. 100% compatibility without any issues.
After installation, Linux Mint 18 booted straight from the NVMe module and into a working login screen. And in case you are wondering about NVMe performance — yes, it’s very fast. The entire LM18 system feels instantly responsive.
When setting up the NVMe installation, I chose to manually configure the installation partitions. Linux Mint 18 sees the NVMe SSD as /dev/nvme0n1, and this is important for specifying the boot loader’s location. Make sure that the boot loader installs to the NVMe device, not the installation USB or another drive.
In my case, I created two primary partitions on the NVMe SSD:
/dev/nvme0n1p1 Root /dev/nvme0n1p2 swap
And then, I set the boot loader for /dev/nvme0n1.
Linux Mint 18 booted perfectly after installation.
Important Note: BIOS was set to Legacy Mode (not UEFI), and all Secure Boot options were disabled in BIOS. SATA mode was set to AHCI.
BTRFS (The Butter/Better/B-Tree File System)
At last! btrfs is available as a format option for system installations. The B-tree Filesystem (or Butter Filesystem or Better Filesystem, whatever you prefer since nobody can seem to agree) is a modern filesystem that aims to replace the older ext3/ext4. Looking at the specifications, it offers improvements that increase data reliability.
btrfs has been around for a while, but it was an optional installation. Now, it is considered stable and included as part of the 16.04 package. You can still use ext4 and others if you wish, so you still have formatting options.
Personally, I have had excellent results with btrfs, and I like the improvements it brings. It’s worth learning about since it appears to be the next Linux staple along with the reliable ext3/ext4.
Here is a quick, nontechnical (2012) introduction to btrfs.
What could possibly go wrong?
Not Detecting Solid State Drives
I tried installing Linux Mint 18 on systems with SSDs, but the LM18 installation refused to detect the SSDs even though they were visible in BIOS. The same happened with Xubuntu 16.04. Older distributions, such as Linux Mint 17.3 and Xubuntu 14.04.3 detected the SSDs fine. What’s the problem?
It turns out that in all systems with SSDs, BIOS was set to AHCI mode, which is usually what you want these days. However, to make Linux Mint 18 see the SSDs, I had to set the SATA mode to Legacy IDE (sometimes called Native IDE depending upon the motherboard). Linux Mint 18 does not seem to like AHCI with my hardware, and, thus, refuses to recognize the SSD drives during installation.
Setting the SATA mode to Legacy IDE fixed this problem. Linux Mint 18 as well as Xubuntu 16.04 detected the SSDs properly with Legacy IDE mode, and installation continued.
Installation and system usage are still fast with Legacy IDE, and I do not notice any performance degradation during everyday usage. It seems strange that a modern, 2016 Linux distribution requires Legacy IDE mode in order to install, but oh, well. I would prefer AHCI since that is the newer standard, but I am still happy.
Using a Local Repository
As far back as Ubuntu 10.10, any Ubuntu-based distribution could use the same local repository (created with debmirror) by pointing its sources.list (Ubuntu) file to the ftp server hosting the local repository. Any Ubuntu-based distribution would grab software updates from there instead of wasting duplicate Internet bandwidth.
It was a simple process up to Linux Mint 17.3, but Linux Mint 18 gave me problems. Despite following the same local repository setup procedure, Linux Mint 18 would not update from a local repository even though it would update fine from an Internet repository. All update packages were ignored, and Mint complained about a missing Packages file even though it existed. Xubuntu 16.04 also had the same issue.
This problem was a stumper. After lengthy trial and error, I finally noticed a hidden directory named .temp in the dists directory of the local repository. I deleted this .temp directory and updated the local repository again, and it worked! Updating the local repository by itself was not enough. .temp had to go. No idea why, but it seems .temp contained files that were interfering with the update process.
Local repository updates now work with Linux Mint 18 and Xubuntu 16.04. One issue may be due to the updated version of apt 1.2.12, which adds more security restrictions to system updates compared to the older apt program running on previous versions of Linux Mint and Xubuntu. Since updates worked after deleting .temp, I suspect that the local repository was at fault.
Assuming you already have a local repository, if you wish to set up Linux Mint 18 to use it, open /etc/apt/sources.list.d/official-package-repositories.list (for Linux Mint) in a text editor (use sudo) and comment out all Internet-based lines.
Local file repository access looks something like this:
deb [arch=amd64] file:///media/repos xenial main restricted universe multiverse deb [arch=amd64] file:///media/repos xenial-security main restricted universe multiverse deb [arch=amd64] file:///media/repos xenial-updates main restricted universe multiverse deb [arch=amd64] file:///media/repos xenial-backports main restricted universe multiverse
FTP looks something like this:
deb [arch=amd64] ftp://192.168.4.40:/media/repos xenial main restricted universe multiverse deb [arch=amd64] ftp://192.168.4.40:/media/repos xenial-security main restricted universe multiverse deb [arch=amd64] ftp://192.168.4.40:/media/repos xenial-updates main restricted universe multiverse deb [arch=amd64] ftp://192.168.4.40:/media/repos xenial-backports main restricted universe multiverse
These are for the four main xenial sources, but you can add other repositories as you need.
Notice the [arch=amd64]? This tells Mint to grab the 64-bit architecture files only. If you are running a 64-bit Linux system and have a 64-bit local repository, then apt-get will spew several i386 errors if it cannot find the 32-bit updates. Since I am using a 64-bit system, there is no need to have the 32-bit updates, so [arch=amd64] prevents the i386 errors from appearing.
R.A.T.7 and M.M.O.7 Mice
Linux Mint (as well as Xubuntu 16.04) still requires a custom xorg.conf file to prevent a nonresponsive mouse buttons if using the Mad Catz M.M.O.7 mouse or the Saitek R.A.T.7 mouse. This has been a recurring issue over the years with these mice, and it continues today. However, the solution is the same. Copy these lines into /etc/X11/xorg.conf
Section "InputClass" Identifier "Mouse Remap" MatchProduct "Saitek Cyborg R.A.T.7 Mouse" MatchIsPointer "true" MatchDevicePath "/dev/input/event*" Option "Buttons" "17" Option "ButtonMapping" "1 2 3 4 5 0 0 8 9 7 6 12 0 0 0 0 0" Option "AutoReleaseButtons" "13 14 15" Option "ZAxisMapping" "4 5 6 7" EndSection Section "InputClass" Identifier "Mouse Remap" MatchProduct "Mad Catz Mad Catz M.M.O.7 Mouse|M.M.O.7" MatchIsPointer "true" MatchDevicePath "/dev/input/event*" Option "Buttons" "24" Option "ButtonMapping" "1 2 3 4 5 0 0 8 9 10 11 12 0 0 0 16 17 7 6 0 0 0 0 0" Option "AutoReleaseButtons" "20 21 22 23 24" Option "ZAxisMapping" "4 5 6 7" EndSection
If xorg.conf does not exist, create a new file. This prevents the nonresponsive mouse buttons effect and eliminates the need to log out and log back in to make the mouse function properly.
Still working on this one. While link aggregation works if configured manually from a terminal upon each system boot, the bond will not persist across reboots, and shutdown times can take up to five minutes. For now, a single network interface is used.
New Network Names
Linux Mint 18, like Xubuntu 16.04, uses Predictable Network Interface Names to name network interface devices. While this has been around for a while, the 16.04 series is the first time that I have seen this used by default on a Linux desktop distribution.
This means that your network devices are named something cryptic like enp1s0, ens1, and enp6s0 instead of something friendly like eth0, eth1, and eth2.
While the theory is sound for systems with many network interface devices, the implementation is confusing for my humble system and makes little sense, so I chose to turn it off and return to the traditional eth0 naming to avoid rewriting scripts.
While there are several techniques that reportedly disable the device names, the only one that worked for me in Linux Mint 18 and Xubuntu 16.04 was to set net.ifnames=0 on the kernel command line in grub.
Open /etc/default/grub in a text editor (as root), and change this line,
Run sudo update-grub so the changes will take effect. Reboot. Enter ifconfig in a terminal, and you should see the classic eth0, eth1, eth2, eth3 names as before.
Like Xubuntu 16.04, emphasis is placed on IPv6. IPv6 does not work for me (always times out, network not supported), so I must disable it and use IPv4. While editing sysctl.conf used to work in the past, Linux Mint 18 and Xubuntu 16.04 no longer acknowledge the changes across reboots.
The following traditional edits to /etc/sysctl.conf never worked for me with Linux Mint 18/Xubuntu 16.04 even though these lines correctly disabled IPv6 in LM17.3 and earlier:
net.ipv6.conf.all.disable_ipv6 = 1 net.ipv6.conf.default.disable_ipv6 = 1 net.ipv6.conf.lo.disable_ipv6 = 1
To disable IPv6, open /etc/default/grub in a text editor (as root), and add ipv6.disable=1 to the boot command.
Change this line,
If also disabling the predictable device names, you can combine the two in one line:
Run sudo update-grub to commit the changes. IPv6 should be disabled upon the next reboot. ifconfig will not show any IPv6 addresses if IPv6 is disabled. Only IPv4 appears.
VirtualBox 5.0.24 refused to install due to a dependency error.
You need to manually install libvpx1, which is a VP8/VP9 codec.
Download libvpx1_1.3.0-3ubuntu1_amd64.deb (for 64-bit systems) and install it. (For 32-bit systems, use the i386 version.) Once done, VirtualBox will install.
Since my repository was not working at the time, I had to manually download and install this file in order to install VirtualBox. Some repositories have libvpx1, and a few do not — at least at the time of installation.
So far, Linux Mint 18, is stable and feature-packed to make it the best version yet. Aside from the issues mentioned above, everything else works, and I have encountered no problems. Install and go. From software to hardware compatibility, using this distribution has been a breeze these past few days, and it is hard to consider using anything else. I have been looking forward to Linux Mint 18 for quite a while now, and the finished product feels like the wait was worth it.
Overall, Linux Mint 18 feels more polished and refined to make it a better user experience than Linux Mint 17.3. It even works well as a guest OS in VirtualBox. I am discovering many positive things to say about Linux Mint 18, but that is for another time. Hopefully, these tips will help others who might be encountering similar installation issues.
Related: Linux Mint 18 System Settings