Tag Archives: linux

Ubuntu 10.04 LTS server always selecting older kernel despite updates

I hit a really strange issue for some time now with one of my Ubuntu 10.04 LTS servers where, despite doing recent kernel updates (the latest is 2.6.32-33) it always booted into the kernel 2.6.32-28. No matter what I did (update-grub, etc.), the server was sticked to 2.6.32-28.

After searching and reading a lot of posts and wiki pages I still couldn’t find a solution for it (most blogs and wiki pages talk about compiling a new kernel or installing a new one, but none talked about selecting the proper kernel or fixing it manually).

But since I had some other server, that booted into the correct kernel issue, I luckily had some config files to compare. The one that I was after is the “menu.lst” which is a GRUB file and is located at “/boot/grub”. Looking at the menu.lst from the working server and comparing it to the “not working” one, revealed that the “non working” one had UUID’s declared for each server while the working one not UUID but “root (hd0,0)” and hard coded root paths of “/dev/sda3″.

Working config:

title   Ubuntu 10.04.2 LTS, kernel 2.6.32-33-server
root    (hd0,0)
kernel  /vmlinuz-2.6.32-33-server root=/dev/sda3 ro quiet splash
initrd  /initrd.img-2.6.32-33-server
quiet

Not-Working config:

title   Ubuntu 10.04.2 LTS, kernel 2.6.32-33-server
uuid  9823d540-6bf0-467a-8640-39d33c7544fb
kernel  /vmlinuz-2.6.32-33-server root=UUID=d9e79ad9-6d53-4cb5-85d6-e9f1eea712f2 ro quiet splash 
initrd  /initrd.img-2.6.32-33-server
quiet

As you can see from the this, the UUID and the root are quite different. I can’t actually explain why this configuration took place on this particular server. This is even more surprising since both servers are being “kept in sync” (with updates and such).

In any case, the resolution (for me at least) was to copy certain parameters over to the “not-working” menu.lst. Those were, the root path (/devsda3), the “root (hd0,0)”, the “groot=(hd0,0)” plus the “kopt=root=/dev/sda3 ro” lines.

It took a long time to fix this issue and and I hope this helps someone else.

svn: warning: cannot set LC_CTYPE locale

Somehow with the recent Ubuntu 10.04 LTS updates or maybe with a subversion update, I received some errors message of the type “locale…”. To be more precise the errors are;

svn: warning: cannot set LC_CTYPE locale
svn: warning: environment variable LC_CTYPE is UTF-8
svn: warning: please check that your locale name is correct

While all SVN commands still worked, it was something I didn’t tackle with immediately. But today, I set out to fix it. Well, it only took a minute or so :)

So, if you want to fix this all you have to do is to set the “LC_ALL” variable manually. To make it permanent just edit the file “/etc/environment” and add the line:

LC_ALL=C

Save the file and exit the editor. In order for it to apply you have to logout of the current shell session. The next time you log in, the issue with SVN will be gone.

 

Seamless server access from MacOS X to Ubuntu with SSH public keys

When you access a server over SSH you usually get asked for a password that you trustfully type into the terminal window. But doing so is insecure for many different reasons (I’m sure there are many people who wrote about this before and describe it better then I ever could). So, what is a better way to log into your server then? The best way so far is a method called “public key authentication”.

So, since we want to add security to our belt, we can simply use this technique for our SSH access as well. On MacOS X it is actually very easy to setup.

First up, you need to create your own keys. Doing so, is straight forward, all you have to do is to open up a Terminal window and type “ssh-keygen”. This will then prompt you some questions, where to put the keys (use default) and for the passphrase (I would suggest you use a good password). In the end, it will save your keys (your private one and a public one) to your .ssh directory.

Now what you got your public key, all there is left to do is to copy your public key to your server. In case you have root access to your server, it is simply a manner of doing it with “scp”, like:

“scp ~/.ssh/id_rsa.pub root@{yourserverdomain}:.ssh/authorized_keys”

This will copy your public key to the “authorized_keys” of the server.

Once done, you can now simply log into your server with ssh root@{yourserverdomain} without the need to enter a password since your server and you exchange keys for authentication.

Troubleshooting

When you copy your key to server you might get a error that the file “authorized_keys” is not found. If so, then simply create the file on the server and issue the copy command again.

 

