Monday, December 12, 2011

Windows 8 Developer Preview

Let's say out of professional interest, I installed Windows 8 Developer Preview (64-bit) on my home laptop/netbook, a Lenovo x120e. I had replaced the hard drive with a solid state drive (SSD). The combination proved to be a very quick Windows Developer Preview experience (seems it likes, dual core, SSD, or both). Windows did not automatically detect drivers for my Wireless Network Connection (now called "Wi-Fi") or SD Card reader. After pointing Windows to the location of the Windows 7 wireless drivers, Windows Developer Preview found an updated driver via Windows Update.

My intention was to learn more about the next version of Windows and try to get used to the Start screen. Microsoft has a history of retiring old interfaces. Given I'm playing with pre-Beta code and interface, there is much that is awkward to do using the Windows screen or the Metro UI. I intended to give it longer but find myself immediately clicking the Desktop tile and using the "Desktop" pre-defined toolbar, a "Start Menu" toolbar I pointed to C:\ProgramData\Microsoft\Windows\Start Menu, and using the Windows key + R to bring up the Run dialog to tell Windows what I want to launch. Where I previously was learning to use Run as a side interest and productivity booster (bypassing the mouse), I am relying on it in the Preview more than the toolbars I added or the Start Screen button. I've come to enjoy the Metro game Tube Rider, and the Start screen feels natural for it, but as I spend much of my time with the laptop searching the web and watching videos, I spend most of my time on the Desktop. The Start screen doesn't feel natural to the way I use Windows. I don't like that single clicking the network icon slides in a wireless networks Metro pane (Action Center, Volume, and Power still bring up pop-up windows). Restart and Shut Down is awkward, and the preferred way to Log Off doesn't seem apparent to me.

