Adding VNC to WinPE part 2

Apparently I’m a little scatter brained, and forgot to do the follow up I promised on an old post. So I’ll do the follow up here.

You only need 3 files, two of which you can download as external binaries from UltraVNC’s website.
1) vnchooks.dll
2)winvnc.exe
3)ultravnc.ini

As long as all three are located in the same directory, you should be able to execute the ‘winvnc.exe’ binary from any other location. I populated ultravnc.ini with the following text:

[Permissions]
[admin]
AuthRequired=0
HTTPConnect=0
[ultravnc]
[poll]
TurboMode=1
PollUnderCursor=0
PollForeground=1
PollFullScreen=0
OnlyPollConsole=0
OnlyPollOnEvent=1
MaxCpu=40
EnableDriver=0
EnableHook=1
EnableVirtual=0
SingleWindow=0
SingleWindowName=

Most of the configuration names are self explanatory. I can’t seem to locate the webpage that describes all of the options available in the .ini file. I get the impression that they want to move away from an .ini file, and use just the Registry, which would be useful if they had some better documentation about it.

Once all this is in place, you can modify the ‘startnet.cmd’ script to launch your VNC server, like so:

wpeinit
wpeutil DisableFirewall
wpeutil InitializeNetwork
cd \VNC
winvnc.exe -install

Given that you put all three VNC files in \VNC in your WinPE image. I also have had success running this same configuration from a Network Share, so you wouldn’t have to modify the stock WinPE at all to run it. But what fun would that be?

Delta Cloud

Now here’s a cool piece of technology. Delta Cloud is trying to create an interface that would allow you to manage Cloud Offerings from different providers, given you have an account. Since the purpose of a “Cloud” is the ability to dynamically grow and shrink to fit your needs, all cloud providers provide a user portal that allow the end-user control over their servers. Having a single interface that allows you to manage your cloud offerings on the big providers would be a big benefit to all involved. New providers have a standard to meet, old providers are forced to continue to compete, and customers have the ability to make educated choices with the same tool they execute them with. Here at Fibernet, we are just now fleshing out the final details on how we want to allow users to manage their products. It’s a perfect time to adopt some of these standards, and I hope it will be as beneficial as it seems it will. If nothing else, it’s given us a target to aim at.

Windows 7 vs Ubuntu Maverick vs Fedora 13

Last week, my Windows 7 hard drive finally blew out. My first instinct was to just simply go out and replace the hard drive. As I thought about it, I have 3x 500GB hard drives between my two systems. I don’t use the 1.5TB of data, so why spend money on a new drive? I convinced myself to spare our (student) poor bank account, and rebuild my system on the existing 500GB drive. The thought of trying to resize filesystems around and play games with the disk partitions wasn’t my idea of fun. So I decided to back up my data, and reinstall from scratch. And since I’m building from scratch, I thought it was about time to introduce Ubuntu to my desktop.

Since I’ve been running Fedora on my desktop and laptop since Fedora Core 5 or 6, I haven’t ever felt comfortable moving away from Fedora to Ubuntu. The new OS learning curve was a little more than I was willing to put into it. I have been dual booting Fedora with Windows for just as long. I never bought into Vista, so I ran XP all the way until I received a free copy of Windows 7 from MSDNAA as a result of my enrolment in at UVU, shortly before the Windows 7 was released to the market. All things considered, I decided to install all 3 Operating Systems. The experience has been enlightening.

I have a home server that is configured to offer Network based installs that I really haven’t had much opportunity to leverage. This week, I added Windows 7 64-bit, and resolved some issues with my mirror of Ubuntu so I could install Maverick. I can’t tell you how pleased I was to be able to re-build my system with out having to go the old archaic route of burning DVDs that become obsoleted an hour after they’ve been burned. This is also the first time I’ve installed an Operating System on my desktop straight onto the bare metal since somewhere around Fedora 8 or 9, when I discovered VirtualBox.

I decided that to avoid having to resolve boot loader issues after the fact, that I would install Windows 7 first, Fedora second, and Ubuntu last. Ubuntu comes packaged with a grub configuration tool that will scan hard disks, and determine what OS is installed, and configure grub to allow you to boot into that OS. So I’m putting it to the test.