Celebrating 20 years of Linux

I remember when I installed Linux the first time (many many moons ago) and it was all cryptic for me. All that starred at me, was a black screen with some strange symbols and a pointer blinking.

So, this is Linux, I thought and tried to get my way around it. To be honest, it took a couple of re-installs and some learnings to come to the level I’m at now. Nowadays, all of my applications run on Linux servers (my favorite one is Ubuntu server) and I have to say that I’m more then happy how Linux performs.

Actually, my next step is to adopt Linux (Ubuntu) on my laptop, but to move to Linux on my desktop, I really need to have a application like Aperture of Adobe Lightroom. Apart from that, I think Linux on the desktop has a big chance to succeed. Especially, Ubuntu 11 with Unity will probably make this move apparent for a lot of users.

In any case, if you run Linux on your servers or thinking of migrating to Linux, you own it to yourself to watch the below anniversary video and head over to the dedicated “20 years of Linux” site.

Fun with Cron

For some of my Ubuntu Servers (10.04) the Cron jobs did not work or only sporadically executed. I’ve asked around, but none of my friends could explain why this is so. This happened on physical as also on virtual servers. Thus I set out today to finally figure out what caused this. To mention it upfront, I did not find the cause of it, but I got my Cron jobs working again. (and learned a lot along the way)

System Crontab and User Crontab

In the past I always set cron jobs in the /etc/crontab file. This is also the way I’ve used cron in the last couple of years. By switching to Ubuntu server 9.x this worked, but somehow since 10.04 they only worked sporadically. As explained, I don’t know why this is so, but moving those cron jobs into the user (in my case the root account) with “crontab -e” they started working again.

The only difference is that one does not need to pass the user the jobs has to run in with the command, since we edit the user crontab file with “crontab -e”, but everyting else works now as expected.

Getting cron to log

Under Ubuntu logging of any cron action is disabled by default. Since, I wanted to see if my jobs are running and execute successfully I had to enable it. Enabling logging of cron is done in the system default files with:

vim /etc/rsyslog.d/50-default.conf

Uncommenting the ‘#’ before the line that says cron and it will enable logging for cron:

cron.* /var/log/cron.log

and save the file. Now simply reload or restart the rsyslog utility with:

service rsyslog restart

Note: In my case, I had to create the file “/var/log/cron.log” manually in order for cron to write the log.

Enable or preventing cron to send eMails

I guess by default, cron will send eMails on errors or completed actions to the user. In my case, I got a lof of eMails with completed actions and more from cron shortly after. Controlling sending of eMails is done by the global variable ” MAILTO=”" “. One can also direct the output to null for disabling sending of emails.

To disable cron from sending for all jobs:

Add MAILTO=”" to the top of cour crontab file.

To disable sending of eMails for individual jobs:

0 1 5 10 * /path/to/script.sh &> /dev/null

Ubuntu 10.10 and grub menu

I just upgraded one my Ubuntu server from 10.04 to 10.10 (works flawlessly) and realized that I was prompted with the grub menu during a reboot. Since this is a cloud server and it being managed over SSH, I surely wanted that Grub automatically selects the latest kernel and does not wait for an input.

To be honest, I don’t know why this changed (well the only grief with the move from 10.04 to 10.10). Luckily, this is a easy task. All there is to do is to change a value in one of the grub conf files. Edit the file “/etc/grub.d/00_header” and search for “recordfail”. This should bring you to the line;

if [ \${recordfail} = 1 ]; then
  set timeout=-1
else
  set timeout=${GRUB_TIMEOUT}
fi

Now, all there is to change is the value “-1″. The value 0 will bypass the menu and any greater value is the time of countdown after a unsuccessful boot. (I changed it to 3).

After you saved the change you need to run “sudo update-grub2″ to apply the change. If all goes well, you should boot directly with the configured kernel during next reboot.

On my way to Linux – Part One

Right, so here is the scope. I’ve been a MacOS X user for many years, not that I have been a fanatic one but I simply used what works best for me. In any case, I own 3 Mac Mini’s and mostly got a new MacBook Pro every year. I also converted quite a lot of people over the Mac. Recently, I’ve even got a iPhone (well, 1 1/2 years ago) after many years of using a BlackBerry. I have to say, the “Apple way” has worked very well for me.

