"That which is overdesigned, too highly specific, anticipates outcome; the anticipation of outcome guarantees, if not failure, the absence of grace."
-- William Gibson, All Tomorrow's Parties
November 1, 2007

So I have to say that out of all the features hyped in Leopard, Time Machine seems to be worthy of it. It really does make backups trivial.

I had a bunch of tarballs in ~/Desktop which were basically transient. I didn't want them backed up, but backed up they got, eating a couple gigs of space pointlessly. My initial reaction was to just rm them from the backup dirs, but I was told (as root) I could not. I don't really like being told I can't do things when I'm root, but ok, maybe there's other magic required. Maybe it's not as flat-filesystem-y as one is led to believe.

A quick Googling later, and the answer was thankfully trivial. The Time Machine UI is ... totally weird enough ... that I've been avoiding it. But nice to see it's so easy to do something so obvious.

10:54 PM | Systems Administration

Eat that, you jerks.

Those people make me really, really angry.

11:01 PM | Linkwhore

So the "OpenSolaris Developer Preview" was released last night. I spent a few minutes with it, and it has generated a frankly ridiculous amount of controversy inside the community (to the point where my inbox has tripled in size). So what's the deal?

Well, it's actually a pretty decent first release. It has ZFS on root (awesome!), the Image Packaging System (which is way cool), and is almost as trivial to install as Ubuntu. People are whining about a bunch of nonsense (wah, the default shell, wah, no KDE in the first release, wah), but by far the biggest complaints center around Indiana taking the OpenSolaris name. This gets a big fat whatever from me.

I'm wondering if anyone complaining has actually read the FAQ.

Dennis Clarke has some screenshots over at Blastwave.

If you are thinking of giving it a try, you should probably read through the immigrants page. benr++

I installed it without issues in a Parallels VM. It panicked on boot a couple times, though I suspect that it more to do with Parallels than Solaris. I need to make an image of the compiler tools so I can get the NIC supported, but that is a pretty trivial thing. I suspect I will not bother and just build at workstation at the office and throw Indiana on there.

Overall I think this is a fairly exciting milestone for OpenSolaris. Their release schedule of every six months is encouraging, as it works very well for certain other high-quality projects. The barrier for adoption has fallen and now that code has been thrown over the wall, perhaps people can start contributing instead of ... not.

Well, once they get over accusing the Indiana guys of "stabbing the community in the back" and eating babies...

11:03 PM | Systems Administration

[bda@moneta]:[/usr/bin]$ uname -a
Darwin moneta.int.mirrorshades.net 9.0.0 Darwin Kernel Version 9.0.0: Tue Oct 9 21:35:55 PDT 2007; root:xnu-1228~1/RELEASE_I386 i386
[bda@moneta]:[/usr/bin]$ ./iopending
dtrace: failed to initialize dtrace: DTrace requires additional privileges
[bda@moneta]:[/usr/bin]$ sudo ./iopending 2
Tracing... Please wait.
2007 Nov 1 12:49:23, load: 0.34, disk_r: 0 KB, disk_w: 0 KB

value ------------- Distribution ------------- count
< 0 | 0
0 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 5618
1 | 0

2007 Nov 1 12:49:25, load: 0.31, disk_r: 8 KB, disk_w: 4 KB

value ------------- Distribution ------------- count
< 0 | 0
0 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 2810
1 | 16
2 | 0

2007 Nov 1 12:49:27, load: 0.31, disk_r: 0 KB, disk_w: 400 KB

value ------------- Distribution ------------- count
< 0 | 0
0 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 2873
1 | 0

^C

[bda@moneta]:[/usr/bin]$ sudo find . -type f -exec grep -H '^#!/usr/sbin/dtrace' {} \; | wc -l
26
[bda@moneta]:[/usr/bin]$ sudo find . -type f -exec grep -H '^#!/usr/sbin/dtrace' {} \; | awk -F: '{print $1}'
./bitesize.d
./cpuwalk.d
./creatbyproc.d
./dispqlen.d
./filebyproc.d
./hotspot.d
./httpdstat.d
./iofile.d
./iofileb.d
./kill.d
./loads.d
./newproc.d
./pathopens.d
./pidpersec.d
./priclass.d
./pridist.d
./runocc.d
./rwbypid.d
./rwbytype.d
./seeksize.d
./setuids.d
./sigdist.d
./syscallbypid.d
./syscallbyproc.d
./syscallbysysc.d
./weblatency.d

Rockstar.

The scripts living in /usr/bin is kinda weird. /usr/sbin is really a better place for them if they're going to live in the default $PATH.

MacTech has an introduction to DTrace which is really decent (except for the page autoreloading, ugh), and worth reading.

His investigation of ln and why why it wouldn't let him create hardlink directories (yeah, OS X has .. hardlink directories support now; required for Time Machine, and a really elegant solution to the problem, but still kinda weird) is pretty entertaining.

If you're me, anyway.

11:23 PM | Systems Administration
November 2, 2007
November 3, 2007

Pac-Txt

