Archive for June, 2008

VMWare Workstation 6.5

This is definitely becoming one of my favorite programs and the most useful I own. They just released beta 2, with a bunch of cool new features:

  • Accelerated 3-D graphics on Windows XP guests — Workstation 6.5 virtual machines now work with applications that use DirectX 9 accelerated graphics with shaders up through Shader Model 2.0 on Windows XP guests. Hosts can be running Windows 2000, Windows XP, Windows Vista, or Linux.
  • Virtual machine streaming — You can now download a virtual machine from a Web server and power it on without waiting for the download to complete.
  • Virtual Network Editor for Linux hosts — On Linux hosts, the new Virtual Network Editor now provides a graphical user interface for creating and configuring virtual networks.

The Virtual Network Editor is definitely my favorite feature, and makes this 10x better than Virtualbox in my opinion. That and OpenBSD actually works for me in VMWare workstation, and doesn’t in virtualbox, which scares me about virtualbox’s vm and what other bugs we might not be seeing. Combine VMWare workstation with ubuntu-vm-builder and you have a lot of power at your fingertips.

(Not paid by VMWare, I just know people have been waiting for those features to be released)

AMD rocking

So last year about this time I made a post about AMD and how they need to release specs blah blah. Well they made good on it, and we should definitely support them over Nvidia.

Nvidia may not care about Linux users, but we happen to be the people making huge purchasing decisions, advising friends, neighbors, family etc on what type of hardware to buy. Tech Report has a review of the new Radeon: AMD’s Radeon HD 4870 graphics processor. Throw your support their way, this card is a winner.

OS X Zealots: Convince me?

So as a technology / operating system junkie, one OS I have never got to play with is Leopard. Solaris, OpenBSD, FreeBSD, RHEL, SLES, Ubuntu, Windows 95-XP — used them all. I actually have absolutely no urge to see what Vista is about, but I am curious about OS X just because it’s something new / fun that I wouldn’t know yet. Unfortunately that curiosity, from my perspective, still costs $600 minimum to itch. I am aware the resale value is good, so if I hated it I could resell, but that would still be a pain.

I would love to try a mac, but logically I am not coming up with reasons why it is a good idea. Here is the values going into the equation:

  • Hardware Compatibility: Currently Ubuntu works on all of my hardware out of the box, with 3d acceleration
  • Coding: I create Symfony web apps (php based), and code in: python, perl, c / c++
  • Virtual machines: I enjoy provisioning virtual machines. These would not *have* to run on the mac
  • System management: I manage a massive amount of linux systems
  • Dual head: I have multiple monitors in use at any given time. These can all be configured using xrandr
  • UI Toolkit Nazi: All of my apps must use the same toolkit, I can’t stand UI elements being different (gtk only right now)
  • OS License: I have 5 Ubuntu desktops between work / home, this sounds costly for OS X

I guess I am trying to figure out: What can I actually do better / easier on OS X? I know the big trend these days is TextMate, but once we get past that, what does Mac offer?

Hardy-proposed kernel update

Today Hardy proposed was updated with a new kernel, which looks like it should close bug: https://bugs.launchpad.net/ubuntu/+source/linux/+bug/240938 — I believe that means if you have an Intel Atom based PC it should boot about 3 seconds faster after this.

Congratulations OpenSUSE

OpenSUSE 11 has been released today. This release features a fast package management system called Zypper, and Xrandr packages so they can do multihead config like Ubuntu. Installer is QT4 based and looks pretty slick. Their mirrors are pretty hit up right now, so I copied their non-live cd .torrent files:
openSUSE-11.0-DVD-x86_64.torrent
openSUSE-11.0-DVD-i386.torrent

This is a big week for Linux, and any press, whether Ubuntu or not, is great press. Firefox 3.0 final was relase, and Wine 1.0 final was also released.

Deploy Ubuntu Hardy 8.04 Jeos VM in under 3 minutes

This is one of the coolest features ever. The longest part is just downloading the files. To optimize that:


# sudo apt-get install apt-proxy

Once that is installed, run:


# sudo ubuntu-vm-builder kvm hardy --mirror http://127.0.0.1:9999/ubuntu

Wow. There is your vm. On my *laptop* this build took:

real 2m44.658s
user 0m34.270s
sys 0m24.262s

If you want to make a vmware image, and have open-vm-tools installed already, add this line to your apt-proxy’s sources.list:

# deb http://ppa.launchpad.net/sharms/ubuntu hardy main

Then:

# apt-get update

Then run:

# sudo ubuntu-vm-builder vmserver hardy --mirror http://127.0.0.1:9999/ubuntu --addpkg open-vm-tools

Thank you dholbach

If you haven’t checked out the videos on youtube, here it is. Great work, this really makes things easy to grasp and understand. Thanks a ton!

Secret Formula of Linux Compatible Hardware

Taken from an osnews.com thread:

“The secret to my success in using Solaris x86, including Solaris 10, Solaris Express and OpenSolaris is using good hardware such as Intel NIC’s, mid range ATI or nVidia video cards and a Proxim Orinoco Gold PCMCIA wireless card.”

Same rule applies to Linux. People will obviously complain about nVidia closed source drivers, and it is a legit complaint, but if you want to get things done / have excellent 3d support it can’t be beat.

Manufacturers which are currently on my blacklist of vendors I will not purchase from:

  • Broadcom
  • DLink (too many revisions of same card with same name makes it horrible to use on ANY platform (including windows)
  • Any offbrand ram company without a lifetime warranty
  • Any protools based hardware
  • Any ATI video capture card
  • Any Sis products

Hope that helps someone. If you find hardware not compatible you can also post it in this thread.

Simple

Things I did this week using Ubuntu Hardy 8.04:

  • Burned an Audio CD using Brasero
  • Resized pictures using Gimp
  • Organized my music using Rhythmbox
  • Talked to my friends online using Pigeon
  • Worked from home using network-manager-vpnc
  • Watched Youtube videos using Firefox
  • Bought music online using Amazon MP3 downloader

I did all of that, without ever opening any consoles or terminals. My girlfriend had a similar workflow on her Dell laptop. I am sick of all these people who say ‘well application X’ doesn’t work on Linux. The bottom line is, for 99% of the population, gimp is just as good as photoshop. Sorry, your digital art skills never demanded the capabilities of photoshop based on most of the content I see on the internet. Buttons may be in different places than you expected, learn things, find them and do it. Trivial prior knowledge of button locations is not an asset, but a mental deficiency, when every menu has labels.

“Oh but I manage all my money in Quicken” – Again, from a United States specific view, no, you probably just like to complain. If American’s were managing their money, maybe the foreclosure rates wouldn’t be so high, credit card debt would be much lower, and everyone wouldn’t be crying about gas prices and it’s impact on the economy. So, in fact, if you are using Windows, and not using Quicken, start using it. Atleast fix that part of your life. Save your money and raise the value of my dollar.

“All of my email is in outlook/groupwise/whatever” – Export it.

“Microsoft Office is what I am used to and edits better than OpenOffice” – First off, I will go back to my point: learn things. Second, why is it everyone says how great office is, but unless their work bought it, has anyone actually has paid for it? If it was free, thats a strong argument. But it isn’t, and you are probably a pirate (yes having the kid down the street install some copy he has is still piracy).

“There is no equivalent of Microsoft Visual Studio!” – Right because there are just a ton of good projects even developed with that. If that was the case, why is it that Windows administrators constantly reboot their boxes and can almost never find the cause of problems? Unfortunately due to restrictions I can’t cite specifics, but in big business this happens almost always. Closed source little companies can *definitely* not provide enterprise level support, no matter how big of contract they sell you. For that matter, how about since 1996 or so the world has changed. Your applications should be web based and the backend should run on Linux. If you are making a fat client for anything remotely resembling: trivial dialogs, input which will be uploaded anyway, or anything that does not computationally require the client extensively, quit making software. I see ton’s of software that is just some glorified html input form but you felt the need to do it in Visual Studio, package it up, and do it piss poor.

“My graphics never work in Linux!” – Take that money you *supposedly* spend on those cool windows apps you use, and buy a real video card. I have IBM, Dell, HP, eMachines and custom built machines (over 5000) running graphical interfaces under linux. Without me tweaking each Xorg.conf.

“What about games?” – You got me there. That answer is neither learn things, nor play outside. Wish I had something else to say.

That’s all.

Supporting legacy windows applications through Linux

Problem: One business critical application is not linux compatible
Solution: Run a VM on Linux host until application is natively written for Linux
Tools used: VMWare Workstation and VMWare Player

What to do:

Use VMWare to create a windows image. This image is locked down using the Windows XP ‘Group Policy Editor‘. Having Windows inside the VM leaves two administrative tasks which are not easily manageable right off the bat: Software Distribution and System Maintenance.

Using Python and Batch files we are able to manage this system using .deb files or .rpm files. To unlock the system, we will be using web services.

Using batch files, I make sure that, with samba presenting a CIFS share on the host, that the VM can mount this share:

shares.bat:

net use s: \\vmware-shared\software-update /USER:vmware-user ourpassword < C:\shares.rsp

shares.rsp:

Y

This will make sure at boot that our shared drive is mounted. Now the goal is to install arbitrary updates on the VM that we approve. We will package any updates using the NSIS Windows installer. These updates should only be ran once, at boot. To make sure they are ran only once, we use Python in combination with Py2Exe to make it an executable:

ProgramRunner.py:

import shelve
import glob
import os
import sets
import logging
import dbhash

def initShelve(filename = 'c:\\programrunner.db'):
handle = shelve.open(filename, writeback=True)

return handle

def initLogging():
logging.basicConfig(level=logging.DEBUG,
format='%(asctime)s %(levelname)s %(message)s',
filename="c:\\programrunner.log",
filemode='w')

def retrieveExes(filePath):
return glob.glob(filePath + "*.exe")

def retrieveBats(filePath):
return glob.glob(filePath + "*.bat")

def executeProgram(fileName):
os.system(fileName)

def removeDuplicates(ourList):
return list(sets.Set(ourList))

# Returns list of .bat and .exe files at filePath without duplicates (how are there duplicates.. I dont know, remove that part?)
def retrieveFiles(filePath):
filesToProcess = []

for file in retrieveExes(filePath):
filesToProcess.append(file)

for file in retrieveBats(filePath):
filesToProcess.append(file)

return removeDuplicates(filesToProcess)

initLogging()
filePath = """S:\\"""
logging.debug('filePath is: ' + filePath)

filesToProcess = retrieveFiles(filePath)
for file in filesToProcess:
logging.debug('filesToProcess: ' + str(file))

executed = initShelve()

# If filelist doesn't exist in shelve yet, make it so #1
try:
if executed["filelist"]:
logging.debug('filelist exists in shelve.')
except KeyError:
executed["filelist"] = []
logging.debug('filelist did not exist in shelve. Creating.')

for file in filesToProcess:
logging.debug('Now processing: ' + str(file))
if file in executed["filelist"]:
print str(file) + " has already been executed."
logging.info(str(file) + " has already been executed.")
else:
executeProgram(file)
executed["filelist"].append(file)
print "Executing: " + str(file)
logging.info("Executing: " + str(file))

logging.debug('Closing shelve. Program has ended.')
executed.close()

So this will now run any installer we make once it is installed via RPM or DEB into our S: shared drive. Should we need to go in for maintenance, there are 2 .bat scripts:

disablepolicy.bat:

echo Disabling group policy
xcopy /E /H /I /K /Y c:\windows\system32\grouppolicy c:\grouppolicy
rmdir /S /Q c:\windows\system32\grouppolicy

enablepolicy.bat:

echo Enabling group policy
xcopy /E /H /I /K /Y c:\grouppolicy c:\windows\system32\grouppolicy

Now just create a python program at startup (this will vary based on your management web interface) that downloads it's settings from your server, and if the server says to disable policy just run it.

The only caveat with this strategy is that you will need to review your Microsoft Windows Licenses and make sure you are allowed to run them in a VM.