Alan Hargreaves' Weblog
The ramblings of an Australian SaND TSC* Principal Field Technologist
* Solaris and Network Domain Technology Support Centre - The group I work forTags
(update 1) acoustic bind birthday blues bugs cec cec2007 cec2008 china cmt contention cringley debugging dogs dtrace earthquake encumbered-binaries extra flash funny google guitar halloween huron install kids linux liveupgrade locking mdb music mysql newyear niagra openjava opensolaris oracle patches patents percussion performance redhat secondlife security solaris sru sun support sxcr t2 t2000 timeslider ufs upgrade virtualbox windows youtube zfs
Thursday Jan 28, 2010
Migrating this Blog
As appears to be all the rage at the moment, due to a change in Corporate Blogging Policy, I've relocated this blog to alanhargreaves.wordpress.com. That blog will be for all kinds of things either work related or of other interest. I should also mention that I have created a Music specific blog at alanhargreaves.blogspot.com that I am specifically writing about stuff related to music and the network and things like that.
See you on the other side!
Posted at 01:00PM Jan 28, 2010 by Alan Hargreaves in General | Comments[0]
Friday Sep 18, 2009
Software Freedom Day in Sydney
Cristina Cifuentes invited me to speak at Michael Chan's (Campus Ambassador - UTS) Software Freedom Day event at UTS yesterday. The broad guidance given to me by Michael was "Alan can you talk about Solaris, ZFS and Zones. If possible can you demonstrate this?".
OK, I've not done a lot with zones, especially under OpenSolaris, and I do love a challenge.
Last year I spoke on a number of things at the day at Sydney Uni and I was a bit disappointed in the slideware I created for the stuff on ZFS. This year I decided that the best slides that I had seen on ZFS were from Jeff and Bill in their ZFS - The last Word in Filesystems presentations, so I used a few slides from there. The fun part was as I only had the pdf file I had to recreate the wonderful drawings they used on the slides I wanted. I learned a bit about drawing in OpenOffice doing this :) (and was told after I finished that apparently there is an OpenOffice plugin that will let you pull images out of pdf documents. oh well).
I also found someay good zones resources in sun blogs, most notably Cloning Zones by Brian Leonard.
Wikipedia was also helpful verifying some timelines for Solaris and OpenSolaris.
At the end of the slides I flipped over to a couple of terminal sessions and demonstrated cloning some simple zones as I'd outlined in the talk. Very simple zones with no resources imported or networks. The impressive stuff was that we could demonstrated that with cloning we could provision and boot a new clone in under 10 seconds, which lead nicely into Andrew Latham's talk on Cloud Computing.
Anyway, the pdf of the presentation can be downloaded here.
Posted at 11:30AM Sep 18, 2009 by Alan Hargreaves in OpenSolaris |
Friday Aug 14, 2009
Why I hate macros that make pointer dereferences look like structure elements
I have a colleague who generated an IDR patch for tcp in Solaris 10 for me to give relief to a customer for a bug while the formal fix was in progress.
As a part of the fix we had this code fragment
18984 /*
18985 * If the SACK option is set, delete the entire list of
18986 * notsack'ed blocks.
18987 */
18988 if (tcp->tcp_sack_info != NULL) {
18989 if (tcp->tcp_notsack_list != NULL)
18990 TCP_NOTSACK_REMOVE_ALL(tcp->tcp_notsack_list, tcp);
18991 }
replaced with this code fragment (the fix actually has a lot more to it than this, but this is what was relevent.)
18936 /* 18937 * If the SACK option is set, delete the entire list of 18938 * notsack'ed blocks. 18939 */ 18940 18941 if (tcp->tcp_notsack_list != NULL) 18942 TCP_NOTSACK_REMOVE_ALL(tcp->tcp_notsack_list, tcp);
Now, the assembly around here reads
ip:tcp_process_shrunk_swnd+0x38: ldx [%i0 + 0xf8], %g1 ip:tcp_process_shrunk_swnd+0x3c: add %g3, %i1, %g2 ip:tcp_process_shrunk_swnd+0x40: stw %g2, [%i0 + 0x80] ip:tcp_process_shrunk_swnd+0x44: ldx [%g1 + 0x48], %i5
and the register dump
pc: 0x7bed2918 ip:tcp_process_shrunk_swnd+0x44: ldx [%g1 + 0x48], %i5
npc: 0x7bed291c ip:tcp_process_shrunk_swnd+0x48: subcc %i5, 0x0, %g0 ( cmp %i5, 0x0 )
global: %g1 0
%g2 0x761c %g3 0x68ec
%g4 0x600216f6e6c %g5 0
%g6 0x1c %g7 0x2a101f89ca0
out: %o0 0x600210d8640 %o1 0x1e0
%o2 0x5a8 %o3 0x3c8
%o4 0x600216f6e6c %o5 0x600216f68c4
%sp 0x2a101f88c61 %o7 0x7bed2900
loc: %l0 0xc7341c85 %l1 0x2000
%l2 0x60010972000 %l3 0x600210d8640
%l4 0x1000 %l5 0x1000
%l6 0x1000 %l7 0x5
in: %i0 0x600210d8640 %i1 0xd30
%i2 0 %i3 0xc73439b5
%i4 0 %i5 0x4
%fp 0x2a101f88d11 %i7 0x7becbed4
The last instruction is where we paniced (yes the customer paniced [twice] as a result of this). As we can see from the register dump, %g1 is NULL, so we definitely have a NULL pointer dereference going on.
So where did this come from? It looks like a dereference of 0xf8 from %i0. %i0 is a (tcp_t *) making %g1 a (tcp_sack_info *), namely arg0->tcp_sack_info if we look at the structure; but hang on, the code says tcp->tcp_notsack_list, not tcp->tcp_sack_info. Indeed that element name does not exist within a tcp_t.
A light dawns when we see that:
299 #define tcp_notsack_list tcp_sack_info->tcp_notsack_list
So in reality line 18941 is doing:
18941 if (tcp->tcp_sack_info->tcp_notsack_list != NULL)
Without checking whether or not tcp->tcp_sack_info is non-NULL. The correct line should perhaps read
18941 if (tcp->tcp_sack_info != NULL && tcp->tcp_notsack_list != NULL)
Now this would probably not have made it as far as in IDR patch delivered to a customer, if we didn't have that macro definition because alarm bells would have rung that we were doing another dereference!
Posted at 10:40AM Aug 14, 2009 by Alan Hargreaves in Solaris |
Wednesday Aug 12, 2009
Microsoft forced to stop selling Word over an XML Patent?
I just saw on Cnet an article titled Judge orders Microsoft to stop selling Word. OK it's Microsoft you may say. I'm more concerned over the guts of this one. The lead paragraph is:
Judge Leonard Davis of the U.S. District Court for the Eastern District of Texas issued a permanent injunction that "prohibits Microsoft from selling or importing to the United States any Microsoft Word products that have the capability of opening .XML, .DOCX or DOCM files (XML files) containing custom XML," according to a statement released by attorneys for the plantiff, i4i.
So if patent 5,787,449 has been used to stop Microsoft from selling such products, what (if anything) does it bode for things like OpenOffice.org?
Posted at 05:35PM Aug 12, 2009 by Alan Hargreaves in General | Comments[2]
Tuesday Aug 11, 2009
Who said "Processes are cheap" ?
This is really going back. I've been spending some time searching for where I first heard this comment made with regard to UNIX.
Memory is telling me that it was in the Edition VII days, back around 1979-84ish, and that it was perhaps one of ("Dennis Ritchie", "Ken Thomson", "Brian Kernighan", "P.J. Plauger"), or maybe even Rob Pike or Steve Bourne. I have had no luck with google or any documentation I've got. The statement was in the context of the "UNIX Philosophy".
If anyone can point me at a reference I'd certainly appreciate it.
Posted at 04:18PM Aug 11, 2009 by Alan Hargreaves in General | Comments[2]
Saturday Aug 08, 2009
Jamm For Genes in Second Life
Last year we ran this event in second life. It ran for 27 hours and we raised about AUS$2000 for Children's Medical Research Institute as a part of Jamm for Genes.
This year we're doing it again. It's on now in Second Life. We have 35 hours of live music lined up. All artists donating their time.
The schedule is as follows. All times are US/Pacific (or Second Life Time)
Friday 7th August 2009 6 PM - The Pocket Jamms for Genes 6:00 pm Von Johin 6:30 pm Gary Jonstone 7:00 PM Dallas Silverspar 8:00 PM Artel Brando 9:00 PM Pato and the Re-Tenders 10:00 PM OhMy Kidd 11:00 PM Rosedrop Rust Saturday 8th August 2009 12 AM - The Pocket Jamms for Genes (continued) 12:00 AM - Phoe Nix 1:00 AM - Angelica Svenska 2AM Laceys Place Jamms for Genes 2:00 AM OhMY and the Kids 3:00 AM Auzzie and The Lohners 4:00 AM Jackdog Snook 5:00 AM Rara Destiny 6AM Angels Place 6:00 AM Dann Numbers 7:00 AM Shane Kirshner 8:00 AM HölliVals 9AM The Old Barn 9:00 AM Bara Jonson 10:00 AM Don Cabassoun 11:00 AM Kaklick Martin 12 PM Sailors Cove 12:00 PM Pmann Sands 1:00 PM Jonas Lunasea 2:00 PM This Device 3 PM Endeavour Cove 3:00 PM Jaggpro Mccann 4:00 PM OhMy Kidd 5:00 PM Maximillion Kleene 6 PM THE POCKET JAMMS AGAIN 6:00 PM Paisley Beebe & Freddy Halderman 7:00 PM Cellandra Zon 7:00 PM Freestar Bay Jamms for Genes********************* 7:45 PM Freestar Tammas 8:00 PM Dale Katscher 8:30 PM Matthew Perreault 9:00 PM KelvinBlue Oh 10:00 PM Noma Falta 11:00 PM Randyb Magic 11:30 PM Freestar Tammas Sunday 9th August 2009 12 AM Woodstock Jamms for Genes 12 AM Rosedrop Rust 1 AM Tpenta Vanalten 2 AM OhMy Kidd 3 AM SOAR 4 AM onward - Mariposa Upsahw's Art Auction Spectacular
We've been going now for a bit over an hour and would love to see more folks come, listen and donate.
Posted at 12:22PM Aug 08, 2009 by Alan Hargreaves in Music |
Thursday Jul 30, 2009
Interim fixes for Bind Vulnerability VU#725188/CVE-2009-0696 (Updated)
Yesterday I noticed an article titled New DoS Vulnerability in All versions of BIND 9 on slashdot. The article refers to BIND Dynamic Update DoS at the ISC site describing Vulnerability Note VU#725188 - ISC BIND 9 vulnerable to denial of service via dynamic update request.
This very rapidly caused a stir on a few internal mailing lists that I'm on and work on addressing this as
6865903 Updated, P1 network/dns CVE-2009-0696 BIND dynamic update problem
The current status of this within Sun is that the Interim Security Reliefs (ISR) are available from http://sunsolve.sun.com/tpatches for the following releases:
SPARC Platform
- Solaris 10 IDR142522-01
- Solaris 9 IDR142524-01
x86 Platform:
- Solaris 10 IDR142523-01
- Solaris 9 IDR142525-01
Sun Alert 264828 is on its way to be published. When published it will be available from: http://sunsolve.sun.com/search/document.do?assetkey=1-66-264828-1
The fix is planned for build 121 for OpenSolaris/Nevada and we're attempting to get it into the next possible release Support Repository Update (SRU3).
Update 1
It turns out that the Solaris 9 ISR patches rely on an unreleased patch for Solaris 9. Work is underway to get this dependency out quickly,
Posted at 08:37AM Jul 30, 2009 by Alan Hargreaves in Solaris | Comments[4]
Monday Jun 22, 2009
Live Upgrade and TimeSlider gotcha
Tried to upgrade my workstation over the weekend to snv_117. Apart from a little tridying up I had to do as a package didn't install correctly, all apeared to be going fine. I then went to unmount /.alt.snv_117, and it failed saying that the filesystem was busy.
fuser -c showed no processes using the mount point. What could it be?
A little bit of dtracing the umount2() system call was illuminating.
1 <- zfsctl_umount_snapshots 0 0 1 <- zfs_umount 0 16
Hang on, snapshots? Although it returned 0, let's just check; as I do have timeslider enabled on this box.
rootksh@vesvi:~$ zfs list -t snapshot|grep 117 pool/ROOT/snv_116@snv_117 4.03M - 8.78G - pool/ROOT/snv_117@zfs-auto-snap:hourly-2009-06-19-09:00 43.8M - 7.99G - pool/ROOT/snv_117@zfs-auto-snap:hourly-2009-06-19-10:00 48.9M - 8.44G - pool/ROOT/snv_117@zfs-auto-snap:hourly-2009-06-19-11:00 43.7M - 8.74G - pool/ROOT/snv_117@zfs-auto-snap:frequent-2009-06-19-11:15 42.6M - 8.75G - pool/ROOT/snv_117@zfs-auto-snap:frequent-2009-06-19-11:30 45.8M - 8.76G - pool/ROOT/snv_117@zfs-auto-snap:frequent-2009-06-19-11:45 38.1M - 8.77G - pool/ROOT/snv_117@zfs-auto-snap:hourly-2009-06-19-12:00 38.5M - 8.80G - pool/ROOT/snv_117@zfs-auto-snap:daily-2009-06-22-00:00 0 - 8.80G - pool/ROOT/snv_117@zfs-auto-snap:weekly-2009-06-22-00:00 0 - 8.80G - pool/ROOT/snv_117@zfs-auto-snap:hourly-2009-06-22-10:00 0 - 8.80G - pool/ROOT/snv_117@zfs-auto-snap:frequent-2009-06-22-10:30 0 - 8.80G - pool/ROOT/snv_117@zfs-auto-snap:frequent-2009-06-22-10:45 0 - 8.80G -
Oh, timeslider was taking snapshots of the filesystem while it was upgrading. Hmm maybe we should be having that disabled on the target of a live upgrade (rfe coming, but I don't hold out a lot of hope).
Anyway, removing them was not difficult:
rootksh@vesvi:~$ zfs list -t snapshot|grep snv_117@zfs-auto|awk '{print $1}' | xargs -L 1 zfs destroy
rootksh@vesvi:~$ luumount snv_117
rootksh@vesvi:~$
Something to keep in mind if you are using timeslider, zfs root and live upgrade (I wonder if we would have the same issue with 'pkg image-update' in OpenSolaris).
Posted at 11:05AM Jun 22, 2009 by Alan Hargreaves in Solaris | Comments[1]
Tuesday Jun 16, 2009
What's in the OpenSolaris Support repositories?
As you may or may not know, you can now buy support contracts for OpenSolaris.
Apart from the ability to make a support call, you also get access to the Support Repository. This is where we backport as subset of fixes from development system and do a lot more testing. Chris has blogged on how to point at the extras and support repositories, so I won't repeat him. What I will do is point you at a couple of sunsolve documents that may be useful in seeing what we are fixing in there.
The important one would be OpenSolaris Support Repository Updates (SRUs). In this page we list each of the updates as well as a browsable link (instructions provided on how to add the certificate to Firefox) and a README outlining the bugs that were addressed.
A link to SRU 6 hasn't made it into this page yet, but you can find it here.
Posted at 03:56PM Jun 16, 2009 by Alan Hargreaves in OpenSolaris | Comments[7]
Monday May 25, 2009
Windows, OpenSolaris and VirtualBox
Over the weekend (as I knew we were going to have some network stuff going on) I installed Virtual Box on my notebook on the Windows disk (I have nevada on the other disk [yes I have a notebook with two 250gb discs]) and then installed a release candidate ISO of OpenSolaris 2009.06. I copied a backup of my punchin credentials and the two packages I needed onto the FAT32 partition of the windows disc from within nevada and then got to work setting things up.
Gotcha #1, don't try to do the install with only 512mb memory, it looks like it's working, but it just sits there doing precious little. I used up about an hour of battery on the train trying this. I got off the train at Tuggerah and went to McDonalds to both get dinner and finish the install, which then went along happily (I chose McDonalds mainly because they also have free wifi).
Installed the punchin packages and restored the credentials. It actually took a bit of research to find out how to use sharing. Doing it from the Windows side with Virtual Box was relatively straightforward, but doing it from the OpenSolaris side was not so obvious. I ended up finding it after hitting the User Guide. I'd called the directory I wanted "share", from OpenSolaris I had to do
$ pfexec mount -F vboxfs share /mnt
Once I'd done that it just worked fine. Everything looked great, except I'd now run out of battery with no power points easily in sight. Oh well headed home.
Once connected to the power everything seemed to work. I dropped the memory back to half a gig (as I run a few things in windows that are kinda memory hungry), and it worked fine for me all weekend just on the notebook.
Arrived at work today to find that for reasons that I won't go into today, the workstation that I normally run my Sun Ray IIFS from was off the internal network, making my Sun Ray useless to me.
I ran up Virtual Box on the notebook and then started the OpenSolaris that I had to start working. A little into the day it occurred to me that I have two 22" screens and a full sized keyboard and mouse sitting next to the notebook, currently doing very little. The keyboard and mouse are in their own unpowered usb hub plugged into the Sun Ray. OK they are now plugged into the notebook. That made a huge difference to productivity.
I then unplugged the digital connection from the screen and attached that to the notebook. Now I have a mirror of what's on the notebook and it is also easier to read. Productivity goes up again.
You know, I could go one step further by instead of mirroring the screens actually going dual screen, such that I have the windows session displayed on teh notebook and then I could go full screen (1600x1200) for OpenSolaris.
Once I arranged things that the mouse moved in the correct direction between the two, this is wonderful and surprisingly usable (well more so once i upped the memory for the OpenSolaris part to 768mb).
Gotcha #2, don't install the VDI files on a FAT32 filesystem, which is what I did because that's where I had the most free space. Everything worked wonderfully until the size of the dynamic disc that I had allocated hit 4gb. Then I started getting errors about full disks from Virtual Box. OK moving the VDI file to the NTFS wasn't that hard. I had to first physically copy it, then release and remove it from within Virtual box, then attach it again from the NTFS disc.
And that's how I ended up getting my job done today. I'm pretty happy with how it worked out.
Posted at 07:09PM May 25, 2009 by Alan Hargreaves in OpenSolaris | Comments[6]
Friday May 22, 2009
Installing "extra" packages against OpenSolaris 2008.11 (with or without support repository updates)
It took me a bit to work out what was going on here (including a number of re-installs to make sure I hadn't screwed up), so I thought it worth sharing.
First, what a failure looks like:
After following Chris's instructions for adding the extra repository, I tried to install flash from it so the kids could play their browser based flash games.
$ pfexec pkg install pkg://extra/web/firefox/plugin/flash
Creating Plan |
pkg: the following package(s) violated constraints:
Package pkg:/SUNWcsl@0.5.11,5.11-0.111 conflicts with constraint in installed pkg:/entire:
Pkg SUNWcsl: Optional min_version: 0.5.11,5.11-0.101 max version: 0.5.11,5.11-0.101 defined by: pkg:/entire
It turns out that what is at issue here is that the extra repository now has the "fat" packages that we will be using for 2009.06. The pkg command on 2008.11 (with any number of support repository updates - I was originally on SRU4 before re-install) can't handle these so it produces that cryptic message.
So, what can we do about it?
The first step is to have a look at all versions of the package we are interested in on extra.
$ pfexec pkg list -af 'pkg://extra/web/firefox/plugin/flash' NAME (AUTHORITY) VERSION STATE UFIX web/firefox/plugin/flash (extra) 10.0.22.87-0.111 known ---- web/firefox/plugin/flash (extra) 10.0.22.87-0.101 known u--- web/firefox/plugin/flash (extra) 9.0.151-0.101 known u--- web/firefox/plugin/flash (extra) 9.0.125-0.101 known u--- web/firefox/plugin/flash (extra) 9.0.125-0.101 known u---
The version 9 packages will work ok, so we simply install one of those:
$ pfexec pkg install "pkg://extra/web/firefox/plugin/flash@9.0.151-0.101" PHASE ITEMS Indexing Packages 554/554 DOWNLOAD PKGS FILES XFER (MB) Completed 1/1 3/3 2.46/2.46 PHASE ACTIONS Install Phase 19/19 Reading Existing Index 9/9 Indexing Packages 1/1
And done. The note to myself for 2009.06 is that that 4gb root disc is just not going to cut it anymore :) Time for something more reasonable.
Posted at 03:41PM May 22, 2009 by Alan Hargreaves in OpenSolaris | Comments[3]
Monday May 04, 2009
multithreaded processes and mdb
Today I had to look at a gcore of devfsadm. Most specifically I wanted to have at what the threads in cond_wait() were doing. I haven't done a lot with such stuff in userland before so thought it would make a good short blog topic on things that can be done.
First off we run up mdb
# mdb /usr/sbin/devfsadm devfsadm.gcore Loading modules: [ libsysevent.so.1 libnvpair.so.1 libc.so.1 libavl.so.1 libuutil.so.1 ld.so.1 ] >
Great, we got all the modules. So, what lwps have we got?
> $L lwpids 1, 2, 3, 4, 5 and 6 are in core of process 135.
So we have six threads, let's have a look at the registers in first one (note that this is on SPARC).
> 1::regs
%g0 = 0x00000000 %l0 = 0x00000000
%g1 = 0x0000001d %l1 = 0x00043748
%g2 = 0x0003cb2c %l2 = 0xffbff8ac
%g3 = 0x00038000 %l3 = 0x00000001
%g4 = 0x0003cb2c %l4 = 0x00000000
%g5 = 0x00000000 %l5 = 0x00000000
%g6 = 0x00000000 %l6 = 0x00000000
%g7 = 0xff342a00 %l7 = 0x00000001
%o0 = 0xff342c40 %i0 = 0x00000001
%o1 = 0xff13b90c libc.so.1`pause+0x50 %i1 = 0x0003a2a4
%o2 = 0xff1c3800 libc.so.1`_uberdata %i2 = 0xff342a00
%o3 = 0x00000000 %i3 = 0x00039954
%o4 = 0xff342a00 %i4 = 0x00016964
%o5 = 0x00000000 %i5 = 0x00000000
%o6 = 0xffbff850 %i6 = 0xffbff8b0
%o7 = 0xff13b914 libc.so.1`pause+0x58 %i7 = 0x00015ce4
%psr = 0x00000044 impl=0x0 ver=0x0 icc=nzvc
ec=0 ef=0 pil=0 s=0 ps=64 et=0 cwp=0x4
%y = 0x00000000
%pc = 0xff14c160 libc.so.1`_pause+4
%npc = 0xff14c164 libc.so.1`_pause+8
%sp = 0xffbff850
%fp = 0xffbff8b0
%wim = 0x00000082
%tbr = 0x00000000
Now to have a look at the stack we simply find the %sp value and use it with the stack dcmd.
> 0xffbff850::stack 0x15ce4(0, 43b48, 39db4, 4, 2276c, 38000) main+0x358(0, 39f2c, ffbffdec, 398e4, 1, 38000) _start+0x108(0, 0, 0, 0, 0, 0)
Note that this gives the stack frames above the current and not the current. From the value of %pc above we can see where we are executing in the current frame. You can also see that we the caller does not have an entry in the symbol table. Unfortunately, on Solaris 10, devfsadm has a lot of functions and variables declared as static, which really does make debugging a pain. Fortunately this is not the case in Nevada/OpenSolaris.
Looking at the other lwps is as simple as listing the lwp id in front of the regs dcmd and repeating what we just did. I won't go into how I worked out which of the static routines we were executing in for the other lwps in cond_wait(), save to say that there are only a couple of places that make that call in the code, and matching up the assembly around the locations to the source (especially looking at called functions), makes this not too difficult.
Posted at 04:46PM May 04, 2009 by Alan Hargreaves in Solaris |
Tuesday Apr 21, 2009
Oracle buying Sun, who woulda thought
Looks like I get to work just a little closer with some of my VOSJEC colleages (both past and present).
Posted at 07:46AM Apr 21, 2009 by Alan Hargreaves in General | Comments[2]
Wednesday Apr 15, 2009
New Song - That's Just the way that it goes
Finished recording this about 2 hours ago. It's now available on Myspace and The Sixty One as a download. I've just made the 128k mp3 available under the following license:
That's Just The Way That it Goes by Alan Hargreaves is licensed under a Creative Commons Attribution-Noncommercial-No Derivative Works 2.5 Australia License.
Which basically means as long as you don't want to modify it, as long as you don't want to make money out of it, and as long as you attribute it; you can download and pass it around as much as you like.
You can also listen to a copy from thesixtyone.com here.
The technical side of things.
I learned some things while recording this.
The drums I created with Rhythm Rascal (and I will register this shareware when I have some spare cash). I found this application incredibly easy to use and it produced a really nice wav file that I could import into reaper. I could have saved as midi, but I found I liked the samples that it used for the drums better than anything else I had.
The Bass line I did up in the midi editor in reaper using a bass sample from the Kore midi set (free download).
Now the guitar, ... big lesson number 1. Put new strings on the guitar. I could not get a decent recording of the guitar with month old strings on.I also couldn'd get the exact sound I wanted inside reaper, so I ended up recording the guitar (and actually the vocals too) through my Digitech RP-150 with some hall reverb, bright EQ and slight compression.
The other really big lesson I learned is just how absolutely essential it is to use compression given the huge dynamic range of an acoustic guitar. That made an enormous difference.
In order to keep a decent strum going through the whole song, I recorded some incidental stuff for the guitar as well.After all that was done it was time to lay down the vocal. I set up the Behringer C-1 at head level and put a pop filter in front of it and kicked offf the recorder. Wow what a difference it makes to sing along against a full backing. It really helped to get into the feel of the song and I was bopping along while singing. Same thing adding the harmonies to the chorus.
All in all, I'm extremely happy with how this turned out and I hope you enjoy it too.
Alan.
Posted at 03:57PM Apr 15, 2009 by Alan Hargreaves in Music | Comments[7]
Tuesday Apr 07, 2009
Daaaaaaaad, the computer isn't booting
These were the words that my 10 year old boy yelled to me on Sunday.
I'm documenting this as I tried to imagine facing this as an end user, rather than as a Solaris kernel support engineer, and shuddered
The machine he is talking about is the OpenSolaris box that I installed for them and recently upgraded to SRU4 on Friday (more on supported updates shortly).
The box (silver) had been sitting at the boot load screen (those of us old enough to remember the original Battlestar Galactica would refer to it as the cylon screen) with the disk light hard on and the disk rattling away threatening to send itself off into hyperspace. It had apparently been like this for a few hours (he lost interest and went to watch TV before thinking to tell me).
He'd tried resetting it and it didn't help.
"OK", I thought, "I've just upgraded the box, maybe there was a problem with SRU4, let's boot into the prior boot environment." Easy enough to do, just reset and select the prior environment in grub.
No dice. Same issue.
Failsafe boot? No it appears that we don't have one of those.
Right, a single user boot. I want to have a look at what is going on on the console, So we need to get rid of the graphics crud at the start.
This isn't too hard. Have a look at the options in the text boot to be sure, but all I did was hit 'e' (edit) in grub, d (delete) the splash and graphics lines, e (edit) the unix line to take out the ",Graphics... " stuff off the end of the command, hit Enter to go back a screen then hit b (boot) and watch what happens.
I didn't have to wait long.
Let me give you a little more background on this machine. It really is scrounged together. The root pool consists solely of a 4gb disc removed from an ultra 10.
The root zpool was 100% full. The disc full messages scrolled for a while.
OK, once we waited for a few minutes we got the prompt asking for a login name and password to drop us to a root single user. OK, let's go looking for where the space issue is.
A 'zfs list' showed me that rpool/export/home was a little larger than I expected. Unfortunately, as the pool was full, I couldn't mount those. No worries, let's poke around on / to try to find something to remove to make enough space so we can mount things.
A good place to look for such space on a workstation is in /var/log, specifically the Xorg logs.
Let's remove one of those, ....
Bzzzzzt wrong.
Copy on write, .... In order to unlink a file we need to write a new block for the directory entry. Oops no free blocks.
The trick is to lose the space without having to rewrite the directory entry. We need to truncate one of the logs.
# : > Xorg.0.log.old
Much better. For good measure I zapped Xorg.0.log as well.
OK, that looks much better.
Let's mount rpool/export/home and have a look.
# zfs mount rpool/export/home
Ahhh, the kids home directories each have a largish core in them. Remove those, unmount /export/home. Now, as I mounted rpool/export/home and not rpool/export, a directory got created in /export. We need to remove that or the filesystem/local service won't start correctly (it will complain about /export having stuff in it).
Logout of that shell and the system continues on to milestone=multiuser and we're good again and Jake is off to do his daily moves in Kingdom of Loathing and resume his Club Penguin.
Posted at 01:26AM Apr 07, 2009 by Alan Hargreaves in OpenSolaris | Comments[15]


