Community Blogs

How To Reset Gnome From Command Line

When I get a new distribution, I always look for all the "super-duper-new and fashion" extensions, themes, icons, screenlets, desklets, and all the other things end in -lets, but after some install-delete-update commands, I always end with my Gnome messed up, a good, nice and clean way to wipe out all the things and restore your gnome is to use the command line, next time you messed up or when things go wrong, just type this is your shell:

rm -rf .gnome .gnome2 .gconf .gconfd .metacity

...and all go back to the "factory" settings. This thing has save my life several times.

Source: LifeHacker


Opera 10.60 Final

Opera has launch the final version of his browser, the Opera 10.60. Some of the newest things inside the browser are:

  • The use of the WebM for video reproduction
  • The Geolocalization can help us to determinate what is best route to take, or what is the closed coffee shop in the area. The activation of this feature requires the user authorization
  • You can work off line with the Appcache
  • 50% faster than the previous version of Opera
  • Phishing supported by AVG

With the new WebM support Opera becomes one of the firsts browser to support this standard.

Source: Opera Web Site


Google Chrome Tests Unified Menu

Google started to test the unified menu at the pure style of Opera. Firefox 4 will include a single menu button. The unified menu takes up less space, it's less complex and it reduces clutter..

The new menu includes most of the options that were available in the page and tools menus. If you use a recent Chromium build or Google Chrome dev channel, you can enable this feature by adding a command-line flag to the desktop shortcut: --new-wrench-menu.

This new way to display the menus is less complex, save a lot space and looks cool, at least that's what I think :D

