Getting Sun iLOM information within Linux

At work, I’m starting to implement OCS Inventory NG on our Linux boxes to keep track of hardware. Part of the plan is also that we have a MediaWiki installation for internal documentation, and articles for every host (named as the hostname). I’m going to pull data from OCS into the articles based on hostname (via a PHP include) so the documentation will automatically include up-to-date information on hardware.

Since we’re moving to MySQL-backed DHCP, I decided that it would also be nice to include DHCP information and links to our web tool to edit the host (like setting PXE boot information). This is pretty easy for the ethX interfaces, as OCS collects MAC addresses and I can search our DHCP database for them. However, it isn’t as simple for the iLOM interface, which (obviously) OCS knows nothing about – though it’s arguably one of the most-forgotten things on our machines.

I know that HP Proliant servers have the nice little HP PSP (Proliant Support Pack) that includes tools such as hpasmcli, but Sun doesn’t have anything like that. (We just have one HP box in production right now, but I’ll probably be adding support for it soon).

Enter OpenIPMI. The iLOM has an IPMI interface, and the standard OpenIPMI-tools package in CentOS repositories has the ipmitool required to get the relevant information. A call is pretty simple: ipmitool -l open lan print 1 yields something like:

Set in Progress : Set Complete
Auth Type Support : NONE MD2 MD5 PASSWORD
Auth Type Enable : Callback : MD2 MD5 PASSWORD
: User : MD2 MD5 PASSWORD
: Operator : MD2 MD5 PASSWORD
: Admin : MD2 MD5 PASSWORD
: OEM :
IP Address Source : DHCP Address
IP Address : 172.16.xxx.xxx
Subnet Mask : 255.255.255.224
MAC Address : 00:14:4f:xx:xx:xx
SNMP Community String : xxxxxx
IP Header : TTL=0x00 Flags=0x00 Precedence=0x00 TOS=0x00
BMC ARP Control : ARP Responses Disabled, Gratuitous ARP Disabled
Gratituous ARP Intrvl : 5.0 seconds
Default Gateway IP : 172.16.xx.xx
Default Gateway MAC : 00:00:00:00:00:00
Backup Gateway IP : 0.0.0.0
Backup Gateway MAC : 00:00:00:00:00:00
802.1q VLAN ID : Disabled
802.1q VLAN Priority : 0
RMCP+ Cipher Suites : 2,3,0
Cipher Suite Priv Max : XXXXXXXXXXXXXXX
: X=Cipher Suite Unused
: c=CALLBACK
: u=USER
: o=OPERATOR
: a=ADMIN
: O=OEM

Now it’s just a matter of integrating this into ocsinventory-agent, having it run the command if present (and Sun hardware), and parsing the results. Once I have some actual code done, I’ll pass it along.

Many thanks to pseud0 on the Sun forums for answering my question about this.

SunFire Information

Ok, an update is a long time coming, and I’ll post one this weekend with status of a lot of my projects, as well as some new information.

For now, I’m installing two beautiful SunFire x4150′s at work, and here’s a little bit of information on how to use these great boxes:

RAID Configuration is accomplished by a normal startup prompt Ctrl+ (C? I don’t remember) key sequence, as they’re x64 machines and it’s a standard RAID controller.

Serial Management is great – just connect (in Kermit I just had to set speed to 9600 and carrier-watch off) and you get a prompt that looks like SUNSP001E682F6311 login:. The numbers are the MAC address of the management interface (SP). The default login is root:changeme, as per Sun doc 819-1155-16. When you login, you’ll see the current firmware version (4.0.06 as my box shipped).

Getting a System Console – on the x4100, at the iLOM prompt, cd /SP/console, start /SYS to boot the system, and then start to get the console. On the x4150, we must start /SP/AgentInfo/Console, and use Esc+Shift+9 to get away from the console.

SunSPOT Update

