Archive

Archive for the ‘UNIX’ Category

The Battle Rages On: CLI vs. GUI

October 14th, 2010 7 comments

Every now and then, when surfing the blogosphere, I come across waves after waves of postings stating how “Linux needs to rely less on the CLI” or “Windows is perfect for basic users because everything can be done with the GUI”…blah, blah, blah. In fact it was this article that prompted this posting. It gets tiring reading the same things over and over again, but it hasn’t stopped me from adding my 2 cents.

First and foremost, I live by the command line and rarely do things from a graphical interface. Whether it be on a Linux-based operating system, UNIX or Windows, I always have one or two command line terminals open to make my life easier; so be warned that this posting may be a bit biased.

Second, I do not care what a Microsoft Windows user has to say. Even in a Windows operating system, there are those cases when things are accomplished a lot more efficiently on the command line. That is, dealing with network connections via ipconfig, managing storage devices via diskpart to even reconfiguring your power settings via powercfg and more. There are just some things that is much more easily accomplished from the command line in Windows than it is with their graphical interface.

This also includes automation via the traditional DOS-style batching or even with a higher level interpreter such as Python or Perl. When forced to use nothing but Windows in the corporate world, I would always have an installation of Cygwin on the system and prefer working out of that instead.

But a normal user will never have to deal with this in Windows and again that same user would never have to deal with it in Linux; but most of the people I have been hearing complain is the Windows IT administrator. They routinely ask: “Why should I have to open up the command line to do XYZ?” My first response to them has always been, “and you never opened up the command line to release/renew your IP settings with ipconfig?”

Let us stop playing games here and realize that the CLI is not what is hurting Linux’ advancement. The countless amount of graphical interfaces provide all of the general functionality that most basic users rely on. Do these same users use a CLI when configuring their routers, settings television programs to record on their DVRs, manage their applications on their Android products, etc.? Nope. Linux has already proven itself to be very useful without the CLI.

Now the question is, how do we move past these age-old stereotypes and move ahead? Is Google pioneering the way with the Android and what is the, soon to be available, Chrome OS? Is Canonical pioneering the way with Ubuntu? What can we do to defeat these stereotypes and bring Linux to the mainstream? Marketing (since none really exists outside of magazine and Internet advertisements)? I am just tired of reading the same complaints. The CLI is never going to disappear (even on Windows). The GUI is just going to get better but will always lack in the productivity and efficiency brought forth by the CLI. It is what it is, so let us now move on.

ZFS as a Linux kernel module? What is the point?

August 27th, 2010 5 comments

This morning, I came across two Phoronix articles (here and here)  generating some sort of hype with regards to a ZFS port for the Linux kernel, with article headlines as Native ZFS Is Coming To Linux Next Month. My response to this, as I will explain below is: Why?

First of all (as the first article cites) there has always been the ZFS over FUSE project. There was a reason as to why this project was initiated and that is primarily a result of a conflict in licensing. ZFS is CDDL’d while Linux is GPL’d. The one is incompatible with the other. I will not spend any time in the details of this but you can read some of my opinions with the licensing here. Although using any file system over FUSE has its drawbacks; one of which is performance. But you still had ZFS functionality. In a worst case scenario, you can always deploy Solaris, (at one time) OpenSolaris, Nexenta, FreeBSD, among a few other lesser known operating systems using ZFS.

Despite the reasons given in the articles for porting ZFS to the Linux kernel, it becomes almost irrelevant that (a) it will never be integrated into the mainline kernel (unless Oracle were to re-license it, but then it would become incompatible with Solaris 11+ and Solaris 11+ Express), (b) will never obtain any real commercial support, because if it does, then most likely Oracle will step in to destroy everything in its path for infringement of patents and other intellectual property. Also, (c) you will never be able to commercially redistribute the code, binaries and modules in a custom Linux enabled appliance because if Oracle does not get you for IP infringement, other companies such as NetApp will. Who will protect you then? Finally, (d) it will be a long while before this ZFS port is considered stable for Linux. Especially when it will not be in the mainline kernel to receive additional exposure. These reasons alone are enough for a storage company to not seek interest in this port.