My next phase of experimenting with Windows Developer Preview was to install it on my old netbook and an old laptop. I tried to install Windows Developer Preview 64-bit on my Samsung NC20 and got Microsoft's version of the sad Mac screen (the new blue screen) before it even got into setup with the error IRQL_NOT_LESS_THAN_OR_EQUAL. Windows Developer Preview 32-bit installed relatively without issue, but it doesn't detect the VIA Chrome video adapter, instead using the Microsoft Basic Display Adapter driver. Device Manager also lists the status of Microsoft Basic Display Adapter and VIA MSP Cardbus Host Controller as "This device cannot find enough free resources that it can use. (Code 12)". Disabling the wired network controller (which I don't use) in the BIOS didn't help. On the Lenovo laptop, Windows detects the display adapter as "AMD Radeon HD 6300 series Graphics (Engineering Sample), which I think is funny. Speaking of Sad Mike screens (blue screens), the Lenovo returns from sleep into a blue screen. I recently turned off the automatic restart to see the error, KERNEL_DATA_INPAGE_ERROR (volmgrx.sys).

I also installed Windows Developer Preview on a Dell Inspiron 8200. It also uses the Microsoft Basic Display Adapter, and I had to point to the drivers for the modem (LOL). Windows better understood the audio when I pointed it to the audio driver. I noticed that the Metro way of displaying to Windows or split screening doesn't work on the Microsoft Basic Display Adapter. Also, the SadWin screen (blue screen) I noticed getting on the Inspiron 8200 was the error "CACHE_MANAGER". I installed WinDP on this laptop because I wanted to try installing it on the oldest hardware I could get my hands on that met the minimum requirements. I installed it on the Samsung NC20 for contrast and to send the telemetry data. I'm pretty sure I'll switch it back to Unix\Linux of some sort though.

I'm curious to see what Microsoft does with it. I looked forward to both Windows Vista and Windows 7, used them at home, and when I started getting used to Vista and 7 at home found myself trying to do Vista and 7 things on my work Windows XP until I moved to Windows 7 at work as well. I remember I did not look forward to Windows ME or Windows XP (I was a big Windows 2000 fan) and my current view of Windows 8 is cautious and uncertain.

Friday, October 21, 2011

Trying to fix corrupt Adobe PDF files

The company I work for uses an online document management system and like to work with large PDF files (I recently worked with a 353 page, 17 MB problem PDF). Too often, we have PDF files have problems or have pages get corrupt. I haven't found a cause or a solution that always fixes the problems, but here are some methods I have found that work (my reference is Adobe Acrobat 8 Pro).

Use Preflight to check the PDF for syntax issues (requires Acrobat Pro or above - and I haven't found out what to do with this information):
Click Advanced -> Preflight... in Adobe Acrobat Pro
Expand PDF Analysis, select Report PDF syntax issues, and click Execute.

Remove the Tags in the document (requires Acrobat Pro or above) :
Right-click the Navigation Pane and click Tags
Click the root of the Tags tree
Right-click Tags and click Delete Tag
Save

Reduce File Size (Acrobat Standard or above):
Click Document -> Reduce File Size...
(you can adjust the Compatibility level of the file)
Click OK
Save as a new file name and click Save

Use the PDF Optimizer to remove features (one by one or all then all minus 1, then all minus 2, etc) (Adobe Acrobat Pro or above):
Click Advanced -> PDF Optimizer...
Click the checkbox next to unnecessary settings or settings you would like to try to remove for troubleshooting purposes
Click OK
Save as a new file name and click Save

Try resaving the document using Nitro PDF Reader (this has worked for me many times):
Open the document in Nitro PDF Reader
Click File -> Save As -> PDF Document
Save the file using a different name and click Save

Delete bad pages (either one by one or as a group, if necessary) (Adobe Acrobat Standard or above):
Open the problem PDF in Adobe Acrobat
Click the tool "Click to show one page at a time"
Page through the pages in the PDF, note any page that gives you an error message.
In the Navigation Pane, click Pages. Select the problem pages, right-click, and click Delete Pages...
Click File -> Save As, save the file using a different name, and click Save

Export as PostScript without comments, export comments, convert PostScript to PDF, and import comments (you lose bookmarks using this method) (Adobe Acrobat Standard or above):
Click Comments -> Export Comments to Data File..., give it a name, and click Save
Click File -> Export -> PostScript -> PostScript
Click Settings and uncheck Include Comments, click OK, give it a different name, and click Save.
Open the PS file in Adobe Acrobat.
Click Comments -> Import Comments..., select Adobe FDF File from the file types drop-down, click the FDF file, and click Select.
Click File->Save.

Monday, October 3, 2011

Search, search, work, then find site with exact solution

I frequently come across a frustrating scenario where I search, read, work, and struggle through how to do something and then find a site with the steps clearly laid out to do the thing I just struggled to figure out how to do. I find this happens most frequently to me in working to solve a problem with Microsoft software then finding an official Microsoft site with the solution. This is not a criticism against Microsoft but a comment on the availability of documentation (both at Microsoft's site and on the internet in general).

I found a site with instructions on loading sound drivers (https://www.dan.me.uk/blog/2010/09/26/freebsd-sound-card-driver/), installing a GUI (https://www.dan.me.uk/blog/2010/09/26/gnome-gui-freebsd-8/), and installing the Flash plugin (https://www.dan.me.uk/blog/2010/09/26/installing-flash-plugin-10-for-firefox-in-freebsd-8/) in FreeBSD at https://www.dan.me.uk/blog/ that could have saved me some work. Unfortunately, it's been a while since he's posted to his blog. I found my instructions from the FreeBSD Handbook (http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/), which, of course, got me to the same result.

Saturday, October 1, 2011

FreeBSD 8.2 i386 X11, XFCE4, sound, Firefox3, and Flash on Samsung NC20

Last time I tried it, I was unable to get Flash Player working on FreeBSD 7.2. I was able to get it working on FreeBSD 8.2 on my Samsung NC20 using the ports system. I didn't try ports last time, but it wasn't as hard as I thought. First I installed X11 (xorg-7.5) and Xfce4. Then I installed Firefox 3.6 from packages and loaded sound.

I installed xorg-7.5 from packages from the FreeBSD 8.2 RELEASE i386 DVD:
mount -t cd9660 /dev/cd0 /cdrom
pkg_add /cdrom/packages/All/xorg-7.5.tbz

To configure xorg, I added hald_enabled="YES" and dbus_enabled="YES" to /etc/rc.conf. I restarted and ran Xorg -configure then edited xorg.conf.new to include my screen resolution (Modes 1280x800). To test, I ran X -config /root/xorg.conf.new -retro. Since this worked, I switched to tty1, back to tty0, pressed CTRL+C then copied /root/xorg.conf.new to /etc/X11/xorg.conf (cp xorg.conf.new /etc/X11/xorg.conf).

I couldn't find Xfce4 on the DVD, so I had to get it from the internet. I went with Xfce because I don't like KDE4 or Gnome 3 (I liked Gnome 2 and KDE 3). I might want to try LXDE instead of Xfce.
pkg_add -r xfce4

I restarted and ran startxfce4. I got the latest Firefox I could get from packages:

pkg_add -r firefox

I enabled sound in /boot/loader.conf by adding the line snd_hda_load="YES" then I got the flash plugin from ports (some steps may be out of order):

portsnap fetch
portsnap extract
(if I had ran portsnap extract before, I would have run portsnap update)
cd /usr/ports/www/nspluginwrapper
make
(then I added linux_enable="YES" to /boot/loader.conf, saved, and restarted)
cd /usr/ports/www/nspluginwrapper
make install
make clean
cd /usr/ports/www/linux-f10-flashplugin10
make
make install
make clean
mkdir /usr/local/lib/browser_plugins/
ln -s /usr/local/lib/npapi/linux-f10-flashplugin/libflashplayer.so /usr/local/lib/browser_plugins/
ln -sv /usr/local/lib/browser_plugins/npwrapper.libflashplayer.so /usr/local/lib/firefox3/plugins/npwrapper.libflashplayer.so
nspluginwrapper -v -a -i
(nspluginwrapper -v -a -i needs to be run by each user, according to the FreeBSD Handbook)

Friday, September 30, 2011

FreeBSD 8.2 i386 on Samsung NC20

I decided to look at FreeBSD again. I've read that FreeBSD is a powerful operating system behind some well known websites, appliances, and services, so I thought it would be useful to learn. Also, where better to learn a Unix-like operating system than one that traces back to Unix?

The Samsung NC20 is a VIA Nano-based netbook. Its platform is not as widespread as an Intel or AMD-based system, so maybe I shouldn't be surprised I ran into problems. I found I could not install FreeBSD 7.4, either as an AMD64 or i386. I could not install FreeBSD 8.2 AMD64 either. FreeBSD 8.2 i386 could be installed, but I had to disable ACPI at first, then alter /boot/loader.conf to include the line debug.acpi.disabled="sysresources".

Next up, I wanted a wireless connection. My wireless connection is WPA-PSK using TKIP encryption. Things changed since last I looked at FreeBSD. I needed to alter /etc/rc.conf to include:
hostname="FreeBSDNC20"
wlans_ath0="wlan0"
wlan_tkip_load="YES"
ifconfig_wlan0="WPA DHCP"

I had to add my wireless SSID and passphrase to /etc/wpa_supplicant.conf. Because my original wpa_supplicant.conf was empty, I ran the following two commands (the first to verify the output):
wpa_passphrase ssid ssid_passphrase
wpa_passphrase ssid ssid_passphrase > /etc/wpa_supplicant.conf

After a restart, ifconfig reported an IP address. Success!

Thursday, September 29, 2011

Make IE9 look more like IE8

You can make Internet Explorer 9 (IE9) look more like Internet Explorer 8 (IE8) in Windows in a few ways. I was searching for a site to lay this out for me and found suggestions to uninstall IE9 or install a Windows Classic theme to be unhelpful. Here is what you can do:

One of the most apparent changes was that the tabs were moved up and to the left of the new, combined address/search bar (where you type in the websites). The tradeoff is you gain screen real estate but lose space for tabs. To futher gain screen real estate, the status bar (with the zoom icon on the bottom right), the Favorites bar, and the Command bar were removed.

To place the tabs below the address/search bar:
Right-click a tab or an empty area above the address bar and click "Show tabs on a separate row"

To add back the favorites, command, and status bar:
Press Alt to reveal the menu
Click View - Toolbars and click Favorites bar, Command bar, and Status bar

I don't think you can change Internet Explorer if you do not like the new download dialog, manager, the transparency effects, or the new buttons (back, forward, compatibility view, refresh, or stop)

Wednesday, September 7, 2011

iPad locking out user account

I found that an Apple iPad was locking out a user's Active Directory account every 10 minutes and 25 seconds by attempting to synchronize with their Microsoft Exchange e-mail account with the wrong password. I don't know if synchronizing every 10 minutes and 25 seconds is the default setting, but I was surprised there was no randomization factor, and my coworker was surprised that the iPad wasn't programmed to stop trying after a certain number of failed attempts by default.

A user told us that his account kept getting locked out. Others were taking care of the issue by unlocking his account. When I got involved, I unlocked his account and then waited to see him log in to our Terminal Server (the resource he was trying to access). When 13 minutes later he did not have an active session, I assumed he mistyped his password again. I unlocked his account and waited another 12 minutes. I still saw no active session, saw he was locked out again, and unlocked his account. I saw the same thing 25 minutes later and did the same thing. Finally, when I saw he was locked out again another 15 minutes later, I determined it must have been a device with an incorrect password.

However, now my interest was piqued, so I watched it. I kept narrowing in until I saw it was happening every 10 minutes and 25 seconds, far too regularly for him to be locking himself out. When we alerted him, we found it was his iPad. He turned the screen off (and it kept trying to synchronize) then later shut it down (which coincided with his last lockout time). It turns out the Additional Account Information tab in Active Directory is really helpful for finding this information. Leaving open the Account tab, you don't see when an account gets locked out because the window does not refresh/repaint. Our lockout time period was longer than the iPad's synchronization period, so if I hadn't been unlocking the account, it would have remained locked out. We were glad he confirmed it was a device because the other option was another source was trying to compromise his account.

Saturday, September 3, 2011

VirtualBox Mac OS X 10.7.1 EFI

Like booting Mac OS X 10.6.8 Snow Leopard using VirtualBox, I found a way to boot Mac OS X 10.7.1 Lion using "Enable EFI (for special OSes only)". Websites discussing such things suggest using the Mac App Store to buy Mac OS X 10.7 Lion.

Get the Mac OS X Install ESD.dmg disk image from Mac OS X 10.7 Lion the Mac App Store. Then, the general steps are to create disk images for the LionInstaller and one as a Lion Starter. Restore the BaseImage.dmg image to the LionInstaller, copy Mac OS X Install ESD files over, altering some files, download some preparation files. Sutdown and uncheck Enable EFI. Start using a Mac EFI emulating booter (like Empire EFI, iBoot, nawCom, or HackBook). Create your Lion Starter image using MultiBeast and copy over utilities. Shutdown, remove the Snow Leopard disk image, add a Lion disk image, Enable EFI, and boot to the LionInstaller. Install Lion to the Lion disk image and shutdown when the installation is complete. Uncheck Enable EFI and boot into the Lion Starter to boot into Lion. Erase PlatformSupport.plist, install PlatformUUID.kext using a kext installer, Shutdown, "Enable EFI", and boot into Lion (you can remove the LionInstaller and Starter disks). Download and install the 10.7.1 update from www.apple.com. Install the rest of the updates. The instructions require an existing VirtualBox Snow Leopard VirtualBox VM (Virtual Machine) and a processor supporting VT-x (Intel) or AMD-V (AMD). Here are instructions:

1) Boot into Snow Leopard and purchase Mac OS X 10.7 Lion from the Mac App Store. Shut down the Snow Leopard VM.
2) Click the Snow Leopard VM and click Settings, click Storage, click Add Hard Disk, click Create new disk, select VDI (VirtualBox Disk Image) and click Next, click dynamically allocated and click Next, type LionInstaller for Location and leave 5 GB for size and click Next, and click Create.
3) Click Add Hard Disk, click Create new disk, select VDI (VirtualBox Disk Image) and click Next, click dynamically allocated and click Next, type Starter for Location and type 100 MB for size and click Next, and click Create.
4) Start Snow Leopard. You are prompted that the disk is not readable (twice), click Initialize (twice).
5) In Disk Utility, select the Select 5.0 GB VBOX HARDDISK Media, Click Partition, Select 1 Partition under Volume Scheme, Name: LionInstaller, click Apply, and click Partition.
6) In Disk Utility, select the Select 100 MB VBOX HARDDISK Media, Click Partition, Select 1 Partition under Volume Scheme, Name: Starter, click Apply, and click Partition.
7) Open the Mac OS X Install ESD.dmg
8) From the dock (or from Finder), click Applications -> Utilities -> Terminal
9) In Terminal, type cd "/Volumes/Mac OS X Install ESD", press enter, type open BaseSystem.dmg, and press enter.
10) In Disk Utility, click the LionInstaller partition and click Restore, drag Mac OS X Base System to the Source field, drag LionInstaller to the Destination field, click Restore, and click Erase, and Enter password and click OK. Close Disk Utility
11) Rename new Mac OS X Base System volume as LionInstaller and switch back to Terminal
12) Into Terminal, type cp kernelcache /Volumes/LionInstaller/kernelcache and press enter, type cp mach_kernel /Volumes/LionInstaller/ and press enter, and type sudo vi /Volumes/LionInstaller/Library/Preferences/SystemConfiguration/com.apple.Boot.plist and press enter and type your password and press enter.
13) In vi (a Terminal text-based text editor), press the down arrow then the right arrow until you reach the end of the line . Press a (to append or add text).
14) Press enter, press tab, type Kernel Cache and press enter, type \kernelcache and press enter. Press ESC, type :wq, and press enter (to exit vi)
15) In Terminal, type sudo rm /Volumes/LionInstaller/System/Installation/Packages and press enter. If required, type your password and press enter. Type sudo cp -R Packages /Volumes/LionInstaller/System/Installation/Packages and press enter. If required, type your password and press enter.Type cd /Volumes/LionInstaller/System/Library/CoreServices and press enter. Type sudo touch ServerVersion.plist and press enter. Type cd ~ and press enter. Type cp /Volumes/LionInstaller/System/Installation/Packages/OSInstall.mpkg . and press enter. Type pkgutil --expand OSInstall.mpkg OSInstall and press enter. Type vi OSInstall/Distribution and press enter. In vi (Terminal text-based text editor), press down arrow to the line function isVirtualMachine(){.
16) Use down arrow and type dd and delete lines between function isVirtualMachine(){ and return false;. Type dd and delete lines between return false; and the enclosing }. (so you should see three lines, isVirtualMachine(){ then return false; then })
17) Use down arrow and type dd and delete lines between function isSupportedPlatform(){ and return true;. Type dd and delete lines between return true; and the enclosing }. (so you should see three lines, isSupportedPlatform(){ then return true; then })
18) Press ESC, type :wq, and press enter.
19) Download KextBeast and MultiBeast from tonymacx86.com (to Snow Leopard and Empire EFI (or download iBoot, nawCom, or HackBoot on your host system) from prasys.info (find PlatformUUID.kext and download it to Snow Leopard if you did not use Empire EFI).
20) Shutdown. In VirtualBox, click Devices -> Choose a virtual CD/DVD file..., pick Empire EFI (or iBoot, nawCom, or HackBoot), and click Open. Click the Virtual Machine and click Settings. Click System and uncheck Enable EFI. Click OK. Start Snow Leopard and boot to the Snow Leopard disk.
21) Run MultiBeast.Click Continue, Continue, Continue, Agree, select EasyBeast Install and click Continue, click Change Install Location..., click Starter, and click Starter, select EasyBeast Install and click Continue, click Install, type password, and click Close.
22) Copy PlatformUUID.kext from Empire EFI from the within Preboot.dmg \Extra\Extensions
folder to Starter. Copy KextBeast to Starter. Shut down Snow Leopard.
23) In VirtualBox, select the VM and click Settings. Click System and check Enable EFI (for special OSes only) Remove the disks, click Add Hard Disk on the SATA Controller, click Create new disk..., click VDI (VirtualBox Disk Image) and click Next, click Dyamically allocated and click Next, OSX86-64Lion click Next and click Create. Add LionInstaller disk to IDE Controller (click Add Hard Disk, click Use existing disk, select LionInstaller and click Open). Click System, Change memory to 2048 MB. Click OK. Click Start.
24) It will boot to the LionInstaller and start the Lion installation process. Click Next. Click Utilities -> Disk Utility, select 21.47 GB VBOX HARDDISK Media, select Partition, select 1 Partition under Partition Layout and Name Macintosh HD and click Apply, click Partition, click Close. Click Continute, click Agree, select Macintosh HD and click Install. After the install, Shutdown.
25) Click the VM and click Settings. Click Storage, remove LionInstaller.vdi and replace it with Starter.vdi. Click System and uncheck Enable EFI (special OSes only). Click OK. Start the VM. It will boot to the Starter then to Lion, which will start the first boot Lion process.
26) Click Continue, click Continue, click Continue, click Continue, click Continue, click Continue, create your computer account and click Continue, select time zone and click Continue, click Start Using Lion.
27) Delete /System/Library/CoreServices/PlatformSupport.plist. Copy PlatformUUID.kext to the Desktop and run KextBeast. Shutdown.
28) Click the VM and click Settings. Click System and uncheck Enable EFI (special OSes only), click Storage and remove Starter. Click OK. Start VM
29) Download and install the 10.7.1 update from www.apple.com. The install will require a restart. Download and install the other updates from www.apple.com.