Pac-Man the way it should have been... if Infocom ruled the universe.

[via PerterB]

7:22 AM | Linkwhore

onlamp has an interview with the OpenBSD devs on what's new 4.2. Basically: Lots.

The highlights for me are doubled pf performance, IP load-balancing with CARP, and layer 7 hostated support (with HTTP/SSL hackery). Marc Espie's continuing improvements to the package management system are also no doubt going to continue making my life easier.

All in all, a very exciting release! Go buy your CD!

7:40 AM | Systems Administration

Yay! New Joss Whedon and Eliza Dushku show. Ok, sure, on Fox. But seven guaranteed eps. That's something.

The basic idea sounds very similar to the meat puppets in Gibson's Burning Chrome, and what Molly did to pay for her upgrades in the Sprawl books. Whoo, neural shunts and personality overlays.

Still, they could totally pull some The Prisoner shit with Dollhouse if they wanted. ;-)

<kitten`> I was tired of Joss Whedon shows featuring a female character with superhuman martial arts abilities taking on improbable, insumrountable tasks while not being aware of the subtle manipulations of an unknown and sinister nemesis.
<kitten`> Oh, wait.
<bda> bah. :)

I think it is safe to be excited about it, though. Here's hoping, anyway.

8:26 PM | Television
November 4, 2007

What the fuck.

Predator-Alien hybrid from AvP2

I can just see these guys sitting around a table going:

"Okay, man, last time we had the aliens fight the Predators, how are we gonna RAMP THIS UP? WE GOTTA TAKE IT TO THE NEXT LEVEL."

"Oh, yeah, totally."

"So what are we gonna do?"

"We could give the aliens guns."

"No, that's stupid. Let's make a chick Predator. With big boobs."

"Hey, cool. But that's not TOTALLY RAMPED UP. What else?"

"Hmm."

"Hmmmm."

"Alien chicks! With big boobs!"

"No, no. Even I think that's stupid and I'm totally stoned right now. What about a .. uh. Alien. Predator. Hyberthingy. Like they had that dog alien thing in the third one."

"Woah. It could have like... three secondary mouth thingies."

"NEXT LEVELED!"

(Ok, apparently the predalien -- ugh -- was in the last movie and also in the games. I don't remember it from AvP, and I didn't play the second one. I don't care. It's fucking stupid.)

12:56 PM | Linkwhore
November 10, 2007

Marissa is posting again.

(again)

Finally.

I think abandon has been the only constant bookmark I've had since first running across the site in '99. Back then she was posting somewhat regularly, and reading it was honestly one of the highlights of my day.

I reckon that makes me a blogstalker of some flavor or another.

Also really wish I'd archived her posts, as everytime she reboots the site, they're annoyingly missing. There was much goodness there. Hopefully this new story-snippet format will persist, because I simply don't have much in the Amy-Hempel-level arena to read.

(And yes, I equate them.)

12:43 AM | Linkwhore
November 11, 2007

Re-watched the Hollywood-pooped Hitchhiker's Guide last night. It was just as awful as I remembered. Certain bits were adequate, but overall the pacing was horrible, the jokes really don't work particularly well without a British accent, and ... well. Anyway. Whatever.

As a reviewer on imdb says:

As an adaptation from Douglas Adam's widely popular book, and seventies BBC radio script, this movie can be classified as poor. On the other hand, as a movie in its own right, this can be classified as awful, and somewhat damaging to your senses.

Except for Slartibartfast. Bill Nighy was wonderful.

1:14 PM | Movies
November 16, 2007

I have an OpenSolaris box in pilot at the moment, running build 74. It uses Lori Alt's patched miniroot so I can set up a rootpool and do a profile (network, via Jumpstart) install. It works really well.