That being said, I have always followed how Linux has been developing, especially on the desktop side (all of our servers run Linux). Actually, with Ubuntu 8, I seriously was thinking of using Linux on the desktop, but back then some application were missing. Later with Ubuntu 9, I took another try, but it still wasn’t ready for me. Now, with Ubuntu 10, the distro is not only very mature, but also, the applications I need are mostly up to date and work well for me.

So, today I set out to see if I will be able to replace my workplace which is based on MacOS X to Linux Ubuntu. My current setup is a MacBook Pro 15″ as my main machine hooked up to a 23″ Cinema screen. I was thinking to replace this setup with a desktop machine and have a netbook (the Asus EeePC 1201PN looks very sweat) as well. Since I still have a older MacMini lying around I set out to get Ubuntu 10 running on it.

Installing Ubuntu on a MacMini

Installing Ubuntu 10 on the MacMini was easy and surprisingly Ubuntu found every bit of hardware, it even found my Bluetooth Logitech Mouse within seconds.WIFI, Ethernet and external hard drives were also found without problems. For those wondering how to install Ubuntu on MacMini all you have to do is to partition your drives with BootCamp, insert the Ubuntu CD and then reboot the Mac (hold down the ALT key). Select the “Window” partition and it will start up from the Ubuntu CD and will start to install it.

So, how is it working with Ubuntu 10?

What can I say, except that the people over at Canonical (the company behind Ubuntu) has fulfilled the promise to bring the best Linux experience to the desktop. I have had no driver problems, could immediately connect to the WIFI network and installing new software even easier then on the Mac.

But we already knew that Ubuntu is good, right? So the real thing for me is to see if I can get my workspace going under Ubuntu. In short, this means that all my applications and workflow will be available and doable with Ubuntu. Thus the rest of this blog post and part two and maybe even part three will be about finding and using the equalivant of of the Linux app to the Mac ones.

I won’t go into the obvious applications that are the same on each operating system like browsers or file explorer systems. The good thing to know is that Firefox and Google Chrome and all their extensions work the same under any operating system. One thing I noted so far, is that Firefox does not seam to have the memory leak problems like the one on the Mac.

Eclipse

I’ve used Eclipse for a long time and recently switched to Coda on the Mac, since Eclipse just eat away all the RAM I had and even crashed many times a day. I’m happy to see that Eclipse under Linux is rock solid and I can use my favorite development environment again.

Mail / Calendar / Contacts / iCal / Address Book

This is a no brainer for me, since I have been using Google Apps for some time and thus my Mail and Calendar already resides in the cloud I can simply continue using my browser without any OS worries. I never used Mail.app (instead used the Browser or Mailplane) and used Spanning Sync for keeping iCal and my Address Book in sync with Google Apps. Since, I don’t like any Mail apps or Calendar under Linux I simply opted to use the browser for Mail, Calendar and Address Book (this will keep it in sync with the iPhone/Android).

Word / Excel / Powerpoint

Right, so much has been said, about using OpenOffice instead of iWork or Microsoft Office. In my testing I have to say that OpenOffice 3.x works fine, but maybe it is just me or does OpenOffice on Linux look like Word 98? Feels like flying back in time… I have to say, that I haven’t tested this part in depth and so I can’t really give any verdict on this.

I have some other apps I need to work with like Aperture, TextExpander, 1Password, etc. and will write on these on the second part.

I hope this helps anyone that is wanting to switch over to Ubuntu. I haven’t made up my mind, if I should switch full time to Ubuntu. At the current state, the MacOS X with its Unix root feels like the grown up Linux, just more polished and with all the apps in the right place.

Please let me know your thoughts in the comment section.

Getting SUN Java 6 JRE installed on Ubuntu 10

So far, installing SUN Java versions have always been a bit of a “pain” under Linux. Well, as I said, when you need SUN’s Java version that is. Most of the time you need to go to their intuitive (fun intended) download page and think very hard which version to download.

Ubuntu has made this step a bit easier. Actually, all there is to it, is the following:

1. Add the required partner repository

Under Ubuntu 10 you have to edit the file “/etc/apt/sources.list” and uncomment the partner entires (See screen shot below).

2. Update your repository

