Thursday Dec 03, 2009

zfs deduplication

Inspired by reading Jeff Bonwick's Blog I decided to give it a go on my development gates. A lot of files are shared between clones of the gate and even between builds, so hopefully I should get a saving in the number of blocks used in my project file system.

Being cautious I am using an alternate boot environment created using beadm, and backing up my code using hg backup (a useful mercurial extension included in the ON build tools)

I'm impressed. As it works on a block level, rather than a file level, so the saving isn't directly proportional the number of duplicate files. But you still get a significant saving, albeit at the expense of using more CPU. It needs to do a sha256 checksum comparison of the blocks to ensure they're really identical.

Enabling it is simply a case of

 $ pfexec zfs set dedup=on <pool-name> 

Though obviously you can do so much more. Jeff's blog (and the comments) are a goldmine of information about the subject.



Wednesday Sep 30, 2009

CPU used up after an upgrade

Just a quick blog, so that hopefully when you google for this you will find something and not spend hours debugging it.

I just upgraded to OpenSolaris B123, and everything worked fine, however when I logged out and back in again (something I rarely do, so it might have been present before), the machine was on it's knees. As usual I started the debugging process

# prstat

show svc.configd at the top

# truss -p `pgrep svc.configd`

 just showed it running door_return() a lot. This implies that something is talking to svc.configd.

On reflection I could have dtraced the door_call and door_return calls and gathered the execname of the process it was talking to, but I spotted before that, that my pid values were going up quickly. So clearly there was a process starting up, talking to svc.configd and exiting and repeating.

 After a few minutes digging around I found

desktop-print-management-applet calling ospm (OpenSolaris print manager) which was doing svcprop.

A colleague then pointed me to http://defect.opensolaris.org/bz/show_bug.cgi?id=10863 which described the problem and gives a workaround

Fortunately this should be fixed soon


Tuesday Sep 15, 2009

Debugging fmd plugins

This is really just a note to myself as I keep forgetting the options. I'm developing some new plugins for fmd. When they don't work, there's loads of additional data you can get out which isn't there by default, and you can add debug print statements to your code like

fmd_hdl_debug(hdl, "Crash dump instance %ld\\n",
	    cdp->scd_panic_instance);

But these won't be visible unless you fmd in a debug mode. First you need to disable fmd

# svcadm disable fmd

Then you need to run fmd with the right options. Running it in the forground also helps with starting restarting it

# /usr/lib/fm/fmd/fmd -o fg=true -o client.debug=true

If you want to see what fmd it's self is doing add the -o debug=all flag

# /usr/lib/fm/fmd/fmd -o fg=true -o client.debug=true -o debug=all

 Then you see those lovely debug messages.

Wednesday Jun 10, 2009

Comparing dtrace output using meld

Comparing dtrace and other debug logs using meld

meld is a powerful OpenSource graphical "diff" viewer. It is available from the OpenSolaris IPS repositories so can bee installed from the packagemanager in OpenSolaris or simply by typing

   $ pfexec pkg install SUNWmeld

It is very clever at identifying the real changes within files and highlighting where the difference start and end.


This example is using the output of two dtrace runs, tracing receive network activity in the a development version of the nge driver, once when it works, and once when it doesn't, trying to identify a bug in a development version.

First off the dtrace script is

   $ cat rx.d 
   #!/usr/sbin/dtrace -Fs
   fbt::nge_receive:entry
   {
       self->trace=1;
   }
   
   fbt::nge_receive:return
   /self->trace==1/
   {
       self->trace=0;
   }
   
   fbt:::entry
   /self->trace==1/
   {
       printf("%x",arg0);
   }
   
   fbt:::return
   /self->trace == 1/
   {
       printf("%x",arg0);
   }

This very simply traces all function calls from the nge_receive() function.


So I ran it twice, once when the network was working, and once when it wasn't and simply ran meld over the two files.

   $ meld rx.out rx.works.out

This throws up a gui as seen here





It's worth loading full size. What you see is on the right a large area of probes that have fired that do not exist within the one on the left. That implies a lot of code run in the working case that is missing from the failing case.

This is a picture of source code of nge_receive()



You can see it essentially does two things

   o Calls nge_recv_ring()
   o If that succeeds calls mac_rx()

Looking at the meld screenshot you can see the big green area starts at mac_rx. So in the failing case nge_receive() doesn't call mac_rx() (that'd explain why it fails to receive a packet).

Why doesn't it? Well it implies that nge_recv_ring() returns NULL. nge_recv_ring() is supposed to return an mblk, and it hasn't. Why is that? well looking in to the blue and red highlighted area in the meld window, we see another area in the working case that is missing in the failing case. Hey presto, this bit is the call to allocb(). allocb() is used to allocate an mblk.

So we know in the failing case the nge_recv_ring() function fails to allocate an mblk. Now just need to work out why.

I found this a powerful way of viewing complex data and quickly homing in on differences.

Monday Jun 01, 2009

It's Finally Here

I've decided I really need to get back to writing a blog occasionally, and what better day to choose than June 1 2009. Why? Well today we release OpenSolaris 2009.06, the latest OpenSource release of our operating system Solaris.

I know this all sounds a bit marketing, but actually there are some really good reasons for running OpenSolaris on your own machine.

First off, it is the most secure OS I know of. No need to Virus protection.

Second, it just works (mostly). I've just got a new Macbook Pro, I always find it easier to do development work on Solaris than any other platform so I like to run OpenSolaris. It installed pretty much seamlessly (just having to change the EFI disk label using the macOS fdisk utility as described here). The only thing that doesn't work out of the box is the Wifi - which is a pain. It's a broadcom chipset so I've got hold of a PCI3/4 Atheros card which works well

Third, all the development tools I need (and indeed anyone developing for or on Solaris) are available within the standard repositories. I found this page which is how I set up my laptop as a build machine.

From a day to day computing perspective it does everything I need. Mail, Web, chat all included, OpenOffice in the repositories for free (and simple) download. A new Media player in Elisa (in the repo), though unfortunately you have to buy the codecs for many common video formats.

So the next questions is, is it any different from 2008.11? Well it's hard for me to say as I've been upgrading every few weeks to the latest development builds (by using the opensolaris.com/dev repository). But I did install it fresh in side a VirtualBox VM and was impressed with the speed of the install. The auto installer is now more complete and can install SPARC machines (necessary for a good proportion of our customers). There are networking improvements, but generally the speed and usability is what you'll notice.

Oh and Fast reboot. Makes it much quicker to shutdown or reboot a machine.

Today I'm attending Comunity One (or C1 as we call it) and much more will be discussed about OpenSolaris and all our other OpenSource development efforts. I'll try to remember to write a blog about it (though don't hold your breath on recent form :-)




Monday Sep 22, 2008

In praise of the blogosphere - Upgrading OpenSolaris past build 91

I can't believe it's 4 months since I last blogged. Oh well it's been a hectic time. And this is just a quick not for my own memory jogging purposes really. I have been having a pain of a time upgrading from OpenSolaris build 91. I've been away alot (fantastic holiday thanks very much) and had been working on my laptop under VirtualBox. Any way. I would do my usual

$ pfexec pkg refresh --full
$ pfexec pkg install SUNWipkg
$ pfexec pkg image-update

However at the end of downloading all the packages It would give me an error like

pkg: attempt to mount opensola���2 failed.
pkg: image-update cannot be done on live image

I hadn't really given it much thought for a while but when I did google the message it took me straight to this page

http://louisbotterill.blogspot.com/2008/07/open-solaris-to-b93.html

Which pointed out the missing information(can't workout how I missed it - may be it was while I was away)

http://defect.opensolaris.org/bz/show_bug.cgi?id=2387

So any way upgrading it on a copy of the BE really helped and I am now on the latest bits. Thanks to Louise Botterill for the tips






Tuesday May 20, 2008

Interesting view on making money in business

I had the chance to be a key note speaker at PROMISE (and ICSE workshop) last week. The group uses datamining and A/I techniques to look for patterns and make predictions on a variety of things, like where in code defects might occur, or how much effort a project might entail. 

I was there because we had  a project a few years a go running to predict which bugs might cause customer escalations, using similar techniques. I was responsible for implementing the fixing of these bugs proactively. My talk was geared around how to put a business case together and run such a project, and ultimately why in this case it was wound up before major benefits were realised.

There were loads of other great talks and papers, but the other keynote speaker, Murray Cantor from IBM had some interesting points, one of which I wanted to pull out here.

He said that there are three things you can monetize. Innovation, Customer Relationships, and Cost structure. For example, you can Make money by having the first product to market, or a good close relationship with the customer or buy doing it cheaper than anyone else. He  drew this in a triangle like this

 Monetize Triange


So this got me thinking as to where Sun fits in to the picture. First off I'd say it's a different place from IBM who put huge resources in to having a close relationship with the customer (Murray indicated he felt IBM was somewhere on the Innovation/Customer line). However It isn't purely at the Innovation point either. We provide Innovative technologies to help lower costs both for our customers (hey Free Software anyone - check out http://opensolaris.com), but also by automating things like system management thus removing cost and complexity (Take a look at our xVM strategy to merge virtualization and system management at http://openxvm.org, thus removing some of the headaches to running a virtual data center). Oh and did I mention our coolthreads hardware? So I think we're probably somewhere between the Cost and Innovation points.

I'm not saying this is a full theory of business, but I found it a useful thought experiment to see the different value propositions of various companies business models.


Thursday Feb 14, 2008

Debugging sparc really (and I do mean really) early boot problems

For some work I've been doing I've had to work out how to debug the sparc boot process, before you can get to kmdb. And yes you can do it, it's just not that easy. So I thought I'd put it on my blog, in case I lose the notes I made in a mail to myself, and it might be of interest to some of you.

First off get as much of the diagnostics available from the OBP as possible 

 {1} ok setenv fcode-debug? true
fcode-debug? =          true
{1} ok
{1} ok setenv diag-switch? true
diag-switch? =          true
{1} ok reset-all

The reset-all is important as it saves the options the the nvram.

Now we try and boot it up - before anything is loaded. Note this requires a debug kernel, but if you're playing in this space and you're on sparc then you probably know that already

{ 1} ok boot disk0 -F kernel/unix -H 

You will see the boot fail like this

Rebooting with command: boot disk0 -F kernel/unix -H                 
Boot device: /pci@1c,600000/scsi@2/disk@0,0  File and args: -F kernel/unix -H
ufs-file-system
Halted with -H flag.
Warning: Fcode sequence resulted in a net stack depth change of 1

The file just loaded does not appear to be executable.

This is expected and how we get to start playing with breakpoints really early on. Note the unix module is not yet loaded so we now have to load the unix module. To do this we load the boot forth code and copy what it does

{1} ok see do-boot
: do-boot  
   parse-bootargs halt? l->n if   
      " Halted with -H flag. " type cr exit
   then  get-bootdev load-pkg mount-root zflag? nested? invert and
   l->n if   
      fs-name$ open-zfs-fs
   then  load-file setup-props exec-file
;

So by copying what do-boot does we can intercept the boot process

{1} ok get-bootdev load-pkg mount-root
{1} ok load-file setup-props
Loading: /platform/SUNW,Sun-Fire-V240/kernel/unix
Loading: /platform/sun4u/kernel/unix

{1} ok 

Now we can start some more magic. A DEBUG kernel will check the stop-me property in kobj_start(). This is something we have to populated in the boor properties which is why we've done all this messing around to get to this point

{1} ok cd /chosen
{1} ok 00 0 " stop-me" property
{1} ok .properties
stop-me                 
fs-package               ufs-file-system
whoami                   /platform/sun4u/kernel/unix
impl-arch-name           SUNW,Sun-Fire-V240
elfheader-length         001c55c0
elfheader-address        51000000
bootfs                   fed85a80
fstype                   ufs
bootargs                 -F kernel/unix -H
bootpath                 /pci@1c,600000/scsi@2/disk@0,0:a
mmu                      fff74080
memory                   fff74290
stdout                   fed97b90
stdin                    fed97ea8
stdout-#lines            ffffffff
name                     chosen

We can now start the boot process using exec-file. It will stop immediately because of the stop-me property (ctrace gives me the stacktrace)

{1} ok exec-file
Type  'go' to resume
{1} ok ctrace
PC: 0000.0000.f004.81e4
Last leaf: jmpl  0000.0000.f005.d274   from 0000.0000.0100.8aec client_handler+70 
     0 w  %o0-%o7: (f0000000 16 f0000000 6d 73 6 fedcb441 1008aec )

call 0000.0000.0106.bea8 p1275_sparc_cif_handler        from 0000.0000.0106.7de8 prom_enter_mon+24 
     1 w  %o0-%o7: (f005d274 fedcbda8 1839400 106af00 185fc00 f005d274 fedcb4f1 1067de8 )

call 0000.0000.0106.7dc4 prom_enter_mon        from 0000.0000.0101.9ed4 kobj_start+30 
     2 w  %o0-%o7: (0 10bdaf0 f002d224 1 1817700 1821dd8 fedcb5c1 1019ed4 )

call 0000.0000.0101.9ea4 kobj_start        from 0000.0000.0100.7ac8 _start+10 
     3 w  %o0-%o7: (f005d274 0 0 0 10bd800 181fc00 fedcb701 1007ac8 )

From this point we have access to the unix symbols and can start setting break points. For example

{1} ok load_primary +bp
{1} ok go
0000.0000.010a.c7b0 load_primary         save        %o6, ffffffffffffff30, %o6
{1} ok ctrace
PC: 0000.0000.010a.c7b0 load_primary    
Last leaf: call 0000.0000.010a.c7b0 load_primary        from 0000.0000.010a.b46c kobj_init+d8 
     0 w  %o0-%o7: (1879400 0 fedcbe78 184f000 1879340 181ac00 fedcb111 10ab46c )

call 0000.0000.010a.b394 kobj_init        from 0000.0000.0101.9fd0 kobj_start+12c
     1 w  %o0-%o7: (f005d274 185c800 184f000 fedcbe78 184f3f8 184e400 fedcb5c1 1019fd0 )

call 0000.0000.0101.9ea4 kobj_start        from 0000.0000.0100.7ac8 _start+10 
     2 w  %o0-%o7: (f005d274 7 0 51000040 51000000 51000040 fedcb701 1007ac8 )

I'm interested in getting some more module loading debug info out so lets set moddebug to 0xf

{1} ok moddebug l?
0

(displays current value of a long)

{1} ok F moddebug l!
{1} ok moddebug l?
f
{1} ok

(set the long to be F then display it again)

Now lets see what additional info I get

 {1} ok go
/kernel/fs/sparcv9/specfs symbol _info multiply defined
/kernel/fs/sparcv9/specfs symbol _init multiply defined
Returned from _info, retval = 1
init_stubs: couldn't find symbol in module fs/specfs
(Can't load specfs) Program terminated

OK That doesn't tell me much more but you get the idea. You can access the symbols - set break points, set variables. In addition you can  dump out memory with dump, single step with step and loads of other things that you might want to do, but this at least will act as a memory jogger for me

Let me know if you found this useful.

Chris















Thursday Nov 01, 2007

Installing Indiana/Opensolaris

For a few days recently I have been looking at the future of packaging, pkg(5) or IPS. IPS looks really powerful and quite simple. It will allow us to generate fixes and deliver them much more simply. What I've been thinking about is how and when will we generate fixes using this mechanism.

Any way as a result I've signed up for pkg-discuss-AT-opensolaris-DOT-org and indiana-discuss-AT-opensolaris.org. Both of these are very active and full of interesting discussions (and arguments) and ideas. Anyway, it's not surprising there has been so much activity recently. Today indiana-discuss announced the launch of the developer preview of the opensolaris binary distribution. So I tried it out on a couple of machines. My laptop first, an Acer Ferrari 4005. Everything just worked. The LiveCD booted up, really quickly actually, well done the team for getting the performance up so well. Even wireless worked, though that's probably because I've already swapped the Broadcom wireless miniPCI card for an Atheros one. Unfortunately I have no spare slices available on the laptop so I move on to my next machine.

This is my home PC, usually running WindowsXP for the kids, it has never successfully Solaris for reasons that will become apparent. I have just upgraded the hard drive so theres 60Gb partition free for me to do some damage.

Booting the livecd failed, or rather Xorg failed to display anything. My machine is an old Athlon XP2600 with an AGP radeon x1600pro graphics card. Great for games, but unfortunately the Solaris/OpenSolaris Radeon driver doesn't support it. Fortunately Stephan Hahn blogged about how to get Xorg to use the vesa driver from the livecd. With that in place I got the gnome gui up and gave the install a go.

The installer uses dwarf-caiman, a cut down slim line installer which is nice and easy to navigate. The install itself was really quick - there's only a CD's worth installed. The rest should be added later over the web from the IPS repository. Unfortunately that is where my old machine creaked too much. The onboard ethernet is an nforce2 gigabit ethernet. It should work with the nge driver but I think it's just too old. I tried adding an alias for it using 

# add_drv '"pci10de,66"' nge

 
But even though I could plumb it there was no traffic going through it :-( I guess I'll have to find another ethernet card.

The install claimed it failed, but it did come up fine after a reboot, though I had to add a user again at single user because the useradd hadn't worked. Warning here. root is just a role that users can take on - so you can't log in as root as you might expect from a "normal" solaris system.

I'm pretty impressed. Nice installer, lightweight liveCD to get you started. zfs root and pkg(5) to add new stuff (or it will when I get a new ethernet adapter. I wonder if I can get one of my old USB wireless sticks to work :-). Plus it seems to be more responsive under OpenSolaris than windows XP.

 Do give it a go, it is one vision of the future of opensolaris

 

Chris 

 



 

Monday Sep 24, 2007

On the road again

So I'm on the road again. The Sun Tech Days this times I'm in Rome and Milan is later in the week. I've just talked about "What is OpenSolaris" and "OpenSolaris Virtualization"

It's great to connect with real people who do or want to use OpenSolaris and interest in  out xVM and Zones based technologies.

Please take a look at the link and the presentations should be uploaded in the next few days.

Any way - great to be in Rome, just wish I was closer to the center. I made the trek in to see the Colosseum. Some say it's not as impressive as they were expecting. I have to say I had no expectations and was mightily impressed.  I will post a link to some photos when I've uploaded and checked them

 


 

 

 

 

Thursday Jul 19, 2007

Starting out with Solaris on Xen

As you may have seen from the announcement and John's blog we have a new set of Solaris on Xen bits available for download. A lot has changed in the (almost) year since the last drop. Certainly things are a lot easier set up than they were back then.

First big difference I notice is that you can install these bits straight from the DVD which means no mucking around with bfu.

Once it is installed also you have the joys of much newer Solaris builds including improvements to networking and removable media (but that isn't the point of this post).

Of course the thing you really want to do is run multiple operating systems so (while there are documents here I always think it's nice to see peoples use cases. Find out how they got things working.

I'm going to use zfs for storage so I made sure I had a large amount of space available for a zpool

# zpool create guests c2d0s7

First gotcha. After install the default boot entry in the grub menu.lst is for solaris on metal (ie not booting under Xen). You can change that before rebooting or select Solaris dom0 from the grub menu.

Check you are running under Xen by looking at uname -i

dominion# uname -i
i86xpv

(dominion is the name of my host)

If that says i86pc then you're not booted under Xen, i86xpv is the new platform modified to run on Xen.

I found that I accidentally booted on metal first time, and when I then booted under Xen the services weren't enabled. I had to manually enable them. (If you boot straight in to Dom 0 they start.

dominion# svcs -a | grep xctl
online         10:51:04 svc:/system/xctl/store:default
online         10:51:11 svc:/system/xctl/xend:default
online         10:51:11 svc:/system/xctl/console:default
online         10:51:16 svc:/system/xctl/domains:default

If it says anything other than online, enable them with

# svcadm enable "service name"

I use a zpool to create my disk devices for my domains. This has huge advantages, such as the ability to quickly snapshot a domain (say after install) so you can always return to that state. Also you can clone a snapshot so if you want to have many similar domains (say multiple solaris development environments) you can clone an install and then only the changes between the domains are stored (zfs being copy on write).

To set this up you need to create a zvol on your zpool

# zfs create -V 10G guests/solaris-pv

This creates a zvol of up to 10G in size. Unused space is still free for other users of the pool to allocate.

You can access the device for this zvol using

/dev/zvol/dsk/guests/solaris-pv

So that's simple - how do we install a Solaris domain? First off I create an install python config file. (Soon there will be a tool to manage the install for you but that's not really ready yet).

This python file describes some simple things about the domain like where the disk and cdrom is.

dominion# cat /guests/configs/solaris-pv-install.py 
name = "solaris-pv-install"
memory = "1024"
disk = [ 'file:/guests/isos/66-0613-nd.iso,6:cdrom,r', 'phy:/dev/zvol/dsk/guests/solaris-pv,0,w' ]
vif = [ '' ]
on_shutdown = 'destroy'
on_reboot = 'destroy'
on_crash = 'destroy'

Name is obvious, and I've copied the iso image to be a file to speed up install.

You can kick off the install just by starting the domain

dominion#  xm create -c /guests/configs/solaris-pv-install.py

This says start the domain and give me a serial console access to it. You then do a normal Solaris install. Once complete you should create a second python file to boot off the zvol. but first I'm going to snapshot it so I can quickly duplicate it (though I really should sys-unconfig it first to make me input the hostname and ip info again.)

dominion# zfs snapshot guests/solaris-pv@install
dominion# cat solaris-pv.py 
name = "solaris-pv"
memory = "1024"
root = "/dev/dsk/c0d0s0"
disk = [ 'phy:/dev/zvol/dsk/guests/solaris-pv,0,w' ]
vif = [ '' ]
on_shutdown = 'destroy'
on_reboot = 'destroy'
on_crash = 'destroy'

and create it with

# xm create -c solaris-pv.py

This then comes up as per a normal solaris boot, if you've given it an ip address during the install or set it to use dhcp you should be able to log in to it using ssh. The networking is effectively bridged, that is to say, you need a real IP address for each domain on the same network as the Dom0.

So the next question I always get is "Can I run windows as a domU". And the answer is "maybe". What we have done up till now is use a paravirualised domU. That is one that has been modified to run on Xen. Anything that would trigger a privileged operation (interrupt, privileged instruction etc) is modified to be a call to the hypervisor. This is nice and fast, but some operating systems haven't had this treatment.

However with the advent of the intel core2duo and Rev F Opteron/Athlon64 (socket AM2) processors, some hardware support for virtualisation has been built in to the chip. This detects these privileged operations and redirects control back to the hypervisor to do "the right thing"

With Xen these are referred to as HVM domains.

Russ is going to be blogging more about these so I won't go in to too much detail, but if you want to know if your system is HVM capable, I wrote this simple program to tell you

dominion# cat hvm-capable.c 
#include < sys/types.h>
#include < sys/stat.h>
#include < fcntl.h>
#include < unistd.h>
#include < string.h>
#include < errno.h>
#include < stdio.h>

static const char devname[] = "/dev/cpu/self/cpuid";

/\*ARGSUSED\*/
int
main(int argc, char \*argv[])
{
        struct {
                uint32_t r_eax, r_ebx, r_ecx, r_edx;
        } _r, \*rp = &_r;
        int d;
        char \*s;
        int isamd = 0;
        int isintel = 0;

        if ((d = open(devname, O_RDONLY)) == -1) {
                perror(devname);
                return (1);
        }

        if (pread(d, rp, sizeof (\*rp), 0) != sizeof (\*rp)) {
                perror(devname);
                goto fail;
        }

        s = (char \*)&rp->r_ebx;
        if (strncmp(s, "Auth" "cAMD" "enti", 12) == 0) {
                if (pread(d, rp, sizeof (\*rp), 0x80000001) == sizeof (\*rp)) {
                        (void) printf ("processor is AMD ");
                        /\*
                         \* Read secure virtual machine bit 
                         \* (bit 2 of ECX feature ID)
                         \*/
                        (void) close(d);
                        if ((rp->r_ecx >> 2) & 1) {
                                (void) printf("and processor supports SVM\\n");
                                return (0);
                        }
                        (void) printf("and does not support SVM\\n");
                } else {
                        (void) printf ("error reading features register");
                        (void) close(d);
                        return (1);
                }
        } else if (strncmp(s, "Genu" "ntel" "ineI", 12) == 0) {
                if (pread(d, rp, sizeof (\*rp), 0x00000001) == sizeof (\*rp)) {
                        (void) printf ("processor is Intel ");
                        /\*
                         \* Read VMXE feature bit
                         \* (bit 5 of ECX feature ID)
                         \*/
                        (void) close(d);
                        if ((rp->r_ecx >> 5) & 1) {
                                (void) printf("and processor supports VMX\\n");
                                return (0);
                        }
                        (void) printf("and does not support VMX\\n");
                } else {
                        (void) printf ("error reading features register");
                        (void) close(d);
                        return (1);
                }
        }
fail:
        (void) close(d);
        return (1);
}

SVM is AMD's implementation of HVM while VMX is Intel's.

And just a teaser of what you can expect. (right click - view image to see it full size)

Here you see a solaris paravirtualized vm being installed, a windows vista hvm domain. In the top left corner you can see the virtual machine manager. A new management gui that will help manage domains.

Sorry this is going to be pretty hard to see unless you view the image in it's original size (1600x1200, yes virtualisation helps you use up those wasted resources including screen real estate)

Monday Jan 22, 2007

Using the OpenSolaris Mercurial repository


I finally decided to have a look at how you get OpenSolaris from the Mercurial repository I've been put off by the fact at the office we're behind a fire wall, so you have to pull it through a Socks proxy.

I turns out it's absolutely trivial to do (the instructions are all on the OpenSolaris WebSite.

If you're behind a firewall that requires you to have a proxy for ssh th first thing you need to do is set up ssh to use a proxy. I can't help you with that other than to say add the following line to your ssh config for opensolaris.org

$ cat ~/.ssh/config
Host \*.opensolaris.org
ProxyCommand /usr/lib/ssh/ssh-socks5-proxy-connect -h [Proxy IP address] %h %p
Compression yes

(thanks to Erik and Stephen for pointing out the compression option)
Putting in the IP address of your socks proxy.

Now you can clone the repository

$ hg clone ssh://anon-AT-hg.opensolaris-DOT-org/hg/onnv/onnv-gate
adding changesets
adding manifests
adding file changes
added 3487 changesets with 67524 changes to 43099 files
39742 files updated, 0 files merged, 0 files removed, 0 files unresolved


It took only 37 minutes to my home machine which is much faster than a full bringover in teamware

Now to start playing with some of the build tools
About

Chris W Beal

Search

Archives
« April 2014
MonTueWedThuFriSatSun
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
    
       
Today