The main goal of this kind of menu is to show all the functionality of the browser (some of them wasn't available on the GUI) and save some space.

Source: Google System Blog


Firefox 4 Pre-Beta Available Now

The Pre-Beta version of the all mighty browser from Mozilla is now available for download for Linux, Mac and Windows. One of the newest thing is the "tabs on the top" at the pure chrome style. Like Alex Faaborg from Mozilla in a video interview: The top tabs work better and this will be the default option.

The update's still rough around the edges, and as a pre-beta, it's a very early-adopter download only. But if you're eager to play with the bleeding edge of Firefox, you can download the release (Mozilla appropriately names their nightlies "Minefield") here. (Look for the appropriate download for your platform with a name like firefox-4.0b2pre.en-US.)

Source: LifeHacker


Google Chrome Now Comes With Flash Built In

Flash come integrated with Chrome in the lattes version of the Google's Browser. In this vote of confidence to Adobe from Google the message is clear, both has a common enemy, Apple.

Not only is Google giving Adobe’s Flash technology another vote of confidence (Flash Player 10.1 for Mobile, which was announced  earlier this week, will be rolled out on Android 2.2 phones first), but the integration also means any updates to Flash Player will be delivered directly via Google Chrome’s updating system, ultimately minimizing security risks that tend to surface when one uses outdated software and components.

Is this a safe step for Google after all the security problems flash is currently having? Well, in my opinion this is the first step to something bigger between this 2 companies, stay tuned!!!

Source: TechCrunch


HTML5 Speed Test: Firefox 3.7 Faster Than Internet Explorer 9

[video: 480x300]

The boys from Download Squad made a test between Firefox 3.7, Internet Explorer 9, Chrome and Opera to see who's the faster browser for Windows. The results are:

Chrome is the slowest (even with hardware acceleration turned on via command line switches), Opera competes very well up to a point, but at the end just Firefox and Internet Explorer are the winners with 1000 fish swimming around.

Both Firefox and IE9 use Direct2D to utilize the GPU's rendering power -- so it's probably no surprise that they both show very similar results. It's most apparent when comparing CPU use; IE9 and FF3.7 are both miles ahead in performance, but both show the lowest CPU utilization!

This is just an experiment from the Download squad, but this can give us the idea on what to wait on the near future with the release of FF, IE, Chrome and Opera and of course the main attraction HTML5.

Source: Download Squad


HOWTO: Quick 'n' dirty networking commands

After my quick blog around command line networking and ethernet setup, I've decided to report here few useful command I use most. When you setup your own ethernet card on the fly you even need to use them quite often.

As usual these commands are easy and heavily used when you deal with command line setup, this is just a reminder for me and you, some sort of place where I can put "my most used commands", please feel free to add your own to the post as well

Here's something related to basic hostname handling (really really easy):

# Hostname lookup through DNS query

# lookup current host name and/or ip address

# WHOIS query for a domain

Here's something related to netstat and ip tools (a little more interesting)

# Get a list of internet service on your current system
netstat -tup
netstat -tupl

# now some stats from your ethernet device (ethtool package needed)
boba:~# ethtool eth0
Settings for eth0:
Supported ports: [ TP ]
Supported link modes: 10baseT/Half 10baseT/Full 100baseT/Half 100baseT/Full 1000baseT/Half 1000baseT/Full Supports auto-negotiation: Yes
Advertised link modes: 10baseT/Half 10baseT/Full 100baseT/Half 100baseT/Full 1000baseT/Half 1000baseT/Full Advertised auto-negotiation: Yes
Speed: 100Mb/s
Duplex: Full
Port: Twisted Pair
Transceiver: internal
Auto-negotiation: on
Supports Wake-on: pg
Wake-on: g
Current message level: 0x00000037 (55)
Link detected: yes

# Now let's change ethernet interface speed manually (sounds nice...)
ethtool --change eth0 autoneg off speed 100 duplex full

# Now some fun with IP command utility

# networking stats with IP (ip addr show)
boba:~# ip link
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:0c:46:ce:0e:59 brd ff:ff:ff:ff:ff:ff
boba:~# ip addr show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet scope host lo
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:0c:46:ce:0e:59 brd ff:ff:ff:ff:ff:ff
inet brd scope global eth0

# Set network interface up (or down)
ip link set dev eth0 up

# Rename network interface (from eth0 to wifi0 or the name you want)
ip link set dev eth0 name wifi0

# some basic ip settings, already seen something on previous blog
# add ip and mask (
ip addr add brd + dev eth0
# list routing table
ip route show
# add default gateway
ip route add default via

Let's add delay or latencies to devices (tricky), in this case 10ms latency to eth0

boba:~# tc qdisc add dev eth0 root handle 1:0 netem delay 10msec

# Ok, let's remove it
tc qdisc del eth0 root

And finally something related to wireless cards

# Scan wireless networks in range
iwlist scan

# Status advanced status of first wireless ethernet card
iwconfig eth1

# Manually set wireless card speed
iwconfig eth1 rate 2Mb/s fixed

I'll add my own commands to the article when something comes in my mind, you're free to add your own here if you want. See also my previous Howto: Setup ethernet from command line

Glad to see your comments


Andrea (Ben) Benini


RAID Disk Configuration, now LVM (lvm.conf)

Here's the second step of my raid MD tools config, in my previous article I've mentioned my mdadm.conf file and how I've defined my raid disk array with mdtools. As you've already seen : /dev/mapper/storage-storage, this volume is an LVM partition as you can see from:

/etc/lvm# lvm lvscan
ACTIVE '/dev/storage/storage' [xxx.xx GB] inherit

and its created under /dev/sdX4 for each disk

Here's my lvm.conf file, I've taken it from a Debian Lenny but it works fine with gentoo or other distros as well, take a look:

# This section allows you to configure which block devices should
# be used by the LVM system.
devices {

# Where do you want your volume groups to appear ?
dir = "/dev"

# An array of directories that contain the device nodes you wish
# to use with LVM2.
scan = [ "/dev" ]

# If several entries in the scanned directories correspond to the
# same block device and the tools need to display a name for device,
# all the pathnames are matched against each item in the following
# list of regular expressions in turn and the first match is used.
preferred_names = [ ]

# Try to avoid using undescriptive /dev/dm-N names, if present.
# preferred_names = [ "^/dev/mpath/", "^/dev/mapper/mpath", "^/dev/[hs]d" ]

# A filter that tells LVM2 to only use a restricted set of devices.
# The filter consists of an array of regular expressions. These
# expressions can be delimited by a character of your choice, and
# prefixed with either an 'a' (for accept) or 'r' (for reject).
# The first expression found to match a device name determines if
# the device will be accepted or rejected (ignored). Devices that
# don't match any patterns are accepted.

# Be careful if there there are symbolic links or multiple filesystem # entries for the same device as each name is checked separately against
# the list of patterns. The effect is that if any name matches any 'a'
# pattern, the device is accepted; otherwise if any name matches any 'r'
# pattern it is rejected; otherwise it is accepted.

# Don't have more than one filter line active at once: only one gets used.

# Run vgscan after you change this parameter to ensure that
# the cache file gets regenerated (see below).
# If it doesn't do what you expect, check the output of 'vgscan -vvvv'.

# By default we accept every block device:
filter = [ "a/.*/" ]

# Exclude the cdrom drive
# filter = [ "r|/dev/cdrom|" ]
# When testing I like to work with just loopback devices:
# filter = [ "a/loop/", "r/.*/" ]

# Or maybe all loops and ide drives except hdc:
# filter =[ "a|loop|", "r|/dev/hdc|", "a|/dev/ide|", "r|.*|" ]

# Use anchors if you want to be really specific
# filter = [ "a|^/dev/hda8$|", "r/.*/" ]

# The results of the filtering are cached on disk to avoid
# rescanning dud devices (which can take a very long time).
# By default this cache is stored in the /etc/lvm/cache directory
# in a file called '.cache'.
# It is safe to delete the contents: the tools regenerate it.
# (The old setting 'cache' is still respected if neither of
# these new ones is present.)
cache_dir = "/etc/lvm/cache"
cache_file_prefix = ""

# You can turn off writing this cache file by setting this to 0.
write_cache_state = 1

# Advanced settings.
# List of pairs of additional acceptable block device types found # in /proc/devices with maximum (non-zero) number of partitions.
# types = [ "fd", 16 ]

# If sysfs is mounted (2.6 kernels) restrict device scanning to # the block devices it believes are valid.
# 1 enables; 0 disables.
sysfs_scan = 1
# By default, LVM2 will ignore devices used as components of
# software RAID (md) devices by looking for md superblocks.
# 1 enables; 0 disables.
md_component_detection = 1

# If, while scanning the system for PVs, LVM2 encounters a device-mapper
# device that has its I/O suspended, it waits for it to become accessible.
# Set this to 1 to skip such devices. This should only be needed
# in recovery situations.
ignore_suspended_devices = 0
# This section that allows you to configure the nature of the
# information that LVM2 reports.
log {

# Controls the messages sent to stdout or stderr.
# There are three levels of verbosity, 3 being the most verbose.
verbose = 0

# Should we send log messages through syslog?
# 1 is yes; 0 is no.
syslog = 1

# Should we log error and debug messages to a file?
# By default there is no log file.
#file = "/var/log/lvm2.log"

# Should we overwrite the log file each time the program is run?
# By default we append.
overwrite = 0
# What level of log messages should we send to the log file and/or syslog?
# There are 6 syslog-like log levels currently in use - 2 to 7 inclusive.
# 7 is the most verbose (LOG_DEBUG).
level = 0
# Format of output messages
# Whether or not (1 or 0) to indent messages according to their severity
indent = 1

# Whether or not (1 or 0) to display the command name on each line output
command_names = 0

# A prefix to use before the message text (but after the command name,
# if selected). Default is two spaces, so you can see/grep the severity
# of each message.
prefix = " "

# To make the messages look similar to the original LVM tools use:
# indent = 0
# command_names = 1
# prefix = " -- "
# Set this if you want log messages during activation.
# Don't use this in low memory situations (can deadlock).
# activation = 0

# Configuration of metadata backups and archiving. In LVM2 when we
# talk about a 'backup' we mean making a copy of the metadata for the
# *current* system. The 'archive' contains old metadata configurations.
# Backups are stored in a human readeable text format.
backup {

# Should we maintain a backup of the current metadata configuration ?
# Use 1 for Yes; 0 for No.
# Think very hard before turning this off!
backup = 1

# Where shall we keep it ?
# Remember to back up this directory regularly!
backup_dir = "/etc/lvm/backup"

# Should we maintain an archive of old metadata configurations.
# Use 1 for Yes; 0 for No.
# On by default. Think very hard before turning this off.
archive = 1

# Where should archived files go ?
# Remember to back up this directory regularly!
archive_dir = "/etc/lvm/archive"
# What is the minimum number of archive files you wish to keep ?
retain_min = 10

# What is the minimum time you wish to keep an archive file for ?
retain_days = 30

# Settings for the running LVM2 in shell (readline) mode.
shell {

# Number of lines of history to store in ~/.lvm_history
history_size = 100
# Miscellaneous global LVM2 settings
global {
# The file creation mask for any files and directories created.
# Interpreted as octal if the first digit is zero.
umask = 077

# Allow other users to read the files
#umask = 022

# Enabling test mode means that no changes to the on disk metadata
# will be made. Equivalent to having the -t option on every
# command. Defaults to off.
test = 0

# Default value for --units argument
units = "h"
# Whether or not to communicate with the kernel device-mapper.
# Set to 0 if you want to use the tools to manipulate LVM metadata # without activating any logical volumes.
# If the device-mapper kernel driver is not present in your kernel
# setting this to 0 should suppress the error messages.
activation = 1

# If we can't communicate with device-mapper, should we try running # the LVM1 tools?
# This option only applies to 2.4 kernels and is provided to help you
# switch between device-mapper kernels and LVM1 kernels.
# The LVM1 tools need to be installed with .lvm1 suffices
# e.g. vgscan.lvm1 and they will stop working after you start using
# the new lvm2 on-disk metadata format.
# The default value is set when the tools are built.
# fallback_to_lvm1 = 0

# The default metadata format that commands should use - "lvm1" or "lvm2".
# The command line override is -M1 or -M2.
# Defaults to "lvm1" if compiled in, else "lvm2".
# format = "lvm1"
# Location of proc filesystem
proc = "/proc"

# Type of locking to use. Defaults to local file-based locking (1).
# Turn locking off by setting to 0 (dangerous: risks metadata corruption
# if LVM2 commands get run concurrently).
# Type 2 uses the external shared library locking_library.
# Type 3 uses built-in clustered locking.
locking_type = 1

# If using external locking (type 2) and initialisation fails,
# with this set to 1 an attempt will be made to use the built-in
# clustered locking.
# If you are using a customised locking_library you should set this to 0.
fallback_to_clustered_locking = 1

# If an attempt to initialise type 2 or type 3 locking failed, perhaps
# because cluster components such as clvmd are not running, with this set
# to 1 an attempt will be made to use local file-based locking (type 1).
# If this succeeds, only commands against local volume groups will proceed.
# Volume Groups marked as clustered will be ignored.
fallback_to_local_locking = 1
# Local non-LV directory that holds file-based locks while commands are
# in progress. A directory like /tmp that may get wiped on reboot is OK.
locking_dir = "/var/lock/lvm"

# Other entries can go here to allow you to load shared libraries
# e.g. if support for LVM1 metadata was compiled as a shared library use
# format_libraries = "" # Full pathnames can be given.

# Search this directory first for shared libraries.
# library_dir = "/lib/lvm2"

# The external locking library to load if locking_type is set to 2.
# locking_library = ""
activation {
# Device used in place of missing stripes if activating incomplete volume.
# For now, you need to set this up yourself first (e.g. with 'dmsetup')
# For example, you could make it return I/O errors using the 'error' # target or make it return zeros.
missing_stripe_filler = "/dev/ioerror"

# How much stack (in KB) to reserve for use while devices suspended
reserved_stack = 256

# How much memory (in KB) to reserve for use while devices suspended
reserved_memory = 8192

# Nice value used while devices suspended
process_priority = -18
# Size (in KB) of each copy operation when mirroring
mirror_region_size = 512

# Setting to use when there is no readahead value stored in the metadata.
# "none" - Disable readahead.
# "auto" - Use default value chosen by kernel.
readahead = "auto"

# 'mirror_image_fault_policy' and 'mirror_log_fault_policy' define
# how a device failure affecting a mirror is handled.
# A mirror is composed of mirror images (copies) and a log.
# A disk log ensures that a mirror does not need to be re-synced
# (all copies made the same) every time a machine reboots or crashes.
# In the event of a failure, the specified policy will be used to
# determine what happens:
# "remove" - Simply remove the faulty device and run without it. If
# the log device fails, the mirror would convert to using
# an in-memory log. This means the mirror will not
# remember its sync status across crashes/reboots and
# the entire mirror will be re-synced. If a
# mirror image fails, the mirror will convert to a
# non-mirrored device if there is only one remaining good
# copy.
# "allocate" - Remove the faulty device and try to allocate space on
# a new device to be a replacement for the failed device.
# Using this policy for the log is fast and maintains the
# ability to remember sync state through crashes/reboots.
# Using this policy for a mirror device is slow, as it
# requires the mirror to resynchronize the devices, but it
# will preserve the mirror characteristic of the device.
# This policy acts like "remove" if no suitable device and
# space can be allocated for the replacement.
# Currently this is not implemented properly and behaves
# similarly to:
# "allocate_anywhere" - Operates like "allocate", but it does not
# require that the new space being allocated be on a
# device is not part of the mirror. For a log device
# failure, this could mean that the log is allocated on
# the same device as a mirror device. For a mirror
# device, this could mean that the mirror device is
# allocated on the same device as another mirror device.
# This policy would not be wise for mirror devices
# because it would break the redundant nature of the
# mirror. This policy acts like "remove" if no suitable
# device and space can be allocated for the replacement.

mirror_log_fault_policy = "allocate"
mirror_device_fault_policy = "remove"
# Advanced section #

# Metadata settings
# metadata {
# Default number of copies of metadata to hold on each PV. 0, 1 or 2.
# You might want to override it from the command line with 0 # when running pvcreate on new PVs which are to be added to large VGs.

# pvmetadatacopies = 1

# Approximate default size of on-disk metadata areas in sectors.
# You should increase this if you have large volume groups or
# you want to retain a large on-disk history of your metadata changes.

# pvmetadatasize = 255
# List of directories holding live copies of text format metadata.
# These directories must not be on logical volumes!
# It's possible to use LVM2 with a couple of directories here,
# preferably on different (non-LV) filesystems, and with no other # on-disk metadata (pvmetadatacopies = 0). Or this can be in
# addition to on-disk metadata areas.
# The feature was originally added to simplify testing and is not
# supported under low memory situations - the machine could lock up.
# Never edit any files in these directories by hand unless you
# you are absolutely sure you know what you are doing! Use
# the supplied toolset to make changes (e.g. vgcfgrestore).

# dirs = [ "/etc/lvm/metadata", "/mnt/disk2/lvm/metadata2" ]

# Event daemon
# dmeventd {
# mirror_library is the library used when monitoring a mirror device.
# "" attempts to recover from
# failures. It removes failed devices from a volume group and
# reconfigures a mirror as necessary. If no mirror library is
# provided, mirrors are not monitored through dmeventd.

# mirror_library = ""

# snapshot_library is the library used when monitoring a snapshot device.
# "" monitors the filling of
# snapshots and emits a warning through syslog, when the use of
# snapshot exceedes 80%. The warning is repeated when 85%, 90% and
# 95% of the snapshot are filled.

# snapshot_library = ""




HOWTO: Setup an ethernet card from command line

Back again with very few commands regarding ethernet configuration.
When you deal with ethernet cards and you don't want to mess around with GUI stuff or utils you need to insert few basic commands to have your working network configuration.

When I'm in a totally new environment and I need to setup an ethernet card on the fly I've a script with few commands for it, I usually don't setup a new profile for the card, expecially if I don't need it or if it's just a test for casual usage. Again, when dealing with Live CD distros designed for special security tasks (my fav is BackTrack :-) ) I type these commands for getting everything done from the command line.
Let's see something:

Setting up the hostname and DNS stuff

# Setup hostname
hostname mycomputerhostname

# Here's a DNS setting
echo "nameserver" > /etc/resolv.conf
# adding as nameserver

When dealing with a live CD distro you don't care about /etc/resolv.conf file but if you're running from your own HD you maybe need to take a backup copy of the file before overriding it (something like cp resolv.conf resolv.backup.conf)

Now let's flush the eth card and setup the new ip address (let's assume we've a /dev/eth0 card to setup)

# Flush every network address for the device /dev/eth0
ip addr flush dev eth0

# Add a new IP address to /dev/eth0 (use the form you want, that's just mine)
ip addr add dev eth0
# adding, subnet mask ( to my eth card

# Let's bring it up and running
ip link set eth0 up

# Now add a default route, in the example
ip route add default via

And that's it !
Here're some basic settings for it, you can compose this material in a script like I did; again, no rocket science here but a very quick howto for command line fans

Next Step: Quick 'n' dirty networking commands

Hope it helps newbies and friends
Glad to read your comments


Andrea (Ben) Benini


Command Line Instant Messager With CenterIM

Well, I love the command line, I use Lynx to browse the web sometimes and I try to do all with the Command Line, and searching I found an Instant Messenger for the command line named CenterIM.



You can use this very cool IM to enable your Yahoo, Msn Messenger, ICQ, Jabber, etc account into one "Old School" menssenger. CenterIM has very useful tools to configure the messenger and the accounts. If you loe the CLI just like me, download it from here. Download the latest version (the previous has a problem with the msn login) Enjoy!!

Source: Voices in my Head


Creating OpenDocument slideshows with two simple scripts

A big issue with slideshows is that GUI presentation software, be it PowerPoint, OpenOffice Impress, KPresenter or anything else, can be quite time-consuming and distracting, no matter how you use it.

Writing bullets and sub bullets as simple text outlines is much faster, even when you're just pasting together notes you scrabbled on your PDA, email fragments, quotes from Web pages or thoughts of the moment. If you need to produce slideshows and think that the cleaner they are the better, but don't like the time it takes to put them together in a GUI, here's a solution: two scripts that take an empty OpenDocument template and insert into it the content of a plain text outline.

Page 9 of 14

Upcoming Linux Foundation Courses

  1. LFS201 Essentials of System Administration
    12 Jan » 30 Mar - Online Self-Paced
  2. LFD320 Linux Kernel Internals and Debugging
    13 Jul » 17 Jul - North Reading - MA + Virtual (GUARANTEED TO RUN)
  3. LFS426 Linux Performance Tuning
    13 Jul » 16 Jul - Virtual (Guaranteed to Run)

View All Upcoming Courses

Who we are ?

The Linux Foundation is a non-profit consortium dedicated to the growth of Linux.

More About the foundation...

Frequent Questions

Join / Linux Training / Board