At the end of the day, all of this excitement means nothing. Who cares if this ZFS port for the Linux kernel comes out next month? I don’t. Don’t misunderstand me. I love ZFS as I use it all the time on Solaris and OpenSolaris. It is a wonderful file system. This Linux port is also extremely limited in functionality. Today, the GPL’d Btrfs, a competitor to ZFS, is considered “generally stable“. Why not use that instead without all the concerns listed above?

Categories: BSD, File Systems, Linux, OpenSolaris, Solaris, Storage Tags:

My opinion on OpenSolaris, Oracle and all open source Sun software

August 16th, 2010 Comments off

Well, it has been quite a week, last week. Not too long after the OpenSolaris Governing Board issued an ultimatum to Oracle and closely following the unveiling of the Illumos project, Oracle officially announced (in a memo to internal employees) that they will be leaving OpenSolaris behind. To most (including myself) this is not at all surprising. The writing had been on the walls, yet many still felt hopeful. It is disappointing news for more than one reason. OpenSolaris was a solid and great operating system. Not many of my readers may really know too much about the SunOS family but when Sun Microsystems developed a software product, it was always a quality product; that is, stable and extremely well polished.

When I think of Sun Microsystems, I think of a true engineering company. Although being all engineering and little to no marketing may have been one of many paths to its decline and eventual downfall. Either way, Sun gave us NFS, Java, ZFS, DTrace and plenty more. And whenever I stepped behind a Solaris or OpenSolaris system, I always felt comfortable. I would never use a GUI as most seasoned UNIX and Linux administrators don’t. The command line was my main access to the system’s facilities and this is where Sun had it right. Managing volumes and exported shares, boot environments, services and more. They had simplified and polished the ability to manage the system and all of its capabilities. Unfortunately Linux lacks in some of these but who is to say that someone will not take ownership and develop similar tools in the near future.

It is my opinion that this focus to detail and a stable and simplified environment is going to slowly disappear under the direction of Oracle. Again, Sun was an engineering company and nothing more. Oracle has more of a concrete vision and focus; that is, making money. How much will quality of products such as Solaris 11, VirtualBox, OpenOffice.org and especially MySQL (among others) suffer when deadlines are trying to be met and corners must be cut, because a late product won’t bring in revenue. I will admit that this is most likely where I will end my use of Solaris, unless Oracle surprises the world and continues to maintain the type of quality that Sun brought to the operating system.

Categories: OpenSolaris, Solaris, UNIX, virtualization Tags:

The final verdict is in: OpenSolaris is no more.

August 13th, 2010 6 comments

In what is supposedly a leaked internal memo to Oracle staff, the adoptive parent company of Sun’s OpenSolaris had announced the fate the project’s (and binary release’s) future. That is, they will support it no more outside of CDDL’d package updates for future Solaris (i.e. Solaris 11) releases.

“We will distribute updates to approved CDDL or other open source-licensed code following full releases of our enterprise Solaris operating system. In this manner, new technology innovations will show up in our releases before anywhere else. We will no longer distribute source code for the entirety of the Solaris operating system in real-time while it is developed, on a nightly basis.Anyone who is consuming Solaris code using the CDDL, whether in pieces or as a part of the OpenSolaris source distribution or a derivative thereof, would therefore be able to consume any updates we release at that time, under the terms of the CDDL, LGPL, or whatever license applies.”

Also:

“All of Oracle’s efforts on binary distributions of Solaris technology will be focused on Solaris 11. We will not release any other binary distributions, such as nightly or bi-weekly builds of Solaris binaries, or an OpenSolaris 2010.05 or later distribution. We will determine a simple, cost-effective means of getting enterprise users of prior OpenSolaris binary releases to migrate to S11 Express.”

Reading this is somewhat disappointing as OpenSolaris was truly an excellent operating system.

Categories: OpenSolaris, Solaris Tags:

Re: Apple. Will history repeat itself?

July 22nd, 2010 3 comments

I have been thinking about this for a short time now. I have been spending some time studying the computing market at various levels and across varying technologies; most recently the focus was more on the mobile computing industry. But before I dive into some of my personal opinions I want to revisit some brief events throughout history:

From the late 70′s to the 80′s Apple markets personal computers with a proprietary operating system tied to its proprietary hardware. They charge high prices in exchange for a feature rich and an evolving simplified UI. During this time period Microsoft is providing their software solutions as a software only company.

Originally built on MS-DOS (with the first stable release in 1985), Microsoft distributes Windows for the Intel architecture. Over time, they pushed a radical idea of providing an operating system that was not tied to specific proprietary hardware. This enabled many hardware manufacturers to install and distribute licensed copies of the operating system. Although not as advanced as Apple’s OS UI, it was just good enough to get most people to become more productive.

Cheaper hardware + Hardware independent software = Cheaper PCs = Microsoft’s success of the desktop market

Truth be told. You did (and still do) get what you pay for. Microsoft’s applications and series of operating systems were never necessarily well known for stability and security. Overall, their approach to business made sense for its time.

But what do you have now? The focus has shifted to mobility. A lot of applications are now provided services over the web (i.e. the cloud) and our mobile devices provide us access to these services. For the past decade Apple has made a huge comeback and found itself a market which has been leading to its recent success. Although, they continue to push their proprietary model on all their products.

While other companies are competing with Apple, the most noteworthy is Google (indirectly via its ad-based model) and specifically the Android operating system. Google has taken more of an open approach to how Android is presented but in the end, similar to Microsoft with Windows, it is designed to run on varying hardware platforms. With a nice UI (maybe not always as crisp and clean as the iPhone’s OS) and a constantly growing Market with tens of thousands of applications to choose from, Android has proven itself to be a very worthy competitor. Its market growth numbers have reflected this and Android is significantly catching up to the power players of the smart phone industry.

My question is: Is Apple doomed to repeat its own history? Should we continue to expect Apple market share growth? Or will this plateau as more and more Android devices flood the market offering more affordable and feature rich mobile computing experiences?

Categories: BSD, Linux, Microsoft, UNIX Tags:

OpenSolaris and/or Solaris Next?

July 4th, 2010 Comments off

After spending a week on the forums at opensolaris.org, it would seem that a great number of individuals are waiting for Oracle to make it official: “that OpenSolaris will be no more.” If this ends up being the case then it would be very upsetting as OpenSolaris is a very stable and robust UNIX operating system. During this time I came across this blog posting which may shed some light. It discusses the Oracle directed Solaris Next label svn_140. Solaris Next is the development name given to Solaris 11.

Initially Oracle had publicly announced that it will stay involved in the OpenSolaris community and continue to support it. This was more than a few months ago, and they have been silent since. If they do decide to kill the OpenSolaris project to shift all focus on Solaris Next alone, then I am curious as to if they will kill the OpenSolaris binary distribution project (opensolaris.com) only or the binary plus the community (opensolaris.org). The community can still live on without the binary. They will instead focus on the Solaris Next builds as opposed to OpenSolaris.

Categories: OpenSolaris, Solaris Tags:

Are we to ever see OpenSolaris 2010.1H?

July 1st, 2010 1 comment

I am still unsure about Oracle’s promise on the future of OpenSolaris. Phoronix has just posted an article showing that what was once supposed to be 2010.02 and then 2010.03 to eventually 2010.1H has not been released at the end of the first half of the year. It would be a shame if nothing came out of this. OpenSolaris is such a great platform and ZFS brought some much needed features which helped increase my development and productivity. Should we cross our fingers for a 2010.2H release?

