Tech Tips

Not all tips have to be complex or obscure to be useful.

Convert Video from Color to Black and White

The versatility of the Linux command line is often underestimated. Tasks, such as sophisticated multimedia processing, need not be done with heavy GUIs that will run only on powerful machines.

The simple Linux command line can do it if you have MPlayer and the companion program mencoder installed on your machine.

mencoder is an extremely powerful program that can record analog and digital television, post-process recorded videos, apply various filters and so on. More information is available in the on-line man pages and HTML documentation that comes bundled with the source.

Here, we are faced with a simple task of converting a color movie to black and white. This line will do it for you:

$mencoder color-video.avi -o black-white-video.avi 
 ↪-vf hue=0:0 -oac copy -ovc lavc

If you are interested in trying out various values for hue and saturation, you can invoke MPlayer with:

$mplayer -vf hue color-video.avi

Press and hold the 5 or 7 keys to reduce hue or saturation.

—Girish Venkatachalam

Not So Tech Tips

What follows are some very basic tips. For those who already know this information, I apologize if this insults your intelligence. However, I've looked over many a shoulder of very competent Linux users who still don't seem to know about these standard commands and techniques. If you're one of them, you may find this information extremely useful.

cd -

Almost everyone knows you can type cd ~ to get to the current user's home directory. This isn't a function of cd, but it takes advantage of the fact that the tilde is shorthand for your home directory. The command cd - (dash instead of tilde) is a function of cd, however. It takes you to the last directory where you were working before you switched to the current directory. It also prints out the old directory path. I, myself, have known about this command since the dark ages, but I still curse myself for forgetting to use it and typing out a long path name.

Don't Delete That Service Link

Most Linux distributions still use a directory, such as /etc/rc2.d, to store a number of symbolic links to boot startup files. You probably know that the order is determined by the number that follows the capital letter S. For example, S10acpid starts before S11klogd.

I have seen a number of administrators delete these links in order to disable services temporarily to test something. Then, they grumble when they have to figure out what startup number it used to have when they restore the link.

Don't delete the link; simply rename it. For example, rename S25bluetooth to s25bluetooth. The fact that it starts with a lowercase s will stop the bluetooth service from starting at the next boot. When you've determined that you want bluetooth back, simply rename it back to S25bluetooth. Sure, there are GUI programs to disable and enable services, but the command-line method is so simple. And remember, contrary to conventional wisdom, the lazy way to do something is often the best way.

—Nicholas Petreley

Install and Boot Many Distributions

I run lots of Linux distributions. If you do too, here's the way I install and manage them. If you have a better method, by all means, send it to info@linuxjournal.com, and if we use it, you will receive $100 for the tip.

Create a single relatively small ext3-formatted boot partition on your drive that you will use as your master boot partition with GRUB as your bootloader. My partition is 100MB, and it's probably overkill.

This /boot partition will generally reside on the first drive on your system, but it doesn't have to. Install your first distribution with this partition. When everything is working, change the line in /etc/fstab that mounts the /boot partition to mount the partition as /mnt/boot instead. Create the mountpoint called /mnt/boot. Mount the boot partition there. For example:

umount /boot
mkdir /mnt/boot
mount /dev/sda1 /mnt/boot

Then, copy everything from that partition to what is now the local /boot directory for your distribution:

cp -a /mnt/boot/* /boot

At this point, you still should be able to boot the distribution you just installed, even though the kernel files are relocated. But, that won't last. You need to change part of your menu.lst to specify that the boot files now reside on the same partition as the rest of the distribution. For example, if you started with /boot on /dev/sda1 and / on /dev/sda2, modify your menu.lst file to use the new partition to find the kernel. Here's a sample original:

title	Some Linux Distro
root	(hd0,0)

In our example, you'd change it to this:

title	Some Linux Distro
root	(hd0,1)

This next part is a little tricky, and there are several ways to approach it. For example, you simply could make a copy of your grub/menu.lst file. However, I make a copy of the entire grub directory, because there are a variety of ways you can accidentally run into problems otherwise. Here's what I do next:

cd /mnt/boot
cp -a grub grub.original

Now, install your next distribution of Linux in a new partition, but specify the same /boot partition you used to install the first distribution. Boot into the new distribution. Repeat the copy process above.

First, edit the /etc/fstab file to change the entry that mounts /boot to mount it as /mnt/boot. Then, do this:

umount /boot
mkdir /mnt/boot
mount /dev/sda1 /mnt/boot
cp -a /mnt/boot/* /boot

Now, edit /mnt/boot/grub.original/menu.lst to include the boot commands for the new distribution. You can find the boot commands for the new distribution in /mnt/boot/grub/menu.lst. Don't forget to fix the root location again too. Assume that your second distribution is on /dev/sdb1 (the first partition of the second drive). In our example, you would change this:

title	Second Linux Distro
root	(hd0,0)

to this:

title	Second Linux Distro
root	(hd1,0)

Copy the original grub (with the modified menu.lst that adds the new distribution) back to the grub directory:

cd /mnt/boot
cp -a grub.original/* ./grub

This copies not only the updated menu.lst file, but it also restores the original GRUB binary files. The next time you reboot, you should see a menu entry for the original distribution plus the one you added.

To add more distributions, create new partitions, rinse, repeat.

You occasionally may find that you need to reset GRUB after you install a new distribution. Given our sample partitions above, simply do this as root:

grub
> root (hd0,0)
> setup (hd0)

One last tip: don't forget that when you upgrade a distribution such that it installs a new kernel, you'll have to view the new /boot/grub/menu.lst file for that distribution and use it as the guide to modify /mnt/boot/grub/menu.lst to use the updated kernel.

—Nicholas Petreley