528 lines
43 KiB
Plaintext
528 lines
43 KiB
Plaintext
|
|
Episode: 440
|
||
|
|
Title: HPR0440: Developing Through Virtualbox
|
||
|
|
Source: https://hub.hackerpublicradio.org/ccdn.php?filename=/eps/hpr0440/hpr0440.mp3
|
||
|
|
Transcribed: 2025-10-07 20:37:06
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
The following presentation was recorded by View Digital Media at the inaugural South East
|
||
|
|
Linux Fest in Clemson, South Carolina on June 13, 2009.
|
||
|
|
For more information about the South East Linux Fest, visit southeastlinuxfest.org.
|
||
|
|
Hi everyone, I work for Sun and I, my day job is primarily evangelizing Open Slayerist,
|
||
|
|
but this talk is more of a focus on virtual box.
|
||
|
|
So many of you are familiar with virtual box in here, most all of you, so we can just
|
||
|
|
wrap up now.
|
||
|
|
I will introduce virtual box, I know you had some questions, but I'm just curious to hear,
|
||
|
|
what do you use it for?
|
||
|
|
How are you using it today?
|
||
|
|
Why are you using virtual box?
|
||
|
|
Anyone want to shout out reasons?
|
||
|
|
To run stinking windows, because you need, why do you need to run windows?
|
||
|
|
Your wife has an iPod, so just to, yeah, and that's why I've heard reasons for stuff
|
||
|
|
like that.
|
||
|
|
I don't know if anyone is using it specifically for testing in here, a couple of you.
|
||
|
|
Okay, yeah, trying out a new distribution, that's really the focus of this talk is, as
|
||
|
|
a developer, whatever operating system you're using is your development environment, how
|
||
|
|
can you utilize virtual box to actually test your applications on other OS's?
|
||
|
|
And so we're getting into some of the power of virtual box, and then I do combine it,
|
||
|
|
I do, I am running Open Slayerist, if anybody has any questions on that, I'll be happy to
|
||
|
|
answer them.
|
||
|
|
I'm running Open Slayerist as my base OS, so you'll see some of that today.
|
||
|
|
I don't know how many of you are familiar with Open Slayerist in here, there's a couple
|
||
|
|
of you.
|
||
|
|
Oh, fair amount.
|
||
|
|
It should look very familiar to you, if you're familiar with the GNOME desktop, that's
|
||
|
|
what we use.
|
||
|
|
And so pretty much what I already said, we're going to, I'm going to talk about how you can
|
||
|
|
easily develop and test applications using Open Slayerist.
|
||
|
|
Just a little bit about my background, I am X, X, I mean I grew up as sort of a job
|
||
|
|
as a developer, and Sun acquired the company I was working for about 12 years ago, and
|
||
|
|
over the last year I've been working with Open Slayerist, and I started a blog I call
|
||
|
|
the Observatory, where I sort of document my experience with the OS.
|
||
|
|
All right, so my first question for you guys is, who can tell me, so how many of your
|
||
|
|
developers in here, let's start with that question, oh good, okay.
|
||
|
|
What does it mean, anybody?
|
||
|
|
I didn't know what's woot mean, I don't even know.
|
||
|
|
So how many of you are Java developers in here, let me ask you that, all right, so what's
|
||
|
|
sort of Java's claim to fame, what's it, yeah, right once test every way, so Java is
|
||
|
|
right once here, so you got to teach, Java is right once run everywhere, or war, you
|
||
|
|
hear people say, and so the sort of concept behind this presentation is, well you really
|
||
|
|
can't just run everywhere, I mean you're kind of silly if you just write an application
|
||
|
|
and don't actually at least test it on the other operating systems that you plan to have
|
||
|
|
it run on, and so you should really write once, which is true, I mean there's some serious
|
||
|
|
kick-ass Java applications that literally just run on all these different OSs, but certainly
|
||
|
|
they're tested on them as well.
|
||
|
|
And so we're starting off with this sort of poor soul today who has, you know he's built
|
||
|
|
this application and you know it's like hey it doesn't quite look or feel how I expected
|
||
|
|
it to on these other operating systems, you know what's the best way to test that, and
|
||
|
|
so I'm going to sort of talk about a little bit of web application development real quickly
|
||
|
|
just to set the stage, and then we're really, the bulk of the talk is on the testing part
|
||
|
|
that you use in virtual box, okay.
|
||
|
|
So as a developer, you know these logos should look somewhat familiar to most of you,
|
||
|
|
these are kind of a lot of the common components you need, there's Tomcat and Apache and MySQL
|
||
|
|
and some sort of IDE, and so when you get a new operating system, how do you go grab
|
||
|
|
these things?
|
||
|
|
Do you sort of download them, piecemeal, and configure them to work together, you know
|
||
|
|
do you spend like a day getting all that set up?
|
||
|
|
And so one of the things, and this is actually, you know I know this is a Linux conference,
|
||
|
|
and so one of the things we distribute is what we call the Sun Webstack, and it's available
|
||
|
|
for both OpenSlayer and specifically Red Hat Linux, I don't know why it's necessarily
|
||
|
|
limited to that, maybe the way it's packaged, but you basically get this entire bundle
|
||
|
|
of software, one easy install, all configured to work together, we call it the Sun Webstack,
|
||
|
|
it's basically off-mer with the term LAMP, which is you know Linux Apache, MySQL, Pearl
|
||
|
|
Python, and PHP, and so we'd like to use the term sort of SAMP, which is just the Sun,
|
||
|
|
you know, Solaris instead of Linux, basically give you that same sort of capability.
|
||
|
|
And so the command to install the AMPstack from an OpenSlayer's perspective, and this
|
||
|
|
is where things sort of get a little different from maybe what you're used to, is our packaging
|
||
|
|
system, it's just PKG install, and then the actual package name is AMP Dev, and it'll
|
||
|
|
actually go, and depending on what you have, it'll grab what's missing, so if you already
|
||
|
|
have Java of course it'll detect that and skip that piece, but it could take a while,
|
||
|
|
I think it's like 600 megabytes to throw the whole chunk of stuff down there, but once
|
||
|
|
you're done, you sort of have this basic UI set up where you can start and stop your
|
||
|
|
servers and so on and so forth.
|
||
|
|
And so with that, let me give a quick demo, so this is, for those of your developers, anybody
|
||
|
|
use NetBeans in here, the rest of your Eclipse, is that fair, right?
|
||
|
|
So if you're familiar with it all with an IDE, the concept should be relatively the same,
|
||
|
|
but what I thought I would do is one of the also concepts of this presentation is developing
|
||
|
|
software today, and IDE's like Eclipse are NetBeans has become, they've made it so easy,
|
||
|
|
you can really, in a matter of minutes, create some pretty powerful applications, it's
|
||
|
|
kind of mind blowing, and so what I wanted to do was, well let's take that application
|
||
|
|
that runs fantastic from the IDE, and what does it actually take to deploy it and make
|
||
|
|
it run in the real world?
|
||
|
|
And so this isn't really about developing applications, but just to prove that point
|
||
|
|
of how simple it is, one of the components that was, you know, NetBeans was one of the
|
||
|
|
components installed with the WebStack as well as MySQL, and you see here I've gone
|
||
|
|
ahead and created a database called StatusDB, and from within the tool I can connect to
|
||
|
|
this and once connected, it has nice features, I can view it's very simple, it's got two
|
||
|
|
tables, it just, you know, the concept is my manager wanted to know what I was up to,
|
||
|
|
so we have, you know, who the team member is here, so there's about five people in
|
||
|
|
this table, and then, you know, a table of statuses, there's a foreign key relationship
|
||
|
|
there.
|
||
|
|
All right, so given that data, that sort of data structure exists, you know, create an
|
||
|
|
application that you can use to manage that data, to add new status, you know, add new
|
||
|
|
employees, add new statuses per month or whatever, and so simply, you know, the IDEs today
|
||
|
|
allow me to do something like create a new Java desktop application, and we'll call
|
||
|
|
this status, it's a database application, and it sees all my database tables that I have
|
||
|
|
configured, so I'll select Status, and it found the four fields in there, we'll go to
|
||
|
|
the next page of the wizard, it'll even let me create a master detail relationship,
|
||
|
|
so I can select the evangelist, the status table using that foreign key relationship,
|
||
|
|
and now I click Finish, and it's going to sort of generate a bunch of code here, all
|
||
|
|
standard Java persistence API, talking to the database, and again, the real point of
|
||
|
|
this part of the presentation is just to show you how easy the IDEs make it today to actually
|
||
|
|
create a fully functioning application, so at this point I can click Run, and we'll
|
||
|
|
see it start up here in a second, there we go, and you know, it's pretty rudimentary,
|
||
|
|
but it is fully, you know, create, read, update, delete, capable, and I can select these,
|
||
|
|
and I see the status for that person, I can create new people, delete people, so on and
|
||
|
|
so forth.
|
||
|
|
So assuming now, you know, we spent some time, we've cleaned it up, we've added our logos
|
||
|
|
to it, or whatever, the next step is, I'm ready to deploy it, so it's, it launched from
|
||
|
|
within NetBeans, no problem.
|
||
|
|
So now, one way that I could deploy this app to my team, say I wanted my team to use it
|
||
|
|
would be using a technology like Java Webstart, or JNLP, and so the ID even helps me out
|
||
|
|
with that, I can go into the properties of the project and tell it that I want a Webstart
|
||
|
|
this app, and I assume even if you're, so for those of you that aren't developers, you've
|
||
|
|
probably come across Webstart applications before.
|
||
|
|
Now the, the jar files need to be signed, and so I'm going to go ahead and just self-sign
|
||
|
|
them for the purposes of this presentation, the IDEs helps with that as well.
|
||
|
|
Now when I run the app from within NetBeans, watch, it'll be, it'll behave a little bit
|
||
|
|
different, it'll actually, it's actually now building the jar files, signing them, so
|
||
|
|
it's going to take a little bit longer to do that, there's a handful of jars here.
|
||
|
|
But now, look, it's actually launching it as if you went to a browser, bless you, and
|
||
|
|
downloading, you know, downloading the jars, and yet ask you, do you trust this publisher,
|
||
|
|
go ahead and do that, and then it will start up.
|
||
|
|
Okay, so now I've gotten to a point where, okay, great, I've got a Webstart enabled application.
|
||
|
|
How do I let you guys use it, assuming you had your laptops open and you were on my network,
|
||
|
|
what do I need to do next, what's the next step?
|
||
|
|
One of the web servers that came with the Webstack was Apache, so I have that installed as well
|
||
|
|
on my machine, and so the other thing I did, one of the sort of windows and NetBeans is
|
||
|
|
a favorite window, it's basically just links to wherever I want in my system, well I set
|
||
|
|
up a link to the htdocs directory, this is Apache's htdocs directory, so what I'm going
|
||
|
|
to do is actually just copy from my employee status, all right, the disk directory, or
|
||
|
|
the distribution directory has basically the project, and you see the JNLP file there,
|
||
|
|
that's the Webstart file that was created for me, so I'm going to copy these five, and
|
||
|
|
the live folder has all the libraries I need, I'm just going to copy those guys and come
|
||
|
|
over here and paste, all right, cool.
|
||
|
|
So with that done, I should be able to open up Firefox, and we'll do, make sure, that's
|
||
|
|
not ADAD, Apache is running, okay, so this is the default Apache page that lets you know
|
||
|
|
it works, it's effective, and then the actual was launch.html, okay, now when I click
|
||
|
|
this it's going to launch the JNLP file and hopefully load my application, that's a drag,
|
||
|
|
so it didn't work that way in NetBeans, so what am I missing here, any ideas, what was
|
||
|
|
that? Apache, what? Yeah, close enough, so the issue is the JNLP, Apache doesn't know
|
||
|
|
what to do with it, the MIME type isn't configured, and so it's not, doesn't come default
|
||
|
|
with Apache, at least not yet, and so what I'm going to do, we're here, let me actually
|
||
|
|
show it, I'll show you a little bit of the, so here's that web stack, sort of menu that
|
||
|
|
was installed, and it's a pretty basic UI, but it lets me start and stop the servers, you
|
||
|
|
see it's got a little configuration for Apache here, and then it's got this advanced configuration
|
||
|
|
button, what do you think this does? So anyhow, I'm going to go into the Etsy directory
|
||
|
|
and edit my MIME types, and yes, and again, to save me trying to remember what this was,
|
||
|
|
I pre-edited it, I pre-put it in here even though it is not there by default, it is a
|
||
|
|
problem you would want to, so I will uncomment this, I will quit this out, and then I will
|
||
|
|
come back into my web stack options, and use the very fancy stop servers, and then start
|
||
|
|
the servers, and this will basically, because I changed, and it lets me know it's up and running
|
||
|
|
again, and so let's try this one more time, now sometimes this takes a minute, yeah that's
|
||
|
|
alright, let me, it just took a second for its cache to refresh, so this is what I expected
|
||
|
|
to happen if I, hopefully if I go back now, there we go, so we're good, and so now it says
|
||
|
|
it detects, it's a Java Web Start application, let's go ahead and launch it, click OK, and yes,
|
||
|
|
this looks good, and now it's going to download, hopefully the jar files, oh there we go, and
|
||
|
|
we're up and running, so now I feel a little bit better, I've actually deployed the application
|
||
|
|
to my web server, and maybe I'm ready for some of you to try it on my team, or maybe not,
|
||
|
|
so let's go back to my presentation slides, which over here, OK, so that's sort of the software
|
||
|
|
development piece of, what about actually, before I inflicted on you guys, what sort of testing
|
||
|
|
could I do to make sure you're not frustrated with my application, alright, so I'm going to talk
|
||
|
|
about a couple of concepts here, one is, how many of you have heard of ZFS, certainly all the
|
||
|
|
open Slayer's guys have, it's the file system in ZFS, and it's one of the reasons I like running
|
||
|
|
on top of open Slayer's, and I'll show you why, and then of course, VirtualBox, which is a big
|
||
|
|
part of this presentation, so let me start off with that, for those of you that already know what
|
||
|
|
it is, I'm sorry, for those of you that don't, it essentially allows you to run guest operating
|
||
|
|
systems on top of whatever host operating system you're using, and the four primary hosts are
|
||
|
|
Windows, open Slayer's Linux, and Mac OS, if you have one of those, those are the common ones
|
||
|
|
out there, I don't know why everything's shaking, and then there's VirtualBox, and then you can run
|
||
|
|
all sorts of guests, it's a great way to try open Slayer's or any operating system you want,
|
||
|
|
especially the free ones, certainly people ask me how do you know, I have Windows running and a
|
||
|
|
guest, how did you get that, you have to have the Windows license, of course, you just can't,
|
||
|
|
but it's cool, you could actually use VirtualBox to run, I have it running Windows 7 if you
|
||
|
|
wanted to check that out, because the beta has been made freely available.
|
||
|
|
So just some history on VirtualBox, even for those of you that use it may not be aware of this,
|
||
|
|
it actually started in a tech, the company that created VirtualBox, they're based in Germany,
|
||
|
|
and they initially created a, were hired to port a Connectix Virtual PC, which was a Mac product,
|
||
|
|
Microsoft hired them to port it to Windows, and then Microsoft just acquired it from them,
|
||
|
|
and so about four or five years ago, they had a bunch of cash, and so they started development
|
||
|
|
of VirtualBox, sort of a clean slate, they decided to open source it, and then we acquired them,
|
||
|
|
son, last year, one of the best acquisitions I think we've made, it's, honestly, when I first,
|
||
|
|
I don't know who's been, anyone been using VirtualBox longer before 2008 in here, 2007,
|
||
|
|
one guy back there, I had never actually even heard of it before we acquired them, and I was
|
||
|
|
familiar with VMware, of course, and parallels if you have a Mac, and I was really skeptical, I thought,
|
||
|
|
open source, virtualization software seems kind of complicated, it is really solid, I have been
|
||
|
|
extremely impressed, and I assume those of you that here use it are aware of that, and so
|
||
|
|
I already listed the platforms that it supports, the desktops, you can have a Windows desktop,
|
||
|
|
you can resize it just like a regular window, I can go into full screen mode, you would never
|
||
|
|
even know I was running, I could, you know, load up Windows and VirtualBox here, and you would never
|
||
|
|
know that I had open slairs or Linux underneath the covers, and I actually often forget that I have
|
||
|
|
something underneath the covers, you can go into seamless window mode, which I don't use that often,
|
||
|
|
allows you to put like a Linux window right next to a Microsoft window, you can compare and contrast,
|
||
|
|
really good for testing, look and feel, the mouse seamlessly will move, hopefully all of you that
|
||
|
|
use VirtualBox are aware of the guest editions that you install that allow the mouse integration,
|
||
|
|
so you can, it doesn't get stuck in the virtual machine, you can seamlessly move in and out of it,
|
||
|
|
you can copy and paste between your host machine and your virtual machine,
|
||
|
|
save state is one of my favorite features, it's like putting the machine in a hibernation,
|
||
|
|
so rather than having to restart, say Windows every time you want to use it, you can just
|
||
|
|
save it state, and then you, that's how all miners save, we'll see that, and the community behind
|
||
|
|
VirtualBox is very impressive, there's a site I put up there, at WordPress where there's all,
|
||
|
|
there's hundreds of pre-existing machines, and so if you know you want an Ubuntu machine that's
|
||
|
|
configured for, you know, with Apache and MySQL, you can find that, all pre-baked, you just down,
|
||
|
|
you know, it's a large download, it's probably three or four gig, but you basically just download
|
||
|
|
this huge file, and you set it up in VirtualBox, you point to it, and you're up and running, it's
|
||
|
|
very nice, so quickly I'll give a VirtualBox demo, no I don't want to do that,
|
||
|
|
okay, so this is my environment, I've got what eight machines set up, interestingly enough
|
||
|
|
four of them are OpenCeleras, and that's my host operating system, why would I have a virtual
|
||
|
|
instance of my base operating system, and that's because I always testing different things, and for
|
||
|
|
me, it's an awesome test bed, I don't want to, someone says I'll try this piece of software,
|
||
|
|
try doing this, I'll most often, if I'm skeptical, do it in a virtual instance of that operating system,
|
||
|
|
and make sure it works, it's also great, I showed you my blog, I blog a fair bit, when I do
|
||
|
|
write a blog, I try to make sure it's will work for everybody, and as developers or as anybody,
|
||
|
|
your machines tend to get friendly to how you operate, you may have set an environment variable,
|
||
|
|
or a configuration setting somewhere that allows something to work, and you've probably seen
|
||
|
|
this in the past, and then it doesn't work for someone else, using VirtualBox, you can make
|
||
|
|
sure you have a pristine version of that operating system, and test that whatever you're doing
|
||
|
|
works, and a great example of that is when you file a bug report, how many times have you filed a
|
||
|
|
bug report, and you get works for me as a response, and it gets closed, it pisses you off, and so using,
|
||
|
|
I can say look, take this VM, load it up in VirtualBox, do these steps, it will fail, you create a
|
||
|
|
repeatable situation, it's very nice, so simply to create a machine, I didn't want to do that, let's
|
||
|
|
what did I do, it started Windows, that's fine, we'll get to that, you click the new button,
|
||
|
|
not the start button, and you'll give your machine a name, and so say I wanted to create, you know,
|
||
|
|
I don't know how many of you were surprised to see an open-slayer CD in your bag at a Linux
|
||
|
|
conference, but it is there, there's a couple ways to try it, it is a live CD, which most of
|
||
|
|
you are familiar with, so you can just boot it up and see how it works on your machine on the
|
||
|
|
bare metal, you could also use VirtualBox and run it in a Virtual Machine, and that would simply
|
||
|
|
be something like this, you would select your operating system. Your machine has so much memory,
|
||
|
|
how much of that do you want to allocate to the Virtual Machine, so say I'll go with the default
|
||
|
|
766, and then again, either you've downloaded a pre-existing hard disk that has some sort of
|
||
|
|
configuration on it that you can just point to, or you're going to create one from scratch,
|
||
|
|
let's do that option, so it starts a little sub wizard, now I have two choices for it,
|
||
|
|
basically this operating system is going to be in a single file, just a single disk, a single image,
|
||
|
|
you can design it so that image grows over time up to a certain limit, dynamically expanding,
|
||
|
|
or you can tell it up front, lay out 20 gigs of space for me for this operating system,
|
||
|
|
supposedly the second option makes sense, is a little bit more performant because it never has
|
||
|
|
to increase in size, I've never chosen that option, I always used the dynamically expanding storage,
|
||
|
|
the initial file is only a couple hundred megabytes, and it will grow over time as necessary,
|
||
|
|
it's not like I've had hiccups, like what's it doing, it's expanding its storage, I've never seen
|
||
|
|
that, so I can come here and I can set this thing to 76 gigabytes, it really doesn't matter,
|
||
|
|
it's just be liberal here because what you don't want to happen is when I first started using
|
||
|
|
Open Solaris, it was in VirtualBox, and I had set up 16 gigs or 10 gigs, I don't recall,
|
||
|
|
but I actually made it my primary OS, and it wasn't long before I ran out of this space,
|
||
|
|
and I had to figure out how to add more.
|
||
|
|
What was, is it a what?
|
||
|
|
No, that's the difference between the two choices, so that is not hard allocated,
|
||
|
|
so we could go look at the file, it'll only be a couple hundred megabytes,
|
||
|
|
and it'll grow up to that as needed.
|
||
|
|
If you did want hard allocated, there was an option to do that.
|
||
|
|
Oh, thank you, I probably wanted to, I don't want to, I don't want to trash.
|
||
|
|
Okay, well that's fair enough, that's, yeah, so I did, I, I did create new, oh, you're right,
|
||
|
|
Open Solaris, yes, and that's fine, that was pretty much that demo, you create the disk,
|
||
|
|
and then you go to start the machine, it'll ask you for the, you know, what do you have?
|
||
|
|
Do you have a CD, do you have an ISO file that you downloaded?
|
||
|
|
Point me to that, and it'll go ahead and start installing that software,
|
||
|
|
or loading the live CD, yes sir.
|
||
|
|
Could you put it on like a USB drive?
|
||
|
|
Yeah, yeah, yeah, of course, yeah, yeah, yeah.
|
||
|
|
You will, you could, you could have basically a portable virtual machine,
|
||
|
|
absolutely, absolutely, another cool thing, and I assume this is in the Linux world as well,
|
||
|
|
you got the portable live USB sticks, now which are kind of cool, because the live CD obviously
|
||
|
|
isn't writable, you know, you load it, you can play with it, but soon as you shut it down,
|
||
|
|
anything you've done is lost, the USB stick however, you can save files to you, so if you had like
|
||
|
|
a 16 gigabit USB stick, you can have a totally portable operating system on a USB stick.
|
||
|
|
No, well let's do that for example, so I accidentally started Windows here, let me just kill this,
|
||
|
|
and so it gives me several options, I can save the state, I can just power off the machine,
|
||
|
|
it's like just turn off the switch, and now if we go back to VirtualBox here, you notice that
|
||
|
|
says it's powered off, all right, and I usually, I would have had a ninth machine there, I didn't
|
||
|
|
create it because I used a duplicate name, but let me go back to my presentation briefly,
|
||
|
|
and I want to talk about how I use ZFS, or the Zedabyte file system that comes with OpenSelaris,
|
||
|
|
and I could talk a whole hour about ZFS, it's a pretty cool file system, the only point I want
|
||
|
|
to focus with regards to this presentation or the piece I'm going to use is this ability to take
|
||
|
|
instantaneous snapshot, ZFS uses a copy on right architecture, and so what it allows me to do is take
|
||
|
|
pictures of file systems that I've set up that are very efficient, very low overhead, and so with
|
||
|
|
that, well here let me go to one more, so what I've done is VirtualBox stores all of its machines,
|
||
|
|
this is a graphic from the VirtualBox configuration preferences dialog, and it just shows where my
|
||
|
|
machines are stored, that's the default location, it's a hidden directory off my home directory,
|
||
|
|
and so what I've gone and done is made a separate file system specifically for VirtualBox,
|
||
|
|
and once I have a file system dedicated for VirtualBox, I can take snapshots of that file system,
|
||
|
|
so what this really allows me to do is I talked earlier about my Virtual Machines being pristine,
|
||
|
|
being clean, not being affected by configuration files, or even, I don't even want my machines
|
||
|
|
affected by prior use, so when I go in and do a lot of testing, I want to be able to sort of
|
||
|
|
wipe any trace that I was ever there, just sort of roll back to how things were at the start,
|
||
|
|
and so with that in mind, let's sort of conclude here, I'm going to shut down, so you see that I have
|
||
|
|
the eight Virtual Machines, notice Windows is powered off, right, you just saw me kill the machine,
|
||
|
|
if I went to starter right now it would boot up from scratch, so let me shut down VirtualBox,
|
||
|
|
and I'm just going to run a ZFS command here, and basically what we're seeing in this output is,
|
||
|
|
I want you to look at the top half of the screen, and I have various snapshots of my
|
||
|
|
VirtualBox file system, and the name, so the file system is called our pool VirtualBox,
|
||
|
|
and then the snapshot is everything after the at symbol, and so I sequentially name them,
|
||
|
|
so that when I run this list they appear in order, so clean 14, and basically as time goes on,
|
||
|
|
I've had these snapshots now around for months, things happen, a new version of Java comes out,
|
||
|
|
or a new version of VirtualBox comes out, or I just upgraded my Ubuntu image to 904,
|
||
|
|
so I'll roll back to a clean environment, make the change I want, and then snap a new image
|
||
|
|
of my entire VirtualBox environment, and so that's what you're seeing there, and so just the other day,
|
||
|
|
there was a, I was in the Windows environment, and it said, oh, there's a new version of Java available,
|
||
|
|
so I said, okay, I want to capture that, I rolled back to Ubuntu 904, started up Windows,
|
||
|
|
did the Java update, shut it down, or put it in a saved state, and then I did the snapshot of
|
||
|
|
Java update, and so with that, what I can do right now is a ZFS rollback, and then just give the
|
||
|
|
snapshot name, like that, and that's done, you see it's pretty instantaneous,
|
||
|
|
and then now when we start up VirtualBox, you see Windows is back, it's kind of a subtle
|
||
|
|
difference, but Windows is back in its saved state, it's sort of, and if I had created that
|
||
|
|
ninth machine, it would be gone, because again, I rolled back to a point prior to me creating that.
|
||
|
|
All right, so let's look at Windows now, say, let's get back to the regularly scheduled
|
||
|
|
program of testing our application, so I've created this app, and I want to see if it'll
|
||
|
|
perform on Windows, that was a very common use case, and so let me go ahead and start Windows up,
|
||
|
|
and again, this is coming out of save, so it's like coming out of hibernation,
|
||
|
|
so it'll take a second.
|
||
|
|
I've got three gigs of RAM on my laptop, and that sounds like a lot, but when you start loading
|
||
|
|
Virtual Machines, it gets used up quick, and so what I've done is I've set up sort of workspaces
|
||
|
|
for my desktops, and so I can come over here, and now I can go into fullscreen mode, and notice
|
||
|
|
that host F, it's pretty critical to remember, because you won't be able to get out of screen,
|
||
|
|
host, the host key is configurable, the default is the right control, but if you go into
|
||
|
|
fullscreen mode, if you don't know the key sequence to get out of it, you basically have to shut
|
||
|
|
down the virtual machine to get back to your host OS, and so now, if I had started, if you all
|
||
|
|
came in to Southeast Unexpects, I should have had this up, this should have been my welcome screen,
|
||
|
|
I remember that next time, but you would never know that I was in here, and it's pretty
|
||
|
|
performant, and I can start IE, and now I'm not connected to the internet, which is why this
|
||
|
|
came up, and actually I should make a note, I've got some wacky stuff going on back here.
|
||
|
|
Now, the demonstration I'm doing with VirtualBox, and this is what I was alluding to with your
|
||
|
|
testing, I don't know how many of you actually do network testing with VirtualBox between the
|
||
|
|
guest and the host, and that's really the point of this presentation, so I can, well, actually,
|
||
|
|
I do need to get out of this and come back here, and I need to get my IP address, so what I've
|
||
|
|
done is I brought a router with me so that I could sort of up IP addresses to my virtual machines
|
||
|
|
as I start them, and so my host machine is a 1.2, and so now, if I go back to VirtualBox to Windows,
|
||
|
|
okay, so the first thing you'll notice, there's no history in my browser, right, you know,
|
||
|
|
obviously, as you work in any of these browsers, I kind of remember where you've been, and it's a
|
||
|
|
pristine copy of i.e., I never do anything in it other than updates to the OS, and so, hopefully,
|
||
|
|
I can hit that, good, I'm hitting the server on Open Slayerist, and now I can hit launch,
|
||
|
|
bless you again, that looks good, and now we can launch the app. I should have asked, do we think
|
||
|
|
it's going to work? It doesn't, and so this is, you know, if I got all excited, it's a team I created
|
||
|
|
this app, go try it out, and you know, be calling me up, it doesn't work. It's okay, we look at the
|
||
|
|
details, and we've got some unlabeled load resource, some temp, employee status, launch, so,
|
||
|
|
obviously, it's looking locally for some file, actually, the JNLP file, and so, I can come back to
|
||
|
|
that beans, close, and I'm going to open up this JNLP file, and sure enough, right here,
|
||
|
|
this needs to be the codebase, where is, you know, Windows is trying to read this file that's
|
||
|
|
looking in temp, and I actually got to give it the, I have changed the codebase to that, right?
|
||
|
|
So that was something that IDE did for me as a benefit, but actually, as I need to deploy, I need
|
||
|
|
to change, and so, I'll just save that, I should be able to come back here, okay, this may take a
|
||
|
|
couple clicks. There it goes, all right, so that looks better, it's found the files, it's downloading
|
||
|
|
them to my machine, you get good, I got the, do I trust? I'll say yes.
|
||
|
|
Yeah, I don't know, we don't have any errors yet, right? But, I don't have anything, right, so,
|
||
|
|
so, right, very good here, see, you're jumping ahead, but so, there's a t-shirt for you.
|
||
|
|
But, how do I figure that out, though? That's a good guess, but honestly,
|
||
|
|
how would I, anybody know how I'd go about figuring that out? Like, I'm just,
|
||
|
|
server log files, actually I think, I don't know if they would have any.
|
||
|
|
Right, local Java client log files, and so that, I can, there's actually a,
|
||
|
|
under the control panel, actually, all OSs have it on Windows, it's under the control panel.
|
||
|
|
There's a Java control panel, and it has a Java console that you can turn on.
|
||
|
|
This is just kind of good knowledge to know whenever you're having troubles with Java.
|
||
|
|
So, I can close this, and so that's a change I made to my operating system, right?
|
||
|
|
That is turned on forever, and again, I don't have to worry about turning it off.
|
||
|
|
When I'm done with this presentation, I do my rollback, and it's back to the way it was.
|
||
|
|
But, with that, let me actually try to launch again.
|
||
|
|
Okay, we see, okay, good, so, we did have a silent exception, and you are correct,
|
||
|
|
if we went and looked through all this, it is, you know, SQL, exception, blah, blah, blah.
|
||
|
|
And so, let me close this down, and go back, and in this case, I actually have to go into the project
|
||
|
|
itself, and I don't know how many of you are familiar with the Java persistence API,
|
||
|
|
or toppling, or anything like that, or hibernate. But, you see here that it is,
|
||
|
|
here, localhost, and that was definitely a problem.
|
||
|
|
So, we should do that.
|
||
|
|
And now, that's actually part of the jar file, so I need to do a build,
|
||
|
|
just that single jar file will build, and I need to copy it back over. So, now I just grab this,
|
||
|
|
delete the old one from the web server, paste the new one in, there we go,
|
||
|
|
go back to Windows, try it again.
|
||
|
|
Go ahead and trust from now on.
|
||
|
|
So, now it's the problem. Who are my SQL experts in the room?
|
||
|
|
What's that?
|
||
|
|
Yeah, the root, in my experience, I don't know, the root user, who I'm logged in as,
|
||
|
|
definitely usually doesn't work over a network connection. I don't know if it's
|
||
|
|
anyway to make it work. So, again, another issue, sort of the IDE, just rolled
|
||
|
|
with that, it all worked locally, so let's go, luckily I prepared for you guys, and so I actually
|
||
|
|
created a, I created a user, a password. All right, one more change, again, will
|
||
|
|
build, copy, paste, okay.
|
||
|
|
So, now we think it's going to work.
|
||
|
|
All right, we got it to work. So, really, I mean, again, this is not really too
|
||
|
|
specific example, Java Webstar, JNLP, I think it's sort of a lot of the types of common things,
|
||
|
|
working with any IDE, yes, question? No.
|
||
|
|
So, like, have them turn it on afterward, rather than having to restart the app, and we just say,
|
||
|
|
can you get to it remotely, is that what you're asking, or can you? Yeah, you can start it up,
|
||
|
|
and then the problem, in our case, so we never, the exception occurred, I think they'd have
|
||
|
|
to restart the app in that case, but yeah, you can start it up.
|
||
|
|
You want to see the error until you started it, started the console.
|
||
|
|
There might be something you have to install to have that here, I don't.
|
||
|
|
Right, right, well, plus, I don't have an internet connection, so I couldn't add it anyhow.
|
||
|
|
So, in the interest of time, and I want to take some questions, my next step would be to try
|
||
|
|
this in Ubuntu, and I will tell you, it does work, and if you had, if I was on a local network,
|
||
|
|
you should be able to hit my machine and load the app, it should work by now.
|
||
|
|
But, sort of carrying this test case further, what about using VirtualBox for sort of multi-tier
|
||
|
|
deployment testing, where say I develop on one system, I deploy to another, and so with that,
|
||
|
|
let me switch back to VirtualBox and see if I can get Ubuntu fired up here.
|
||
|
|
So, this little green is my available memory, and then we'll see purple here when we jump
|
||
|
|
in to swap, and hopefully that won't happen. These things are really slow down.
|
||
|
|
No, go ahead.
|
||
|
|
Absolutely, so VirtualBox will run on, yeah, leopard, macOS, it'll run on all the Linux distributions,
|
||
|
|
Windows, and OpenSlayer, so the four.
|
||
|
|
Well, it's got to be Intel Mac, it won't run on at PowerMac.
|
||
|
|
All right, so I'll do the same thing, I've got Ubuntu running, I can move this to my Ubuntu desktop.
|
||
|
|
Again, I'll maximize, so again, you can't really tell, and let me grab my p-address, I should have
|
||
|
|
an IP address here. Yeah, so what was served up for me was 1.3, and so the other cool thing is,
|
||
|
|
I came out of a save state. Now, whatever sort of systems you have running are up and running as
|
||
|
|
well, and so let me start the browser here. Oops. So, one of the things I have running is the
|
||
|
|
Glassfish application server, and again, that's local host, it's available, and so now let's go back
|
||
|
|
to my host operating system, and now I can do cool things like as a developer, in NetBeans, I can
|
||
|
|
add, let me clean this up a bit, I can add additional servers that I'm dealing with, and so
|
||
|
|
let me add a server, and I'm going to add another version of Glassfish. Now, this is a remote domain.
|
||
|
|
Now, this would be identical to if this was a machine in my data center somewhere, or my lab
|
||
|
|
somewhere, right? It wants to know the host name, or IP address, so I put that in.
|
||
|
|
Cool, and I got that little green arrow there, that tells me that it is detected it, and that it's
|
||
|
|
up and running, and so now at this point I can go to some projects I have, and a good thing to
|
||
|
|
test across operating systems is, of course, AJAX is one of those technologies that sort of
|
||
|
|
seems very open to testing on different OSs, and so I downloaded a couple sample projects from
|
||
|
|
ProAJAX book, and so let me change their runtime properties to actually use, well, I usually,
|
||
|
|
I should have named it Glassfish Ubuntu, but I forgot to change the name, so it's Glassfish
|
||
|
|
one, that's okay. And at this point, I'm going to change this one as well, so I don't forget.
|
||
|
|
Okay, so at this point, when I go to run the project, it's going to
|
||
|
|
build it, and deploy it to the remote, I mean it's local on my laptop, but as far as netbeens is
|
||
|
|
concerned, oh, that's not what I wanted to do. So netbeens has this concept of a main project,
|
||
|
|
and so let me set this as the main project. Thank you.
|
||
|
|
Kill this one.
|
||
|
|
That way too much going on now.
|
||
|
|
All right, let's try this again.
|
||
|
|
Okay, there we go, chapter four running, and so yeah, it's going to build it, and then it's
|
||
|
|
going to deploy it to the copy of Ubuntu running, the server on Ubuntu, and it should launch a
|
||
|
|
browser here locally pointing to that.
|
||
|
|
Any questions? Well, this is loading.
|
||
|
|
It won't be a second, it should be anyhow. I think it's up.
|
||
|
|
So you can see my machines really start in the weeds now with these two, I still have windows
|
||
|
|
running as well, but I want to, I want to, I want to, I kept that running on purpose, I want to,
|
||
|
|
I definitely want to show something.
|
||
|
|
All right, so a common type of, you know, Ajax feature is auto complete, and so say you wanted
|
||
|
|
to compare and contrast how this looked on various operating systems, you know, type in A,
|
||
|
|
and you see, you know, you got sort of the auto complete thing happening.
|
||
|
|
Now, well, let's say, let's try this on, so I could copy this over to Ubuntu, I could change
|
||
|
|
the URL of the local host because that's where it's running, but what about windows? What about
|
||
|
|
from one virtual machine to another virtual machine doing this testing? And Ajax, come on baby,
|
||
|
|
there we go. So I should be able to paste, there it is, so I copied from Open Slayer,
|
||
|
|
pasted it in the windows, hit, and then A, and you see, it looks a little different, I mean,
|
||
|
|
not that you naturally care, but it's, if we went back to Open Slayer, so it was sort of lined up nicely,
|
||
|
|
it's really a Firefox issue, it looks identical to that in Ubuntu, but on i.e., it looks a little
|
||
|
|
different. And then, just one last thing to test, we'll go back. There we go.
|
||
|
|
Two, three, I'm just about parallel, the RAL, that's right. Oh, I didn't deploy this one.
|
||
|
|
Okay, let me, I think it'll work.
|
||
|
|
No.
|
||
|
|
Yes, you see the purple there, I know.
|
||
|
|
Yeah, I was trying to avoid this. So while I'm, I'm going to go ahead and launch this,
|
||
|
|
this will take a couple of seconds, because it is swapping. And we have about a couple
|
||
|
|
minutes left, I think. So, do, are there any questions? Yes.
|
||
|
|
I'm really impressed with GFS with the ability to, like, stop trust. I really like that.
|
||
|
|
But what other images do you say Open Slayer has, like, why am I going to use Open Slayer to
|
||
|
|
do things like that? The reason, so the alternative talk I could have proposed for this conference was
|
||
|
|
just, you know, what is Open Slayer's, and go through some of those things. And so, what I generally
|
||
|
|
focus on are, ZFS is, of course, a big piece of that. The D trace feature, the dynamic tracing,
|
||
|
|
is a very cool feature of Slayer. So, I mean, Open Slayer is really, you know, the next,
|
||
|
|
it's the development ground for the next version of Slayer. And so, it's got everything that
|
||
|
|
Slayer's 10 has, and then some. And so, D, the dynamic tracing, the service management
|
||
|
|
framework is really nice. So, for managing your services, and you saw a little bit of that,
|
||
|
|
I didn't really talk about it, but when I started and stopped Apache in MySQL, that was using
|
||
|
|
the service management framework. CrossPodes, a brand new feature that's in this newest version
|
||
|
|
of Open Slayer, so it's a project name for our virtual networking. So, you can actually create
|
||
|
|
virtual network interface cards on your machine based off of your one. So, on a laptop like
|
||
|
|
this, I could create five virtual nicks, and then I could do flow control amongst those nicks,
|
||
|
|
where I could set up, you know, my virtual machines to point to those various
|
||
|
|
networking and face cards. It's a really nice feature.
|
||
|
|
Yep. Anything else?
|
||
|
|
Thanks. There we go. So, quickly, I've got a couple minutes. So, say you're doing something
|
||
|
|
like this. It's just simple, but it's two effects happening at once, and say you wanted to use
|
||
|
|
something like that, and I question is, can I e-handle that? I'll do. I can't. So, I always close
|
||
|
|
with that at my Linux talks. No one's surprised, but. So, I think I have like, what, a minute?
|
||
|
|
Nothing? Yeah. So, if there are any other questions, if they're not, I'll cut you loose.
|
||
|
|
Yeah. Yeah.
|
||
|
|
Work over a network. I haven't thought about that.
|
||
|
|
Yeah. So, just for those who don't know, timeslighter is the feature that you saw the snapshotting
|
||
|
|
feature that I did. We basically put a nice little user interface on top of that. So, for all your
|
||
|
|
data, we take snapshots every 15 minutes, and we call that timeslighter. So, it's kind of
|
||
|
|
equivalent to time machine in Mac OS. So, you can go back to any point in time, and I happen
|
||
|
|
to be a demo of that. Does it work over NFS, though? I'm skeptical that it would, but I don't
|
||
|
|
believe it would. Anything else? About sun being purchased by Oracle? The only thing I know is
|
||
|
|
that they set a date for the shareholder approval meeting, which is like July 21st. And so, at that
|
||
|
|
date, I don't know how long it is after that, assuming it's approved a couple of weeks. Yeah, I don't
|
||
|
|
know much. Yes. What strategy for enterprises that want to use Solaris for their servers and open
|
||
|
|
Solaris? How do they work together? Is there some kind of development? Yeah.
|
||
|
|
Well, the strategy is if it is the next version of Solaris. So, if you're looking for some of
|
||
|
|
the features that are going to be in Solaris. Next, whatever they call it, you could start deploying
|
||
|
|
Open Solaris. And this release actually deploys on Spark now, which is a new feature. We didn't have
|
||
|
|
that for the previous releases of Open Solaris. And so, you can start putting it in your data center.
|
||
|
|
They've upped the support contracts to like five years, and so you can get the same support you
|
||
|
|
can on Solaris. And so, yeah, it's just the roadmap to Solaris. Next, and I hope someday I can say
|
||
|
|
Solaris 11, but they haven't decided what it's going to be called in the back. What about network installs?
|
||
|
|
No one installs the network, but how do you incorporate it in the back of the hand?
|
||
|
|
Yeah, right. Oh, so you're talking about Jumpstart? So, that was one of the issues actually with
|
||
|
|
getting it ported to Spark. There is no jumps. This is one of the big changes between Solaris 10
|
||
|
|
and Open Solaris. There is no Jumpstart support in Open Solaris. They've changed it to a different
|
||
|
|
technology called Automated Installer. And so, it is a network install. It's similar to Jumpstart.
|
||
|
|
It's just different. That is available now. It's actually the only way. If you have a Spark
|
||
|
|
machine, the only way to get Solaris on Spark is through the Automated Network install.
|
||
|
|
There is no install of her Spark at the moment. We have lunch now, right? Anyhow. Yeah, so we're not,
|
||
|
|
like, if there's a couple more questions, I can take them. All right, do you think?
|
||
|
|
All right. If there's not any more, then I'll cut you loose.
|
||
|
|
Why did you factor in the filter?
|
||
|
|
Yeah. I didn't put the CDs in the bag. I think of that. That was it. I didn't personally do
|
||
|
|
that. They got sent here. I won't name who did. No, but I find, I find, I try not to be, you know,
|
||
|
|
what's the word I'm looking for, aggressive, or I just, I think, you know, people are interested
|
||
|
|
in the open source technology. So I find it generally at Linux conferences, people are receptive
|
||
|
|
to hearing about OpenSlayer, so what's going on? Yes, over there.
|
||
|
|
Yeah, I don't, there might be some hacks on that they're available. I don't, not that I am aware
|
||
|
|
of, and I haven't seen that. I don't know exactly. I don't know if, I think that's a mac licensing
|
||
|
|
issue. Actually, I don't, I don't, you know, their OS really only runs on their hardware,
|
||
|
|
and as far as I know, they don't want it running anywhere else.
|
||
|
|
Yeah, so that's really the only limitation of VirtualBox. If you want to test in a Mac,
|
||
|
|
you kind of need a Mac as your host OS, and then you have all the other OSs available.
|
||
|
|
Yeah, none, there's no plans that I know for the Mac. Oh, I support. Did you have another question?
|
||
|
|
For instance, the main reason why they purchase it from my understanding is because they were so successful
|
||
|
|
on OpenSlayer. Yeah, from what Oracle said, they bought us for Solaris and Java,
|
||
|
|
or the two primary things that they called out. All right, guys, well thank you very much.
|
||
|
|
This work was recorded by View Digital Media, and is licensed under a Creative Commons
|
||
|
|
share it like version 3.0. For more information about the Southeast Linux Fest, visit
|
||
|
|
southeastlinuxfest.org.
|