I guess what it boils down to for Oracle is, do they see a profit from this open source project? What does OpenSolaris bring to Oracle and how does it help them solidify their newly acquired Solaris platform? If we ask for my personal opinion, I feel the advantages outweigh the disadvantages. A working example can be seen with Red Hat and the Fedora Project. The more open platform (in this case OpenSolaris) defines the bleeding edge technologies, stabilizes them and is a testing ground for all that will be ported to the official stable release (Solaris). In fact that is how it was under Sun Microsystems.

Although as the months pass by, the more dim OpenSolaris’ future gets. Fortunately enough it is an open source project and can easily be forked into a new community driven distribution. So even in the darkest of hours not all is lost.

Categories: OpenSolaris, Solaris Tags:

Compatible with…(insert operating system)

June 10th, 2010 16 comments

I don’t get it. Or maybe I am not expected to understand it. Yesterday I went to a local Best Buy retail store to pick up a USB Flash Drive. After doing a quick price comparison I ended up purchasing the Geek Squad (the Best Buy) branded product. The next day I took the device into work and just as I was about to open it I quickly glanced at the back of the package and noticed:

Compatible with Windows 2000 SP4/Windows XP/Windows Vista/ Windows 7, Mac OS 10.x and above.

What about Linux? Coincidentally this device was getting plugged into and used only by a Fedora Linux system. Now I know that this would have worked (despite the package’s information) and not have any problems with ANY Linux and for the most part almost all UNIX -based operating systems. The device (as all other USB Flash Drives) are labeled with a FAT32 file system and Linux, like any other OS kernel can read a FAT32 labeled volume with no problems. On top of that, most mainstream distributions (if not all) enable automount and an auto open of USB storage devices. The user doesn’t need to do it themselves, similar to Windows and the Mac OS. So what is the problem? Why couldn’t the package say “Linux 2.6 and above” or something to that extent?

You would think from a marketing point-of-view it would have been wise to place this on the package for individuals new to the world of Linux and unsure about a few things. Maybe someone new to Ubuntu or Mint or even SUSE just got a netbook with a preloaded Linux-based image on it. They are looking to find some hardware compatible with it and wait a minute the Geek Squad USB Flash Drives sold at Best Buy do not say that they will work. There is a lost sale.

Some of you may think that this is not such a big deal and that I am thinking too deep into this. I don’t disagree. I am thinking too deep into this, but it is only because I am still surprised when I come across things like this. For instance, not too long ago I was looking at laser printers and guess what some said on it (I specifically remember Lexmark):

…compatible with Linux

I remember buying a pack of labels to print names and addresses, guess what the package of labels said on the back:

…compatible with Linux

The list goes on. Whether end-user market share for Linux is 1%, 0.01% or 100%, manufacturers need to get used to the fact that its market share is creeping up especially with the huge influence Linux holds on mobile devices. For instance, when the Android-based tablets come out, people are going to be looking for:

…compatible with Linux” or “…compatible with Android

Categories: Linux, Microsoft, UNIX Tags:

Headaches with automake.

May 28th, 2010 Comments off

For the past week I have been attempting to build the oprofile profiling suite for the ARM architecture to a specific vanilla kernel my current employer is utilizing for their embedded Linux framework. It has been quite an interesting week overall.

Oprofile is built around the autotools framework which is a great method by which one can create a portable application for multiple architectures. For the most part it works great, that is until you are building for a platform and environment that is built from the ground up to serve only the company’s purposes and in turn will contain the bare essentials for features and functionality ensuring a lightweight core OS for embedded architectures. This is where we start getting into dependency hell: rebuilding binutils (specifically libbfd) for the ARM and pointing the configure script to look at libbfd alongside some headerfiles.

After resolving that, I then coming across compilation errors specific to C++. Let it be known for the record: I do not like C++. Being a kernel and device driver developer, I have always been entrenched within C and when I need to get into Object Oriented Programming, I would prefer Python and in the rarest of cases, Java. It is just much cleaner and easier to work with. Usually Python best fits my needs especially when it comes to graphical development and I write GNOME based applications with pyGTK. C++ was a good concept and major stepping stone in the programming world but it is just sloppy. Even when you come across an error, a lot of times it is just too cryptic. In my most recent situation though, it seemed that it was a stdlibc++ issue built into the GCC toolchain used.