Friday, September 2, 2011

VirtualBox Mac OS X 10.6.8 EFI

I come to find a better way to virtualize Mac OS X 10.6.8 Snow Leopard on VirtualBox. Apparently, you don't need a boot CD (Empire EFI on the last VirtualBox Mac OS X post) to run before the installer and as a booter to boot into. I found elsewhere that Snow Leopard can be installed onto VirtualBox directly with Enable EFI checked and a change to the vbox settings file. Again, this source's instructions said to buy Snow Leopard on retail. AMD or Intel virtualization needs to be enabled on the host (VT-x or AMD-V).
1) Download and install VirtualBox from http://www.virtualbox.org. Open VirtualBox.
2) Click New, give it a name like OSX86-64, choose Maco OS X for Operating System and Mac OS X Server (64 bit) and click Next
3) Give it memory. 1 GB is sufficient for Snow Leopard but 2 GB is needed for Lion by default. Click Next.
4) With Startup Disk checked and Create new hard disk selected, click Next
5) With VDI (Virtual Box Image) selected, click Next.
6) Dynamically allocated may save space (only takes space as needed but doesn't automatically give it back). Fixed size may run faster but takes up all the space you specify. Dynamically allocated is sufficient.
7) Give it a name for location, like OSX86-64, default size 20 GB is ok, and click Next. Click Create, click Create.
8) Close VirtualBox
9) Edit the VirtualBox settings file, by default in %userprofile%\VirtualBox VMs\OSX86-64\OSX86-64.vbox. In the ExtraData section (in between and ), add . Save and close the file. Open VirtualBox. (If you want to see the Apple logo boot screen, add
10) Start the Virtual Machine. It starts to a first run wizard. Click OK, Next, pick the OS X Snow Leopard media, click Next, and click Start.
11) Run through the setup process:
(English, Continue. From the Utilities menu, click Disk Utility, click the 21.47 GB VBOX HARDDISK Media, and click Partition. From Volume scheme, select 1 Partition, name: Macintosh HD, click Apply and click Partition. When done, click Quit Disk Utility from the Disk Utility Menu. Click Continue, click Agree, select Macintosh HD and click Install. Restart when done.)
12) Run through the first setup steps.
13) Download and install the Mac OS X 10.6.8 Update Combo from Apple.com. Restart. Download and install the other updates.

