Monday, October 31, 2016

Windows 8 and Linux on a Toshiba Satellite Laptap

Windows 8 and Linux on a Toshiba Satellite Laptap


 Windows 8 and Linux on a Toshiba Satellite Laptap

About a week ago, I got a new laptop: a Toshiba Satellite C855D-S5351. With the $50 rebate and $120 instant savings available on it at Office Depot, I thought it was going to be a great deal for $329. Perhaps, if I only wanted to run Windows 8 on it, I would be satisfied, but because I also want to run Linux on it, Ive had to struggle to get a few things working.

First, in order to make Windows 8 livable, I would recommend installing Classic Shell. You can download it from  http://www.classicshell.net/. As shown in the screenshot, Classic Shell not only provides the Start Menu that is missing in Windows 8, but a greatly improved Windows Explorer. The menu can even look like the version of a Windows Start Menu that you like the best. I really like locating things where they always have been in Programs or the Control Panel, as well as the Windows key on your keyboard will now activate this menu. When you want to go to the Windows Metro look, you can either Alt-tab to the App, or move over the right side of the screen, and activate the Start icon.

Preparing to Install Linux on a Windows 8 System


Before you do anything to your hard disk, you should make a "Repair Disk Windows 8 64bit". Point to upper right, click the Search icon, select Settings, and then click in the box to type "drive". Choose the option to create a recovery drive. It can be a USB disk, CD or DVD.  Warning: If you dont create a Repair Disk, then Windows 8 may not boot and it may not be easy to fix.  You should also create a new Repair Disk after successfully completing any changes to your hard disk.

Although I didnt make the recovery disk until after I got in trouble installing Fedora 17, I was able to get Windows 8 to boot after installing Linux. I was able to get it to recover by using a Live GParted CD. After booting the CD, I right clicked the Windows Recovery partition, and I set it the flags on it to include "boot". You may not be so lucky!

Create Space to Install Linux Using Disk Management

In order to get Linux installed to begin with, I first had to create some space on the laptop. I searched in Settings for "Disk Management". Start the Disk Management tool with the descripton "Create and format hard disk partitions".

Select the largest partition and right click to choose to shrink it.

At minimum, you will want to shrink it by at least 10Gb, but with a 640Gb hard drive, I was able to shrink mine by about 400Gb.

Next, to be able to boot the DVD to perform an install, I used the following procedure to switch to BIOS, disable Secure Boot, enable CMS (compatiblity booting), and boot an install DVD.

At first I tried installing CentOS 6, and it succeeded nicely, but without ethernet support by default. I never got wireless working, although I think it may be possible using the compat-drivers discussed below.

When I quickly tired of the lack of available current packages from CentOS 6 (and other related repositories), I wanted to upgrade to Fedora. I tried the latest Fedora 18, but unfortunately, the brand new installer failed. So, next I tried the Fedora 17 DVD install and it succeeded. I was able to get ethernet, wireless, bluetooth, radeon, and other drivers working successfully.

Booting From Windows 8 to Linux

After booting, click the screen or log out of your account
Click the power icon in the lower right corner and choose Restart
Press F2 when Toshiba logo appears
Use arrow keys to navigate to Security menu
Go down until you arrive at Secure Boot
Press Enter to change the value, use arrows to change to Disabled, press Enter to go back
Up to the top, over to the Advanced menu
Down to System Configuration, and press Enter.
Down to Boot Mode
Press Enter to change to value to CMS Boot, and Enter to go back. (Press F10 and Enter)
Press Escape to go back to the top level menus.
Go up and over to the right to the Exit menu
Select Exit and save changes

When you want to come back, then follow this procedure:

Booting From Linux to Windows 8

Restart
Press F2 when Toshiba logo appears
Over to the Advanced menu
Down to System Configuration, and press Enter.
Down to Boot Mode, and press Enter
Use arrow keys to change to value to UEFI Boot, and press Enter
Press Escape to go back to the main menus
Go up and over to Security menu
Down arrow until you arrive at Secure Boot, and press Enter
Use the arrow keys to change the value to Enabled and press Enter  (Press F10 and Enter)
Go up and over to the right to the Exit menu
Select Exit and save changes
Boot into Windows 8

Ethernet networking

The Atheros ethernet device is shown on the PCI bus with lspci -nn as:
01:00.0 Ethernet controller [0200]: Atheros Communications Device [1969:1090] (rev 10)
There is no driver for this device yet in the kernel,  although one is proposed according to http://www.linuxfoundation.org/collaborate/workgroups/networking/alx.