Well, I got the SPOTs working on my system. It was a bit of a pain, but it worked.

  1. Uninstall ALL of java, jdk, netbeans, and remove user’s SunSPOT directory.
  2. Totally remove /usr/java /usr/lib/ /usr/lib/java-1.4.0 /usr/lib/java-1.4.1 /usr/lib/java-1.4.2 /usr/lib/java-1.5.0 /usr/lib/java-ext /usr/lib/jvm /usr/lib/jvm-exports /usr/lib/jvm-private
  3. Totally remove your .netbeans
  4. Install the jdk6
  5. Install netbeans6.1
  6. Login as your normal user, run Netbeans. Install the SunSPOT plugins from Bruno Ghisi’s blog – http://weblogs.java.net/blog/brunogh/archive/2008/04/starting_with_s.html
  7. Install ant
  8. Symlink /usr/local/netbeans to /usr/local/netbeans-6.1
  9. Here, ant -version failed for me. I had to run ant –execdebug many many times and do a *lot* of symlinking.
  10. Install SunSPOT sdk through SPOTManager.
  11. To install demos, under “Preferences” select “Beta Update Center”, change Network Timeout, go back to SDKs and install Purple demos.
  12. cd into ~/SunSPOT/sdk, ln -s ../Demos Demos
  13. Go back to NetBeans (exit SPOTManager) and open the TelemetryDemo-onSpot.
  14. Now it WORKS!

Also, I tried my hand at a first demo – horribly simple, it just reads light, temperature, and accelerometer data from a USB-connected SPOT. The code is in my CVS repository, as a netbeans project (NB 6.1).

Getting SunSPOTs working under OpenSuSE 10.1

So I’ve been playing around with SunSPOTs lately. Or trying to. My only x86 (32-bit) machines are an old desktop running OpenSuSE 10.1 and my eeePC. It looks like I just killed my new install on the 8GB SDHC card, so I gave the desktop a try. I’d already tried once with the install of Orange from the CD that came with them, and had NetBeans 6 installed, so I had to do some recovery. The procedure was as follows:

  1. Install all of the Java6 java-sun packages (specifically the base as devel).
  2. Download the Java 6 JDK from Sun, and install all of the RPMs.
  3. Screw with /usr/lib/jvm and get it sane – specifically, replace all of the symlinks that point to /etc/alternatives with new ones pointing to the Java6 install in /usr/lib/jvm/java-1.6.0-sun-1.6.0
  4. Delete your entire .netbeans directory (I was having serious issues with NetBeans).
  5. Start NetBeans from the command line with an explicitly set jdkhome: “netbeans –jdkhome /usr/lib/jvm/java-1.6.0-sun-1.6.0
  6. Download the SPOT plugin for NetBeans, following the instructions on Bruno Ghisi’s blog.
  7. Once installed, you should have a little SPOT-looking icon on the toolbar below “Navigate”. Click on it, and launch SPOTManager from the link in the right panel (“Sun SPOTs Info”, the link is an icon not text). Go through whatever configuration is needed.
  8. Upgrade local SDK to Purple (Click the SDK tab, select “v3.0 Purple” from the right panel, click the Upgrade button near the bottom).
  9. Upgrade your demos following davidgs’s blog posting.
  10. Upgrade all of the SPOTs to Purple (plug them in one at a time, on the SPOTManager SunSPOTs tab, click “Upgrade”).
  11. I’m still having some minor issues here. I’ll update when I have everything figured out…

SunSPOT; CarPC; MediaWiki Logging

Well, finals season is upon me. That’s probably why I haven’t been posting much lately (I haven’t even been checking Google Reader – I’ll have to delete a few thousand entries when I get back into the swing of things). I’ve been pretty busy, between studying, projects, and work. I’ll be working 4 days a week through June 20th, as well as taking night classes 4 nigths a week (unfortunately not the same 4 days) through July 3, in an effort to graduate Rutgers on time (after transferring in and also switching majors). Work after June 20th is up in the air – who knows how hard the budget cuts will hit.