The installation experience was pretty different between the 3. I’ve done enough installs of all three to know the difference between a DVD install that most people will experience, and the Network based installs that I did. Most of the difference is in how you boot from the installation Media, and choose where the installation media is located. The rest is pretty much exactly the same.

Windows 7 asks you to answer “Yes” to a few questions like the EULA, then it presents the Disk Partitioning tool. Once you’ve partitioned the disk manually, or let it partition it for you, the installation is essentially done. Come back 15-30 minutes later, and you’ve got your new bare-bones, out-dated system ready to use. An hour of installing updates, browsing around to find the software I want to install, and the system was complete.

Fedora’s installer is pretty much the same up until you’ve partitioned the disk. The software selection tools are presented, and they allow you to really customize your system. Pick your software, and 5-10 minutes later, you’ve got your new bare-bones, out-dated system ready to use. An hour of updates, browsing around to add repositories with software like video card drivers, and the system was complete.

I think it would be fair to say that the install and set up experience between Fedora 13 and Window 7 were pretty similar. The major differences were in aquiring software. My nVidia drivers were automatically detected and setup with Windows Update, but I had to browse to RPMFusion on Fedora 13 and add their repository, and then specifically choose the software. If I didn’t know what to look for, it wouldn’t have been a smooth experience. I had to download Firefox separately on Windows, but it was default on Fedora. I have a personal bias against Windows Media Player on Windows, so I downloaded and installed Media Player Classic almost immediately. Once I got the DirectX 9 runtime issues resolved, MPC has been running smoothly. Flash is annoying because there are two versions. The ActiveX version, and the Plugin version. Firefox uses the Plugin, and Hulu Desktop uses the ActiveX version. Both, however, prompt you to install the correct version when you try to use them. On Fedora, you have to know where to look to be able to enable flash on your system. Hulu Desktop 64bit did not detect flash when setup this way, but the 32bit found the non-wrapped plugin. Both versions run full-screen fairly well, if I manually set CPU scaling to “Performance”. I think I’ll give the NSPlugin Wrapper version a shot first. The last thing is that Windows 7 automatically creates your first user as an Administrator, and prompts you to click “Yes” for administrative tasks. On Fedora 13, it asks for the root password for the same sorts of administrative tasks. I would suggest installing the accountsdialog package on Fedora to configure users as Desktop Administrators, as well as Auto-logins. I like to setup my desktop to auto-login for the time being. It saves on boot time.

Now, Ubuntu was a totally different story. Unfortunately, I couldn’t find a way to get the Graphical installer to work via a network install. However, the text based installer, while it asks a LOT of questions, was pretty straight forward. I was able to install to the correct partition with out any issues. Once I got through the 3rd progress bar that took 5 minutes, the system was finally installed. It took much more babysitting than Windows 7 or Fedora. However, the post-install experience has won my heart. Before I can get my bearings on where the software installer tools are, I get a pop up informing me that there are better drivers for my Video card. It warns me that the software is not open-source, and that the software is maintained by a 3rd party, meaning nVidia. Cool! Then installing Flash was a snap from the Add-Remove software tool. I noticed that it pulls nspluginwrapper down as a dependency as well. The only thing I had to go outside of “Ubuntu tools” to get installed was Hulu Desktop, which detected and used the nspluginwrapper version just fine. All administrative tasks prompted for my user password, instead of the root user password. I know from experience that Ubuntu configures the root user to be password-less, and that users are encouraged to use password protected tools to escalate their privileges. The root user can be configured to have a password if you need it. I completely agree with this philosophy.

I think I could happily make the argument that a properly installed Ubuntu system is MUCH more user friendly than Windows ever has been. New users to Ubuntu who can get used to downloading and installing software from the Add-Remove software tools in Ubuntu, instead of browsing the internet and downloading the software installer themselves will find the Desktop experience to be rich, smooth, and easy to use. I’m sure I’ll be back with more differences on the actual usage experience.

FQDN Regular Expression

I was asked to help create a regular expression to validate that a string is a Fully Qualified Domain Name. Google searching didn’t give me a direct result, but it gave me something close. I found a clever website dedicated to sharing regular expressions called regexlib. On their site, someone posted a regex for MS FQDNs, which aren’t quite the same as regular FQDNs. The rules are a little different. In RFC 1035 section “2.3.1. Preferred name syntax”, we read:

The labels must follow the rules for ARPANET host names.  They must
start with a letter, end with a letter or digit, and have as interior
characters only letters, digits, and hyphen.  There are also some
restrictions on the length.  Labels must be 63 characters or less.

Section “2.3.4.Size Limits” reads:

Various objects and parameters in the DNS have size limits.  They are
listed below.  Some could be easily changed, others are more
fundamental.
labels          63 octets or less
names           255 octets or less
TTL             positive values of a signed 32 bit number.
UDP messages    512 octets or less

Given those rules, I’ve modified the regular expression from regexlib, to be:

(?=^.{1,254}$)(^(?:(?!\d|-)[a-zA-Z0-9\-]{1,63}(?<!-)\.?)+(?:[a-zA-Z]{2,})$)

The differences between the one on regexlib and mine are fairly subtle. Theirs excludes any label that is comprised of all digits, but the RFC only specifies that the first character can’t be a digit (or hyphen.) They also allow an underscore character as part of a label, which is not part of the RFC specification.

The only deviation to the RFC rules that I make is the extra rule that the top level domain (the part that comes after the last ‘.’) must be characters only, and must be 2 or more (.com, .net, .org, .eu, .uk, ect). I can’t find where that is documented though.

Flash and Linux

My experience with Flash on Linux has been a roller coaster. In the beginning, we had to use a wrapper to get the Windows plugin to load, or use Wine to install Firefox. In both cases, performance was excruciating. I was still using Windows fairly heavily, so it wasn’t too terrible. If I really needed to see something in Flash, I’d reboot.

It got a little better when Adobe finally released a 32bit version for Linux. About the same time, I was trying really hard to make the move from 32bit Linux to 64bit Linux. The move was nearly as painful as it was to switch from Windows to Linux. It wasn’t really until about Fedora 7 that I really started feeling like 64bit Linux was going to be worth my time and energy. I still kept 32bit linux on my laptop, but converted my work station to 64bit. My desktop at home went back and forth, but still primarily ran Windows.

Later, Adobe finally released an Alpha version of Flash 10 for 64bit linux. I was over joyed. I finally felt like my Browsing experience was somewhat normal on a 64bit linux machine. Chrome and Chromium really helped that along as well. However, I still felt like HD video was still sub-par on Flash, regardless of OS.

With nVidia and ATI announcing GPU-enhanced video decoding, I jumped on that bandwagon really quick. I’ve never had a lot of success with ATI, so most of my systems are running nVidia GPUs. My first experience with VDPAU was awe-inspiring. No more tearing, no more dropped frames, and no more over-worked CPU causing my less-than-quite CPU fan to kick into high gear. Then I learned that Flash 10.1 is supposed to support GPU-enhanced video decoding, but for windows only. I can’t ever say I was impressed with their product, and it certainly never performed like an external video player. Hulu and Youtube HD videos were still choppy and tearing, even on Windows 7. Then Flash 10.1 32-bit came to Linux, and boasted their GPU-enhanced video decoding, but it required a newer version of the Video Drivers that weren’t out for Linux yet. So I waited.

Today, we have a Linux/Windows 32bit simultaneous release of Adobe Flash 10.1, which is both a step forward and a step backwards. I love that Linux is getting enough attention to be released with Windows at the same time, but 32bit? Really?

Windows 7 and Windows Server 2008 R2 are basically the same OS, right? (Like Server 2008 and Vista, and Server 2003 and XP). Did you know that Win2k8 R2 isn’t available in 32bit? Makes me wonder if Windows 7 32-bit was just an afterthought, or maybe just for the 32bit netbooks. If we believe that Adobe is trying to cater to Microsoft (which the dual release would speak against), why aren’t they pushing 64bit software? Is it because Browser software isn’t 64bit? Mozilla doesn’t publish a Win64 version of their Firefox browser. You have to go somewhere else to learn how to compile the browser yourself.

At the same time Adobe releases 10.1, they discontinue the Beta 10.0 for 64bit Linux, but don’t open a 10.1 Alpha or Beta for Linux. So where are we now? I, for one, am going to see how long I can survive with out Flash on my 64bit Linux boxes. I’m simply not motivated to go backwards and try to install 32bit firefox just so I can have flash. It just doesn’t make sense to me at all.