A Linux geek’s experience with Windows 8.1
End of October, my Nexus 4 died, apparently due to a bad battery. What happened was the phone switched off automatically (not the low battery switch off, but at some random % > 50) while using a couple of times. That ended up getting worse by corrupting something leaving the cell radio in a non working condition. There’s no IMEI number, no baseband version and any Android version > 4.2.2 doesn’t boot.
A bit of research on Google yielded not much information. I took it to the service centre and they told me the motherboard would’ve to be replaced which was costing me ₹10000. That’s too much to pay for a 2 year phone especially when you get a completely new phone for that price (well, may be a bit more than that). Meanwhile I found a thread on xda which revealed an de-bricking method using some proprietary LG tools, which unfortunately worked only on Windows. This was a big disappointment for me, but that’s well-known fact that Windows has more market share in PCs than anything else.
I had to try it anyhow, so I first tried playing with VirtualBox’s and QEMU-KVM’s USB Passthrough on my old Windows XP VM (I had it around for working on college stuff… education curriculum in India is highly closed source-agnostic, to the extent some computer engineers won’t even know that there exists an OS called GNU/Linux!), which failed. It works for simple storage devices though, but for some reason the serial device (it comes up as ttyACM0) in the download mode (in which mode the LG tool will send a firmware image) couldn’t be accessed properly in the virtual machine. So I decided to buy a Windows 8.1 key from Microsoft Store, I was kind of sceptical about Windows since I left it back in 2007 because of constantly nagging problems like malware, random slowdowns, freezes, etc and shifted to Linux. Thanks to my student account I was able to buy it at a discounted rate of ₹3499 as opposed to the usual rate of ₹19k for the Pro version. I also noticed that they have a 14 day return policy, so I was a bit okay with the spending.
My hardware configuration is pretty simple, I just have desktop with i5-4670, 8 GB Corsair, 1 Samsung SSD and 2 HDD (WD, Seagate). The HDDs are in RAID0 striping in Linux and deliver good performance compared to a single HDD (read speeds are around 190 MB/s). There are two reasons for having such a simple configuration – first, I don’t game and second, excellent Linux compatibility. I had a thought of gaming since a long time, but never had the courage to face Windows (well, after being used to Linux for 5+ years, I doubt anybody will) and hence never played games.
So, let’s put the hand in lion’s mouth.
I wrote the installation ISO I downloaded from Microsoft Store on a DVD, rearranged partitions using SystemRescueCD on my disks so that I can have 500 GB NTFS for data and 500 GB for Linux data, and the SSD was partitioned into 35/75 for Linux/Windows. Once this was complete, I started the installation. The installation was smooth, just a click on the empty space of 75 GB on the SSD and Windows got installed there. I have a machine with DualBIOS, and I was using MBR partitions so UEFI things didn’t get into my way (but eventually I moved everything to GPT and UEFI after re-installation, because being modern is fun). The basic installation may have taken around 15-20 minutes.
One thing I hated about it is that during setup, it doesn’t let you proceed until you provide the Microsoft account password – which is probably because my machine was connected to the Internet; I’m not sure. Now I use a password manager for managing passwords, and I don’t remember anything except my master password. I had to do the cumbersome act of seeing the password on my phone in the password manager app on phone and typing it manually. After entering password, it wants to you to validate the account by sending an email to the address registered, I don’t get the point behind it; but it does provide an option for skipping the verification and the process can be completed after installation. After logging in to the MS account, it will make you wait for five minutes, yes, five minutes on the pretext of setting up things. I believe that five minutes for that is too long considering that the OS was installed on a good quality SSD (Samsung 840 EVO 120 GB).
Finally, I got the Metro home screen with a few tiles: one stating store, another mail, desktop and so on. Clicking on the desktop will get you the traditional desktop that you’ve been seeing since the inception of Windows (with a better UI/UX, of course). Now having used striped RAID for years on Linux, I wanted to do the same here, but my motherboard doesn’t support RAID nor I have a hardware RAID controller, but Google searches told me that Windows has software raid support. I went to the Disk Manager and saw an option for creating a “Striped Volume”. Unfortunately, it works only when you convert the disk to dynamic format (aka LDM format) unlike Linux where it doesn’t matter whether you have a GPT partition or MBR.
It turns out that Linux can actually read the LDM Striped NTFS with NO effort. All you’ve to do is assemble the array using mdadm like this (usual conditions for disk names apply):
# mdadm -B /dev/md/windows -n2 -l0 /dev/sdb1 /dev/sdc1 # mkdir /mnt/windows # mount /dev/md/windows /mnt/windows
Unfortunately you can’t edit LDM partitions from Linux, so I had to create the partitions for the Linux raid array inside Windows, as raw partitions.
Now that I have a E: drive, I need to move my user data there. C: is a SSD, there’s no point of putting frequently written data on SSD when you have HDD because SSD write cycles are limited. The annoyance begins. First I notice that all user data is going in C:\Users\Nilesh . That quite relates to the concept of home directory in Unix (/home/user ), in which everything about the user is stored. The configuration files, music, videos, everything else. Although for the application data, Windows uses C:\Users\Nilesh\AppData which is a hidden directory by default – this is akin to the directories that start with a dot stored inside user’s home directory in Unix.
Windows has still not acquired elegance of Unix in file system locking. In Unix, if you move around a file that’s locked by a process, the file will appear to get moved, but it is actually moved only after the process releases the file. The same applies to file deletion. You can even restore an accidentally deleted file if the process using the file is still running using /proc//fd directory. In Windows 8.1 Pro if you try to move a directory in which a few files have been locked by processes, it will fail to move those files and keep the directory around. The end result: I was unable to move C:\Users\Nilesh to E: drive because of the AppData directory. Annoyed, I created another Admin account to try moving the directory from there. I thought, if the user is not logged in, no process should be locking files in the directory since no process would be running. I was wrong. I still couldn’t move the directory.
After a bit of Googling here and there, I found tricks that suggested going to recovery mode using the recovery disk and creating a symbolic link from there after moving the directory. DAFUQ? So much exercise for such a small thing?! I did do it, but after doing that, Windows started screwing itself for some reason, the store wasn’t working, mail app was crashing and shit. On digging more through Google, I found that one could alter the profile path directly in registry. That seemed the only perfect way to stop all these issues. So what I did was, delete the user, removed all the files (again more exercise of that recovery thing since some files were still locked, ugh) and created a new user. But creating a new user from the other administrative account isn’t enough to get the registry entry that needs to be edited, it gets created only after first login! So I had to login to create that directory. Once logged out, I went to recovery system, yeah, again the exercise of moving directory to E: . After moving it, I logged in as Administrator and changed the registry entry. Now this time things went smoothly. Everything was working good. But I can’t digest this thing, just to move a simple profile directory to another drive, so much exercise.
Now let’s get on to installing some useful stuff. Since the whole thing begun with a bricked Nexus 4, the first thing I tried is to debrick it. That involved installing JDK, Android SDK Platform Tools, the LG tool and so on. That brings me to the point, package manager. Linux has had package managers for many years that made software installation simple. Windows 8.1 doesn’t have any, though I saw some news reports that the Windows 10 developer preview has them. It’s more convenient to go via package manager than go to Google for everything you want and download it from product site, and keep updating stuff individually.
Virtual desktops – a highly productive feature of desktop that has been existing in Linux since 2003 or so still doesn’t exist in Windows. There’s not even an equivalent multitasking helper for power users. There may be some off market solutions, but I’m talking about core Windows here. Apparently Microsoft has hidden one virtual desktop tool at their sysinternals site. It seemed to work good for the limited amount of time I spent with the OS. If you’re interested, Google it :).
The file system performance on striped NTFS was pretty bad, generally, all file systems fail when it’s the question of too many small files. But the performance here was painfully slow. It did was operating as expected on large files though. A possible reason for this may be the large choice of 64k stripe width. I use 4k striping on Linux raid since for home use that’s perfect. Large files aren’t created, unlike in server workloads.
Windows can’t yet become my primary OS (may be never, because Linux costs nothing where as Windows does), but Windows has come a long way since XP. I didn’t use it for a long time, so I won’t say anything about reliability where Linux has been the king for many years.
The last I tried was Virtualization using Hyper-V. I tried running a Ubuntu VM on it. The VM manager is very easy to use, but the graphics performance was bad, in part due to Ubuntu defaulting to Unity and seeking 3D graphics. Apparently Hyper-V doesn’t support GFX acceleration since it was designed for servers, but surprisingly it delivers good GFX performance for Windows guests (as per Google results).
So, TL;DR: Windows 8.1 is good for people who have no idea about computers (well, Windows has always been about that), gamers, and intermediate users. Advanced users desiring full control can’t stay in the jail without succumbing to its restrictions for a long time. I returned my license since I couldn’t justify my purchase. May be some time in future I’ll actually like Windows, chances are less likely though.