My internship as the Sun Microsystems Campus Ambassador to Rutgers is over on May 12th. I got a chance to do the Rutgers IT Vendor Fair with Sun, and met a few cool people – especially including Matt McGrath of Continental Resources, a Sun Strategic iForce Partner, who’s doing some wonderful things with the Sun Education Essentials Matching Grant Program, and Skip Paul, a Linux Systems Engineer for Novell’s Open Platform Solutions group. I also finally cracked open my demo set of SunSPOTs. Wonderful little devices, radio, run Java on the bare metal, and have temperature sensors, accelerometers, and liberal I/O. My first development exereice will probably be making a temperature and acceleration data logger for my truck, but there’s surely more to come. They’re great!

My newest project – which I’m hoping to spend nearly the whole summer on – is the TuxTruck. I’ve been frustrated with the lack of “smartness” in my truck (an 06 Ford F-250), not to mention having to remember my MP3 player so I can listen to podcasts on the way to work, and having so many gadgets in my truck. So, the solution is obvious: a Linux-based CarPC. A nice little Mini-ATX box under a seat, with a 7″ pull-out touchscreen in the dash (replacing the factory radio). It’s a big, complicated, and expensive project – but I want one, and I could use some experience with smaller systems.
The major features I have planned:

  1. Realtime GPS navigation
  2. Hands-free bluetooth calls from my cell, with address book, routing to contact address, possibly voice dialing.
  3. Realtime weather
  4. OBD-II interface, for vehicle diagnostics and fuel efficiency/performance profiling
  5. Audio – at a minimum searching and playing MP3s, and automatically downloading podcasts and throwing them in a playlist. Perhaps also an AM/FM tuner

It’s not an easy project. So far, the major challenges seem to be:

  • No full-featured GPS navigation package available. The ones that are available don’t seem to be too easy to integrate into my planned GUI, which will allot them 800×420 pixels (on an 800×480 screen) and requre the bottom toolbar to be always available.
  • How to handle processing of multiple data streams that require near-real-time processing – specifically, GPS with text-to-speech, turn-by-turn directions, plus playing audio, plus responding to an incoming phone call in a timely manner, pausing the audio, and stopping GPS audio but continuing navigation.
  • Whether to install a smaller stereo and use aux input for audio, or totally rip out the stereo, use an amp with the computer as its only input, and then how to control volume?

There will be more to come in the future. For now, take a look at the TuxTruck github.


Update Saturday, March 2, 2013 – I’m in the process of migrating my legacy CVS and Subversion repositories to github.com. The forgotten SVN repository for TuxTruck has been migrated there, and the CVS repository will soon be moved there as well. Tuxtruck.org has been permanently taken offline and redirected to the GitHub repository.


Mediawiki Logging – I recently had a situation where I had to confirm how much work someone had done on a MediaWiki-based project. The Recent Changes page only goes back 30 days, and walking through the History of each page is a pain. After looking around in the database a bit, I found a few tables of interest:
  • Table “users” includes fields “user_touched” (last time the user was updated) and “user_editcount” (a really simple count of the users’ number of edits).
  • Table “recentchanges” holds a lot of data… seemingly the entire life of the wiki

Rutgers Student Linux Group and Sun

The next week will be quite busy. For one, I’m going to attempt an OpenSolaris operating system installation on my Asus eeePC. Last I heard, there were some compatibility issues – though this was my first attempt at running the Solaris operating system on a laptop, and it took quite an effort to get my favorite mainstream Linux distro installed on the eeePC, though I’ve been running that on laptops for 6+ years.

This Sunday, March 30th, the Rutgers University Student Linux Users’ Group (RUSLUG) will be hosting our annual Installfest in the EIT Lab from 10 AM until 6 PM. While the event is generally marketed towards Linux newbies, it’s usually attended by a diverse range of students (and staff) from first-timers to Solaris sysadmins. I’ll be attendance, as always, and will also be conducting some demos of new Sun technology (mainly OpenSolaris and NetBeans). For anyone in the New Brunswick/Pisctaway area, I’ll also be armed with some door prizes and a whole plethora of CDs and DVDs. For anyone interested, I’ll be providing information and pointers on NetBeans and Solaris, as well as installation assistance (and maybe some prizes) for anyone looking to give OpenSolaris a whirl on their system.

