Installing sqlite3 ruby gem on FreeBSD

If you try to install (or update) the sqlite3 ruby gem on FreeBSD, you might get the following error:

sudo gem update sqlite3
Updating installed gems
Updating sqlite3
Fetching: sqlite3-1.3.5.gem (100%)
Building native extensions. This could take a while...
ERROR: Error installing sqlite3:
ERROR: Failed to build gem native extension.

/usr/local/bin/ruby18 extconf.rb
checking for sqlite3.h... no
sqlite3.h is missing. Try 'port install sqlite3 +universal'
or 'yum install sqlite-devel' and check your shared library search path (the
location where your sqlite3 shared library is located).
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of
necessary libraries and/or headers. Check the mkmf.log file for more
details. You may need configuration options.

Provided configuration options:
--with-opt-dir
--without-opt-dir
--with-opt-include
--without-opt-include=${opt-dir}/include
--with-opt-lib
--without-opt-lib=${opt-dir}/lib
--with-make-prog
--without-make-prog
--srcdir=.
--curdir
--ruby=/usr/local/bin/ruby18
--with-sqlite3-dir
--without-sqlite3-dir
--with-sqlite3-include
--without-sqlite3-include=${sqlite3-dir}/include
--with-sqlite3-lib
--without-sqlite3-lib=${sqlite3-dir}/lib
--enable-local
--disable-local

Gem files will remain installed in /usr/local/lib/ruby/gems/1.8/gems/sqlite3-1.3.5 for inspection.
Results logged to /usr/local/lib/ruby/gems/1.8/gems/sqlite3-1.3.5/ext/sqlite3/gem_make.out
Nothing to update

The gem doesn’t include the correct locations to check for the sqlite3 headers, so we’ll have to tell it where to look ourself:

sudo CONFIGURE_ARGS="with-sqlite3-include=/usr/local/include" gem install sqlite3

Job done.

Netgear DGN1000 review

After an intermittent failure of my previous ADSL router, I thought long and hard about whether I could justify spending many hundreds of pounds on a nice Cisco 1800, I decided to go cheap and buy a bottom-of-the-range Netgear. After all, I’d had Netgear routers in the past, with few problems. So I bought the Netgear DGN1000.
The best thing about this router is that it has a power button. This is useful because you’ll be using it a lot.
The biggest problem with this router is that it randomly stops routing data between the WAN and the wireless network. Or sometimes it does route data, but at around 1Kb/s. Sometimes this failure to route data happens after several hours, sometimes it can happen within minutes. The only resolution is to reboot the router.
So apart from the constant failures, it’s fine. Except the automatic firmware update doesn’t work (it fails to recognise that there’s a newer firmware available), and WPS doesn’t appear to work at all.
This is the first piece of IT hardware I’ve ever felt like driving over in my car.
On this occasion I’ll return it as faulty instead.

My Ideal Operating System

What would my ideal Operating System look like?

  • Really small minimal installation. You know, like OpenBSD.
  • Thorough and comprehensive help pages. You know, like OpenBSD.
  • The ability to simply administer the OS remotely. You now, like SSH on OpenBSD.
  • Excellent, easy to configure firewall. You know, like pf on OpenBSD.
  • Easy to configure network redundancy. You know, like CARP on OpenBSD.
  • All communications between servers to be on well-determined ports.
  • Easy to manage centralised authentication. You know, like Active Directory on Windows.
  • Redundancy of authentication servers. You know, like Active Directory on Windows.
  • Automatic replication between authentication servers. You know, like Active Directory on Windows.
  • Automatic discovery of authentication servers using a simple system like DNS. You know, like Active Directory on Windows.
  • The ability to configure settings on clients centrally. You know, like Group Policy on Windows.
  • The ability to manage disks in almost any way imaginable. You know, like Veritas Storage Foundation.
  • The ability to replicate disks between systems. You know, like Veritas Volume Replicator.
  • Easy to use clustering. You know, like Veritas Cluster Server.
  • The ability to simply install OS updates. You know, like freebsd-update on FreeBSD.
  • The ability to centrally manage OS updates across the organisation, downloading only once. You know, like WSUS on Windows.
  • Centralised logging.
  • Built-in monitoring of hardware sensors. You know, like sysctl hw.sensors on OpenBSD.
  • Everything monitorable by SNMP.
  • A clear support lifetime policy. You know, like OpenBSD.
  • And finally, I want it Open Source. You know, like BSD-type open.

