Archive for the ‘Technology’ Category

Using osc build to make a jail on openSUSE

Thursday, March 11th, 2010

Before I start let me say that there may be easier or more direct ways to do this.  This has the advantage of being pretty easy for me to do.  I’m not going to discuss why you might want to do this, or what a jail is, etc..

You can get the most recent osc and build tools from the openSUSE:Tools repository.  You will also need an account on the build service.

Create an empty directory
mkdir jail/

Go into that directory and create a dummy RPM .spec file
cd jail/
vim jail.spec

Name:           jail
Version:        0
Release:        0
Summary:        Jail
License:        Jail
Group:          Jail
BuildRequires:  vim gdb glib2-devel zypper
BuildRoot:      %{_tmppath}/%{name}-%{version}-build

%description

%prep

%build

%install

%clean
rm -rf %{buildroot}

%files
%defattr(-,root,root)

%changelog

The BuildRequires: tag is where you specify which packages you want installed in your jail, what I have listed there is just an example.

Also create an empty .osc directory (this prevents an ugly bug where the jail tries to delete itself)
mkdir .osc/

You’ll need to be logged in to OBS if you aren’t already
osc ls
Enter your credentials at the prompts

If for some reason that didn’t work you may need to put your password into your .oscrc file
vim ~/.oscrc
Toward the bottom…