I find it interesting that the Apple switch to Intel processors combined with the popularity of virtualization technology has opened this door. This would be more difficult to do were Apple still using only Power processors. It makes me wonder if Apple plans to port their ARM processor (Apple A4/5) "back to the Mac." I'm most familiar with Windows operating systems, and I'm interested in learning more about other operating systems. However, I am more interested in BSD (FreeBSD), which is used in Mac OS X. I'd also interested in Linux. It is said that Apple's iOS is a walled garden, and I kind of view Mac OS X in the same light.

Friday, July 29, 2011

No Repair Install in Windows Vista, Windows 7?

Is there a way to perform a repair installation on Windows Vista or Windows 7? In Windows XP, you could boot from the installation media, press enter to install, accept the license agreement, and press R to repair your installation (some would call this a dirty install or an upgrade install). This option does not appear to exist in Windows Vista and Windows 7. From what I've read, the reason the repair installation option doesn't exist is that Windows Vista and Windows 7 deploy from a Windows Image (install.wim), so now you don't really install Windows, you image Windows down to your computer.

Watching the Windows XP repair process, I notice it deletes files then recopies them. Could you in effect perform a repair install by copying certain files (like the registry files) to another directory, have the Windows install write over them, then copy them back or merge the difference? Has someone created a repair installation tool?