Is that too much to ask?

The problem with renaming a model in Rails

So you’ve decided to rename a model in Rails. What could be simpler than renaming and editing a bunch of files? You make your edits in development, run migrations and so on.
There’s a potential issue you might hit though. Suppose you have model Foo, which you want to modify (e.g. add a column). So you create a migration with:
add_column :foo, :quantity, :integer
…and you run your migration.
Then you decide you want to rename the model to Bar. So you use rename_table in your migration, and rename and edit the appropriate files. All works beautifully.
Now you come to deploy, and it all goes wrong when you migrate the database, saying it can’t find the model. The reason? Well your first migration now refers to a model that doesn’t exist, because the new model file is in place.
The messy solution is to perform the migration yourself, by renaming the database table directly in the database.
The clean solution is to avoid making changes like this in the first place. I guess it’s an example of where “deploy often” can reap benefits.

Renaming a model in Rails

When renaming a model in Rails (2.3), there are a range of files you may need to change:

Create a migration to rename the database table:

(rename_table :o ldname, :newname)

Rename the model.
Edit any associations in other models.
Rename the controller (if required)
Modify routes.rb
Modify any links in views.
Rename views.
Rename the model in controllers and views.
Rename and modify any tests.

Moral of the story – name your models correctly from the start. Keep them as generic as possible. This post came about because I initially had a model for appointments for training sessions, so the model TrainingSession was created. Then I needed to store appointments which were for a different type of session, but I kept the model name the same, as it was only seen internally, and used a named scope. Now I need to store appointments of any type, so having code referring to TrainingSession will still work, but it makes it counterintuitive to refer to generic appointments as TrainingSession.generic. Instead, Appointment.generic and Appointment.training are so much more logical.

2 years of the iMac

After 2 years of using the iMac, what do I think of it?

Hardware

After 2 years I’m really quite happy with the Mac. Hardware-wise, the Mac itself has been fine. The only negatives are that there is a speck of dust behind the screen glass. I don’t feel like taking the iMac apart, and it’s up in the top right-hand corner, so I’ve lived with it for quite some time now. The Mac itself is very quiet. The only time it’s been anything louder than a whisper was during summer, when the sun had been shining on the black back for hours. I know have an external drive (more on that later), and that’s louder than the Mac itself.

As far as the included peripherals are concerned (keyboard, mouse and remote control), it’s a mixed bag. The remote control doesn’t get used, and the keyboard is fine, although there is some wear or discolouring around the arrow keys. The mouse however is not so good. Apple came in for plenty of criticism for the Mighty Mouse, and in my mind it’s deserved. The scroll ball now no longer works, regardless of how much you clean it. The side-squeezing buttons never get used, because with my big hands I have to adjust my grip on the mouse. I’d replace the mouse with the Magic Mouse if it weren’t so damn expensive. At least that has no moving parts.

When I bought the iMac, I chose the entry-level model, with a 250GB disk and 1GB RAM. Since then I’ve upgraded the RAM to 4GB, which was a painless procedure, once you’ve found the right sized screwdriver! The disk space is getting low though, with around 20GB free, although the machine is only used for internet email, iPhoto and iTunes. The next one will have to have a much bigger disk.

Mac OS X

Leopard seemed fine to me. There were some niggles that were sorted out after a few months, such as occasionally refusing to connect to the wireless network first time after waking from sleep, and losing text labels on stacks. Since then I’ve upgraded to Snow Leopard. Once you’ve got over the excitement of having about 7GB more disk space free, the biggest differences between Snow Leopard and Leopard can be summed up in one line.

Mail starts faster

Opening Mail went from about 15-30 seconds to about 2 seconds for me. Apart from that there are some changes to Expose (and I’m not sure they’re changes for the better), and a few other small things you notice, but nothing to write home about. I still think Preview for PDFs blows Adobe Reader out the water, and I hate using Reader, waiting for it start on a Windows machine.

One thing that is fantastic is Time Machine. Setup couldn’t be much easier. Plug in a hard disk, get asked if you want to use it for Time Machine, switch it on. Then get told you need to format it. Then get asked to switch TiMe Machine on again. OK, so maybe it’d be simpler if you bought a drive that came HFS+ formatted.

