Oracle Linux first impression

This post is about Oracle Linux (OL) installation and adding wireless module to Linux kernel in order to get Wi-Fi working. If you installed some Linux distribution and realize that there is no 'wifi drivers' or NetworkManager not showing Wi-Fi menu, then may be installed kernel not supporting your wireless device. How to make Wi-Fi working described here, all steps can be applied to any Linux distribution, but my problem is appear when I was configuring Oracle Linux 7.1

Introduction

I already tasted openSUSE, Debian, Ubuntu and Fedora 22( my current OS). A few days ago I have gained new laptop Asus N550JK and I've decided that it is time for something new. It is time to taste Oracle Linux, it is new (for me), stable and fast OS. Also I wanted to work with such technologies as btrfs, openstack and Oracle Virtualization, I think it will be very nice experience for me.

Installation, configuration and first problem

Windows 8.1 was preinstalled on N550JK, but I just removed it while OL installation. Installation was very easy and simple. The first thing that I realized after boot is that Wi-Fi is not working. It is because there is no drivers for my wireless devices integrated into default OL kernel 3.8.13-98.2.2.el7uek.x86_64.

First of all checking device model using lspci:

$ lspci | grep Network
04:00.0 Network controller: Qualcomm Atheros AR9485 Wireless Network Adapter (rev 01)

Here and here I found that ath9k is desired firmware name. Now go to kernel.org and download backports for kernel version, for me it is 3.8.13.

After driver installation I experienced problems with Wi-fi: low signal quality, sometimes connection drops, slow internet connection. Investigation shows that there is some bug in backports 3.8.13, and I have to install backports 3.11. I'm showing all steps that I did, but reader may want to install newer bugless driver right away.

Now extract everything

$ tar -xvf compat-drivers-3.8-1.tar.gz
$ cd compat-drivers-3.8.1
$ ./scripts/driver-select ath9k
$ make

There is one important thing to mention before we run make install, script update-initramfs.sh that is located in scripts folder (compat-drivers-3.8.1/scripts/update-initramfs.sh) is not ready for Oracle Linux. It is checking Linux distribution release name using this command:

 $ sed -n '/^NAME/ s/^NAME=\(.*\)$/\1/p' /etc/os-release
 "Oracle Linux Server"

But script waiting only for strings "Ubuntu", "Debian" or "Fedora". Before run make install I had to change script a little bit, here is changed version:

#!/bin/bash
# Copyright 2009-2013        Luis R. Rodriguez <mcgrof@do-not-panic.com>
#
# Since we provide ssb, ethernet modules and most importantly
# DRM drivers, people may want to update the initramfs image
# of their distribution. This can also help people who may
# want to wireless-boot their systems.

KLIB="$1"
ver=$(echo $KLIB | awk -F "/lib/modules/" '{print $2}' | awk -F"/" '{print $1}')
dir=/boot/

if [[ -z $LSB_RED_ID && -f "/etc/os-release" ]]; then
        # Let's try with os-release. Fedora doesn't have
        # lsb_release anymore.
        LSB_RED_ID=$(sed -n '/^NAME/ s/^NAME=\(.*\)$/\1/p' /etc/os-release)
fi

        INITRAMFS=${dir}initramfs-$ver-compat-drivers.img
        KERNEL=${dir}vmlinuz-$ver
        GRUB_TITLE="Fedora ($ver) with compat-drivers"

        echo "Updating ${LSB_RED_ID}'s initramfs for $ver under $dir ..."
        mkinitrd --force $INITRAMFS $ver

        # If a previous compat-drivers entry for the same kernel exists
        # do not add it again.
        grep -q "${GRUB_TITLE}" /etc/grub2.cfg &> /dev/null
        if [[ "$?" == "1" ]]; then
                echo "Will now run grubby to add a new kernel entry ..."
                # Add a new kernel entry
                grubby --grub2 --copy-default --add-kernel="$KERNEL" --initrd="$INITRAMFS" --title="$GRUB_TITLE"
        fi

Now run:

$ sudo make install

Now unload everything as it is suggests and reboot.

$ sudo make unload
$ sudo modprobe -v ath9k
$ sudo reboot

As I mentioned before this driver version has a known bug. So finally I download backports 3.11 and do almost the same:

$ backports-3.11.8-1.tar.gz
$ cd backports-3.11.8-1

Now use make instead driver-select.

$ make defconfig-ath9k

Don't forget about update-initramfs.sh, for OL it should look like as I wrote above.

$ sudo make install
$ sudo modprobe -r ath9k
$ sudo modprobe -v ath9k
$ sudo reboot

And finally Wi-Fi works perfectly.

Conclusion

I'm writing this post from Oracle Linux working on Asus N550JK, everything works very well. Later I will try write one more post, something like "First things to do in Oracle Linux for home usage". Also I will write a few posts about btrfs and Oracle virtualization features. I think that Oracle Linux is very good choice for a developer or administrator.