From this document I found the source that is used to make the alx.ko kernel module needed for wired networking. The procedure there will only enable the ethernet driver, but not the other compat-drivers. Once built, this alx kernel module worked well in Fedora.

If you only want ethernet support then the procedure to build the module with the compat-drivers download is:


./scripts/driver-select alx

make

sudo make install

Making (Almost) All the compat-drivers 

Since the radeon driver is already working in Fedora, and the one from the compat-drivers doesnt work  so well, I didnt want that driver to be built and installed. So, I commented out building the radeon driver in the   drivers/gpu/drm/Makefile.

I did want to have the wireless driver built, but there was a problem in the source I downloaded with building another wireless driver (wil6210), so building all the drivers wasnt working. Since I didnt need this driver, I commented out building the wil6210 driver in ./drivers/net/wireless/ath/Makefile, as explained below.

Getting Wireless and Wired Ethernet Working 

The Toshiba Satellite C855D-S5351 laptop that I using has a Realtek Wireless network interface which uses the rtl8723ae kernel module as a driver. This driver is also not included in the main stream kernel,, but is a part of the compat-drivers package.

In order to build everything except the radeon driver and the wil6210 wireless driver that refused to build, I made the following changes:

First, to not build the radeon driver, the file ./drivers/gpu/drm/Makefile had to have the line changed  from:
obj-$(CONFIG_COMPAT_DRM_RADEON)+= radeon/
to by adding a # at the beginning of the line:
#obj-$(CONFIG_COMPAT_DRM_RADEON)+= radeon/


Second, in the ./drivers/net/wireless/ath/Makefile, the following line originally appeared as:
obj-$(CONFIG_WIL6210) += wil6210/
To stop building this driver a # was added to the beginning of the line like:
#obj-$(CONFIG_WIL6210) += wil6210/


Once these changes are made to the two Makefiles, then you are ready to build and install the drivers with:
make
sudo make install

Centos/Redhat

Although I had no success getting the compat-drivers to be built under Centos or Red Hat Enterprise Linux, I found a couple of potential solutions. There is a repository compatible with RHEL that exists at http://people.redhat.com/sgruszka/compat-wireless.repo.

Also, there is the "El Repo" repository for the ethernet driver, and instructions for configuring this repository at http://elrepo.org/tiki/tiki-index.php. Using another Internet connected machine, I did successfully use this repository to download the kmod-alx driver and get it to work with Centos 6.

Fedora 17

Installation of Fedora 17 did present one challenge. The installer would not continue past custom partitioning (I wanted to preserve my /home partition). It complained about not having a BIOS Boot partition for Grub 2. The installer would automatically create this partition in automatic partitioning mode, but provided no way to do it manually in the custom partitioning mode.

With UEFI, systems dont use a "MS-DOS Partition Table" on the hard drive, instead they use "Guid Partition Table" or GPT type. The partitioning tool fdisk does not work with GPT partitions, so something like parted or gparted needs to be used instead. Since parted can be very challenging and unforgiving, I decided against using it, even though I could access it from the installation shell.

The solution I used instead to create a special partition with the boot_grub flag set was a Live CD version of Gparted from http://gparted.sourceforge.net/download.php. Once the CD was booted, I  created a 10Mb partition, and right-clicked it to set the boot_grub flag on it. Once this partition existed, then Fedora 17 was able to use custom partitioning successfully during installation.

Windows 8 

After all seemed well with the completed Fedora installation, I attempted to boot back to Windows 8. Unfortunately, after following the above procedure to go back to UEFI and Secure boot, I encountered an error message about not having any bootable partition. GParted Live CD to the rescue again! Using GParted, I right-clicked the Windows Recovery partition, and set its flag to boot, and applied the change. Surprising Windows 8 booted right back up without any apparent issues.

Conclusion

It is possible to use both Windows 8 and Linux on the Toshiba Satellite C855D-S5351 laptop. Although I disabled Secure and UEFI booting in order to make it possible. Next, I may explore the possibility of installing Linux using Secure UEFI booting, as several distributions claim that capability.

Soon, the Atheros alx kernel module for wired ethernet networking should be in the mainstream kernel. Reportedly, the Realtek Wireless rtl8723ae kernel module may be reworked and merged with other similar modules for Realtek Wireless devices, so it may also be available in the mainstream kernel in the near future. For now, theres compat-drivers, compat-wireless, and various repositories around to enable the use of both wired and wireless networking.




Available link for download