While I haven’t quite figured out what I’m going to be doing for this round of The Linux Experiment, I have decided that now is a good time to try something I’ve been meaning to try for a while: get Linux to boot off of an external hard drive. This was actually such a straight forward process, simply install like normal but choose the external drive for the location of all files, that I won’t bother you with the details. The only special thing I did was decide to install GRUB on the external drive making the whole install essentially a completely isolated thing – that way if I turn off the external drive then the computer boots up off of the internal drive like normal, if I boot with the external drive on then GRUB asks me what to do.
The only downside to a setup like this is that I am using USB 2.0 as my connection to the hard drive which means the disk I/O and throughput will be theoretically lower than normal. Arguably I could get around this by using something like USB 3.0 or eSATA but so far in my experience this hasn’t really been an issue. Besides once the OS boots up almost everything is running and/or cached within RAM anyway. In fact that only problems I have run into with running Linux on this desktop were, ironically, driver issues.
First up is the wireless drivers. Yes, it is 2013 and I am still having Linux WiFi driver issues… This issue was unlike any I had seen before – the wireless card was automatically detected, the Broadcom proprietary driver was automatically selected and enabled, it even appeared to work but no matter what I tried it simply would not make a lasting connection to the wireless network. On a whim I decided to just turn off the device driver and, even though the dialog window told me that I would no longer be using the device, things suddenly started working like magic. I have to assume that buried deep within the Linux kernel is already an open source implementation for my wireless driver and that is what is actually working right now. Whatever the actual cause, the device is now working flawlessly.
For future reference: Do not use the device = magically make everything work perfectly
The other driver issue I had was again related to a proprietary driver, this time for my graphics card. By default the install used the open source driver and this worked fine. However I have had a long battle with AMD/ATI cards working on Linux without using the proprietary driver and so I decided to enable it in order to avoid any future problems.
One reboot later and not only was my colour and resolution completed screwed up but I also got this “awesome” overlay on my desktop that said “Hardware not supported”. I tried to take a screenshot of it but apparently it is drawn onto the screen post-display or something (the screenshot did not show the overlay). So for now I am back to using strictly open source drivers for everything and amazingly it is all just working. That’s probably the first time I’ve ever been able to say that about Linux before.
My laptop’s graphics card has never had the best support on linux and has now approached the point in its life where even ATI has stopped supporting it with new driver releases. On one hand I’m thankful that the open source driver performs well enough that I can continue to use this hardware, on the other though it does result in some downright awful power management. With the default settings my graphics card runs extremely hot and requires the fan to be on constantly. Luckily there is a quick way to fix this and tell the open source driver to run my card in a low power state at all times.
- Start a root terminal (or use sudo for everything)
- Set the card to use the power profile (assuming your computer uses card0)
echo profile > /sys/class/drm/card0/device/power_method
- Set the power profile to “low” setting
echo low > /sys/class/drm/card0/device/power_profile
You can check what the current setting is by running the following command:
I would also highly recommend rebooting and then checking the setting again. I found that on my laptop the setting was being reset everytime the computer turned on. If this happens to you try my work around – simply edit /etc/rc.local and add the line in step 3 before the return 0. My file looks like:
echo low > /sys/class/drm/card0/device/power_profile
Continuing where I left off in my previous posts I now had a somewhat working desktop but a few things still had to be done. For one I am running this on my laptop and while the open source radeon drivers are actually pretty decent they’re just not quite good enough when it comes to power management. Thankfully the Linux closed source drivers are up to the job.
After reading through these two sites I was able to install the closed source drivers and get full control over my graphics card. To be perfectly honest I’m not exactly sure what steps got me to this point but I do know it was a mixture of the two sites.
After careful consideration I had come to the conclusion thought I had bricked my wireless. Worse yet after following the guide here (even the parts specific to KDE) I just couldn’t seem to get it to work. Thankfully I stumbled upon this guide which instructed me to install networking components for KDE. Apparently once I had installed this package all was good.
Flash was actually incredibly easy to install. All I had to do was enter the following command in a root terminal and then restart Firefox.
Another big install was the official Oracle Java JRE and JDK. To install just the JRE run the command dev-java/sun-jre-bin. If you want the JDK as well then run the command dev-java/sun-jdk. The only weird part about this was that this package is now considered restricted. To work around it simply download the bin file from Oracle and place it in /usr/portage/distfiles before running the command.
More to Come
There is still plenty more to do, like install LibreOffice and figure out why my computer currently can’t play audio CDs. I am however thankful that at this point I am at least a bit better off than some other fellow Linux Experiment participants.
My Desktop So Far
The high CPU load was because I had just finished compiling a bunch of stuff 😛