There are some repair tools that can be run in Windows Vista and Windows 7, but they don't appear to be analogous to the repair install. You can boot to the installation media, choose Repair My Computer, pull up a command prompt and type the following commands, but neither the Offline System File Checker nor Startup Repair have fixed the issues I have tried to fix:
sfc /scannow /offbootdir=d: /offwindir=d:\windows
x:\sources\recovery\startrep.exe

Thursday, July 7, 2011

Directory Services Restore from Physical to Hyper-V Virtual Windows Server 2003

I ran across a strange issue when trying to recover a Windows Server 2003 Active Directory system state backup from a physical server to a Hyper-V Virtual Server. I had to install the Hyper-V Integration Services, uninstall Hyper-V Integration Services before I restored, then reinstall Integration Services. I don't think this would occur in Windows Server 2008 or 2008 R2.

I did the following:
1) Backup the system state of a physical server using ntbackup (replaced by Windows Server Backup or wbadmin in Windows Server 2008 and above).
2) Install Windows Server 2003 with Service Pack 2 on the destination virtual machine.
3) Install Hyper-V Integration Services on the virtual machine.
4) Make sure the Virtual Machine is NOT on the production network (Internal/Private Virtual Network).
5) Click add role, choose Directory Services (Active Directory) as the first server using the same domain name being restored (also same computer name and static IP address).
6) Add other used roles (we had installed WINS).
7) Remove Integration Services .
8) Restart in Directory Services Recovery Mode (Press F8 between the boot screen and before the Windows boot screen and select DSRM).
9) Restore the system state using ntbackup
10) Restart into Safe Mode (to allow Windows to detect the hardware changes).
11) Insert the Windows Server 2003 install CD and repair Windows.
12) Reinstall Hyper-V Integration Services.

These steps reflect my own experiences. I'm just experimenting. Do not use or rely upon it. Instead, refer to Microsoft's documentation (knowledge base, MSDN, or TechNet artiles) and professionals for the correct policies and procedures. There are better ways to go from a physical server to a virtual server (like Microsoft System Center Virtual Machine Manager 2008 R2).

Saturday, May 21, 2011

Active Directory Transfer, Demote, and Disjoin

To continue from yesterday, I wasn't comfortable with a domain controller that had been restored from system state from different hardware (that was then repaired), so I brought up another virtual Windows Server 2003 machine to replicate Active Directory and transfer operations masters roles to. Then I wanted to demote the original virtual server and disjoin the domain. When transferring roles, you have to connect the tools to the domain controller you want to transfer the operations masters to and click Change:

1) Open Active Directory Domains and Trusts and connect to destination DC (Right-click Active Directory Domains and Trusts icon in the top of the tree, click Connect to Domain Controller, choose the destination domain controller and click OK). Right-click Active Directory Domains and Trusts and click Operations Master. Click Change, click Yes, and click OK

2) Open Active Directory Sites and Services. Expand Active Directory Sites and Services - Sites - - Servers - - NTDS Settings and make sure the DC is a Global Catalog server (GC is checked).

3) Open Active Directory Users and Computers and connect to destination DC. Expand Active Directory Users and Computers, right-click domain.local, and click Operations Master. In the RID tab, Click Change, click Yes, click OK. In the PDC tab, Click Change, click Yes, click OK
In the Infrastructure tab, Click Change, click Yes, click OK

4) Click Start - Run, type regsvr32 schmmgmt.dll and click OK. Click Start - Run, type mmc and click OK. Click File - Add/Remove Snap-in. Click Add, select Active Directory Schema, click Add and click OK. Click OK. Right-click Active Directory Schema, click Change Domain Controller and change to the destination DC. Right-click Active Directory Schema, click Operations Master
Click Change, click Yes, click OK.

5) Demote DC. Run DCPROMO. Click Next (welcome), click OK to the warning (gc), click Next, type in the new local administrator password and click Next, click Next,

6) Disjoin the Domain (Right-click My Computer and click Properties, click the Computer Name tab, click Change, change domain to workgroup, pick a workgroup name and click OK, OK. Restart.

Friday, May 20, 2011

Directory Services Restore to Virtual from Physical

I've restored Windows Server 2003 Active Directory Directory Services from a physical to a virtual server lately probably more times than is reasonable, four successful, one unsuccessful (see note about cavalier deletion of network registry keys below). I've been playing with Domain Rename operations in Windows Server 2008 (R2 in this case) and the hiccups. Unfortunately, it doesn't sound like my company will be changing our .local domain to .com any time soon as Microsoft does not support domain name changes in Microsoft Exchange 2007 or 2010 (http://technet.microsoft.com/en-us/library/cc816848%28WS.10%29.aspx). I found that three of our more important server applications can handle it, it seems. Earlier, I elucidated steps to backup physical/restore virtual Active Directory involving 3 virtual machines and a bunch of tools. I think now I'm doing it more streamlined:

1) Backup the system state of the Domain Controller (or Active Directory Server or Directory Services server) using NTBackup (in Advanced Mode to select only the System State) on Windows Server 2003 (we're moving to 2008 soon though).
2) Create the Windows Server 2003 virtual server (up to date, with the virtual machine additions) and copy over the backed up system state.
3) Move the virtual server off the production network to prevent interfering with the production environment.

4) Give the network adapter of the virtual server a static address. I matched the address of the physical server and also added the Domain Controller (Active Directory) role to match the configuration I was restoring. As I was restoring the system state, this step might be unnecessary.
5) Restart in Directory Services Restore Mode by pressing F8 after the BIOS screen before the Windows screen, selecting the option and pressing enter.
6) Log in to Windows, run NTBackup in Wizard Mode, select the backup file, and restore the system state. After completing the restoration, clicking Close prompts a restart. Restart.
7) Pressing F8 after the BIOS but before the Windows splash screen, selecting Safe Mode, and pressing enter allowed Windows to detect the new hardware (trying to boot into Windows in normal mode would hang in my case), but because I was restoring an OEM copy, I had to repair Windows.

