Thursday, January 20, 2011

Network Shortcuts on Desktop slows Windows XP Performance

I spent two days trying to diagnose a laptop computer running Windows XP experiencing slow performance, all to conclude the issue was with old links on the desktop pointing to non-existent (no longer existent) network locations - decommissioned servers.

I ran the much vaunted Dell Diagnostic utilities four times, memtest86+ 44 passes, and the IBM Hitachi Drive Fitness Test. I started to update drivers, which unfortunately lead to a blue screen then a non booting system. I tried to get the system booting again by using chkdsk, fixboot, and fixmbr to no avail, leading me to repair Windows XP, update Windows, and update the drivers. It wasn't until I was asked to transfer over desktop files and folders to the loaner issued that I noticed that it took longer to log in as the user than to log in as me, and that there were old network shortcuts on the desktop.

In Windows XP, I have mistyped into the address bar computer names and IP addresses in the past to have Windows Explorer freeze until the requests time out after a few minutes. In Windows Vista or Windows 7, the same mistake does not cause that to happen. In essence, when loading or refreshing the desktop, Windows XP must be validating the shortcuts and freezing until the request times out. By extension, I would think even the valid shortcuts are checked, with some overhead. Shortcuts in folders on the desktop are probably not checked this way.

To summarize, network shortcuts on a Windows XP desktop can cause performance problems, and I would recommend storing shortcuts you want on the Desktop inside a folder on the desktop, as opposed the directly on the desktop. With Windows Vista and Windows 7, this is less of a concern.

Tuesday, January 18, 2011

Native-Boot Differencing VHDs in Windows 7 - I did it, now what?

Windows 7 has a feature called Native-Boot Virtual Hard Disks. You can boot to a file on your hard drive (a virtual hard disk file) that contains all the files and folders of your operating system - either Windows 7 Ultimate or Enterprise or some versions of Windows Server 2008 R2. You can create a file based on the container virtual hard disk (VHD) file that tracks the differences or changes you make when you're running from the that file called a differencing VHD. A differencing VHD file is useful if you need multiple VHD files that share a common base (or parent). It's quicker and uses less space as the number of VHDs that you need increases. Also, you can experiment in a differencing VHD without worrying about messing up the original VHD. You cannot (as yet) update many differencing VHD files simply by updating the parent VHD.

This was my experiment:
1) Boot from the Windows 7 Ultimate install DVD.
2) At the Install Now screen, press SHIFT+F10 to get a command prompt
3) Partition and format the drive as needed. Since I was using a Dell Latitude, I left the diagnostic, recovery, and Latitude Reader On (an instant boot feature) alone. I deleted the original OS partition, created a new partition, and formatted it. For me, the steps were as follows:
a) Type diskpart and press enter
b) Type list disk and press enter; identify the disk, type select disk 0 and press enter (replace 0 with the correct disk number)
c) Type list part and press enter; identify the partition, type select partition 3 and press enter (replace 3 with the correct partition number)
d) Type delete partition and press enter
e) Type create partition primary and press enter (you can specify a size using size=, otherwise the new partition claims the remaining space)
f) Type format fs=ntfs quick and press enter (without "quick", a full format is performed).
g) Assign a drive letter. To list used drive letters, type list volume and press enter; type assign letter=c (substitute c with an unused drive letter)
4) Create the vdisk and attach it:
a) (While still in diskpart) Type create vdisk file="c:\Windows7.vhd" type=fixed size=51200 and press enter (type can be fixed or expandable and size needs to be smaller than the drive you choose)
b) Type select vdisk file="c:\Windows7.vhd" and press enter.
c) Type attach vdisk and press enter.
d) Type Exit and press enter
5) Switch to the install screen and press Install Now. Install Windows 7 to the VHD you created (you can ignore the “Windows cannot install to this disk” warning note). I picked a custom install and installed to the unused space that represented the VHD.
6) Customize your parent or base VHD as desired. I installed drivers, Windows Updates, Microsoft Office, Adobe Acrobat, virus protection, and some of our company's vendor's software.
7) Reboot and boot from the installation DVD (I think this can be done in Windows 7 from an run as administrator command prompt, this is just how I chose to do it).
8) Press SHIFT+F10 to get the command prompt again.
9) Type diskpart and press enter.
10) Type create vdisk file="c:\Win7Diff.vhd" parent="c:\Windows7.vhd" type=expandable maximum=51200 and press enter (filename, type, and maximum size are up to you)
11) Type Exit and press enter
12) Type bcdedit /v and press enter.
13) Highlight and copy (right-click) the identifier for the Windows Boot Loader for the boot VHD.
14) Type bcdedit /copy [press space then right-click to paste the identifier] /d "Windows 7 Differencing VHD" and press enter (contained in the quotes is the name you want displayed from the boot menu, I chose "Windows 7 Differencing VHD").
15) Highlight and right-click to copy the new guid.
16) Type bcdedit /set [press space then right-click to paste the identifier] device vhd=[c:]\Win7Diff.vhd and press enter
17) Type bcdedit /set [press space then right-click to paste the identifier] device vhd=[c:]\Win7Diff.vhd and press enter
18) (If you want this to be your new default) Type bcdedit /default [press space then right-click to paste the identifier] and press enter.
19) Reboot

Like so many other things I experiment with before I have a reason to undertake the task, I was left with the feeling - cool, now what. This was my main source for the procedure: http://blogs.msdn.com/b/knom/archive/2009/04/07/windows-7-vhd-boot-setup-guideline.aspx

Wednesday, January 5, 2011

Bad Dell Service Experience Or "Reseat Touchpad Cable? Take Apart Whole Laptop!"

