I’m almost surprised that I am still struggling to figure out the complexities of Linux. After all, I’ve been using Linux since the days of the Yggdrasil distribution, something that most Linux fans have probably not even heard about. With all that experience behind me, shouldn’t I know everything Linux-related like the back of my hand? Everything at my fingertips?
Ironically, all that experience could, possibly, in fact be working against me. I can see how much things have changed. The changes are something so drastic that you’ll feel completely lost. Practically like a newbie, but worse, because you’re weighed down by the confusion with legacy knowledge. Knowledge that has become irrelevant, but still stays in your head to confuse you.
The peeve today is with init. I was trying to figure out how to insert some customized configuration code in my Ubuntu’s startup sequence. I found what, I thought, were the usual init stuffs. However, as I probed around, I started to notice something was different. Then I found out. init has been replaced by Upstart.
Upstart is almost as different from init as SMF is in Solaris. Yes, that’s right. I was also trying to muck around with init in Solaris one day and found it replaced by SMF. Things have gotten so complicated with SMF. While in the past, you simply needed to know “start” and “stop”, and perhaps “restart”, “status”, and maybe “reload”, the command verbs have change so substantially. When I was trying to debug a service that refused to start, I was initially lost trying to understand what “maintenance” state meant. Then, to get it restarted, the command was not “start” or “restart”, but “clear”! Oh dear, I would have thought “clear” meant to delete the configuration!
There were many more stuff changed with every new Solaris version. With Solaris 11, there are now more deprecated configuration files than ever. All the ways I know to configure, check, and troubleshoot various system problems, well, they are now history.
There’s basically a lot of re-learning to do. For an old-timer like me, particularly someone who doesn’t spend all his time in system administration, and only returns to various system tasks once in a blue moon, these changes are very unsettling and confusing. You get into these things only when something needs to get done, and during those times when you need to get something done, you don’t have the luxury to go read up a whole tutorial about the new wonderful new stuff that whoever it is thought is better and has thus decided to replace the old stuff with.
The way Ubuntu configures various system settings is remarkably different from how it works in CentOS. They are both Linux derivatives, but it’s almost beginning to feel like the split between System V and BSD. Did they have to make things so different? I had trouble figuring out how to manually configure my network interfaces, VLANs, bridging, etc. (I know there is an included GUI for setting up network interfaces, but I don’t think there is anything for VLANs and bridging, hence the need to dive into the underlying configuration files.)
Talk about bridging. I spent a few hours debugging a bridge problem. I’m fortunate to have decent networking skills to know how to troubleshoot these sort of basic networking problems. I concluded there was something wrong with the VM or the bridging mechanism. What did I find? While in CentOS, bridges are configured by default to bypass the traditional iptables and ip6tables, it’s the opposite in Ubuntu.
I’m not going to get started on package management headaches.
I know it is difficult for me because I know all the old stuffs, and it’s messy trying to map all that knowledge to the new stuff. But the new way isn’t any easier to learn. I think while the front-end of the OS (i.e. what the newbie user sees) has become a lot friendlier, the backend part used by the power user has gotten more confusing than ever.
Nice post!
It is for these reasons that I am trying out FreeBSD 10 after 6+ years of using Debian+Ubuntu, and recently CentOS 6 and Solaris 10 for around a year.
Time is precious, I rather solve problems which deliver value than dabbling around with various nuances of different Linuxes.
I just need a stable, predictable environment of doing things where I can use my hunch when things go wrong. I hope to find this with BSD.