Installing OpenNMS on FreeBSD

OpenNMS a network monitoring system,and is in some ways a competitor to Nagios. Having been a Nagios user for a while now, I was intrigued to see the alternatives were like. I last tried installing OpenNMS many years ago, and struggled installing it on FreeBSD. Now that it’s had a few more years to develop, I wondered if it was any easier to install, as there’s no port for it. Here are the notes I made to get it installed…

The installation environment was a VMWare environment (using VMWare Fusion on an iMac). The virtual machine was given an 8GB disk and 512MB RAM. In retrospect I should have allocated more RAM, as there was a lot of swapping going on during the build process. I installed packages rather than ports, to minimise the amount of disk space used and time taken.

  1. Install FreeBSD 7.2 (or later in the 7 series – 8 doesn’t have a functioning Java binary yet). I used the amd64 version.
  2. Ensure that the system can resolve its own name, either in DNS or an entry in the hosts file. OpenNMS will not start without this.
  3. Install PostgreSQL server.
    # pkg_add -r postgresql83-server
    This will also install libiconv, gettext and postgresql83-client. We install PostgreSQL 8.3 because 8.4.0 has a bug, and there isn’t a package for 8.4.1 yet.
  4. Edit /etc/rc.conf and add the line postgresql_enable=”YES”
  5. Initialise the database.
    # /usr/local/etc/rc.d/postgresql initdb
  6. Start the database.
    # /usr/local/etc/rc.d/postgresql start
  7. Install some packages needed by Java.
    # pkg_add -r javavmwrapper
    # pkg_add -r xtrans
    # pkg_add -r xproto
    # pkg_add -r xextproto
  8. Go to http://www.FreeBSDFoundation.org/downloads/java.shtml and download Diablo Caffee JDK 1.6.0-7 for FreeBSD 7 amd64. Then transfer it to the machine you’re building OpenNMS on.
  9. Install the Java package.
    # pkg_add /usr/local/opennms/diablo-jdk-freebsd7.amd64.1.6.0.07.02.tbz
    Agree to the license when prompted. You will get some warnings about version mismatches. These warnings can be safely ignored.
  10. Install python 2.5. This is a prerequisite package for jicmp, but is not marked as such, so it won’t be automatically installed by pkg_add.
    # pkg_add -r python25
  11. Install jicmp.
    # pkg_add -r jicmp
    This also installs xcb-proto.
  12. Fetch the OpenNMS source.
    # fetch http://downloads.sourceforge.net/project/opennms/OpenNMS%20Source/stable-1.6.7/opennms-source-1.6.7-1.tar.gz
  13. Untar the OpenNMS source.
    # tar xfz opennms-source-1.6.7-1.tar.gz
  14. Change to the source directory.
    # cd opennms-1.6.7-1/source
  15. Build OpenNMS, telling it that it will be installed in /usr/local/opennms.
    # ./build.sh -Dopennms.home=/usr/local/opennms install assembly:attached
    This stage may stop with errors about running out of java heap memory. If this happens, simply re-run the command, the build will commence from the error.
  16. Create the /usr/local/opennms directory.
    # mkdir /usr/local/opennms
  17. Change to the /usr/local/opennms directory.
    # cd /usr/local/opennms
  18. Untar the OpenNMS package.
    # tar xfz opennms-1.6.7-1/source/target/opennms-1.6.7.tar.gz
  19. Change the permissions on some files that are incorrectly set by the build.
    # chmod +x bin/*
    # chmod +x contrib/*
    # chmod -x contrib/*.README
    # chmod -x contrib/opennms.mib
  20. Run the runjava command.
    # /usr/local/opennms/bin/runjava -s
    This should find the java binaries you installed earlier.
  21. FreeBSD uses pgsql as the database user, rather than postgres, so edit the file /usr/local/opennms/etc/opennms-datasources.xml and change the database user from postgres to pgsql.
  22. Set up the database.
    # /usr/local/opennms/bin/install -dis
  23. Start OpenNMS.
    # /usr/local/opennms/bin/opennms start