Following up the Installfest, on Tuesday, April 1st at 9 PM (also in the EIT lab) will be the RUSLUG Newbie Night. It’s generally a fun-filled evening with Ubuntu LiveCDs and a general Q&A session about Linux. Generally this includes one-on-one assistance for new Linux users. In an effort to raise the level of content (and provide a diversion for more experienced users if there aren’t many new faces), I’ll be once again demo’ing some Sun technology, and specifically providing an overview of my recently completed personal mailserver migration from SuSE Linux to OpenSolaris. Once again, visitors can expect some door prizes and lots of fun CDs to take home.

In other RUSLUG news:

  • It looks like I’ll be running to become an officer next year. Anyone else at Rutgers can feel free to contact me with ideas, etc.
  • RUSLUG’s current box, ruslug.rutgers.edu, is a Dell desktop thrown on a shelf in a closet. I’d like to find someone willing to help out with procuring a new box. It doesn’t need to be anything fancy – just pretty simple, though I’d like to look into high capacity storage for mirroring distros. FYI, the current box is a Dell desktop with a 1.7GHz P-4 (256KB cache), 512 MB RAM, and about 250GB of IDE storage (150GB + 100GB, no RAID). We don’t need a big upgrade in processor power, but more RAM and RAID for the system and user disks would be nice (distro mirrors can be a big IDE/SATA or an external disk).

Rainy Day Link Updates

Well, today happens to be my 21st birthday. Now, not only can I vote or die for my country, but I can finally buy a drink when a president I didn’t vote for sends me off to war! All kidding aside, almost every year I can remember, it’s either snowed on my birthday, or been a rainy, slushy mess. This year appears to be the latter – an utterly disgusting mix of rain, slushy snow, and little chunks of ice from last night.

I haven’t had much time this week to do anything interesting – it’s been a busy week for class-related stuff, and a bunch of work-related stuff too. So, I guess I’ll just post some interesting links for the past few days…

Sun Microsystems has announced that we’ll be acquiring Innotek, and therefore VirtualBox. This means that Sun’s virtualization products will now reach to the desktop – and that I should give VirtualBox a shot for running OpenSolaris on my laptop. (aside: why is virtualization not in my Firefox spell check yet???)

Researchers at the Pittsburgh Supercomputing Center have come out with a version of SSH / SCP that uses multi-threading, for use in high-bandwidth applications on multi-core systems.

An ITnews article on why Open Source needs better PR.

What? Microsoft sued again? Ars Technica ran an article on the Vista Capable fiasco, with some comments from MS insiders. How is it that such a big company, with such a ubiquitous product, can constantly be sued, have MAJOR screwups, screw over their customers, and still people come back for more?

BBC News – EU Competition Regulators raid Intel offices in Munich.

A CNet article (linked from John M. Willis’ ESM Blog) on the US Treasury upping its content management budget to $28.2 million – no wonder why ww have so much debt, nobody told them about Drupal. From the article – “tens of millions on a $1 million problem”.

Roger Rustad’s Nagios Wiki, liked in a Groundwork blog entry.

Sun and MySQL

I’ve got a lot to update about in the next few days. I’m back in my apartment for the new semester of school, I’ve got a lot of infrastructure work to do here (most importantly getting net-to-net VPN with DynDNS at both ends working from here to home, even if it means bypassing IPcop totally), and I also did some freelance administration over winter break, including some work with SCO OpenServer and some work with DF generation – I also set up my own PDF form filling system, which I’ll be posting in CVS once it’s done. Most importantly, the new mailserver has been up and running for 22 days without any problems. And, by far the most exciting, I’m typing this up on my beautiful new Asus eeePC 4G (which I upgraded to 1 GB RAM) running OpenSuSE 10.3 from a 4 GB SDHC card – A HOWTO will be coming soon. I’m also going to be doing some work with sitemaps on this site – specifically Google sitemaps – and building one map for the blog, Mediawiki, and static content. I’m also testing Google Analytics on my wiki to augment Webalizer. I’ll be updating the blog in the next few days with a lot of content.