Background: Take this post with a grain of salt. On the whole, I have liked Dell Computer Corporation. I like the way that they make documentation and and drivers easy to get to and install. I like their Dell Diagnostics utilities and partition, which can help in troubleshooting (the Ultimate Boot CD is great for computers without diagnostics utilities). I own a Dell OptiPlex 740 at home and work with Dell Latitude D620, D630, E6400, and E6510s at work, as well as Dell PowerEdge servers, PowerConnect switches, and PowerVault storage. However, we have had more problems with the Dell Latitude D620s (with nVidia graphics more than Intel integrated graphics) than with any other model (D630s are a close second). I have the impression (perhaps faulty) that the Latitude D600 and D610s were very solid and newer Latitudes have been less so. At home, I use a Samsung NC20 netbook because the geek in me wanted to try the Via Nano processor (versus the Atom).

Story: Yesterday a new hire's laptop's touchpad buttons were acting up sporadically. One or both buttons did not work or buttons functions were swapped. Originally when I set the laptop up, I saw this problem, updated the Touchpad driver and considered it fixed. I gave the new hire an identical replacement laptop with the original drive and went about troubleshooting. Given idle time (to cool?), the laptop was behaving at my desk. After some time working with it, the problem started to crop up. Use and/or stress testing seemed to help uncover the problem.

Finally able to reproduce the problem, I set about contacting Dell Support using their Chat Support. It seemed like this problem might take a while, and I didn't want to hold the phone to my ear for a long time. Also, I wasn't sure I could articulate the problem well over the phone (perhaps paradoxically, how much harder is it to explain over chat?). Around 1:30 PM CST, I try to connect using chat and see this message: "Welcome to Latitude Chat Support Queue is closed/ or all agents are busy. Note: service lines days of and hours of operation: Monday 5am thru Friday 9pm CST; Closed on Saturday and Sunday."

At some point, I was given the option to initiate e-mail support and did. I tried Chat support again at 1:50 PM and got through to "CLKsmb" support. After 20 minutes of explaining, the agent was about to set up a replacement touchpad to be sent when the agent decided I needed to be "transferred" (his words -- this is chat, not a phone call) to the "correct department that supports your account", ie "ProSupport". The chat ended after 30 minutes. To troubleshoot, the agent had me boot into Windows Safe Mode. The problem did not occur. I rebooted in Normal mode and the problem did occur. After using the laptop some more again, I rebooted to Safe Mode and the problem occurred. I booted to Windows PE from a USB Flash Drive and the problem occurred. I let it sit then rebooted to Normal mode and the problem wasn't experienced.

Over the course of the chat with the ProSupport agent, it was implied that the problem might involve improper cable seating. Not wanting to leap before I looked, I asked and had confirmed that I was to reseat the keyboard and touchpad cables, so I endeavored to take the laptop apart. This was my first Latitude E6510 (or E-series for that matter) to take apart, so I didn't have experience to lean back on. I've taken apart many Latitude D-series laptops, for fun and for profit as they say, and I'm Dell certified in their Fast-Track Support program. It was through taking apart the laptop that I was to learn a couple of strange facts. First, to get at the touchpad ribbon (some call it a flat flexible cable), I practically had to take the entire laptop apart (!!). The laptop is layer-deigned and (on the plus side) many things are accessible with the removal of a single screw (memory, WWAN, fan and heatsinks, modem, wireless, WiMax, etc) . Second, I found that many parts (speakers, fingerprint reader) were connected to the motherboard using ribbon connectors (some call them flat flexible cables). In my mind, this is a step backwards, as these cables are delicate and the cables can slip and make unreliable connections if not connected properly. To me, it seems silly to have to take apart most of the laptop (possibly including removing the heatsinks and fan) to perform a more routine replacement. The keyboard was easy to get at and reseat though. In the time between, the agent never checked on me, and the chat disconnected me.

After waiting, I contacted chat support again and got a very good agent who finalized the issue with me in short order, sending over a replacement keyboard and palm rest (the pointing stick buttons were acting up as well and are part of the keyboard). I never received word about my e-mail request and finally heard back from the second agent, 3 hours after the request was finalized.

Maybe I am being overly critical. Maybe thin flexible cables aren't bad. And maybe the passing around experience is coloring this post. This one experience will not change that the company will continue to rely on Dell products for Information Technology. I do wonder about some design choices made though.

Acrobat 9.0 to Acrobat 9,4,1 In One Command

I talked about "slipstreaming" the Acrobat 9 updates to an administrative installation point. The downsides are now Adobe Acrobat wants to use the administration installation point as the source disc on repairs (possibly leading to needing to maintain multiple versions) and the admin install points are large (try ~940 MB versus 334 MB for install media).

Instead, I now use a single command: msiexec /i "\Acrobat 9 Standard\Acrostan.msi" /update "\AcroProStdUpd910_T1T2_incr.msp;\AcrobatUpd911_all_incr.msp;\AcrobatUpd912_all_incr.msp;\AcrobatUpd913_all_incr.msp;\AcrobatUpd920_all_incr.msp;\AcrobatUpd930_all_incr.msp;\AcrobatUpd932_all_incr.msp;\AcrobatUpd933_all_incr.msp;\AcrobatUpd940_all_incr.msp;\AcrobatUpd941_all_incr.msp"

A few notes: this has in mind a professional environment in which software (and updates) is stored on an accessible file server (you can do this locally as well though); I had to use quotes because my paths had spaces (like "..\Adobe\Acrobat Updates\"; to find out which updates to use, I had to read Adobe documentation, starting with the newest update (9.4.1 requires 9.4.0, requires 9.3.3, etc); and I placed that command into a batch file saved to the server