If you want the additional features provided by jrrd, then you can install it by running pkg_add -r jrrd. Note that this installs a lot of other packages (renderproto, kbproto, font-util, encodings, expat, perl, gio-fam-backend, pango, rrdtool, bitstream-vera, cairo, font-bh-ttf, font-misc-ethiopic, font-misc-meltho, font-util, fontconfig, freetype2, gamin, glib, libX11, libXau, libXdmcp, libXft, libXrender, libfontenc, libpthread-stubs, libxcb, libxml2, mkfontdir, mkfontscale, pcre, pixman, pkg-config, png, xcb-util, xorg-fonts-truetype and xtrans).

Talk about responsive…

I’ve been using Nagios for a while to monitor several servers. When I set it up, one of the things I left until later was monitoring PostgreSQL databases, as it requires a plugin, and I wasn’t sure which plugins to try. Then I noticed an announcement on the PostgreSQL website that a new version (version 2.9.2) of the check_postgresql.pl plugin was available, so I thought I’d give it a try.

The plugin turned out to be easy to install and configure, though a little clarification on some of the documentation wouldn’t go amiss. There are two checks the plugin performs, which check to see whether a new version of the plugin is available, and whether a new version of PostgreSQL is available. Neither of these worked for me.

I had a dig through the source code, and saw that there were 5 commands used to retrieve the latest version information from the internet. FreeBSD doesn’t have any of these commands installed by default, but it does come with fetch, which does the same job. So I added the additional line for fetch to the plugin, and tested it. It worked just fine, so the next thing was to feed that change back to the check_postgresql.pl project. There’s no bug tracker on the site, and I didn’t feel like signing up to the mailing list, so I emailed the developer.
I set the plugin to manually recheck for a new version (I’d only set it to automatically check once per day), and it said there was a new version available (version 2.9.3). At first I thought I’d done something wrong, until I downloaded the new version, and found my patch incorporated in it (with a few other fixes).
Time from emailing the developer to the new version being released: 38 minutes
Gotta love open source and responsive developers…

FreeBSD 7.2 dmesg on the Dell PowerEdge R300

While looking at the stats for this site, I noticed that plenty of people seems to be searching for information on running FreeBSD on the Dell PowerEdge R300. All I can tell you is that since FreeBSD 7.1 it works just fine, without modification, using the GENERIC kernel.

Below is the dmesg from FreeBSD 7.2 (amd64). This is for a standard R300, with no additional options other than a second hard drive. It also has a USB memory stick connected to the internal USB port, so that the server can still be booted even if both hard drives fail (theoretically – not tested).