I’m also catching up on all of my RSS feeds in Google Reader (yes, I use Google everything – but not mail or Docs) which I mostly ignored over break. I started yesterday with 780 items, and I’m down to 500. I’m also going to attempt to start quick little “links of the day” entries, as it seems that it’s taking me too much time to fully blog on the interesting news of the day, and my list of things to blog on is getting way too long. (Just as a side note, the only reason I really use del.icio.us is so I can have the firefox plugin sync my bookmarks between the many machines I use.)

Anyway, on to the hottest bit of news today – Sun Microsystems has acqured MySQL AB. Now, I must say that I’m an intern at Sun – the Campus Ambassador to Rutgers University. Essentially, my job is talking to students, professors, and staff and telling them that “Yes, Sun does open source, and they have a few things that should interest you” – in addition to giving tech demos, handing out CDs, and raffling off t-shirts – and even a SunSPOT. I must emphasize that what I say here is my own opinion and nothing more. Heck, I’m an intern, it’s not like I know any more about what’s going on at Sun than anyone else who reads Digg.

Anyway, lots of people are talking about the MySQL acquisition. I’ve heard every possible opinion, but it seems like lots of them are worrying about something along the lines of Sun pushing a Solaris/Apache/MySQL/Java stack on SPARC hardware. Now, I’ve been watching Sun *very* closely for the past year or so. And I’ve been following Jonathan Schwartz pretty closely too, especially his blog post about the MySQL acquisition.

I can’t say anything as a Sun employee (I don’t have anything more to say than anyone else who follows the news) but, personally, I think a lot of people who are worried are just missing the point. Sun used to be a closed, proprietary company pushing Solaris on SPARC. But it seems to me, lately, Sun is all about options. Java’s Free software now. Solaris has been opened as well. I don’t get the feeling that acquiring MySQL is about pushing Solaris instead of Linux, or that it will cause Sun to ignore PostgreSQL or Oracle/Solaris products. It’s about options. Just look at Sun in the news lately – more and more Intel-based commodity hardware, Solaris, Linux, or even Windows on Sun Hardware, Java, OpenSolaris…

I very much get the feeling that Sun/MySQL is not about Sun trying to force LAMP out of the marketplace or, as some have conjectured, to turn MySQL into a mostly proprietary product with minimal free version. It seems to be about options. About diversity. Whatever you want, Sun can help. Everything from million-dollar Enterprise servers running Trusted Solaris and giant Oracle databases to Intel-based 1U or 2U LAMP servers – or even, now, LAMP servers on non-Sun hardware. (Though why anyone with the money to do so wouldn’t buy Sun hardware, I have no idea).

Stay tuned for more.

Sun Blade 150 working!

Yes, it’s 3 AM here, and I’ve been working since about 6 PM on this. But I finally got one of my two surplus (and fully locked down in NVRAM) Sun Blade 150 workstations up and running. I encountered a few problems along the way, but managed to solve them – more or less.

Problem 1 – NVRAM password set, impossible to install an OS.
I did a *lot* of googling, and asking for advice. Eventually, I came by a forum post expressing success with a procedure of pulling out and then re-inserting the NVRAM *while* the system is powered on. This left my system un-bootable. I pulled the chip again, and found two pins bent. I straightened them, re-inserted, and rebooted using the Stop+N Equivalent Functionality (after powering on the system, once you hear the POST beep, click the power button twice quickly). This temporarily resets the NVRAM to default settings. I found that the password was gone, and was able to issue the “set-defaults” command at the “ok>” prompt. I then popped in the Solaris 10 install CD, issued the “reset-all” command to reboot, and used Stop+A at boot to bring up a boot menu, and told it to boot from CDROM (“boot cdrom”). Installation then started.