I will save you from the nasty details. To conclude, it was an unsuccessful effort. The module built (written in C) and was loadable with no problems. The only problems that existed were around the user-land tools alone. A whole week spent on something that could not be used in the end; at least until we have more time to invest in addressing the obvious issues. But I guess it was a learning experience nonetheless.

Some additional excitement came when I saw that Bruce Perens has been consulting our group for the past few days to ensure that we are complying with all used open source licenses. Yesterday, he took the time to give a very interesting 2 hour lecture about companies and their uses of open source license. Some of you may recognize that name, if not then you should read more on the open source movement. I found it humorous to observe that his character in person was no different then what I would see in video and documentaries such as Revolution OS.

Categories: Linux, UNIX Tags:

Article ZFS data integrity testing and more random ZFS thoughts.

May 15th, 2010 Comments off

Earlier this week I came across this blog posting about data integrity testing on ZFS title: ZFS data integrity tested. It was a few months old from Robin Harris’ blog Storage Bits. I guess the most exciting part was validating Sun Microsystem’s claims to ZFS having the ability to correct data corruption even with error injection to both the disk and memory. ZFS continues to prove its worth on enterprise class systems and applications.

My only frustatrions with ZFS are that cluster support is currently not available, at least until Lustre 3.0 is out, whenever that will be. Another frustration is trying to write an application that will work directly with a zpool. For instance, there is no simple method to send a zpool a generic ioctl() such as DKIOCGGEOM to obtain the size of the volume. In most cases I don’t care about the number of cylinders, heads and sectors. In the end I calculate the total volume block and/or byte count. So those values could be generic and made up.

In the early stages of my discovering this, I posted a simple question on the OpenSolaris Forums:

“As I was navigating through the source code for the ZFS file system I saw that in zvol.c where the ioctls are defined, if a program sends a DKIOCGGEOM or DKIOCDVTOV, an ENOTSUP (Error Not Supported) is returned.

You can view this here: http://src.opensolaris.org/source/xref/onnv/onnv-gate/usr/src/uts/common/fs/zfs/zvol.c

My question is, what is an appropriate method to obtain the zpool’s volume size from a C coded application?”

After posting my question, I immediately went to view the open source to the general zpool/zfs binaries and observe how zpool reported the drive pool’s capacity back into user space. Unfortunately it utilized some cryptic method not as straight forward as sending a simple ioctl() to the desired volume. This was a bit frustrating as it was such an ugly approach to only receive the size of the volume.

I was grateful to have a response confirming my fear of choosing the ugly route; but it also made me realize the true value of open source. What if I simply patched a supported ioctl() definition to return the total accessible “block” count of a zpool? It would be similar to the Linux BLKGETSZ/BLKGETSZ64. This would be the most realistic and proper method; to add a new ioctl() and then modify all storage modules to accommodate it. For instance in the usr/src/uts/common/sys/dkio.h file we would need to define:

#define DKIOBLKGETSZ  (DKIO|50)

And then go back to the zvol.c file and add the extra ioctl() to handle this:

case DKIOBLKGETSZ: {
uint64_t vs = zv->zv_volsize;
if(ddi_copyout(&vs, (void *)arg, sizeof(uint64_t), flag))
error = EFAULT;
return (error);
}

To give a level of consistency across all storage devices, we will need to add the ioctl() definition to the following modules:

usr/src/uts/common/io/cmlb.c
usr/src/uts/common/io/ramdisk.c
usr/src/uts/common/io/fd.c
usr/src/uts/common/io/lofi.c

Although we do not necessarily have to support it and can instead interpret it as such:

case DKIOBLKGETSZ:
return ENOTSUP;

Who knows, one of these days I may get around to patching this myself and if the OpenSolaris community doesn’t accept it I can always make it available on any one of my website. I will most definitely post about it.

Categories: File Systems, OpenSolaris, Solaris Tags: