
Friday October 09, 2009
What's New in Solaris 10 10/09
Solaris 10 10/09 (u8) is now available for download at
http://sun.com/solaris/get.jsp. DVD ISO images (full and segments that can be reassembled after download) are available for both SPARC and x86.
Here are a few of the new features in this release that caught my attention.
Packaging and Patching
Improved performance of SVR4 package commands: Improvements have been made in the SVR4 package commands (pkgadd, pkgrm, pkginfo et al). The impact of these can be seen in drastically reduced zone installation time. How much of an improvement you ask (and you know I have to answer with some data, right) ?
# cat /etc/release; uname -a
Solaris 10 5/09 s10x_u7wos_08 X86
Copyright 2009 Sun Microsystems, Inc. All Rights Reserved.
Use is subject to license terms.
Assembled 30 March 2009
SunOS chapterhouse 5.10 Generic_141415-09 i86pc i386 i86pc
# time zoneadm -z zone1 install
Preparing to install zone .
Creating list of files to copy from the global zone.
Copying <2905> files to the zone.
Initializing zone product registry.
Determining zone package initialization order.
Preparing to initialize <1453> packages on the zone.
Initialized <1453> packages on zone.
Zone is initialized.
Installation of these packages generated errors:
The file contains a log of the zone installation.
real 5m48.476s
user 0m45.538s
sys 2m9.222s
# cat /etc/release; uname -a
Solaris 10 10/09 s10x_u8wos_08a X86
Copyright 2009 Sun Microsystems, Inc. All Rights Reserved.
Use is subject to license terms.
Assembled 16 September 2009
SunOS corrin 5.10 Generic_141445-09 i86pc i386 i86pc
# time zoneadm -z zone1 install
Preparing to install zone .
Creating list of files to copy from the global zone.
Copying <2915> files to the zone.
Initializing zone product registry.
Determining zone package initialization order.
Preparing to initialize <1432> packages on the zone.
Initialized <1432> packages on zone.
Zone is initialized.
Installation of these packages generated errors:
The file contains a log of the zone installation.
real 3m4.677s
user 0m44.593s
sys 0m48.003s
OK, that's pretty impressive. A zone installation on Solaris 10 10/09 takes about half of the time as it does on Solaris 10 5/09. It is also worth noting the rather large reduction in the amount of system time (48 seconds vs 129 seconds) too.
Zones parallel patching: Before Solaris 10 10/09 the patching process was single threaded which could lead to prolonged patching time on a system with several nonglobal zones. Starting with this update you can specify the number of threads to be used to patch a system with zones. Enable this feature by assigning a value to num_proc in /etc/patch/pdo.conf. The maximum value is capped at 1.5 times the number of on-line CPUs, but can be limited by a lower value of num_proc.
This feature is also available by applying Solaris patches 119254-66 (SPARC) or 119255-66 (x86).
For more information on the effects of zone parallel patching, see Container Guru
Jeff Victor's excellent
Patching Zones Goes Zoom.
ZFS Enhancements
Flash archive install into a ZFS root filesystem: ZFS support for the root file system was introduced in Solaris 10 10/08 but the install tools did not work with flash archives. Solaris 10 10/09 provides
the ability to install a flash archive created from an existing ZFS root system. This capability is also provided by patches 119534-15 + 124630-26 (SPARC) or 119535-15 + 124631-27 (x86) that can be applied
to a Solaris 10 10/08 or later system. There are still a few limitations such as the the flash source must be from a ZFS root system and you cannot use differential archives. More information can be
found in
Installing a ZFS Root File System (Flash Archive Installation).
Set ZFS properties on the initial zpool file system: Prior to Solaris 10 10/09, ZFS file system properties could only be set once the initial file system was created. This would make it impossible to create a pool with same name as an existing mounted file system or to be able to have replication or compression from the time the pool is created. In Solaris 10 10/09 you can specify any ZFS file system property using zpool -O.
zpool create -O mountpoint=/data,copies=3,compression=on datapool c1t1d0 c1t2d0
ZFS Read Cache (L2ARC): You now have the ability to add persistent read ahead caches to a ZFS zpool. This can improve the read performance of ZFS as well as reducing the ZFS memory footprint.
L2ARC devices are added as
cache vdevs to a pool. In the following example we will create a pool of 2 mirrored devices, 2 cache devices and a spare.
# zpool create datapool mirror c1t1d0 c1t2d0 cache c1t3d0 c1t4d0 spare c1t5d0
# zpool status datapool
pool: datapool
state: ONLINE
scrub: none requested
config:
NAME STATE READ WRITE CKSUM
datapool ONLINE 0 0 0
mirror ONLINE 0 0 0
c1t1d0 ONLINE 0 0 0
c1t2d0 ONLINE 0 0 0
cache
c1t3d0 ONLINE 0 0 0
c1t4d0 ONLINE 0 0 0
spares
c1t5d0 AVAIL
errors: No known data errors
So what do ZFS cache devices do ? Rather than go into a lengthy explanation of the L2ARC, I would rather refer you to Fishworks developer
Brendan Gregg's excellent
treatment of the subject.
Unlike the intent log (ZIL), L2ARC cache devices can be added and removed dynamically.
# zpool remove datapool c1t3d0
# zpool remove datapool c1t4d0
# zpool status datapool
pool: datapool
state: ONLINE
scrub: none requested
config:
NAME STATE READ WRITE CKSUM
datapool ONLINE 0 0 0
mirror ONLINE 0 0 0
c1t1d0 ONLINE 0 0 0
c1t2d0 ONLINE 0 0 0
spares
c1t5d0 AVAIL
errors: No known data errors
# zpool add datapool cache c1t3d0
# zpool status datapool
pool: datapool
state: ONLINE
scrub: none requested
config:
NAME STATE READ WRITE CKSUM
datapool ONLINE 0 0 0
mirror ONLINE 0 0 0
c1t1d0 ONLINE 0 0 0
c1t2d0 ONLINE 0 0 0
cache
c1t3d0 ONLINE 0 0 0
spares
c1t5d0 AVAIL
errors: No known data errors
New cache control properties: Two new ZFS properties are introduced with Solaris 10 10/09. These control what what is stored (nothing, data + metadata, or metadata only) in the ARC (memory) and L2ARC (external) caches. These new properties are
- primarycache - controls what is stored in the memory resident ARC cache
- secondarycache - controls what is stored in the L2ARC
and they can take the values
- none - the caches are not used
- metadata - only file system metadata is cached
- all - both file system data and the metadata is stored in the associated cache
# zpool create -O primarycache=metadata -O secondarycache=all datapool c1t1d0 c1t2d0 cache c1t3d0
There are workloads such as databases that perform better or make more efficient use of memory if the system is not competing with the caches that the applications are maintaining themselves.
User and group quotas:ZFS has always had quotas and reservations but they were applied at the file system level. To achieve user or group quotas would require
creating additional file systems which might make administration more complex. Starting with Solaris 10 10/09 you can apply both user and group quotas to a file system
much like you would with UFS. The ZFS file system must be at version 15 or later and the zpool must be at version 4 or later.
Let's create a file system and see if we are at the proper versions to set quotas.
# zfs create rpool/newdata
# chown bobn:local /rpool/newdata
# zpool get version rpool
NAME PROPERTY VALUE SOURCE
rpool version 18 default
# zpool upgrade -v
This system is currently running ZFS pool version 18.
The following versions are supported:
VER DESCRIPTION
--- --------------------------------------------------------
1 Initial ZFS version
2 Ditto blocks (replicated metadata)
3 Hot spares and double parity RAID-Z
4 zpool history
5 Compression using the gzip algorithm
6 bootfs pool property
7 Separate intent log devices
8 Delegated administration
9 refquota and refreservation properties
10 Cache devices
11 Improved scrub performance
12 Snapshot properties
13 snapused property
14 passthrough-x aclinherit
15 user/group space accounting
16 stmf property support
17 Triple-parity RAID-Z
18 snapshot user holds
For more information on a particular version, including supported releases, see:
http://www.opensolaris.org/os/community/zfs/version/N
Where 'N' is the version number.
# zfs get version rpool/newdata
NAME PROPERTY VALUE SOURCE
rpool/newdata version 4
# zfs upgrade -v
The following filesystem versions are supported:
VER DESCRIPTION
--- --------------------------------------------------------
1 Initial ZFS filesystem version
2 Enhanced directory entries
3 Case insensitive and File system unique identifier (FUID)
4 userquota, groupquota properties
For more information on a particular version, including supported releases, see:
http://www.opensolaris.org/os/community/zfs/version/zpl/N
Where 'N' is the version number.
Excellent. Now let's set a user and group quota and see what happens. We'll set a group quota of 1GB and a user quota at 2GB.
# zfs set groupquota@local=1g rpool/newdata
# zfs set userquota@bobn=2g rpool/newdata
# su - bobn
% mkfile 500M /rpool/newdata/file1
% mkfile 500M /rpool/newdata/file2
% mkfile 500M /rpool/newdata/file3
file3: initialized 40370176 of 524288000 bytes: Disc quota exceeded
As expected, we have exceeded our group quota. Let's change the group of the existing files and see if we can proceed to our user quota.
% rm /rpool/newdata/file3
% chgrp sales /rpool/newdata/file1 /rpool/newdata/file2
% mkfile 500m /rpool/newdata/file3
Could not open /rpool/newdata/disk3: Disc quota exceeded
Whoa! What's going on here ? Relax - ZFS does things asynchronously unless told otherwise. And we should have noticed this when the mkfile for file3 actually started. ZFS wasn't quite caught up with the current usage. A good sync should do the trick.
% sync
% mkfile 500M /rpool/newdata/file3
% mkfile 500M /rpool/newdata/file4
% mkfile 500M /rpool/newdata/file5
/rpool/newdata/disk5: initialized 140247040 of 524288000 bytes: Disc quota exceeded
Great. We now have user and group quotas. How can I find out what I have used against my quota ?
There are two new ZFS properties, userused and groupused that will show what the group or user is currently consuming.
% zfs get userquota@bobn,userused@bobn rpool/newdata
NAME PROPERTY VALUE SOURCE
rpool/newdata userquota@bobn 2G local
rpool/newdata userused@bobn 1.95G local
% zfs get groupquota@local,groupused@local rpool/newdata
NAME PROPERTY VALUE SOURCE
rpool/newdata groupquota@local 1G local
rpool/newdata groupused@local 1000M local
% zfs get groupquota@sales,groupused@sales rpool/newdata
NAME PROPERTY VALUE SOURCE
rpool/newdata groupquota@sales none local
rpool/newdata groupused@sales 1000M local
% zfs get groupquota@scooby,groupused@scooby rpool/newdata
NAME PROPERTY VALUE SOURCE
rpool/newdata groupquota@scooby - -
rpool/newdata groupused@scooby -
New space usage properties: Four new usage properties have been added to ZFS file systems.
- usedbychildren (usedchild) - this is the amount of space that is used by all of the children of the specified dataset
- usedbydataset (usedds) - this is the total amount of space that would be freed if this dataset and it's snapshots and reservations were destroyed
- usedbyrefreservation (usedrefreserv) - this is the amount of space that would be freed if the dataset's reservations were to be removed
- usertbysnapshots (usedsnap) - the total amount of space that would be freed if all of the snapshots of this dataset were deleted.
# zfs get all datapool | grep used
datapool used 5.39G -
datapool usedbysnapshots 19K -
datapool usedbydataset 26K -
datapool usedbychildren 5.39G -
datapool usedbyrefreservation 0 -
These new properties can also be viewed in a nice tabular form using
zfs list -o space.
# zfs list -r -o space datapool
NAME AVAIL USED USEDSNAP USEDDS USEDREFRESERV USEDCHILD
datapool 480M 5.39G 19K 26K 0 5.39G
datapool@now - 19K - - - -
datapool/fs1 480M 400M 0 400M 0 0
datapool/fs2 1.47G 1.00G 0 1.00G 0 0
datapool/fs3 480M 21K 0 21K 0 0
datapool/fs4 2.47G 0 0 0 0 0
datapool/vol1 1.47G 1G 0 16K 1024M 0
Miscellaneous
Support for 2TB boot disks: Solaris 10 10/09 supports a disk Volume Table of Contents (VTOC) of up to 2TB in size. The previous maximum VTOC size was 1TB. On x86 systems you must be running Solaris with a 64bit kernel and have at least 1GB of memory to use a VTOC larger that 1TB.
pcitool: A new command for Solaris that can assign interrupts to specific threads or display the current interrupt routing. This command is available for both SPARC and x86.
New iSCSI initiator SMF service: svc:/network/iscsi/initiator:default is a new Service Management Facility (SMF) service to control discovery and enumeration of iSCSI devices early in the boot process. Other boot services that may require iSCSI services can add dependencies to insure that the devices are available before being needed.
Device Drivers
The following device drivers are either new to Solaris or have had some new features or chipsets added.
- MPxIO support for the LSI 6180 Controller
- LSI MPT 2.0 SAS 2.0 controllers (mpt_sas)
- Broadcom NetXTreme II gigabit Ethernet (bcm5716c and bcm5716s) controllers
- Interrupt remapping for Intel VT-x enabled processors
- Support for SATA AHCI tape
- Sun StorageTek 6Gb/s SAS RAID controller and LSI MegaRAID 92xx (mt_sas)
- Intel 82598 and 82599 10Gb/s PCIe Ethernet controller
Open Source Software Updates
The following open source packages have been updated for Solaris 10 10/09.
- NTP 4.2.5
- PostgreSQL versions 8.1.17, 8.2.13 and 8.3.7
- Samba 3.0.35
For more information
A complete list of new features and changes can be found in the
Solaris 10 10/09 Release Notes and the
What's New in Solaris 10 10/09 documentation at
docs.sun.com.
Technocrati Tags:
Sun
Solaris
patching
zfs

Tuesday October 06, 2009
VirtualBox 3.0.8 is now available
VirtualBox 3.0.8 has been released for all platforms. 3.0.8 is a maintenance release and contains quite a few performance and stability improvements. For a list of the changes in this release, please take a look at the
VirtualBox Changelog.
It's early yet but my testing of multi-cpu Solaris guests is quite encouraging. I've been stressing several of them quite hard and they are working as expected. I am still using IDE for my virtual platform disk controllers. I'll fire up a few tomorrow and see how SATA does. My Solaris desktop is now smokin' fast.
Technocrati Tags:
Sun
Virtualization
VirtualBox

Wednesday September 30, 2009
Oracle reduces licensing multiplier for UltraSPARC T2+ systems
Taking a look at the
Oracle Processor Core Factor Table, I noticed that on September 24 our friends at Oracle have reduced the per core licensing factor on UltraSPARC T2+ systems. This includes the Sun SPARC Enterprise
T5140,
T5240,
T5440 and
T6340 (blade). If you will permit the pun, this is very cool news indeed.
Technocrati Tags:
Sun
Oracle
SPARC
CMT

Monday September 28, 2009
VirtualBox 3.0.6 has been released
I'm a bit late getting this one out, but
VirtualBox 3.0.6 has been released for all platforms. 3.0.6 is a maintenance release and contains quite a few performance and stability improvements. For a list of the changes in this release, please take a look at the
VirtualBox Changelog.
The biggest improvement I've noticed is in the shared folders performance for Solaris guests. This is now quite usable and greatly simplifies my internal VBox configuration. I no longer need to maintain an internal NFS server VM for sharing my data across Solaris guests. There are also a number of fixes for networking, especially host only networking.
Unfortunately Solaris SMP guests are still a bit troublesome. I have found the best combination being OpenSolaris 2009.06 and using IDE disk controllers in the virtual platform. This combination has proved to be stable under quite a few intense tests. Up through 4 virtual CPUs.
Technocrati Tags:
Sun
Virtualization
VirtualBox
George Carlin, John Ritter and Twitter ?
What do George Carlin, John Ritter and Twitter have in common ?
OK, not all that much. But I am a big fan of analogies and identity linkages, especially ones that relate to popular culture. Perhaps that is because I'm so un-pop as my daughter frequently reminds me. She does have a point though - a random person would recognize less than 1% of what's on my iPod and probable less than half of my DVD collection. That's what makes these types of connections so fascinating. I have to work at them.
For background, and a bit more un-pop admission, social media tools like Twitter and Facebook leave me scratching my head from time to time. Yes, I'm old school and would much rather grab a brew and some chicken wings with my buddies at the corner beverage consumption establishment than type at a web browser or squint at my iPhone. At the same time I've managed to find an great bunch of folks on Twitter (#stlcards) following the St. Louis Cardinals quest for their 11th World Series title (that's baseball for those of you in parts of the world that have other national sporting games). In an attempt to understand the full Twitter experience (#musicmonday, #followfriday, #battl), I've found that you can collect followers at an alarming rate. Without really trying.
The Six Words you can't say in a Tweet
George Carlin taught us the seven words you can't say on television and I think there should be a similar list for Twitter. Here is my list of the six words you should never use in a tweet.
- Insurance - This one comes up frequently in a close baseball game. Someone would tweet "We could sure use a couple of insurance runs here" and wham, you get followed by a dozen twitterbots all wanting to save you on home/car/health/whatever insurance. OK, the Geico gecko is sort of charming, but these insurance bots are annoying.
- iPhone - No thanks, I already have an iPhone. I don't need iPhone News either. I don't need to purchase a slightly used unlocked iPhone. And I don't want to sell my iPhone. I should have said Blackberry from a different account.
- Beatles - Didn't quite expect this one. I once replied that I grew up in the anti-Beatles era and I got swamped by a bunch of followers offering me everything from Beatles bootlegs to a great deal on Rock Band Beatles. And those are the ones I can repeat in public. No thanks.
- Money - This one should have been obvious. Ask how much money the Red Sox are contributing to the John Smoltz contract for the remainder of year ? All of a sudden I feel like I'm the only carbohydrate in a South Beach Diet celebration party.
- Tooth, teeth, dentist - Teeth whitening ? They chase you all over the web. And apparently they will follow you throughout the twitterverse. I thought all of our virtual selves had perfectly straight shiny white teeth. I guess not.
- Any word that can be used in an adult context - This is getting harder and harder as more of the vocabulary gets hijacked. I once tweeted about a great photo of a North American Cougar and I'll let your imagination guess what happened next. Apparently I need to keep up with the adult oriented jargon a bit more closely.
8 Simple Rules for Getting Blocked on Twitter
As for the John Ritter connection, the late actor last entertained us with the situational comedy
8 Simple Rules for Dating My Teenage Daughter and that seemed oddly appropriate as I scanned my follower list. So here are my 8 Simple Rules for Getting Blocked on Twitter.
- You post from ABI. To borrow from one of the most memorable movie quotes (John Hurt as John Merrick in The Elephant Man), I am not a web browser, I am a human being. And as such I expect all of my followers to be in kind.
- The bio in your Twitter profile includes the phrase "making money off the internet", "social media", or "network marketing". You may be here to make money, but that's not why I'm here. So shoo and leave me alone.
- Your profile picture causes me to blush. Or maybe more specifically, if I quickly reach for the back or close button on my browser when I first see your profile picture, you will be blocked. I'm sure there are many out there that would appreciate your attention, so please go find one of them and leave me alone.
- The website listed in your Twitter profile is from a URL redirector such as tinyurl.com. This is the most basic phishing scam, and today I think I'd rather have the chicken. Bzzzz - you are the weakest follower, goodbye.
- Shelley Ryan. If you have been unfortunate enough to have been noticed by Shelley Ryan, you will understand why this gets a rule of its own. It actually passes all of the earlier tests for being blocked, but since this happens so often, it gets a special rule all by itself. Even the most dreadful of contagious diseases often have periods of remission or hibernation. Not so with Shelley Ryan. To be fair, I don't think there is a Shelley Ryan, but if you see your follower count increase suddenly and then feel an itching somewhere - it's probably a Shelley Ryan infestation. The cure is to hit the block button twice and check back in the morning. Repeat as needed.
- You tweet about teeth whitening. As has already been established, comments about teeth and dentistry invite all sorts of pesky marketing bots onto your followers list. If that happens, reach for the block button.
- You are following more people than I have CDs in my music library. I know there are all sorts of reasons that people use Twitter. If you are following 1,000 people then you aren't following anybody - understand ? Said differently, I'm not going to keep up with the cacophony of 1,000 people on a regular basis. If you are one of my followers then I would expect that I would want to follow you. Those dots should be relatively easy to connect. There are other tools where I can talk at you. I'm trying to use Twitter to talk with you.
- Would I want to follow you ? The final part of the social contract. I take a look at your tweets and ask if I would want to be associated with that dialog. With my friends following the St. Louis Cardinals, the answer is absolutely. And also with a slightly larger group of connected folks found through #followfriday. But it is still a rather small and relatively intimate community. And you still have to pass the spouse and daughter test. If my spouse or daughter were to pick up my iPhone and launch my Twitter application (Twitterific at present), would I be embarrassed or feel the need to explain. This is a good test for any sort of Internet activity, and certainly one that my daughter has to follow. Twitter is no exception.
Now, I've shared some of my Twitter blocking rules. Please feel free to share some of yours.

Friday September 11, 2009
Facts about Albert Pujols
As the 2009 Major League Baseball season enters its final month, St. Louis Cardinals first baseman Albert Pujols looks to win his second National League Most Valuable Player (MVP) award. St. Louis Cardinals Twitter Nation (#stlcards) member Ray Kern (@Southside_Ray) thought it would be a good idea to share some of what we have learned about the Cardinal slugger. So in the spirit of
Facts about Chuck Norris, here are some .....
 |
Facts about Albert Pujols
- Albert Pujols doesn't hit baseballs. Baseballs see Albert and fly out of the park on their own.
- An Albert Pujols home run can cause the tides to change.
- Albert Pujols bats third because if he hit in any other spot it would cause the world to collapse.
- If Albert Pujols were to play for any other team, that team would instantaneously transform into the St. Louis Cardinals.
- Albert Pujols could play every position. He just thinks other players deserve a chance too.
- While playing a home game for the Springfield Cardinals (AA farm team of the St. Louis Cardinals), Albert Pujols once hit a ball so far it was credited as a home run in both Springfield and St. Louis.
- An Albert Pujols home run equals two home homes by any other player.
- Anybody who sees Albert Pujols hit a home suddenly becomes a St. Louis Cardinals fan (Cubs fans excluded, naturally)
- The Food and Drug Administration (FDA) has approved pitching to Albert Pujols as a homeopathic cure for constipation.
- When the player in front of Albert Pujols hits a home run it is because the pitcher is watching Albert taking his practice swings.
- When Albert Pujols is in your town the local air traffic control won't allow airplanes within 25 miles of the stadium.
- The reason former Cardinal pitchers give up home runs to Albert Pujols is because they're too distracted by his glowing red eyes.
- Tony LaRussa refuses to let Albert Pujols pitch because it would make teammate Chris Carpenter look bad.
- When Albert Pujols hits a home run the person catching the ball has great luck for a year. And a broken hand for the next six weeks ... So beware!
- When other Cardinal players try to touch Albert Pujols' bat after he hits a home run, it burns their hands.
- Albert Pujols can only hit 2 home runs in a game. Unless, of course, he wants to hit more.
- When dreaming, Albert Pujols hits all the time... Oh wait thats not a dream!
- Tony LaRussa asks Albert Pujols for managing advice.
- Albert Pujols once traveled back in time. You may know him as Babe Ruth.
- Albert Pujols went down to the crossroads to make a deal with the Devil. Once the Devil saw Albert hit, he just shook his head and gave Albert his soul instead.
- Albert Pujols was the first right handed batter to hit a home run into McCovey Cove (San Francisco). From San Diego.
- If Ted Williams hit in front of Albert Pujols in 1947, Williams would have lost the triple crown. But he would have hit .531.
- Tweets about Albert Pujols are the number one reason that Twitter goes over capacity.
- They will eventually name the Most Valuable Player (MVP) award the Albert Pujols Award.
- The reason that Adam Wainwright and Chris Carpenter are Cy Young candidates in 2009 is that neither of them have to pitch to Albert Pujols.
- Interstate 70 will be renamed The Albert Pujols Highway. Interstate 70 was also given to Albert has part of his most recent contract negotiation.
- Swine flu once got a case of Albert Pujols.
- The games the St. Louis Cardinals lose is because Albert Pujols wants the season to be more interesting.
- Albert Pujols could hit a home run in every game. But he doesn't want to appear too good.
- Albert Pujols doesn't inject himself with human growth hormones (HGH). He injects himself with hot lava.
- Albert Pujols was the only baseball player ever drafted at birth.
|
I'm sure this list will grow, as will the legend of Albert Pujols. If you have any facts about Albert, please send them to me and I will update this list.
A very special thanks to Ray Kern for getting this list started and contributing most of the content. And thanks to Cardinal Nation on Twitter (#stlcards). If you want to follow some of the best fans in sports, check out #stlcards on Twitter.

Wednesday September 09, 2009
VirtualBox 3.0.6 Beta Release 1 is now available for testing
The first beta release of VirtualBox 3.0.6 is now available. You can download the binaries at
http://download.virtualbox.org/virtualbox/3.0.6_BETA1/
Version 3.0.6 is a maintenance update and contains the following fixes
- VMM: fixed IO-APIC overhead for 32 bits Windows NT, 2000, XP and 2003
guests (AMD-V only; bug #4392)
- VMM: fixed a Guru meditation under certain circumstances when enabling
a disabled device (bug #4510)
- VMM: fixed a Guru meditation when booting certain Arch Linux guests
(software virtualization only; bug #2149)
- VMM: fixed hangs with 64 bits Solaris & OpenSolaris guests (bug #2258)
- VMM: fixed decreasing rdtsc values (AMD-V & VT-x only; bug #2869)
- VMM: small Solaris/OpenSolaris performance improvements (VT-x only)
- VMM: cpuid change to correct reported virtual CPU id in Linux
- VMM: NetBSD 5.0.1 CD hangs during boot (VT-x only; bug #3947)
- Solaris hosts: fixed a potential host system deadlock when CPUs were
onlined or offlined
- Python WS: fixed issue with certain enumerations constants having wrong
value in Python webservices bindings
- Python API: several threading and platform issues fixed
- Python shell: added exportVM command
- Python shell: improvments and bugfixes
- Python shell: corrected detection of home directory in remote case
- OVF: fixed XML comment handling that could lead to parser errors
- Main: fixed a rare parsing problem with port numbers of USB device
filters in machine settings XML
- Main: restrict guest RAM size to 1.5 GB (32 bits Windows hosts only)
- GUI: fixed rare crash when removing the last disk from the media manager
(bug #4795)
- Linux hosts: don't crash on Linux PAE kernel < 2.6.11 (in particular
RHEL/CentOS 4); disable VT-x on Linux kernels < 2.6.13 (bug #1842)
- Linux/Solaris hosts: correctly detect keyboards with less keys than
usual (bug #4799)
- Serial: fixed host mode (Solaris, Linux and Mac OS X hosts; bug #4672)
- VRDP: Remote USB Protocol version 3
- SATA: fixed hangs and BSODs introduced with 3.0.4 (#4695, #4739, #4710)
- SATA: fixed a bug which prevented Windows 7 from detecting more than one
hard disk
- iSCSI: fix logging out when the target has dropped the connection, fix
negotiation of simparameters, fix command resend when the connection was
dropped, fix processing SCSI status for targets which do not use phase
collapse
- BIOS: fixed a bug preventing to start the OS/2 boot manager (2.1.0
regression, bug #3911)
- PulseAudio: don't hang during VM termination if the connection to the
server was unexpectedly terminated (bug #3100)
- Mouse: fixed weird mouse behaviour with SMP (Solaris) guests
- HostOnly Network: fixed failure in CreateHostOnlyNetworkInterface() on
Linux (no GUID)
- HostOnly Network: fixed wrong DHCP server startup while hostonly interface
bringup on Linux
- HostOnly Network: fixed incorrect factory and default MAC address on
Solaris
- DHCP: fixed a bug in the DHCP server where it allocated one IP address less
than the configured range
- E1000: fixed receiving of multicast packets
- E1000: fixed up/down link notification after resuming a VM
- NAT: fixed ethernet address corruptions (bug #4839)
- NAT: fixed hangs, dropped packets and retransmission problems (bug #4343)
- Bridged Network: fixed packet queue issue which might cause
DRIVER_POWER_STATE_FAILURE BSOD for windows hosts (bug #4821)
- Windows Additions: fixed a bug in VBoxGINA which prevented selecting the
right domain when logging in the first time
- Windows host installer: should now also work on unicode systems (like
Korean, bug #3707)
- Shared clipboard: do not send zero-terminated text to X11 guests and hosts
(bug #4712)
- Shared clipboard: use a less CPU intensive way of checking for new data on
X11 guests and hosts (bug #4092)
- Mac OS X hosts: prevent password dialogs in 32Bit Snow Leopard
- Solaris hosts: worked around an issue that caused the host to hang
(bug #4486)
- Guest Additions: do not hide the host mouse cursor when restoring a saved
state (bug #4700)
- Windows guests: fixed issues with the display of the mouse cursor image
(bugs #2603, #2660 and #4817)
- SUSE 11 guests: fixed Guest Additions installation (bug #4506)
- Guest Additions: support Fedora 12 Alpha guests (bugs #4731, #4733 and
#4734)
Please do not use this VirtualBox Beta release on production machines.
A VirtualBox Beta release should be considered a bleeding-edge release
meant for early evaluation and testing purposes.
Please use our 'VirtualBox Beta Feedback' forum at
http://forums.virtualbox.org/viewforum.php?f=15
to report any problems with the Beta.
Technocrati Tags:
Sun
Virtualization
VirtualBox

Monday September 07, 2009
Creating an iPhone Custom Ringtone
As a long time Palm user, the transition to the iPhone had more than it's share of difficulties. Thanks to some software updates (cut and paste) and
VirtualBox, assimilation is complete and I have become a big fan of the little device. With that as a background, let's explore creating custom ringtones from items in your music library. And contrary to what iTunes tells you, it is possible to create custom ringtones from any DRM-free content in your music library - not just the items you purchased from the iTunes store.
1. Choosing the proper ringtone
Everybody in your contact list deserves their own distinctive ringtone - or at least the ones that actually call you. One word of warning though: make sure you choose an appropriate audio source and consider what happens if they accidently dial your phone while standing next to you.
True story: My first custom ringtone was for my spouse of 26 (and counting) years. We don't really have an "our song" so I opted for something instantly recognizable. In 5 notes or less. Deep Purple's Smoke on the Water is too obvious and pedestrian. What's the next best riff ? Think Ronnie Montrose.
As I am creating the ringtone, a buddy at work notices what I am doing and taps me on the shoulder. "Dude, are you like wanting to make her mad ? Are you nuts - do you only want to live with half of your stuff ?"
I guess my quizzical expression indicated that I needed further explanation.
"Frankenstein. Dude, you chose Frankenstein. ..... Frankenstein ???? Get it ?"
"Oh. OH!!!! I get it"
While Ronnie Montrose's opening riff from Edgar Winter's Frankenstein is one of the most recognizable in the rock catalog, it is clearly an inappropriate ringtone for a loved one. My bride has a great sense of humor, but I doubt that it would extend to this.
Please learn from my near fatal mistake - choose a good ringtone. In my example I will use Brainstorm from Hawkwind's third album, Doremi Fasol Latido. Another great opening riff. And no, I will not use this for my spouse, daughter, boss or any other person real or fictional.
2. Edit the source for your ringtone
A ringtone needs to be a short AAC encoded audio file. It should be at least 10 seconds in length and no longer than 30 seconds. If you are a computer wizard this is not a difficult task. Then again, if you are you wouldn't be reading this howto. Fortunately for the rest of us, iTunes can do this quite nicely.
 |
After listening to Brainstorm, I have decided to use the first 25 seconds for my ringtone.
Right click the song you want to use for your ringtone - Brainstorm in this example.
Select Get Info and then click the Options tab.
Fill in the start and stop times in the boxes as I have on the left.
Note: The start and stop times do not have to be in whole seconds. Play with these numbers a bit of you want to cut out
something like a voice or drum beat. A few tenths of a second can make a big difference.
Click OK and you will have an edited sound source that we will use to make our new ringtone.
|
| Click image to enlarge |   |
Create an AAC encoded audio file
 |
Right click your edited song and look for "Create AAC Version". If it is there skip over the next few steps.
If you see Create MP3 Version instead, don't panic. A lot of the other howtos that I found skipped this - and it's not exactly obvious what to do next.
The Create setting is based on your CD Import settings. The iTunes default is AAC which is correct for creating ringtones. It is also less than desirable if you want to get the most out of your iPod listening. Or (gasp) if you want to listen to your audio files with anything other than (another gasp) iTunes.
If you see Create MP3 Version as on the left all you need to do is change your CD Import preferences. Click Edit -> Preferences and while on the General tab click Import Settings.
|
| Click image to enlarge |   |
 |
Take note of your current settings. You will want to change them back when you are done.
Select AAC Encoder in the Import Using: drop box.
Since the internal speaker in the iPhone isn't exactly high fidelity, the encoding rate isn't important. Click OK and we are ready to make the audio file that will eventually become our ringtone.
|
| Click image to enlarge |   |
Create an AAC encoded audio file - this time we mean it
 |
Now, right click your edited audio souce and select Create AAC Version. You should see iTunes start the encoder and in a few seconds you will have another copy of your song. The length of the ringtone will be shown in the Time column.
Important: Before you forget, and you will - trust me, go back to the original song and clear out the start and stop times. Unless you really like listening to your ringtone in your iPod.
Select the original song, right click for the song menu, select Get Info, click the Options tab and uncheck Start Time and Stop Time.
|
| Click image to enlarge |   |
What's in a name - quite a lot actually
 |
The next step is to copy the new audio file to your Desktop where we will rename it. Click and drag the copy of the song you just created to your desktop. This should create a new icon, which is really a file in your Desktop directory. The filetype is .m4a which associates it with an iTunes song (audio file). What we need to do is rename it to something with a filetype of .m4r.
Before you forget, delete the audio file you created from your iTunes library. It is of no further use.
Now open up a command window. Click Start -> All Programs -> Accessories -> Command Prompt or Start -> Run Program and enter cmd. Either way works.
In the command shell, change your directory down one level to Desktop and rename the audio file from a .m4a to .m4r
The icon on your desktop should immediately change from an audio to ring.
|
| Click image to enlarge |   |
If it is not clear from the above screenshot, the command shell dialog went something like this. My commands are in
bold
Microsoft Windows XP [Version 5.1.2600]
(C) Copyright 1985-2001 Microsoft Corp.
C:\Documents and Settings\bob>cd Desktop
C:\Documents and Settings\bob\Desktop>dir
Volume in drive C has no label.
Volume Serial Number is 2CBE-1F9C
Directory of C:\Documents and Settings\bob\Desktop
09/06/2009 02:07 PM <DIR> .
09/06/2009 02:07 PM <DIR> ..
09/06/2009 02:02 PM 1,072,142 01 Brainstorm.m4a
1 File(s) 1,072,142 bytes
2 Dir(s) 10,997,751,040 free
C:\Documents and Settings\bob\Desktop>ren "01 Brainstorm.m4a" "Brainstorm.m4r"
C:\Documents and Settings\bob\Desktop>exit
Copy your new ringtone into iTunes
 |
Drag your newly renamed ringtone into iTunes. You should now see it in the Ringtones part of your library.
If you have set up your iTunes to copy all files into your library (which should be the default), you can delete the icon from your Desktop.
|
| Click image to enlarge |   |
This procedure should work with any non-DRM audio file in your iTunes music library. Now everyone in your contact list can have their own custom ringtone.

Tuesday June 30, 2009
VirtualBox 3.0 is now available
VirtualBox 3.0 has been released and is now available for download. You can get binaries for
Windows, OS X (Intel Mac), Linux and Solaris hosts at
http://www.virtualbox.org/wiki/Downloads
 |
Version 3.0 is a major update and contains the following new features
- SMP guest machines, up to 32 virtual CPUs: requires Intel VT-x or AMD-V
- Experimental support for Direct3D 8/9 in Windows guests: great for games and multimedia applications
- Support for OpenGL 2.0 for Windows, Linux and Solaris guests
There is also a long list of bugs fixed in the new release. Please see the Changelog for a complete list.
|
In my early testing of VirtualBox 3.0 I have been most impressed by the SMP performance as well as the Direct3D passthrough from the guest. There are now some games that I can play in a guest virtual machine that I could not previously. Thanks to the VirtualBox development team for another great release.
Technocrati Tags:
Sun
Virtualization
VirtualBox

Wednesday June 17, 2009
VirtualBox 3.0 Beta Release 1 is now available for testing
The first beta release of VirtualBox 3.0 is now available. You can download the binaries at
http://download.virtualbox.org/virtualbox/3.0.0_BETA1/
Version 3.0 will be a major update. The following major new features were
added:
- Guest SMP with up to 32 virtual CPUs (VT-x and AMD-V only)
- Windows guests: ability to use Direct3D 8/9 applications / games
(experimental)
- Support for OpenGL 2.0 for Windows, Linux and Solaris guests
In addition, the following items were fixed and/or added:
- Virtual mouse device: eliminated micro-movements of the virtual mouse
which were confusing some applications (bug #3782)
- Solaris hosts: allow suspend/resume on the host when a VM is running
(bug #3826)
- Solaris hosts: tighten the restriction for contiguous physical memory
under certain conditions
- VMM: fixed occassional guru meditation when loading a saved state
(VT-x only)
- VMM: eliminated IO-APIC overhead with 32 bits guests (VT-x only, some
Intel CPUs don’t support this feature (most do); bug #638)
- VMM: fixed 64 bits CentOS guest hangs during early boot (AMD-V only;
bug #3927)
- VMM: performance improvements for certain PAE guests (e.g. Linux 2.6.29+
kernels)
- GUI: added mini toolbar for fullscreen and seamless mode
(Thanks to Huihong Luo)
- GUI: redesigned settings dialogs
- GUI: allow to create/remove one host-only network adapters
- GUI: display estimated time for long running operations (e.g. OVF
import/export)
- GUI: Fixed rare hangs when open the OVF import/export wizards (bug #4157)
- VRDP: support Windows 7 RDP client
- Networking: fixed another problem with TX checksum offloading with Linux
kernels up to version 2.6.18
- VHD: properly write empty sectors when cloning of VHD images (bug #4080)
- VHD: fixed crash when discarding snapshots of a VHD image
- VBoxManage: fixed incorrect partition table processing when creating VMDK
files giving raw partition access (bug #3510)
- OVF: several OVF 1.0 compatibility fixes
- Shared Folders: sometimes a file was created using the wrong permissions
(2.2.0 regression; bug #3785)
- Shared Folders: allow to change file attributes from Linux guests and use
the correct file mode when creating files
- Shared Folders: fixed incorrect file timestamps, when using Windows guest on
a Linux host (bug #3404)
- Linux guests: new daemon vboxadd-service to handle time syncronization and
guest property lookup
- Linux guests: implemented guest properties (OS info, logged in users, basic
network information)
- Windows host installer: VirtualBox Python API can now be installed
automatically (requires Python and Win32 Extensions installed)
- USB: Support for high-speed isochronous endpoints has been added. In
addition, read-ahead buffering is performed for input endpoints (currently
Linux hosts only). This should allow additional devices to work, notably
webcams
- NAT: allow to configure socket and internal parameters
- Registration dialog uses Sun Online accounts now
Please do not use this VirtualBox Beta release on production machines.
A VirtualBox Beta release should be considered a bleeding-edge release
meant for early evaluation and testing purposes.
Please use our 'VirtualBox Beta Feedback' forum at
http://forums.virtualbox.org/viewforum.php?f=15
to report any problems with the Beta.
Technocrati Tags:
Sun
Virtualization
VirtualBox

Thursday May 21, 2009
Getting Rid of Pesky Live Upgrade Boot Environments
As we
discussed earlier, Live Upgrade can solve most of the problems associated with
patching and upgrading your Solaris system. I'm not quite ready to post the next
installment in the LU series quite yet, but from some of the comments and email I
have received, there are two problems that I would like to help you work around.
Oh where oh where did that file system go ?
One thing you can do to stop Live Upgrade in its tracks is to remove a file system that it thinks another boot environment needs.
This does fall into the category of user error, but you are more likely to run into this in a ZFS world where file systems can
be created and destroyed with great ease. You will also run into a varient of this if you change your zone configurations
without recreating your boot environment, but I'll save that for a later day.
Here is our simple test case:
- Create a ZFS file system.
- Create a new boot environment.
- Delete the ZFS file system.
- Watch Live Upgrade fail.
# zfs create arrakis/temp
# lucreate -n test
Checking GRUB menu...
System has findroot enabled GRUB
Analyzing system configuration.
Comparing source boot environment <s10u7-baseline> file systems with the
file system(s) you specified for the new boot environment. Determining
which file systems should be in the new boot environment.
Updating boot environment description database on all BEs.
Updating system configuration files.
Creating configuration for boot environment <test>.
Source boot environment is <s10u7-baseline>.
Creating boot environment <test>.
Cloning file systems from boot environment <s10u7-baseline> to create boot environment <test>.
Creating snapshot for <rpool/ROOT/s10u7-baseline> on <rpool/ROOT/s10u7-baseline@test>.
Creating clone for <rpool/ROOT/s10u7-baseline@test> on <rpool/ROOT/test>.
Setting canmount=noauto for </> in zone <global> on <rpool/ROOT/test>.
Saving existing file </boot/grub/menu.lst> in top level dataset for BE <s10u6_baseline> as <mount-point>>//boot/grub/menu.lst.prev.
Saving existing file </boot/grub/menu.lst> in top level dataset for BE <test> as <mount-point>//boot/grub/menu.lst.prev.
Saving existing file </boot/grub/menu.lst> in top level dataset for BE <nv114> as <mount-point>//boot/grub/menu.lst.prev.
Saving existing file </boot/grub/menu.lst> in top level dataset for BE <route66> as <mount-point>//boot/grub/menu.lst.prev.
Saving existing file </boot/grub/menu.lst> in top level dataset for BE <nv95> as <mount-point>//boot/grub/menu.lst.prev.
File </boot/grub/menu.lst> propagation successful
Copied GRUB menu from PBE to ABE
No entry for BE <test> in GRUB menu
Population of boot environment <test> successful.
Creation of boot environment <test> successful.
# zfs destroy arrakis/test
# luupgrade -t -s /export/patches/10_x86_Recommended-2009-05-14 -O "-d" -n test
System has findroot enabled GRUB
No entry for BE <test> in GRUB menu
Validating the contents of the media </export/patches/10_x86_Recommended-2009-05-14>.
The media contains 143 software patches that can be added.
All 143 patches will be added because you did not specify any specific patches to add.
Mounting the BE <test>.
ERROR: Read-only file system: cannot create mount point </.alt.tmp.b-59c.mnt/arrakis/temp>
ERROR: failed to create mount point </.alt.tmp.b-59c.mnt/arrakis/temp> for file system </arrakis/temp>
ERROR: unmounting partially mounted boot environment file systems
ERROR: cannot mount boot environment by icf file </etc/lu/ICF.5>
ERROR: Unable to mount ABE <test>: cannot complete lumk_iconf
Adding patches to the BE <test>.
Validating patches...
Loading patches installed on the system...
Cannot check name /a/var/sadm/pkg.
Unmounting the BE <test>.
The patch add to the BE <test> failed (with result code <1>).
The proper Live Upgrade solution to this problem would be to destroy and recreate the boot environment, or just recreate the missing file system (I'm sure that most of you have figured the latter part out on your own). The rationale is that
the alternate boot environment no longer matches the storage configuration of its source. This was fine in a UFS world,
but perhaps a bit constraining when ZFS rules the landscape. What if you really wanted
the file system to be gone forever.
With a little more understanding of the internals of Live Upgrade, we can fix this rather easily.
Important note: We are about to modify undocumented Live Upgrade configuration files. The formats, names, and contents are subject to change without notice and any errors made while doing this can render your Live Upgrade configuration unusable.
The file system configurations for each boot environment are kept in a set of Internal Configuration Files (ICF) in /etc/lu named ICF.n, where n is the boot environment number. From the error message above we see that /etc/lu/ICF.5 is the one that is causing the problem. Let's take a look.
# cat /etc/lu/ICF.5
test:-:/dev/dsk/c5d0s1:swap:4225095
test:-:/dev/zvol/dsk/rpool/swap:swap:8435712
test:/:rpool/ROOT/test:zfs:0
test:/archives:/dev/dsk/c1t0d0s2:ufs:327645675
test:/arrakis:arrakis:zfs:0
test:/arrakis/misc:arrakis/misc:zfs:0
test:/arrakis/misc2:arrakis/misc2:zfs:0
test:/arrakis/stuff:arrakis/stuff:zfs:0
test:/arrakis/temp:arrakis/temp:zfs:0
test:/audio:arrakis/audio:zfs:0
test:/backups:arrakis/backups:zfs:0
test:/export:arrakis/export:zfs:0
test:/export/home:arrakis/home:zfs:0
test:/export/iso:arrakis/iso:zfs:0
test:/export/linux:arrakis/linux:zfs:0
test:/rpool:rpool:zfs:0
test:/rpool/ROOT:rpool/ROOT:zfs:0
test:/usr/local:arrakis/local:zfs:0
test:/vbox:arrakis/vbox:zfs:0
test:/vbox/fedora8:arrakis/vbox/fedora8:zfs:0
test:/video:arrakis/video:zfs:0
test:/workshop:arrakis/workshop:zfs:0
test:/xp:/dev/dsk/c2d0s7:ufs:70396830
test:/xvm:arrakis/xvm:zfs:0
test:/xvm/fedora8:arrakis/xvm/fedora8:zfs:0
test:/xvm/newfs:arrakis/xvm/newfs:zfs:0
test:/xvm/nv113:arrakis/xvm/nv113:zfs:0
test:/xvm/opensolaris:arrakis/xvm/opensolaris:zfs:0
test:/xvm/s10u5:arrakis/xvm/s10u5:zfs:0
test:/xvm/ub710:arrakis/xvm/ub710:zfs:0
The first step is to clean up the mess left by the failing luupgrade attempt. At the very least
we will need to unmount the alternate boot environment root. It is also very likely that we
will have to unmount a few temporary directories, such as /tmp and /var/run. Since this is ZFS
we will also have to remove the directories created when these file systems were mounted.
# df -k | tail -3
rpool/ROOT/test 49545216 6879597 7546183 48% /.alt.tmp.b-Fx.mnt
swap 4695136 0 4695136 0% /a/var/run
swap 4695136 0 4695136 0% /a/tmp
# luumount test
# umount /a/var/run
# umount /a/tmp
# rmdir /a/var/run /a/var /a/tmp
Next we need to remove the missing file system entry from the current copy of the ICF file. Use
whatever method you prefer (vi, perl, grep). Once we have corrected our local copy of the ICF file
we must propagate it to the alternate boot environment we are about to patch. You can skip the propagation if you are
going to delete the boot environment without doing any other maintenance activities. The normal
Live Upgrade operations will take care of propagating the ICF files to the other boot environments, so
we should not have to worry about them at this time.
# mv /etc/lu/ICF.5 /tmp/ICF.5
# grep -v arrakis/temp /tmp/ICF.5 > /etc/lu/ICF.5
# cp /etc/lu/ICF.5 `lumount test`/etc/lu/ICF.5
# luumount test
At this point we should be good to go. Let's try the luupgrade again.
# luupgrade -t -n test -O "-d" -s /export/patches/10_x86_Recommended-2009-05-14
System has findroot enabled GRUB
No entry for BE in GRUB menu
Validating the contents of the media .
The media contains 143 software patches that can be added.
All 143 patches will be added because you did not specify any specific patches to add.
Mounting the BE <test>.
Adding patches to the BE <test>.
Validating patches...
Loading patches installed on the system...
Done!
Loading patches requested to install.
Approved patches will be installed in this order:
118668-19 118669-19 119214-19 123591-10 123896-10 125556-03 139100-02
Checking installed patches...
Verifying sufficient filesystem capacity (dry run method)...
Installing patch packages...
Patch 118668-19 has been successfully installed.
Patch 118669-19 has been successfully installed.
Patch 119214-19 has been successfully installed.
Patch 123591-10 has been successfully installed.
Patch 123896-10 has been successfully installed.
Patch 125556-03 has been successfully installed.
Patch 139100-02 has been successfully installed.
Unmounting the BE <test>.
The patch add to the BE <test> completed.
Now that the alternate boot environment has been patched, we can activate it at our convenience.
I keep deleting and deleting and still can't get rid of those pesky boot environments
This is an interesting corner case where the Live Upgrade configuration files get so scrambled that
even simple tasks like deleting a boot environment are not possible. Every time I have gotten myself
into this situation I can trace it back to some ill advised shortcut that seemed harmless at the time,
but I won't rule out bugs and environment as possible causes.
Here is our simple test case: turn our boot environment from the previous example into a zombie - something that is neither alive nor dead but just takes up space and causes a mild annoyance.
Important note: Don't try this on a production system. This is for demonstration purposes only.
# dd if=/dev/random of=/etc/lu/ICF.5 bs=2048 count=2
0+2 records in
0+2 records out
# ludelete -f test
System has findroot enabled GRUB
No entry for BE <test> in GRUB menu
ERROR: The mount point </.alt.tmp.b-fxc.mnt> is not a valid ABE mount point (no /etc directory found).
ERROR: The mount point </.alt.tmp.b-fxc.mnt> provided by the <-m> option is not a valid ABE mount point.
Usage: lurootspec [-l error_log] [-o outfile] [-m mntpt]
ERROR: Cannot determine root specification for BE <test>.
ERROR: boot environment <test> is not mounted
Unable to delete boot environment.
Our first task is to make sure that any partially mounted boot environment is cleaned up. A df should
help us here.
# df -k | tail -5
arrakis/xvm/opensolaris 350945280 19 17448377 1% /xvm/opensolaris
arrakis/xvm/s10u5 350945280 19 17448377 1% /xvm/s10u5
arrakis/xvm/ub710 350945280 19 17448377 1% /xvm/ub710
swap 4549680 0 4549680 0% /.alt.tmp.b-fxc.mnt/var/run
swap 4549680 0 4549680 0% /.alt.tmp.b-fxc.mnt/tmp
# umount /.alt.tmp.b-fxc.mnt/tmp
# umount /.alt.tmp.b-fxc.mnt/var/run
Ordinarily you would use
lufslist(1M) to try to determine which file systems are in use by the boot environment you are trying to delete.
In this worst case scenario that is not possible. A bit of forensic investigation and a bit more courage will help us figure this out.
The first place we will look is /etc/lutab. This is the configuration file that lists all boot environments known to Live Upgrade. There is a man
page for this in section 4, so it is somewhat of a public interface but please take note of the warning
The lutab file must not be edited by hand. Any user modifi-
cation to this file will result in the incorrect operation
of the Live Upgrade feature.
This is very good advice and failing to follow it has led some some of my most spectacular Live Upgrade meltdowns. But in this case Live Upgrade is
already broken and it may be possible to undo the damage and restore proper operation. So let's see what we can find out.
# cat /etc/lutab
# DO NOT EDIT THIS FILE BY HAND. This file is not a public interface.
# The format and contents of this file are subject to change.
# Any user modification to this file may result in the incorrect
# operation of Live Upgrade.
3:s10u5_baseline:C:0
3:/:/dev/dsk/c2d0s0:1
3:boot-device:/dev/dsk/c2d0s0:2
1:s10u5_lu:C:0
1:/:/dev/dsk/c5d0s0:1
1:boot-device:/dev/dsk/c5d0s0:2
2:s10u6_ufs:C:0
2:/:/dev/dsk/c4d0s0:1
2:boot-device:/dev/dsk/c4d0s0:2
4:s10u6_baseline:C:0
4:/:rpool/ROOT/s10u6_baseline:1
4:boot-device:/dev/dsk/c4d0s3:2
10:route66:C:0
10:/:rpool/ROOT/route66:1
10:boot-device:/dev/dsk/c4d0s3:2
11:nv95:C:0
11:/:rpool/ROOT/nv95:1
11:boot-device:/dev/dsk/c4d0s3:2
6:s10u7-baseline:C:0
6:/:rpool/ROOT/s10u7-baseline:1
6:boot-device:/dev/dsk/c4d0s3:2
7:nv114:C:0
7:/:rpool/ROOT/nv114:1
7:boot-device:/dev/dsk/c4d0s3:2
5:test:C:0
5:/:rpool/ROOT/test:1
5:boot-device:/dev/dsk/c4d0s3:2
We can see that the boot environment named test is (still) BE #5 and has it's root file system at rpool/ROOT/test. This is the default dataset name and indicates that the boot environment has not been renamed. Consider the following example for a more complicated configuration.
# lucreate -n scooby
# lufslist scooby | grep ROOT
rpool/ROOT/scooby zfs 241152 / -
rpool/ROOT zfs 39284664832 /rpool/ROOT -
# lurename -e scooby -n doo
# lufslist doo | grep ROOT
rpool/ROOT/scooby zfs 241152 / -
rpool/ROOT zfs 39284664832 /rpool/ROOT -
The point is that we have to trust the contents of /etc/lutab but it does not hurt to do a bit of sanity checking before we start deleting ZFS datasets. To remove boot environment test from the view of Live Upgrade, delete the three lines in /etc/lutab starting with 5 (in this example). We should also remove it's Internal Configuration File (ICF) /etc/lu/ICF.5
# mv -f /etc/lutab /etc/lutab.old
# grep -v ^5: /etc/lutab.old > /etc/lutab
# rm -f /etc/lu/ICF.5
# lustatus
Boot Environment Is Active Active Can Copy
Name Complete Now On Reboot Delete Status
-------------------------- -------- ------ --------- ------ ----------
s10u5_baseline yes no no yes -
s10u5_lu yes no no yes -
s10u6_ufs yes no no yes -
s10u6_baseline yes no no yes -
route66 yes no no yes -
nv95 yes yes yes no -
s10u7-baseline yes no no yes -
nv114 yes no no yes -
If the boot environment being deleted is in UFS then we are done. Well, not exactly - but pretty close. We still need to propagate the updated configuration files to
the remaining boot environments. This will be done during the next live upgrade operation (lucreate, lumake, ludelete, luactivate) and I would recommend that you let Live
Upgrade handle this part. The exception to this will be if you boot directly into another boot environment without activating it first. This isn't a recommended practice
and has been the source of some of my most frustrating mistakes.
If the exorcised boot environment is in ZFS then we still have a little bit of work to do. We need to delete the old root datasets and any snapshots that they may have been cloned from. In our example the root dataset was rpool/ROOT/test. We need to look for any children as well as the originating snapshot, if present.
# zfs list -r rpool/ROOT/test
NAME USED AVAIL REFER MOUNTPOINT
rpool/ROOT/test 234K 6.47G 8.79G /.alt.test
rpool/ROOT/test/var 18K 6.47G 18K /.alt.test/var
# zfs get -r origin rpool/ROOT/test
NAME PROPERTY VALUE SOURCE
rpool/ROOT/test origin rpool/ROOT/nv95@test -
rpool/ROOT/test/var origin rpool/ROOT/nv95/var@test
# zfs destroy rpool/ROOT/test/var
# zfs destroy rpool/ROOT/nv95/var@test
# zfs destroy rpool/ROOT/test
# zfs destroy rpool/ROOT/nv95@test
Important note:luactivate will promote the newly activated root dataset so that snapshots used to create alternate boot environments should be easy to delete. If you are switching between boot environments without activating them first (which I have already warned you about doing), you may have to manually promote a different dataset so that the snapshots can be deleted.
To BE or not to BE - how about no BE ?
You may find yourself in a situation where you have things so scrambled up that you want to start all over again. We can use what we have just learned to unwind Live Upgrade and start from a clean configuration. Specifically we want to delete /etc/lutab, the ICF and related files, all of the temporary files in /etc/lu/tmp and a few files that hold environment variables for some of the lu scripts. And if using ZFS we will also have to delete any datasets and snapshots that are no longer needed.
# rm -f /etc/lutab
# rm -f /etc/lu/ICF.* /etc/lu/INODE.* /etc/lu/vtoc.*
# rm -f /etc/lu/.??*
# rm -f /etc/lu/tmp/*
# lustatus
ERROR: No boot environments are configured on this system
ERROR: cannot determine list of all boot environment names
# lucreate -c scooby -n doo
Checking GRUB menu...
Analyzing system configuration.
No name for current boot environment.
Current boot environment is named <scooby>.
Creating initial configuration for primary boot environment <scooby>.
The device </dev/dsk/c4d0s3> is not a root device for any boot environment; cannot get BE ID.
PBE configuration successful: PBE name <scooby> PBE Boot Device </dev/dsk/c4d0s3>.
Comparing source boot environment <scooby> file systems with the file
system(s) you specified for the new boot environment. Determining which
file systems should be in the new boot environment.
Updating boot environment description database on all BEs.
Updating system configuration files.
Creating configuration for boot environment <doo>.
Source boot environment is <scooby>.
Creating boot environment <doo>.
Cloning file systems from boot environment <scooby> to create boot environment <doo>.
Creating snapshot for <rpool/ROOT/scooby> on <rpool/ROOT/scooby@doo>.
Creating clone for <rpool/ROOT/scooby@doo> on <rpool/ROOT/doo>.
Setting canmount=noauto for </> in zone <global> on <rpool/ROOT/doo>.
Saving existing file </boot/grub/menu.lst> in top level dataset for BE <doo> as <mount-point>//boot/grub/menu.lst.prev.
File </boot/grub/menu.lst> propagation successful
Copied GRUB menu from PBE to ABE
No entry for BE <doo> in GRUB menu
Population of boot environment <doo> successful.
Creation of boot environment <doo> successful.
# luactivate doo
System has findroot enabled GRUB
Generating boot-sign, partition and slice information for PBE
File deletion successful
File deletion successful
File deletion successful
Activation of boot environment successful.
# lustatus
Boot Environment Is Active Active Can Copy
Name Complete Now On Reboot Delete Status
-------------------------- -------- ------ --------- ------ ----------
scooby yes yes no no -
doo yes no yes no -
Pretty cool, eh ?
There are still a few more interesting corner cases, but we will deal with those in the one of the next articles. In the mean time, please remember to
- Check Infodoc 206844 for Live Upgrade patch requirements
- Keep your patching and package utilities updated
- Use luactivate to switch between boot environments
Technocrati Tags:
Sun
Solaris
patching
liveupgrade

Tuesday May 19, 2009
This is why you do after run maintenance
Do you wonder why one racer's truck is always faster and handles better than yours ?
It is often the little things, like regular maintenance. Off road trucks take a tremendous amount of punishment, especially if you are prone to running into curbs or cartwheeling off a ramp. At the end of every session you should give your truck a thorough examination and replace parts like this bent hinge pin.
 |
 |
| Click image to enlarge | Click image to enlarge |   |
It may not seem like much but this hinge pin will cause the steering block to bind in the caster block which will will
impact the handling of the truck. This will be more pronounced coming out of a turn but it may even prevent your
truck from keeping a straight line. If this is a four wheel drive truck you may experience a lack of power
when turning. You will also be creating additional work for your steering servo which can lead to shorter
run times and premature failure of the servo itself. And this is completely unnecessary. A replacement
hinge pin is a $2 part and takes just a few seconds to replace it.
Before you invest in an expensive brushless power plant and high capacity energy source, do the little things.
Get your truck ready for the stresses of a more powerful motor.
- Reduce rolling friction everywhere (large bearings on the axle carries and steering blocks)
- Stronger lower suspension arms
- Aluminum caster blocks to prevent bending your hinge pins in the future
- Steel transmission and differential gears
- Heavy duty output drives
- Large front and rear bumpers to protect suspension parts and your new motor
- Heavy steel steering links, and if available adjustable steel camber turnbuckles
- Heavy duty aluminum shock towers (as the stock ones fail)
- Get a range of pinion and spur gears (and start at the low end of the recommended gearing range and move up if the motor, esc and battery stay cool)
Once you have done these upgrades, then get yourself a Mamba Max or Novak Havoc system. Once you have run a brushless system with lipo batteries you will never go back to brushed motors. I'm even converting my 1/18 scale trucks to brushless, as time and repairs permit.
And at the end of every race or afternoon of bashing
- Thoroughly inspect your truck for damage and replace all broken parts
- Clean dirt away from electronics (radio, speed control, servos)
- Make sure your suspension moves freely
- Replace any bent screws or hinge pins
- Tighten screws that have become loose - be careful with plastic parts as they can easily strip
- Oil your motor bearings, and if brushed clean with motor spray and check your brushes and commutator
This will keep your truck in top running form and fun for years to come.
Technocrati Tags:
Traxxas
Rustler
RC

Wednesday April 08, 2009
VirtualBox 2.2 has been released
VirtualBox 2.2 is now available. This is a major upgrade and includes the following new features
OVF (Open Virtualization Format) appliance import and export (see chapter 3.8, Importing and exporting virtual machines, User Manual page 55)
Host-only networking mode (see chapter 6.7, Host-only networking, User Manual page 88)
Hypervisor optimizations with significant performance gains for high context switching rates
Raised the memory limit for VMs on 64-bit hosts to 16GB
VT-x/AMD-V are enabled by default for newly created virtual machines
USB (OHCI & EHCI) is enabled by default for newly created virtual machines (Qt GUI only)
Experimental USB support for OpenSolaris hosts
Shared folders for Solaris and OpenSolaris guests
OpenGL 3D acceleration for Linux and Solaris guests (see chapter 4.8, Hardware 3D acceleration (OpenGL), User Manual page 70)
Added C API in addition to C++, Java, Python and Web Services
For a complete list of new features and bug fixes, see the Changelog at http://www.virtualbox.org/wiki/Changelog.
VirtualBox 2.2 can be downloaded from http://www.virtualbox.org/wiki/Downloads
Important: Remember to reinstall the guest additions for all of your existing VMs.

Tuesday April 07, 2009
Becca's Mini-T gets a new pair of shoes
 |
While repairing the trucks from the weekend bashing, I replaced the tires on my daughter's Mini-T. We put on a set of 4 Pro-Line Dirt Hawgs (old style) and it now looks as tough as the RC18MT - except for the pink and purple paint scheme. And with the new dual slipper clutch and big block engine, it can keep up with the Associated mini-monster truck on just about any terrain. The heavier tires slow it down just a bit, but the increased traction makes driving it much more fun. Until you forget to back off on the steering servo rate and flip it in a turn.
This was my first painted Lexan body and I think it turned out pretty good. My daughter chose the color scheme. The flames on the side were hand done by masking. I have some new bodies to paint as soon as the rains go away and the humidity drops a bit. The black Hummer body for the T-Maxx to match the real one that I drive should be awesome.
|
| Click image to enlarge |   |
What do you want for Easter ?
The other day my daughter asked me what I wanted for Easter. Other than being ecstatic that she started the conversation in the role of the giver, I had to admit that I had not even thought about it. Being the helping teenager, she suggested an iTunes gift card. This of course is her way of saying that she wanted an iTunes gift card, which I have mentally filed away for the time when my path crosses said item.
Putting together a mythical budget of $200US (no, that's not the Easter gift budget - just a conversation starter), what would be the best addition to the garage ?
Here is my short list, feel free to add anything I might be missing.
Brushless motor and ESC for the Rustler. This is an upgrade for 2 trucks as the Rustler VXL-5/Titan 12T combo will be reused in the Stampede to replace the stock setup.
Traxxas Slash 1/10 short course race truck (waterproof).
Associated RC18 Factory Team aluminum billet set (serious bling for my daughter's truck) plus a 17T mod motor. Oooof - too much power ?
Equivalent aluminum parts for her Mini-T
New LiPo capable charger
Nothing now, put it in the bank towards a Traxxas Summit. Father's Day is coming soon !
The new Kyosho DRT short course nitro truck is just a bit out of the budget, but looks like quite a bargain. I haven't read a review of the engine performance, but I have yet to see a bad product come out of Kyosho. The oversized fuel tank would be a big benefit for weekend bashing.
Which of these would be your choice ? Or do you have a better idea ?