Problem 2 – Invalid NVRAM
After the above procedure, when booting, I got a message following the Sun banner stating that there was a problem with the IDprom checksum. When the install CD booted, I also got messages stating “Invalid format code in IDprom”, “Warning: IDprom checksum error”, and “os-io Invalid format code in IDprom”. After another five hours of work, I found that it’s essentially something I have to live with. While OpenBoot previous to version 4 allowed use of the “mkp” and “mkpl” commands to directly write the IDprom, version 4 and above allows no access to this. The IDprom was reporting an ethernet (mac) address of all zeros. Unfortunately, there seems to be no way to correct this as far as I’ve found. However, it didn’t effect my OS installation… much.

*There may be a way to access the IDprom through OpenBoot 4.x, but I couldn’t find any reference to it online, and couldn’t figure out the FORTH commands from the reference docs.

Some helpful links for the above problems include the OpenBoot 4.x Command Reference Manual, currently found here, as well as the Sun Blade 150 Service Manual (from docs.sun.com), document 816-4379-10, currently indexed with the Sun Blade 150 docs here. It was also interesting, in my search for help, to look at the OpenBoot 3.x Command Manual, and see how easy it was to re-write the IDprom on older Sun Blade workstations.

Pleaese note that the advice given in the Unofficial SunBlade 100 FAQ and the squirrel.com Sun NVRAM FAQ doesn’t seem to work on the 150 with OpenBoot 4.x. From what I can tell, all of that advice applies only to OpenBoot 3.x!

Some other helpful links included an ITworld.com article on Sun NVRAM passwords, this Sun Developer Forum post, and this post on password recovery.

Problem 3 – MAC / Ethernet address is 00:00:00:00:00:00
When booting Solaris, I found that I couldn’t get DHCP. When I finally got the OS running and logged in as root, I realized something interesting – I couldn’t access or ping anything past the one switch I was connected to. But everything on that switch was fine, pinging both from and to the Solaris box. I ping’ed from my laptop, and then thought to run “arp -a”. It showed a MAC address of 00:00:00:00:00:00! Running “ifconfig -a” on the Solaris box confirmed this. Luckily, the first time I booted this box, I wrote down the ethernet address and hostID as shown on the banner. I ran a quick ifconfig to setup the correct MAC, like “ifconfig eri0 ether xx:xx:xx:xx:xx:xx”. Networking now worked perfectly, and I could get to everything on the LAN as well as browse the web. It would be good to somehow reset this in NVRAM, but for now I’m just going to add it to the startup scripts somewhere. One forum post that I found suggested adding the previous ifconfig command to the top of /etc/rc.c/init.d/network, which I’ve done and will see how it works at the next boot.

Problem 4 – Can’t login to SMC (Solaris Management Console)
My next task after getting the system up and running, and getting networking working, as to give myself a user account. I was logged in using the Java Desktop System, so I opened a terminal and ran “smc &”. After the usual initialization wait, I loaded the toolboxes for the local machine, and connected. When I clicked on the “users” module and entered my root password, I got an invalid password / login failed message. I tried again and again, even checking against the post-it that I wrote the password on until I memorize it. Nothing. Searching the forums, I came by this post, but the value in /etc/security/policy.conf was correctly set to ” CRYPT_DEFAULT=__unix__”. So, on a wild hunch, I used “passwd” to reset my password to a shorter one, which I use on a few other (unimportant) workstations. Magic!

I now have, after two days of work, a working Solaris box. Now that I have a good OS install, in order to get the other box working, I *should* just be able to swap HDDs, boot, login as root, and use the “eeprom” command to set “security-mode” to “none”, bypassing all of this bull****.

*nix