Yesterday the box went into a reboot loop, and as there appears there are issues with b74, I figured I would finally get around to learning how to use BFU (which is a change-aware wrapper around cpio that writes to /; it's not something you can back out of). But before I did that, I would need to figure how to boot from a ZFS clone. If the BFU goes south, or if the new build bricks the box, I need a way to boot to back into the old system. It's the poor man's LiveUpgrade, I suppose, but it's still way cool and (I think) much easier.

So that's the goal here: Take a snapshot of the current system, clone the snapshot so it's writable, and then upgrade the clone. This way we can BFU the system and still have a fallback in the event that the BFU fails, or the new OS/Net build bricks our box.

Tim Foster had already written a blog post about how easy this was, so I wasn't expected to run into any problems.

First, grab the ON build tools and the BFU archives for the build you care about.


[root@octopus]:[~] cd /tmp
[root@octopus]:[/tmp]# wget http://dlc.sun.com/osol/on/downloads/b75/SUNWonbld.i386.tar.bz2
[root@octopus]:[/tmp]# wget http://dlc.sun.com/osol/on/downloads/b75/on-bfu-nightly-osol-nd.i386.tar.bz2

You probably want to do that in tmp (which is swap) so when you take your snapshots, big random files are not littering the filesystem forever.

Set up your build environment:

[root@octopus]:[/tmp]# bunzip2 on-bfu-nightly-osol-nd.i386.tar.bz2
[root@octopus]:[/tmp]# tar -xf on-bfu-nightly-osol-nd.i386.tar
[root@octopus]:[/tmp]# bunzip2 SUNWonbld.i386.tar.bz2
[root@octopus]:[/tmp]# tar -xf SUNWonbld.i386.tar 
[root@octopus]:[/tmp]# cd onbld/
[root@octopus]:[/tmp/onbld]# pkgadd -d . SUNWonbld 
[root@octopus]:[/tmp/onbld]# cd
[root@octopus]:[~]# export FASTFS="/opt/onbld/bin/i386/fastfs"
[root@octopus]:[~]# export GZIPBIN="/usr/bin/gzip"
[root@octopus]:[~]# export BFULD="/opt/onbld/bin/`uname -p`/bfuld"
[root@octopus]:[~]# export PATH="/opt/onbld/bin:/opt/onbld/bin/`uname -p`:$PATH"

Now we need to take a snapshot of our current rootfs, clone it is writable, and mount it. In my setup, the rootpool is a legacy mount, and anything under it is also going to inherit the legacy mount property.


[root@octopus]:[~]# zfs snapshot rootpool/b74@upgrade
[root@octopus]:[~]# zfs clone rootpool/b74@upgrade rootpool/b75
[root@octopus]:[~]# zfs set mountpoint=/rootpool/b75 rootpool/b75

Now it's time to do the actual upgrade. I ran into two very minor snags here. First, I don't have BIND installed, so I needed to pass -f to bfu. Secondly, I don't have D-BUS installed, and had to comment that check out of the bfu script. Once that's done, it goes off and does it's thing happily.

Once the BFU finished you'll be put into a safe environment with tools built to work regardless of how horribly the BFU may have messed up your system (not an issue here, as we aren't actually modifying our current rootfs). As soon as it's done, you'll need to resolve the conflicts it lists; thus far I have not had an issue with using Automated Conflict Resolution to merge those files.


[root@octopus]:[~]# bfu -f /tmp/archives-nightly-osol-nd/i386 /rootpool/b75
bfu# /opt/onbld/bin/acr /rootpool/b75

And that's it. Your clone has now been upgraded using BFU. Create a boot archive of the new BE and set it legacy again.


[root@octopus]:[~]# bootadm archive-update -R /rootpool/b75
[root@octopus]:[~]# zfs set mountpoint=legacy rootpool/b75

You have a couple options for managing your boot environments at this point. You can either modify /rootpool/boot/grub/menu.lst yourself, or use Tim Foster's zfs-bootadm.sh to do it for you. The script relies on a property to determine which zfs fs are bootable, so you'll need to set that.


[root@octopus]:[~]# ./zfs-bootadm.sh
Usage: zfs-bootadm.sh [command]

where command is one of:
create
Creates a new bootable dataset as a clone
of the existing one.
activate
Sets a bootable dataset as the next
dataset to be booted from.
destroy
Destroys a bootable dataset. This must not
be the active dataset.
list
Lists the known bootable datasets.

[root@octopus]:[~]# zfs set bootable:=true rootpool/b75
[root@octopus]:[~]# ./zfs-bootadm.sh list
b74 (current)
b75
test
[root@octopus]:[~]# ./zfs-bootadm.sh activate b75
Currently booted from bootable dataset rootpool/b74
On next reboot, bootable dataset rootpool/b75 will be activated.
[root@octopus]:[~]# reboot

The box reboots, and...


[bda@moneta]:[~]$ ssh root@octopus
Last login: Fri Nov 16 02:50:21 2007 from 10.10.1.20
Sun Microsystems Inc. SunOS 5.11 snv_75 October 2007
bfu'ed from /tmp/archives-nightly-osol-nd/i386 on 2007-11-16
Sun Microsystems Inc. SunOS 5.11 snv_74 October 2007
[root@octopus]:[~]# uname -a
SunOS octopus 5.11 snv_75 i86pc i386 i86pc

Pretty dang cool stuff!

My initial test here was to BFU from b74 to b76. After some fumbling about with where the menu.lst file was (I knew it was stored on the rootpool from reading Lori Alt's weblog and various presentations, but rootpool was a legacy mount, so stupid tired me was confused for a good ten minutes). The BFU and acr itself appeared to be fine, and when I finally got the BE to boot, it... panicked.

I was somewhat discouraged, but booted right back into b74 and BFU'd happily to b75.

Which was the entire point of the exercise: To upgrade the system and have a safe way to fall back to a previous build if the system becomes unusable. As I said, it's the poor man's LiveUpgrade, but LU doesn't currently support zfsboot. And, really, this just seems much quicker and easier to deal with.

There are plenty of little things to figure out still (like which filesystems are required to be on the BE for the BFU to work, so I don't end up with data being snapshotted forever), how to deal with package upgrades, and the the like. But overall... very, very cool.

Another thing to note is that everything above was gleaned not just from documentation but from the blogs of the developers.

11:19 AM | Systems Administration
November 22, 2007