8) After restoring the system state, I was left with (not strictly necessary) services that no longer started that I could delete. I used sc delete to delete them. I also changed the mfevtp and mfehidk services to manual start. Not necessary if you don't mind seeing "One or more services failed to start..." on startup.
9) Give the presumably new network adapter a static IP address. Again, I matched the restored configuration.
10) Open DNS from Start -> Administrative Tools. Expand to the forward lookup zone(s), right-click the zone and click Properties. Click the Name Servers tab, select, and remove the Name Servers not being restored. Do the same for the reverse lookup zone(s), if applicable.
11) Open Active Directory Sites and Services from Start -> Administrative Tools. Make sure for the server(s) that remains, that GC is checked by right-clicking its NTDS Settings and clicking Properties. Delete the servers that won't be restored from under its NTDS Settings. For each server not restored under Sites - - Servers, expand NTDS Settings and remove the other servers. Delete NTDS Settings, choose "This domain controller is permanently offline and can no longer be demoted using Active Directory Installation Wizard (DCPROMO)", and click Delete. Delete the Server as well.
12) Open Active Directory Domains and Trusts from Start -> Administrative Tools. Right-click Active Directory Domains and Trusts and click operations Master. A restored server should be Domain Naming Operations master. If not, change the role by seizing it.
13) Open Active Directory Users and Computers from Start -> Administrative Tools. Right-click Active Directory Users and Computers, click All Tasks - Operations Masters...
Make sure a restored server is Operations master for RID, PDC, and Infrastructure roles. If not, change the roles by seizing them.
14) If not installed, install the Windows Server Support Tools from the installation media ( \SUPPORT\TOOLS\SUPTOOLS.MSI). Click Start->Run, type regsvr32 schmmgmt.dll and click OK, OK. Click Start -> Run MMC and click OK. Click Console Root and click Add/Remove Snap-In..., click Add, select Active Directory Schema, click Add, Close, and OK. Right-click Active Directory Schema and click Operations Master
Make sure a restored server is Operations master.
15) Open Active Directory Users and Computers from Start -> Administrative Tools. Expand the Domain and click Domain Controllers. Press delete for the domain controllers not being restored, select "This domain controller is permanently offline and can no longer be demoted using Active Directory Installation Wizard (DCPROMO)" and click Delete and Yes.
16) Open DNS from Start -> Administrative Tools. Delete (Same as parent folder) entries for other DCs in domain.local forward lookup zones for domain controllers not being restored. Double-click DomainDnsZones and delete (Same as parent folder) entries for other DCs
Expand DomainDnsZones - _sites - Default-First-Site-Name - _tcp and delete entries for domain controllers not being restored. Expand DomainDnsZones - _tcp and delete entries for domain controllers not being restored. Double-click ForestDnsZones and delete (Same as parent folder) entries for domain controllers not being restored. Expand ForestDnsZones - _sites - Default-First-Site-Name - _tcp and delete entries for domain controllers not being restored. Expand ForestDnsZones - _tcp and delete entries for domain controllers not being restored. Expand _msdcs - gc and delete entries for domain controllers not being restored.
17) Make sure SYSVOL and NETLOGON are being shared (browse \\HOSTNAME or \\localhost). The most recent time I did this, I saw a folder called NtFrs_Preexisting___See_EventLog under c:\Windows\Sysvol\Sysvol\Domain.local\, so I made a copy, moved the scripts and policies out of the folder and under the domain.local folder and deleted the NtFrs_... folder. Then I opened regedit (Start -> Run -> regedit OK), changed BurFlags to d4 under HKLM\SYSTEM\CurrentControlSet\Services\NtFrs\Parameters\Backup/Restore\Processes and restarted the NtFrs service to get Sysvol (c:\Windows\Sysvol\Sysvol) and Netlogon (c:\Windows\Sysvol\Sysvol\Domain.local\scripts) shared.
18) At this point, I have a domain controller that can be joined to. Unfortunately, in my cases, this domain controller now has Registry entries, Add\Remove Program entries, and files that may be suspect, so at this point, I preferred to join to it a clean virtual server, promote that server to a domain controller with DNS, and transfer operations master roles to it then demote and disjoin the "dirty" server from that domain.

Thursday, May 19, 2011

...Or don't. Network Adapters in Windows Registry

Let's say you learned where Windows stores network card/adapter information in the registry, and you were playing with recovering a backup of Windows Server 2003 Active Directory to different, virtual hardware. Don't decide it a good idea to clean out the network adapters in the registry by uninstalling the virtual adapter and deleting all adapters in the registry. It's a bad idea.

I have been playing around with a few things: recovering Active Directory to different hardware (to a virtual PC/server), seizing FSMO (Flexible Single Master of Operations or operations master) roles, transferring operations master roles, a Windows Server 2008 R2 domain controller and adprep, and Domain Rename. I've done this three times successfully and once unsuccessfully.

During the unsuccessful attempt, I backed up the system state of our first production domain controller running Windows Server 2003 R2. I created a virtual machine running Windows Server 2003, placed it on a virtual switch not paired to a physical network card, and promoted it to a domain controller. I restarted in Active Directory Recovery Mode, restored the backup, and rebooted to Safe Mode. I had to repair Windows because I had restored an OEM copy of Windows Server 2003 R2 onto a volume license copy of Windows Server 2003. I uninstalled the network adapter from Device Manager and went into the registry and removed the network adapters. All I can say for certain is after restarting, Windows could not start the virtual network adapter. It said one or more files could not be found. I tried using the installation media and the local drive as the source for updated drivers and tried reinstalling the virtual machine additions, but it didn't help. My thought is that Active Directory is bound to network adapters. I notice domain controllers take longer to start up than other Windows Servers at the Preparing network connections phase of startup.

In some cases, this sort of difficulty would have me digging into the situation. In this case, my reaction was I'm not doing that again.

Sunday, March 6, 2011

Finding Microsoft KBs afterwards