First off, my Sun blog should be coming sometime this weekend/early next week. If I post anything interesting there, I’ll be sure to cross-post it.
This morning at work, while reading Digg, I came by two interesting links that got me thinking:
5 Reasons Your Parents Should Use Linux and Ten Things Linux Distros Get Right (That MS Doesn’t).
Now, I’ll admit, my *nix experience is pretty much limited to Linux. I’ve used BSD a few times, but only as pre-built images for embedded systems like my Soekris boxen. I’ve used Solaris mainly just as a user/web developer in SSH at work. And while I now have a work computer running Solaris 10 and a SXDE image on my laptop, I’m still relatively new – and, given that I’m now doing hardware support and wireless work, I don’t even know what I need another machine in the office for.
That being said, the second link got me thinking. Specifically, about something I read in The Art of Unix Programming [Wikipedia] by Eric S. Raymond (available online here) with regards to interface design. One quote that I was able to find in the online version, comes from Chapter 11, under the subtitle “Tradeoffs between CLI and Visual Interfaces”,
“Resistance to CLI interfaces tends to decrease as users become more expert. In many problem domains, users (especially frequent users) reach a crossover point at which the concision and expressiveness of CLI becomes more valuable than avoiding its mnemonic load. Thus, for example, computing novices prefer the ease of GUI desktops, but experienced users often gradually discover that they prefer typing commands to a shell.”
There is another similar quote in the book, mentioning how resistance to the CLI drops as typing speed increases.
Unfortunately, in some areas I’m still bound to Windows. Though my only personal use for it is to control an ancient Umax Mirage IIse SCSI scanner (with only Windows and Mac drivers), I ultimately need to touch it now and then – whether on my mother’s box (she claims she has to have Windows and MS Office because “that’s what businesses use”) or as admin of the four boxes at the Ambulance Corps where I volunteer.
However, whenever I am (unfortunately) pushed into the task of working on a Windows box, I always feel something lacking. To be blunt, I don’t see how experienced users can deal with it. And this isn’t just an issue of multiple desktops, or reliability (I expect my desktop to have months of uptime, and my servers to have years). This isn’t just pro-Linux, it’s anti-Windows. Linux is great. Solaris seems wonderful, and I can’t want to move my servers over. And, believe it or not, due to playing around with the Solaris Management Console, for the first time in 5 years, I plan on running X on my servers.
What this is, is a talk about total workflow. Years ago, I reached the point where I am more comfortable at the command line, or in an Ncurses-style GUI, than in X.
I an attribute this to two factors – verbosity and speed. The CLI is as verbose as anything can get. I remember setting a static IP on a Windows box. I had to navigate the Start menu, open up the control panel, the network thingy, click on the network card, and work through a series of dialogs. In Linux, I clicked on the terminal icon, typed “sudo ifconfig eth0 up 192.168.0.211″ and then a password. Done. Likewise, refreshing a DHCP lease on Windows requires a whole bunch of “repair connection” nonsense, whereas in Linux all it requires is “dhclient eth0″. The bottom line I know what I’m doing. Windows should have an option to let me quickly do it.
Speed is a related issue. Click, click-click, drag, click, click…. what about just typing? Even for people who aren’t CLI-friendly, there’s Ncurses. YaST2, the SuSE/openSuSE administration tool, has both GUI and Ncurses interfaces. I always use the Ncurses interface. Why? Because I’ve been using it for years. I know that if I want to add a user through YaST, I hit the down arrow 7 times, tab once, down 5, enter. Tab once more to bring up the add user dialog. I can do this in well under a second. What’s the bottom line? Well, first of all, my hands are already on the keyboard. That’s where they like to stay. That’s where they’re comfortable. My fingers need to move a *lot* less to navigate with the arrow keys, tab, and enter than they do to use a mouse. If you know what you’re doing, if you already know what you’re looking for, then a mouse is slower than the speed of thought (or reaction).
So where’s the Windows bashing? Simple. How do people at Microsoft deal with this? How does the guy who *wrote* that network settings dialog deal with navigating the GUI every time, even though he already knows exactly what he wants to do – and probably the system calls to do it?
The bottom line is that every time I sit down at a Windows machine, I wonder how the most popular OS is one that doesn’t give any thought to advanced users. I know that I can type faster than I can move a mouse, why don’t you let me use that? More importantly, why didn’t Microsoft ever think that people would use computers on a network? When I installed Solaris, I wanted to edit a config file. I hadn’t customized *anything* yet, hadn’t installed any other software, nothing. Yet, I was able to open up a terminal and grab my .emacs file from my laptop in one line (scp).
To be totally honest, the question running through my mind is something like “everything is so much quicker on Linux. How do experts deal with Windows?”