[https://api.opensuse.org]
user=<YOUR USERNAME>
pass=<YOUR PASSWORD>

If your password changed you may need to delete any lines that say passx=<GARBAGE>, or manipulate your GNOME Keyring.

Now you should be ready to build a jail

osc build --local-package --root=</path/to/new/jail> --alternative-project=openSUSE:<VERSION> <ARCH>

<VERSION> is, for example, 11.2
<ARCH> is only needed if you want a different arch (i586 on an x86_64 machine)
</path/to/new/jail> is where you want the tool to put your jail (not the directory you’re in!), I use /var/tmp/jail
You may be prompted for your root password
When the jail is built (assuming it worked) it will fail complaining about an empty package, ignore that and get on with your life: you only wanted a jail, not a package.

At this point you can chroot into your jail
sudo chroot /path/to/new/jail
or if you are changing architectures…
sudo linux32 chroot /path/to/new/jail

Yay, you’re done!

Mono Appliance for VirtualPC

Thursday, July 2nd, 2009

With the release of Mono 2.4.2 we are introducing an appliance image for Virtual PC. This makes a lot of sense for Mono as one of our favorite target user groups is .NET developers looking to get an application running on Linux. Many of these developers use Virtual PC.

All three of our appliance images (LiveCD, VMware, and now VirtualPC) contain exactly the same packages, etc. In fact our .vhd is actually just the .vmdk from the VMware appliance built in SUSE Studio and converted using qemu-img (requires a recent version, possibly unreleased). And actually the .vmdk we provide boots just fine under other VMs such as QEMU and VirtualBox. Linux can be nice that way.

We hope this will make Mono even easier for .NET developers to use but you may want to use VMware anyway.  The VirtualPC appliance has some problems:

  • There are no “VM Additions”.  They exist but they are not open source and IIRC the ones that exist don’t work on a recent Linux. So no handy stuff like drag-and-drop or mouse-in-mouse-out.
  • Things can be a bit slow / choppy at times.  This clears up after a while or maybe after a reboot.  Not sure what’s going on there.
  • We added some kernel parameters to make things run a little better: noreplace-paravirt i8042.noloop clock=pit. Joseph Hill dug these up on the Internet somewhere.
  • On the new Windows Virtual PC (the one for Windows 7) you don’t get a network device by default.  As far as I can tell we’re the only project shipping a .vmc configuration file with our .vhd anyway so the expectation seems to be that you will configure your own VM.

Find this and other fine Mono products at http://go-mono.com/mono-downloads/.

Grandstream HandyTone 503

Thursday, June 18th, 2009

My current SIP ATA is the HT503 from GrandStream. I bought it because if I’m going to use VoIP at all at home I need to have a reliable fallback, at least until all my ducks (ISP, router, QoS, ATA, etc.) are in a row. And realistically I’m probably going to be paying huge monthly fees to Qwest for nothing but local phone service for the rest of my life.

ht503

The HT503 has an FXS and an FXO so that it sits between our phones and our land-line. This means I can pick up the phone and place a call on the public switched telephone network (PSTN) or on the Internet depending on how I dial. It also means that calls coming in from the Internet or the PSTN all ring the same phones. Thus I can try VoIP (and get my wife to try it) without disrupting our lives. (It can also do fun things like let me call in from the Internet and place a local call on my land-line but I don’t use those features.)

The dark side to this story is that my first HT503 completely failed it’s firmware upgrade and would not boot at all. Two more shipping charges later I had another HT503 which I upgraded far more carefully. Why would any embedded device not have some fail-safe recovery method? Dunno.

To add insult to injury when I finally got the new device configured I found that it would not dial on the PSTN reliably. I tried to tweak settings to get it working but I failed and had to pull the plug. Months later I saw that there had been many firmware revisions since my last try so with renewed confidence I upgraded and tried again. Sadly I got the same result: when I’d dial a ten-digit phone number I would get a message from Qwest that I had dialed wrong.

It turns out this was actually my fault (sort of). Recently central Utah was moved to ten-digit dialing to accommodate a new area code they decided to overlay on the same region. I decided it would be nice to have the device do the right thing when a seven-digit number was dialed, so I programmed the dial-plan to add 801 to the front of any seven-digit number. It turns out, though, that GrandStream dial-plans are not interpreted the way I thought they were. For some reason when I dialed a ten-digit number the device would truncate the number and slap 801 on the front resulting in a new, wrong, ten-digit number (801-801-5550 if I dialed 801-555-0123). I still don’t know how to write the correct dial-plan for this. After dropping the seven-digit rule everything works.

Actually there was one more brief problem where an incoming PSTN call would ring but when the person answering the call picked up they would hear a busy tone and the caller would continue to hear ringing. That problem went away. I’m not sure if I did something to fix it. When the HT503 makes a connection between it’s FXO and it’s FXS it does so by having the one port call the other on the local loopback interface. The answer to this mystery may be in that architecture somewhere. One thing it means is that if you select a lossy codec for both interfaces it seems to actually encode and decode the audio even though it’s on the same device.

Overall I’m actually going to hazard recommending this device. It’s compact, affordable, full of great features, and so far (apart from my own mistakes) has been very reliable.

Mono 2.4 Appliance

Monday, March 30th, 2009

I am very pleased to announce the availability of the Mono 2.4 VMware Appliance and LiveCD. The new image is based on openSUSE 11.1 and every known appliance-specific bug has been fixed. There are many software updates as well:

  • Banshee 1.4.3
  • gbrainy 1.1
  • GNOME Do 0.8.1.3
  • MonoDevelop 2.0
  • Monsoon 0.20
  • Tasque 0.1.8
  • Tomboy 0.14.0

By some accounts this is definitely the best Mono Appliance release yet. Get if from the mono downloads page and report any bugs you find.

Screenshot

If you have a nice open source .NET (or ASP.NET) application you’d like to see added to the appliance please leave a comment.

Built with SUSE Studio

Sound in VMware with openSUSE 11.1

Thursday, February 26th, 2009

Solved: I noticed the other day that Scott Reeves, who works just down the hall from me, owned most of SUSE’s PulseAudio bugs. He gave me the answer to this perplexing problem. The cause is the new “glitch free” code in pulse (ironic? yes!) which can be disabled by adding tsched=0 to the load-module module-hal-detect line in /etc/pulse/default.pa.

load-module module-hal-detect tsched=0

I need help! For the Mono 2.4 VMware Appliance we have upgraded to openSUSE 11.1 but for some reason audio plays to fast. It seems to have something to do with PulseAudio. If we remove pulse then audio plays at a normal rate but then Moonlight doesn’t play audio at all. If we can’t get this all fixed before release we will have to revert to openSUSE 11.0.

Sound in Linux has never been great and it never will be if we don’t work through these problems and plunge forward. If you care about Mono or openSUSE or PulseAudio or VMware please help me fix this bug.

Mono 2.2 Appliance

Tuesday, January 13th, 2009

The Mono 2.2 LiveCD and VMware Appliance images have been released and contain a number of improvements over previous version.  Aside from the improvements in Mono itself the new appliance includes the following:

  • Moonlight 1.0 Beta 1 – the open source implementation of Microsoft’s Silverlight 1.0, installed in such a way that when 1.0 Final is released the update mechanisms in Firefox should allow you to update it.
  • MonoDevelop 2.0 Alpha 2 – including integration with the Mono debugger and many other new features.
  • Smuxi 0.6.3 – an excellent Mono-based IRC client, configured to log you into the #mono channel.
  • GNOME Do 0.6.1 – the super-slick launcher thing we love, already running on your desktop.

Mono-2.2 Appliance

The best thing about this version (for me mostly, but you enjoy some of the benefits) is that it was built using SUSE Studio.  Studio is a service that allows people like me to customize and build appliance images easily and inspiringly quickly.  It’s hard to put into words how much I love SUSE Studio.

SUSE Studio

Studio not only makes the process of building an appliance faster and easier, it makes things possible that weren’t possible before.  See, the development cycle for appliances is normally long and painful.  You have to make a change manually, modifying overlay files or writing first-boot scripts, then build the appliance image (which can take hours depending on how you are set up), test the change, and start all over again.  You can try to do a bunch of changes at once but you have to go through that whole cycle several times.  It can be very frustrating and costly so you end up choosing to not make the improvements you’d like to make. We made many of those choices in previous releases. But Studio is so fast and so easy that you can really just play! Try various approaches to solving your problem and see what works best.

Mono on SUSE Studio
Studio also facilitates customizing the appearance of your appliance.

How does Studio make building appliances so easy? Mainly, but not exclusively, through a feature called Testdrive. Testdrive allows you to test your changes immediately by running your appliance in a virtual machine, viewing the console in your web browser. You can also make changes inside Testdrive and then click on the Modified Files tab where you can see what what was changed and add it to the list of overlay files.

If you find a problem with the Mono 2.2 Appliance please file a bug and I will try to fix it. Thanks to SUSE Studio it won’t be so difficult to fix those bugs!

DialCentral

Tuesday, January 6th, 2009

If you’re lucky enough to have a GrandCentral account and use Linux you’ll likely be very pleased with a little application called DialCentral.  Originally written for the Nokia Internet Tablet, DialCentral lets you use your GrandCentral account to make calls to arbitrary numbers.  You can already do that through the web interface but a dialer is much more convenient, especially on an Internet Tablet or Netbook.  It also supports your GrandCentral and Evolution contact lists and your call history.

DialCentral

If you use openSUSE there are packages of DialCentral available in my home repository in the openSUSE Build Service.  If you use Ubuntu or Debian the Maemo package should work for you.  Source code is also available, of course.

And because everyone loves speculation: I think Google intends to integrate GrandCentral with both GoogleTalk and Android some day. It’s odd that the only VoIP supported by GC for now is GizmoProject, but this is clearly just an artifact of the pre-google years. Some day soon you will be able to make POTS phone calls from Google Talk, and probably from Gmail.