This happens frequently enough to warrant comment. I hate when I find Microsoft Knowledge Base articles detailing the solution after I'd already stammered and stumbled into a solution on my own. Case in point, although this applies to Windows 2000 Server, there is a Microsoft Knowledge Base article called "How to perform a disaster recovery restoration of Active Directory on a computer with a different hardware configuration", KB263532 - http://support.microsoft.com/kb/263532, explaining what I blogged about. Maybe those missing registry keys were the source of my problems. I haven't found a more up to date KB article but have found a related one: "How to move a Windows installation to different hardware", KB249694, http://support.microsoft.com/kb/249694. I guess it's part of learning.

Saturday, March 5, 2011

Backup Active Directory from hardware, restore to Virtual sandbox

Let's say you experienced a disaster scenario. You had domain controllers hosted on Dell server hardware that are no longer accessible. You have a backup but only of one domain controller's system state from Windows Server 2003 R2's NTBackup. The Dell ran an OEM-licensed version of Windows Server 2003 R2 Standard Edition. You need to restore Active Directory to a virtual machine to a volume licensed version of Windows Server 2003 Standard (not R2). This is the closest to an imaginable scenario I could come up with for what I did.

I want to test out server software on a sandbox domain resembling our production environment. I want to learn VMWare (we're looking to virtualize, at least partially, for the sake of server consolidation, disaster planning, high availability, and colocation). Beyond a lab learning environment, I'd never had to recover Active Directory. All that being said, there are better ways to do what I'd done, and I knowingly went against Microsoft recommendations (more accurately, I did things Microsoft recommends against doing) in at least a couple of places. For example, I could have much more easily used VMWare Converter to virtualize servers, but I didn't want to install VMWare Converter on a production domain controller (DC). Microsoft recommends against seizing roles in favor of transferring them and recommends recovering all your DCs (then transferring roles and demoting servers). Microsoft recommends against locating the global catalog on the infrastructure master server (I am only in a single domain forest though).

Here's a play by play:
I backed up the system state of our first domain controller (DC) holding most operations master roles using NTBackup, which is running OEM installed Windows Server 2003 R2 Standard Edition on reliable, powerful Dell server hardware.
I created an up to date (Windows Updates) virtual Windows Server 2003 Standard server with VMWare Tools and set it up to mirror that production DC (set it up as the typical first server, with Active Directory Domain Services, DNS, and DHCP adding WINS). This server was not connected to the production network (only an internal virtual network).
I copied over the backup, rebooted into Directory Services Restore Mode (DS RM), and restored the system state.
Side note: Doing nothing else, if I rebooted, Windows Server would not start reliably (I think it started once... maybe). The hardware was too different. The HAL and kernel were for a multiprocessor system, the virtual server was a single processor. I could get it to boot by replacing hal.dll, ntoskrnl.exe, ntkrnlpa.exe, and kernel32.dll, but then I couldn't log in due to a licensing/activation issue. On Windows Server 2008 or 2008 R2, I may have been able to work around this but I couldn't figure it out on Windows Server 2003 (seen mention registry locations, wpa.dbl, licensing libraries - dlls, and executables - I'm sure a Microsoft guy would cringe at my attempt) .
I rebooted to the Windows Server 2003 installation media, pressed enter to install, accepted the license, and r to repair.
Side Note: Now some of the virtual machine was showing Windows Server 2003 R2. I could log in but could not join the domain ("The domain name [DOMAIN] might be a NetBIOS domain name. If this is the case, verify that the domain name is properly registered with WINS. ..." or "The following error occurred when DNS was queried for the service location (SRV) resource record used to locate an Active Directory Domain Controller for domain domain.fqdn: The error was: "This operation returned because the timeout period expired."...").
I logged in and did some cleanup. Some installed services didn't start as the programs weren't there. Some programs in Add/Remove Programs weren't there. For this, I used the Windows Installer Cleanup Utility, the sc delete command, CCleaner, and some altering of the registry. For Microsoft.NET, I had to do some ugly ripping from the registry (Microsoft cringe #2). I updated the server. I demoted the other domain controllers forcibly using Active Directory Sites and Services (delete the replication partners in NTDS Settings, delete NTDS Settings and delete the Server) (Microsoft cringe #3).
I removed the other DCs from Active Directory Sites and Services and DNS. Where possible, I tried to use the GUI but had to delete some DNS entries manually. When satisfied, I backed up the system state, saved it out. I shut down this first server. I created another a second "typical first server" Active Directory, DNS, and DHCP adding WINS up to date with Windows Updates and with VMWare tools. I copied the backup down, rebooted into DS RM, restored the system state and rebooted.
Along side of this more civilized and cleaner DC, I brought up a Windows Server 2003 server without roles but with updates and VMWare Tools. I installed the Active Directory role on this server as a second server on the domain to the cleaner first server on the domain. I added the DNS role and WINS. I made WINS a replication partner on both servers, replicated the data, deleted the replication servers and removed WINS from the other server. I added the DHCP role (initially unactivated), copied over the settings, deactivated the original DHCP server, activated the new DHCP server, and removed the DHCP server role from the original DHCP server. I removed the original DNS server from responding to requests, made the new DNS server the primary on zones, removed it from the zones, and removed the role from the first server. I transferred over the roles (PDC emulator, RID master, Infrastructure master, schema master, and domain naming master) using the interface. Finally, I removed the Active Directory role (demoting the server) and got rid of every server except the new AD, DNS, DHCP, and WINS server.

To summarize, the steps were as follows:
1) Backup the system state using NTBackup from the DC holding most master roles.
2) Create the virtual machine server (with updates and VM tools) in isolated environment. Use dcpromo or Add or remove server roles to add the domain controller role as a typical first server, configuring to mirror the environment to be restored. Restart at the end of the installation wizard.
3) Copy over the system state backup. Restart and start in Directory Services Recovery Mode. Restore the system state using NTBackup.
4) Insert the Windows Server installation media. Restart and boot to the installation media. Repair the installation (past the recovery console, a repair installation).
5) Clean up the wreckage. Forcibly demote the servers that will not be restored. Use Windows Installer Cleanup Utility, CCleaner's Add/Remove Programs entry deleter, CCleaner's registry cleaner, sc delete command, and regedit (to remove some services, drivers, and programs manually)
6) Backup the virtual domain controller's system state using NTBackup. Copy the backup file out and shut down this server.
7) Create a second virtual machine server (with updates and VM tools) in isolated environment. Use dcpromo or Add or remove server roles to add the domain controller role as a typical first server, configuring to mirror the environment to be restored. Restart at the end of the installation wizard.
8) Copy over the system state backup. Restart and start in Directory Services Recovery Mode. Restore the system state using NTBackup.
9) Create a third virtual machine server (with updates and VM tools) in isolated environment. Use dcpromo or Add or remove server roles to add the domain controller role. Add this domain controller to the second server's existing domain. Restart when complete.
10) Add the DNS and WINS rules. Add but do not configure the DHCP role.
11) In WINS on the second server, add the third server as a replication partner. On the third server, add the second server as a replication partner. Initiate replication from either or both servers.
12) Duplicate the DHCP settings from the second server (changing, where necessary, to reflect the third server's planned role). Unactivate DHCP from the second server and activate DHCP on the third server. Remove the DHCP role from the second server. If WINS has finished replication, remove the WINS role from the second server.
13) Configure the third server's DNS with the intention of it being the DNS server (make the third server the primary server in the zones). Remove the second server from the third server's DNS. Remove the DNS role from the second server.
14) Transfer roles. RID, PDC, and Infrastructure can be transferred from Active Directory Users and Computers from the second server by connecting to the third server domain controller. Transfer Domain Naming Master can be done in Active Directory Sites and Trusts from the second server connecting to the third. Schema Master can be transferred from Active Directory Schema, but you may need to register it (regsvr32 schmmgmt.dll) and open it from mmc (Microsoft Management Console). This all can be done from the command line using ntdsutil.
15) Remove the Domain Controller role from the second server (using Add or Remove Roles or dcpromo), demoting it.
16) Now you can get rid of the first and second servers.