Copyright (c) 1992-2009 The FreeBSD Project.
Copyright (c) 1979, 1980, 1983, 1986, 1988, 1989, 1991, 1992, 1993, 1994
The Regents of the University of California. All rights reserved.
FreeBSD is a registered trademark of The FreeBSD Foundation.
FreeBSD 7.2-RELEASE-p1 #5: Tue Jun 16 21:42:57 BST 2009
xxxxx@xxx.xxxxxxx.xx.xx:/usr/obj/usr/src/sys/GENERIC
Timecounter “i8254″ frequency 1193182 Hz quality 0
CPU: Intel(R) Xeon(R) CPU X3323 @ 2.50GHz (2500.01-MHz K8-class CPU)
Origin = “GenuineIntel” Id = 0×10676 Stepping = 6
Features=0xbfebfbff<FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,CLFLUSH,DTS,ACPI,MMX,FXSR,SSE,SSE2,SS,HTT,TM,PBE>
Features2=0xce3bd<SSE3,RSVD2,MON,DS_CPL,VMX,EST,TM2,SSSE3,CX16,xTPR,PDCM,DCA,<b19>>
AMD Features=0×20100800<SYSCALL,NX,LM>
AMD Features2=0×1<LAHF>
Cores per package: 4
usable memory = 2128711680 (2030 MB)
avail memory = 2052505600 (1957 MB)
ACPI APIC Table: <DELL PE_SC3 >
FreeBSD/SMP: Multiprocessor System Detected: 4 CPUs
cpu0 (BSP): APIC ID: 0
cpu1 (AP): APIC ID: 1
cpu2 (AP): APIC ID: 2
cpu3 (AP): APIC ID: 3
ioapic0: Changing APIC ID to 4
ioapic0 <Version 2.0> irqs 0-23 on motherboard
kbd1 at kbdmux0
acpi0: <DELL PE_SC3> on motherboard
acpi0: [ITHREAD]
acpi0: Power Button (fixed)
Timecounter “ACPI-safe” frequency 3579545 Hz quality 850
acpi_timer0: <24-bit timer at 3.579545MHz> port 0×808-0x80b on acpi0
acpi_hpet0: <High Precision Event Timer> iomem 0xfed00000-0xfed003ff on acpi0
Timecounter “HPET” frequency 14318180 Hz quality 900
pcib0: <ACPI Host-PCI bridge> port 0xcf8-0xcff on acpi0
pci0: <ACPI PCI bus> on pcib0
pcib1: <PCI-PCI bridge> at device 2.0 on pci0
pci3: <PCI bus> on pcib1
pcib2: <PCI-PCI bridge> at device 3.0 on pci0
pci4: <PCI bus> on pcib2
pcib3: <ACPI PCI-PCI bridge> at device 4.0 on pci0
pci5: <ACPI PCI bus> on pcib3
pcib4: <PCI-PCI bridge> at device 5.0 on pci0
pci6: <PCI bus> on pcib4
pcib5: <ACPI PCI-PCI bridge> at device 6.0 on pci0
pci7: <ACPI PCI bus> on pcib5
pcib6: <ACPI PCI-PCI bridge> at device 7.0 on pci0
pci8: <ACPI PCI bus> on pcib6
pci0: <base peripheral> at device 8.0 (no driver attached)
pcib7: <PCI-PCI bridge> irq 16 at device 28.0 on pci0
pci9: <PCI bus> on pcib7
pcib8: <ACPI PCI-PCI bridge> irq 16 at device 28.4 on pci0
pci1: <ACPI PCI bus> on pcib8
pci0:1:0:0: failed to read VPD data.
bge0: <Broadcom BCM5722 A0, ASIC rev. 0xa200> mem 0xdfdf0000-0xdfdfffff irq 16 at device 0.0 on pci1
miibus0: <MII bus> on bge0
brgphy0: <BCM5722 10/100/1000baseTX PHY> PHY 1 on miibus0
brgphy0: 10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, 1000baseT, 1000baseT-FDX, auto
bge0: Ethernet address: 00:1e:4f:33:d6:d0
bge0: [ITHREAD]
pcib9: <ACPI PCI-PCI bridge> irq 17 at device 28.5 on pci0
pci2: <ACPI PCI bus> on pcib9
bge1: <Broadcom NetXtreme Gigabit Ethernet Controller, ASIC rev. 0xa200> mem 0xdfef0000-0xdfefffff irq 17 at device 0.0 on pci2
miibus1: <MII bus> on bge1
brgphy1: <BCM5722 10/100/1000baseTX PHY> PHY 1 on miibus1
brgphy1: 10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, 1000baseT, 1000baseT-FDX, auto
bge1: Ethernet address: 00:1e:4f:33:d6:d1
bge1: [ITHREAD]
uhci0: <UHCI (generic) USB controller> port 0xdc80-0xdc9f irq 21 at device 29.0 on pci0
uhci0: [GIANT-LOCKED]
uhci0: [ITHREAD]
usb0: <UHCI (generic) USB controller> on uhci0
usb0: USB revision 1.0
uhub0: <Intel UHCI root hub, class 9/0, rev 1.00/1.00, addr 1> on usb0
uhub0: 2 ports with 2 removable, self powered
uhci1: <UHCI (generic) USB controller> port 0xdca0-0xdcbf irq 20 at device 29.1 on pci0
uhci1: [GIANT-LOCKED]
uhci1: [ITHREAD]
usb1: <UHCI (generic) USB controller> on uhci1
usb1: USB revision 1.0
uhub1: <Intel UHCI root hub, class 9/0, rev 1.00/1.00, addr 1> on usb1
uhub1: 2 ports with 2 removable, self powered
uhci2: <UHCI (generic) USB controller> port 0xdcc0-0xdcdf irq 21 at device 29.2 on pci0
uhci2: [GIANT-LOCKED]
uhci2: [ITHREAD]
usb2: <UHCI (generic) USB controller> on uhci2
usb2: USB revision 1.0
uhub2: <Intel UHCI root hub, class 9/0, rev 1.00/1.00, addr 1> on usb2
uhub2: 2 ports with 2 removable, self powered
ehci0: <EHCI (generic) USB 2.0 controller> mem 0xdfcffc00-0xdfcfffff irq 21 at device 29.7 on pci0
ehci0: [GIANT-LOCKED]
ehci0: [ITHREAD]
usb3: EHCI version 1.0
usb3: companion controllers, 2 ports each: usb0 usb1 usb2
usb3: <EHCI (generic) USB 2.0 controller> on ehci0
usb3: USB revision 2.0
uhub3: <Intel EHCI root hub, class 9/0, rev 2.00/1.00, addr 1> on usb3
uhub3: 6 ports with 6 removable, self powered
umass0: <LEXAR MEDIA JUMPDRIVE SPORT, class 0/0, rev 2.00/30.00, addr 2> on uhub3
uhub4: <vendor 0x04b4 product 0×6560, class 9/0, rev 2.00/90.15, addr 3> on uhub3
uhub4: single transaction translator
uhub4: 2 ports with 2 removable, self powered
pcib10: <ACPI PCI-PCI bridge> at device 30.0 on pci0
pci10: <ACPI PCI bus> on pcib10
vgapci0: <VGA-compatible display> port 0xec00-0xecff mem 0xd0000000-0xd7ffffff,0xdfff0000-0xdfffffff irq 19 at device 7.0 on pci10
isab0: <PCI-ISA bridge> at device 31.0 on pci0
isa0: <ISA bus> on isab0
atapci0: <Intel ICH9 SATA300 controller> port 0xdc20-0xdc27,0xdc10-0xdc13,0xdc28-0xdc2f,0xdc14-0xdc17,0xdc40-0xdc4f,0xdc50-0xdc5f irq 23 at device 31.2 on pci0
atapci0: [ITHREAD]
ata2: <ATA channel 0> on atapci0
ata2: [ITHREAD]
ata3: <ATA channel 1> on atapci0
ata3: [ITHREAD]
atapci1: <Intel ICH9 SATA300 controller> port 0xdc30-0xdc37,0xdc18-0xdc1b,0xdc38-0xdc3f,0xdc1c-0xdc1f,0xdc60-0xdc6f,0xdc70-0xdc7f irq 22 at device 31.5 on pci0
atapci1: [ITHREAD]
ata4: <ATA channel 0> on atapci1
ata4: [ITHREAD]
ata5: <ATA channel 1> on atapci1
ata5: [ITHREAD]
fdc0: <floppy drive controller> port 0x3f0-0x3f5,0x3f7 irq 6 drq 2 on acpi0
fdc0: does not respond
device_attach: fdc0 attach returned 6
sio0: configured irq 4 not in bitmap of probed irqs 0
sio0: port may not be enabled
sio0: configured irq 4 not in bitmap of probed irqs 0
sio0: port may not be enabled
sio0: <16550A-compatible COM port> port 0x3f8-0x3ff irq 4 flags 0×10 on acpi0
sio0: type 16550A
sio0: [FILTER]
sio1: configured irq 3 not in bitmap of probed irqs 0
sio1: port may not be enabled
sio1: configured irq 3 not in bitmap of probed irqs 0
sio1: port may not be enabled
sio1: <16550A-compatible COM port> port 0x2f8-0x2ff irq 3 on acpi0
sio1: type 16550A
sio1: [FILTER]
cpu0: <ACPI CPU> on acpi0
est0: <Enhanced SpeedStep Frequency Control> on cpu0
p4tcc0: <CPU Frequency Thermal Control> on cpu0
cpu1: <ACPI CPU> on acpi0
est1: <Enhanced SpeedStep Frequency Control> on cpu1
p4tcc1: <CPU Frequency Thermal Control> on cpu1
cpu2: <ACPI CPU> on acpi0
est2: <Enhanced SpeedStep Frequency Control> on cpu2
p4tcc2: <CPU Frequency Thermal Control> on cpu2
cpu3: <ACPI CPU> on acpi0
est3: <Enhanced SpeedStep Frequency Control> on cpu3
p4tcc3: <CPU Frequency Thermal Control> on cpu3
fdc0: <floppy drive controller> port 0x3f0-0x3f5,0x3f7 irq 6 drq 2 on acpi0
fdc0: does not respond
device_attach: fdc0 attach returned 6
orm0: <ISA Option ROMs> at iomem 0xc0000-0xc8fff,0xc9000-0xc9fff,0xec000-0xeffff on isa0
atkbdc0: <Keyboard controller (i8042)> at port 0×60,0×64 on isa0
atkbd0: <AT Keyboard> irq 1 on atkbdc0
kbd0 at atkbd0
atkbd0: [GIANT-LOCKED]
atkbd0: [ITHREAD]
ppc0: cannot reserve I/O port range
sc0: <System console> at flags 0×100 on isa0
sc0: VGA <16 virtual consoles, flags=0×300>
vga0: <Generic ISA VGA> at port 0x3c0-0x3df iomem 0xa0000-0xbffff on isa0
Timecounters tick every 1.000 msec
ad4: 152587MB <WDC WD1601ABYS-18C0A0 06.06H05> at ata2-master SATA300
acd0: DVDROM <TEAC DVD-ROM DV28SV/D.0E> at ata2-slave SATA150
ad6: 152587MB <WDC WD1601ABYS-18C0A0 06.06H05> at ata3-master SATA300
GEOM_MIRROR: Device mirror/gm0 launched (2/2).
GEOM_LABEL: Label for provider mirror/gm0s1 is msdosfs/DellUtility.
GEOM_LABEL: Label for provider mirror/gm0s2 is msdosfs/OS.
GEOM_LABEL: Label for provider mirror/gm0s3a is ufsid/481ca24bb929589f.
GEOM_LABEL: Label for provider mirror/gm0s3d is ufsid/481ca2504609c3b4.
GEOM_LABEL: Label for provider mirror/gm0s3e is ufsid/481ca24b7ec903d6.
GEOM_LABEL: Label for provider mirror/gm0s3f is ufsid/481ca24bcf21dd1b.
SMP: AP CPU #1 Launched!
SMP: AP CPU #2 Launched!
SMP: AP CPU #3 Launched!
da0 at umass-sim0 bus 0 target 0 lun 0
da0: <LEXAR JUMPDRIVE SPORT 1000> Removable Direct Access SCSI-0 device
da0: 40.000MB/s transfers
da0: 495MB (1014784 512 byte sectors: 64H 32S/T 495C)
GEOM_LABEL: Label for provider da0s1a is ufsid/4828bbc089fb6d4e.
Trying to mount root from ufs:/dev/mirror/gm0s3a
GEOM_LABEL: Label ufsid/481ca24bb929589f removed.
GEOM_LABEL: Label for provider mirror/gm0s3a is ufsid/481ca24bb929589f.
GEOM_LABEL: Label ufsid/481ca24b7ec903d6 removed.
GEOM_LABEL: Label for provider mirror/gm0s3e is ufsid/481ca24b7ec903d6.
GEOM_LABEL: Label ufsid/481ca24bcf21dd1b removed.
GEOM_LABEL: Label for provider mirror/gm0s3f is ufsid/481ca24bcf21dd1b.
GEOM_LABEL: Label ufsid/481ca2504609c3b4 removed.
GEOM_LABEL: Label for provider mirror/gm0s3d is ufsid/481ca2504609c3b4.
GEOM_LABEL: Label ufsid/481ca24bb929589f removed.
GEOM_LABEL: Label ufsid/481ca24b7ec903d6 removed.
GEOM_LABEL: Label ufsid/481ca24bcf21dd1b removed.
GEOM_LABEL: Label ufsid/481ca2504609c3b4 removed.
bge0: link state changed to UP

My First UAC Encounter

I’ve been lucky enough to stay away from Windows Vista, having moved to the Mac at home. I’ve had several chances to play with Windows Vista, but I still prefer the look and feel of Windows XP. A friend who is a Vista user recently had to reinstall from scratch (due to a hardware issue, not a Windows issue), and I needed to use his PC (since reading NTFS filesystems on an old hard disk is something Windows is pretty good at).

The first time I used this PC, before the reinstall, my friend had disabled UAC, as he found it too annoying. However, after the reinstall he’d left it enabled to see if it was any less annoying. I’d not used Vista with UAC enabled before, so I didn’t know just how intrusive it was. I found out quite quickly.

I clicked Start, and entered mmc. I hit enter, and was immediately confronted with a dialog box, stating that mmc was trying to run, and should I allow it. I found this unbelievable, that I was being asked if I wanted a program that I’d explicitly asked to start to be started. I’d thought that UAC was to stop programs being started without your knowledge, not to ask you to confirm every single action!

I was left feeling like Vista’s interface was a step backwards from XP.

This post was brought to you by the “I like to blog about it two years after everyone else” department.