This is a simple one. Issue the command “apt-get update” and off you go.

3. Install Java

Now all there is for you to do is to install Java with “apt-get install sun-java6-jre”.

Now, anyone please tell me that Linux is hard to handle :-)

Upgrade to most recent ImageMagick version on CentOS 5.x

My favorite choice for running a Linux Server is CentOS, since it is based on the RedHat distribution you can rest assured you will get a top notch enterprise offering and stability. As with all things “enterprise” the priority is on stability and security and not on the latest code releases. This works 99% of the time, but sometimes you still need some update.

In the case of ImageMagick, CentOS comes with version 6.2.8, it was a bug that was fixed with PSD conversion and thus I needed to get the latest version installed. So, here are the steps to install ImageMagick 6.5.7 on CentOS 5.x. Mind you, that you will loose the internal patch upgrading from yum, but all you need to install to the next version is just to follow these steps again.

Uninstall current version
Uninstall the current version with:

yum erase ImageMagick*

This will uninstall ImageMagick 6.2.8 and if you have any other versions installed, like the devel one.

Install the needed dependencies
ImageMagick depends on a couple of additional libraries to convert to different formats. Let us just make sure, that they are all installed with:

yum install tcl-devel libpng-devel libjpeg-devel ghostscript-devel bzip2-devel freetype-devel libtiff-devel

Download and extract latest ImageMagick version
You can always get the latest ImageMagick version directly from their website. Code below will download and extract the file.

wget ftp://ftp.imagemagick.org/pub/ImageMagick/ImageMagick.tar.gz
tar xcvf ImageMagick.tar.gz
cd ImageMagick-6.5.7-5

Configure and make ImageMagick
With the below configure command we are configuring ImageMagick with the most needed options. Feel free to adjust it to your needs. As always issue a “–help” to see all the available options.

configure --prefix=/usr/local --with-bzlib=yes --with-fontconfig=yes --with-freetype=yes --with-gslib=yes --with-gvc=yes --with-jpeg=yes --with-jp2=yes --with-png=yes --with-tiff=yes

Wait until configure has finished. At the end you will see all the enable options. When you think all went well issue:
make

Now is a good time to make yourself some coffee or continue coding your next big killer application because make will take some time to finish. When it’s done, issue:
make install

That’s it! You are done. Wasn’t so bad, was it? Check with:

convert --version

That ImageMagick is properly installed and that you got the current version up and running. If all went well you should see something similar to this:
Version: ImageMagick 6.5.7-5 2009-11-08 Q16 http://www.imagemagick.org
Copyright: Copyright (C) 1999-2009 ImageMagick Studio LLC

Automatic Memory Management in Oracle Database 11g

Oracle Database 11g brings lot of new enhancements, especially in the Memory management. Oracle 11g allows you to allocate one chunk of memory, which Oracle uses to dynamically manage both the SGA and PGA.

Automatic memory management is configured using two new initialization parameters:

  • MEMORY_TARGET: The amount of shared memory available for Oracle to use when dynamically controlling the SGA and PGA. This parameter is dynamic, so the total amount of memory available to Oracle can be increased or decreased, provided it does not exceed the MEMORY_MAX_TARGET limit. The default value is “0″.
  • MEMORY_MAX_TARGET: This defines the maximum size the MEMORY_TARGET can be increased to without an instance restart. If the MEMORY_MAX_TARGET is not specified, it defaults to MEMORY_TARGET setting.

If you are using UNIX/Linux, before you consider using AMM you should check the current size of your shared memory file system. On Linux you do this by issuing the following command.

df -k /dev/shm
Filesystem           1K-blocks      Used Available Use% Mounted on
tmpfs                 3072000   1276532   1795468  42% /dev/shm

To adjust the shared memory file system size issue the following commands, specifying the required size of shared memory. First unmount the current mounted volume and set the new one (in this example we set it to 3GB).

umount tmpfs
mount -t tmpfs shmfs -o size=1200m /dev/shm

Now, the above commands will only last until the next reboot. If you want to make this permanent you need to add the adjustment to the fstab file. To do this just edit the file /etc/fstab and add the line:

none                    /dev/shm                tmpfs   size=3000m        0 0

This is by far the easiest way to manage memory in Oracle Database 11g.