Friday, March 4, 2011

VirtualBox Mac OS X 10.6.6

I found instructions elsewhere that Mac OS X can be run on Oracle VirtualBox. The instructions say to buy Mac OS X Snow Leopard from a retailer or official channels, which can be had for $39.99. However, if my understanding is correct, this is the "upgrade" price (you can't buy a Mac without OS X, so you either have the current version an older version). Also, I believe the price of the operating system is hardware subsidized - that if Apple sold operating systems independent of hardware, OS X might have to cost more. Also, I think you're only to virtualize Mac OS X Server on VirtualBox and only on Mac hardware, so no Mac OS X client on PC hardware. You need Intel VT-x. These are the instructions:

1) Go to virtualbox.org and download and install the latest version of Oracle VirtualBox.
2) Open VirtualBox, click New, give it a name and select OS Type, select Mac OS X and Mac OS X Server.
3) You can select the defaults (or more) for memory and hard drive. Note, fixed-sized storage is faster but takes up the total drive size on your hard drive regardless of how much space is being used. Finish the Create New Virtual Disk Wizard and the Create New Virtual Machine Wizard.
4) Download the EmpireEFI boot disk (search Google) (optional: also download NawCom boot disk).
5) Change the settings of the OS X Virtual Machine. Select the Virtual Machine and click the Settings button. Under System, uncheck Enable EFI. You can check Enable 3D Acceleration under Display. Click OK.
6) Click Start. For the installation media, select the EmpireEFI ISO. When you see the EmpireEFI boot screen, switch the EmpireEFI media for the Mac OS X media and press F5 (twice if necessary). Select the Mac OS X Install DVD and press Enter.
7) Select the language and click Next. Click Continue. Click Agree.
8) Click Utilities from the menu -> click Disk Utility -> select your disk from the left and click Partition from the middle bar. From Volume Scheme, choose a volume scheme (1 partition), give a name (Macintosh HD), click Apply and click Partition. Click Close.
9) Select the Hard drive and click Install.
10) The installation "fails". Restart and switch the boot media to the EmpireEFI iso again.
11) When the computer reboots, choose to boot to the Hard drive. It boots into Mac OS X, click OK and configure the keyboard. Select your region and Keyboard. Configure your account and time zone.
12) Double-click or open the Empire EFI disk in OS X, double-click Post-Installation, and run the myHack Installer. Run the installation with the defaults (Continue, continue, continue, agree, continue, install...).

To install the OS X update(s), download the full ComboUpdate and run the full download (like MacOSXUpdCombo10.6.6.dmg (if installed, remove SleepEnabler.kext). After the ComboUpdate completes, do NOT restart. Reinstall the Empire EFI. Remove the iso and reboot. Other updates work without individual downloads and without Empire EFI.

Optional portion - reboot to the NawCom iso, select the Macintosh HD and boot into OS X.

Note: You may not be able to copy to ISO (or to DVD DL) the Mac boot DVD DL. Ubuntu will do the trick, and you can use Live CD/DVD for this purpose.

Wednesday, February 23, 2011

McAfee VirusScan 8.8 from 8.7 on ePolicy Orchestrator 4.5

I use McAfee's ePolicy Orchestrator (ePO) 4.5 at work. When patches to McAfee VirusScan or the McAfee Agent (ePO Management Agent) are released, patches are checked in to the Software Repository and are deployed. New versions of software are a bit different, so when McAfee released VirusScan 8.8, I did not do everything needed to get it deployed initially. First, I only checked in the software; then I did everything (from the installation instructions) but update the client tasks. I'm recording what I had to do to make it work (update and deploy McAfee VirusScan 8.8 using ePO) for future reference:

1) Download the new version of VirusScan from McAfee using the Grant Number
2) Keep the zip file (needed to check in the software) and unzip the contents to a directory (needed to check in the extensions and to run EPOPolicyMigration).
3) Launch McAfee ePolicy Orchestrator 4.5.0 Management Console and login
4) Go to Menu - Software - Master Repository
5) Click Actions - Check In Package, click Browse, browse to the VSE880LML.zip file and click Next and Save.
6) Click Menu - Software - Extensions and click Install Extension
7) From the extracted VSE880LML folder, install the zip files epo_help_vse_880, virusscan8800, and virusscanreports120.
8) Run the EPOPolicyMigration tool the inside the extracted VSE880LML folder. Migration should complete successfully.
9) Update your client tasks to install VirusScan 8.8 (from within Menu - Systems - System Tree, pick your group, click the Client Tasks "tab" and edit any tasks that install VirusScan to change from 8.7 to 8.8).

It started working after that. Whew.

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