Tuesday, January 31, 2012

From Zero to OpenVPN in 30 Minutes

Workers today are more mobile than ever, so providing a secure link to your network for remote workers is crucial. Luckily, it’s also free and easy with OpenVPN. I’ll walk you through the process of setting up an OpenVPN server to authenticate and encrypt multiple client connections in just slightly more time than it takes to read this article.
In the olden days, OpenVPN was a typical nerdy free software project focused on good code rather than marketing, with a plain website devoid of glitz. Today it still has good code, but it has spun off several commercial options and boatloads of glitz. The free-of-cost community GPL edition is the beloved OpenVPN of old, but in addition you can install commercial options and add-ons such as the Access Server for Linux, Access Server Virtual Appliances for Linux, Mac, and Windows, Access Server Cloud Machines, and an Internet Private Tunnel service for Mac and Windows clients. Clients on all major platforms sport nice graphical interfaces, and there are several management GUIs, some standalone and some integrated into other products, such as DD-WRT, IPCop, and Zentyal.
We’ll set up the GPL community version on Linux. GUIs and extra services are nice conveniences, but admins should understand what’s happening under the hood, and OpenVPN has never been all that difficult to deploy, even without the glitzy helpers.
To get started, you will need at least two Linux PCs, with OpenVPN installed on each: one for the server and one (or more) for the client. OpenVPN is included in nearly all Linux distributions, so fire up your favorite package manager to install it. Source and binary downloads are also available.

Creating a Public Key Infrastructure

Your first step in setting up OpenVPN is to create a public key infrastructure (PKI). OpenVPN uses mutual authentication – the server and client authenticate to each other, which provides a strong level of security that protects both sides of the connection. Each client and server has a pair of keys – a public key for encrypting communications, and a private key for decrypting. Public keys are meant to be shared, while private keys must be protected and never shared. You’re probably familiar with key pairs from having used them to authenticate in SSH and SSL. To make things easier, we’ll use a certificate authority (CA) to sign clients’ key pairs. Without a CA, the server would need to store a copy of every client certificate. With one, the server holds the CA’s own key pair and a server key pair, and each client has its own key pair. The server doesn’t need to know anything about those client certificates; all it knows is whether the CA signed the client certificates.
In OpenVPN the public key is called a certificate and has a .crt extension. The private key is called a key, with a .key extension.
OpenVPN comes with nice helper scripts to set up this PKI. On my Debian Wheezy system the scripts are in /usr/share/doc/openvpn/examples/easy-rsa/2.0; on your Linux flavor they may be somewhere else. Once you hunt them down, copy the whole directory to /etc/openvpn so that the package manager will not overwrite your changes:
# cp -r /usr/share/doc/openvpn/examples/easy-rsa/2.0 /etc/openvpn/
On my system this creates /etc/openvpn/2.0. Change to your copied directory, then find a file named vars and edit the last section so that it contains your correct location, email address, and other identifying information. Feel free to examine the other options and change them if you wish, though everything should work fine with the defaults. Here’s how mine looks:
# These are the default values for fields
# which will be placed in the certificate.
# Don't leave any of these fields blank.
export KEY_CITY="LittleBigtown"
export KEY_ORG="Tuxcomputing"
export KEY_EMAIL="carla@bratgrrl.com"
export KEY_EMAIL=carla@bratgrrl.com
export KEY_CN=test-system
export KEY_NAME=test-system-key
export KEY_OU=test-system
export PKCS11_MODULE_PATH=changeme
export PKCS11_PIN=1234
Now run the following commands:
#. ./vars
Generating a 1024 bit RSA private key
writing new private key to 'ca.key'
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
Country Name (2 letter code) [US]:
State or Province Name (full name) [OR]:
Locality Name (eg, city) [LittleBigtown]:
Organization Name (eg, company) [Tuxcomputing]:
Organizational Unit Name (eg, section) [test-system]:
Common Name (eg, your name or your server's hostname) [test-system]:
Name [test-system-key]:
Email Address [carla@bratgrrl.com]:
Look in the keys/ subdirectory to see your new root CA certificate and root CA key, ca.crt and ca.key. ca.crt is publicly readable, while ca.key must never be shared. Now build the server’s private key pair, specifying whatever name you want to use for your system. Every time you create a server key it must have a unique name to identify the system it is created for:
# ./build-key-server test-system
This process is similar to creating the CA. When it offers the option to create a challenge password, say no. Say yes to these questions:
Sign the certificate? [y/n]:y
1 out of 1 certificate requests certified, commit? [y/n]y
Now your server certificate is properly signed by your CA. Every client will get a copy of ca.crt, and thus be able to verify that they are connecting to the correct server.

Client Certificates

Next, you must create client certificates with the build-key or build-key-pass scripts. Use the first to create a password-less certificate, and the second to require your users to enter a password when they connect to the VPN. A password might be a wise precaution for mobile users. Use these commands just like the build-key-server script, with a unique name for each client:
# ./build-key lucy
# ./build-key ricky
# ./build-key-pass ethel
# ./build-key fred
One more chore is generating the Diffie-Hellman parameters. What, you and I and all normal humans ask, the heck are those? Diffie-Hellman is the protocol that allows two users to exchange a secret key over an insecure medium without any prior secrets, which is pretty cool, I think. Back at the OpenVPN server, run this command:
# ./build-dh
All you have to do is wait for it to finish; it creates a file called 01.pem.
All of your new keys and certificates are in plain text, so you can read them if you forget what they’re for. Now copy to each client the file ca.crt, plus the appropriate client certificates and keys.

Server Configuration

The next step is to create the server and client configuration files. Look in your installation’s openvpn/examples/ directory for configuration file examples. They are well-commented and easy to follow. Listed below is a complete example server configuration, /etc/openvpn/server.conf. The commented options take variables specific to your setup. Read the example file to learn about the other options:
port 1194
proto udp
dev tun

# the full paths to your server keys and certs
ca /etc/openvpn/keys/ca.crt
cert /etc/openvpn/keys/test-system.crt
key /etc/openvpn/keys/test-system.key
dh /etc/openvpn/keys/01.pem

cipher BF-CBC

# Set server mode, and define a virtual pool of IP
# addresses for clients to use. Use any subnet
# that does not collide with your existing subnets.
# In this example, the server can be pinged at

# Set up route(s) to subnet(s) behind
# OpenVPN server
push "route"
push "route"

ifconfig-pool-persist /etc/openvpn/ipp.txt
keepalive 10 120
status openvpn-status.log
verb 6

Client Configuration

Once you have the server set up, create a similar configuration file on your test client, /etc/openvpn/client.conf:
dev tun
proto udp

# enter the server's hostname
# or IP address here, and port number
remote test-system 1194

resolv-retry infinite

# Use the full filepaths to your
# certificates and keys
ca /etc/openvpn/keys/ca.crt
cert /etc/openvpn/keys/lucy.crt
key /etc/openvpn/keys/lucy.key

ns-cert-type server
verb 6

Connecting to the Server

Now everything should be properly configured. Start OpenVPN on both the server and client from the command line on each system by referencing the configuration file – for example, openvpn /etc/openvpn/server.conf. You’ll see all kinds of startup messages. When it’s finished, you should be able to ping the server’s virtual address from the client, which is in the example server configuration file. When your client and server can ping back and forth, you have a good stout encrypted OpenVPN tunnel.
Congratulations – you just got OpenVPN up and running. Now you get to figure out how to route your OpenVPN clients through your firewall to your server, how to set up your server to start automatically at boot time, and how to configure the clients to manage starting and stopping an OpenVPN session. To help with some of that, a good OpenVPN plugin for NetworkManager called network-manager-openvpn makes managing Linux OpenVPN clients as easy as any other network login. Visit OpenVPN.net for help, more graphical client and server administration tools, and to learn more about OpenVPN and what it can do.

Converting A VMware Image To A Physical Machine

    This tutorial shows how to convert an existing CentOS VM to a Physical machine. This tutorial covers the cloning of the VM to an unpartitioned HDD and troubleshoot some of the possible errors that you may have booting the OS on your new hardware. To illustrate this procedure I will use VMware Workstation 7 as the handler to transfer the VM installation to a physical HDD.

1 Requirements

To perform this procedure you will need:
  • VMware Workstation, VMware Server or VMware Player.
  • CloneZilla ISO image.
  • Unpartitioned HDD with enough space to hold your VM image.

2 Preliminary Notes

This tutorial assumes basic knowledge of the cloning process and requires no previous experience on the use of Clonezilla. Make sure your OS is not using in any way the target HDD that will hold your final copy of the VM, otherwise VMware will complain about your disk been in use and CloneZilla will not perform a successful copy of the VM.

3 VMware Configuration

First thing is to make sure your virtual CD/DVD is using your CloneZilla ISO image to boot. Next add your physical HDD as part of your existing VM by clicking the Add button.

Click to enlarge

Select Hard Drive and click Next.

Select Use physical disk (for advanced users) then click Next.

Make sure you select the correct drive that you want to use for your physical disk and select the option Use entire disk.

Finally give a name to your configuration file then click Finish.

Make sure your final VMware hardware list include this two elements otherwise, start all over.

4 CloneZilla Cloning Process

Start your VMware and boot from your virtual ISO into CloneZilla image. Use the Live option with default settings.

Select your preferred language and continue.

Accept the default option Don't touch keymap and continue.

Select Stat_clonezilla and continue.

Select device-device option and continue.

Select Beginner mode and continue.

Select disk to local disk and continue.

Select your source disk and click OK.

Select your target disk and click OK, then press Enter to continue.

You will be presented with a warning, about your existing data on your target disk will be lost, make sure there's nothing usable on your disk before you continue.

You will be presented with a series of questions answer yes to all this prompts.

The cloning process may take a long time.

After the cloning process is finished hit Enter and power off the VM by pressing 0 on the CloneZilla menu.

The cloning process is complete, is now time to install your new HDD to your physical machine.

5 Troubleshooting Physical Machine

More likely your first encounter with your cloned OS will be a filesystem corruption, with the following error: Unexpected Inconsistency. To fix this problem enter your root password and run fsck -y to start the filesystem repair process. The -y answers yes to the questions the fsck command will probably output.

Your next challenge will be fixing your NIC, I have used two different methods to fix this problem.
Go into /etc/udev/rules.d and delete the file 70-persistent-net.rules then reboot. Deleting the file forces the detection process to run again at boot with no baggage left over from the cloning process.
The other way to fix this problem is by edit: /etc/sysconfig/network-scripts/ifcfg-eth0 and add the MAC address of your new NIC.
Open eth0 using vi, type:
vi /etc/sysconfig/network-scripts/ifcfg-eth0
Edit the following line:
This is my sample config file:
# Micro-Star INT'L CO Gigabit Ethernet Controller
Save and close the file then reboot the server:
The system is now ready to be used.

6 Links

CloneZilla: http://clonezilla.org/

Monday, January 30, 2012

ودخلت سنة 2011 ميلادية

وفيها كانتِ الحوادثُ العظامُ، والأحداثُ الجسامُ، وانتظمَ فيها من جليل الوقائع ما لم ينتظمْ في سواها، وشهدتْ فيها أمةُ العرب من زوالِ الملكِ، وتحوُّلِا لأحوالِ، وتبدُّلِ التصاريفِ ما لا يكون مثلُهُ إلا في المدد المتطاولةِ، والأزمنةِ المنفسحةِ.

 وما علمنا في التاريخِ قطّ أن ملوكاً ثلاثةً كباراً زالَ ملكُهُم في عامٍ واحدٍ إلا ما كان في هذه السنةِ العجيبة!

 ففيها فرَّ طاغيةٌ ظالمٌ كان يحكمُ أرض القيروانِ، يُقال له: ابن عليّ! وقد ذكروا أنَّه ما ترك سبيلاً يُحاربُ به الدين إلا سلكه! ولا هداه شيطانُهُ إلى شيءٍ فيه منقصةٌ للإسلامِ ورجالِهِ وتضييقٌ عليهم إلا أخذ به! فسجَنَ وعذَّبَ وقتلَ، ثم لم يرضَ حتى حوَّلَ بلادَ القيروانِ من عاصمةٍ شامخةٍ من عواصمِ الإسلام، وقلعةٍ منيعة من قلاع العلم، إلى حانةٍ كبيرةٍ، يتسلى فيها الفرنجةُ بكشفِ عوراتِهم، وإتيانِ رذائلهم، وقد بلغني فيما يرويه الثقاتُ أنَّ المسلمة العفيفةَ ما كانتْ تستطيع أن تلبسَ حجابَها، وأنَّ جلاوزةَ هذا الظالم ربما نزعوه عنها في الطرقاتِ وأماكنِ العمل! فالحمدُ لله الذي عجَّل بهلاكِهِ.

 والعجيبُ أنَّ الله قد جعل مبدأ هلاكِهِ على يدِ فتى فقيرٍ كان يبيعُ ثمارَ الأرضِ يتعففُ بذلك عن السؤال، فلمّا استبدَّ به الفقرُ، وغاظَهُ أن تمتدَّ إليه يدُ ذا تِسوارٍ تلطمُهُ، أحرق – غفر الله لنا وله – نفسه، فلم يلبثْ أن هاجَ الناسُ ففرَّ (بائعُ البلادِ ) بفعلةِ ( بائع الخضار ) ! ولله الأمر من قبل ومن بعدُ .

 وفيها أُسِرَ فرعونٌ كان يحكمُ أرضَ مصر، جعل عاليها سافلها، واتخذ له من سِفْلةِ الناس أعواناً وأنصاراً، فكان منهم الوزير والمدير والخفيرُ والساعي بالفساد والمغتصبُ لحقوق الناس والمشيعُ للفاحشةِ.

 وقد ذكروا أنّ شرَّ خصاله أنّه كان ردءاً لليهودِ يظاهرهم على بني دينه من أبناء فلسطين، ولقد سمعنا عن حصارِ القلاعِ، والمدنِ، ولكنّنا ما سمعنا قطُّ أن حاكماً مسلماً يحاصرُ شعباً مسلماً بأكمله سنين متطاولة، لا يبالي بموتِ من ماتَ، ولا بهلاك من هلك، ولا بجوع من جاع، ولا بمرض من مرض!

 ولم أر فيما رأيتُ من تواريخِ الأمم والملوك والطغاة والظالمين حصاراً يكون تحتَ الأرض كما يكون فوقها! فقد ذكروا أنّه لم يرضَ بغلقِ المنافذِ ونصبِ العسكرِ على الحدود حتى شقَّ في الأرض شقاً عميقاً ثم دلّى فيه من ألوانِ الحديدِ وغيره ما صنعه جداراً يَعْيا الحاذقُ بنقْبِهِ، وأعجبُ من هذا أنَّه جعل فيه شيئاً لا يُدرى ما هو يجعلُ المرءَ إذا لمسه ينتفضُ فيموتُ!

 ثم هو بعد ذلك يبسطُ لليهود بيمينه ما قبضه عن الفلسطينيين بشماله، ولقد جعل الحر عبداً، والعبدَ حراً، حتى لَمصرُ في عهدِهِ أحقّ بقول أبي الطيب :

 نامتْ نواطير مصرٍ عن ثعالبِها ... فالحرُّ مستعبدٌ والعبدُ معبودُ

 فلم يلبثِ المصريون الأحرارُ أن ذَكَروا به الحاكم بأمر الله .. فهاجوا عليه كما هاجوا من قبلُ على الحاكمِ على أنّهم أسروه ولم يقتلوه.

 وقيل: إنّه احتشد في أرضٍ يقال لها التحريرُ ( ثمانية ألفِ ألفِ إنسان) فيهم الرجل والمرأة، والصغير والكبير، والمسلمُ وغير المسلم، فمازالوا ثَمّ يهتفون ويصرخون ما رفعوا سلاحاً ولا آذوا إنساناً، ولا تلطخوا بجريرة، وظلوا لا يبرحون حتّى تنحّى ذلك الحاكمُ وأُخِذ أسيراً. وقيل: إنه بكى طويلاً لما زاره صديق قديم!

 ولله في خلقه شؤون !

 وفيها قُتِلَ طاغوتٌ من طواغيتِ الأرضِ عزّ نظيرُهُ.

 قتلَهُ من قتلَهُ بعد أن أُخذَ أسيراً من سَرَبٍ كان قد اختبأ فيه ذليلاً بعد عزة،قليلاً بعد كثرة.

 قالوا: وكان هذا الرجلُ ولي أمر طرابلس وما حولها أربعين عاماً، ما ترك قتلاً ولا ظلماً ولا نهباً ولا جنوناً ولا حماقةً إلا أتى بها!

 وبلغَ من حمقِهِ أنّه كان يلتقطُ المزقَ من الأقمشةِ فيجعل منها ثوباً!

 وأنّه كان يقف بين ملوك الأرضِ فيسخر ويهزأ و يتمخرقُ ويمزق الأوراق ويلقي بها في وجوه الناس!

 وأنّه جعل لنفسِهِ لقباً عجيباً ما عرف الناسُ أطولَ منه!

 وأنّه كانت له خيمةٌ يطوف بها الأرض، يضربُ أوتادها حيثُ حلَّ، ثم تكون هي مجلسَه ومضافتَهُ، وربما نصبها بجوار القصر الكبير الفخمِ، ثم يأتيه الرئيسُ أو الملك فلا يُجلسُهُ إلا فيها!

 وأنّه لم يرض أن يؤرخ بتاريخ المسلمين ولا بتاريخ غيرهم ! فابتدع لنفسه تاريخا ابتدأ من وفاةِ نبيّنا صلى الله عليه وسلم! ثم ألقى بأسماء الأشهر التي عرفها العربُ والعجمُ وسمى شهوره : أين النار! والماء! والتمور! والطير! وهلمّ جراً.

 وبلغَ من حمقه كذلك أن صنّف كتاباً سماه ( الأخضر ) ادّعى أن فيه صلاح العالمين، وخلاص الأرضِ من فقرِها وعنائها، وأنَّه دستورُ العصرِ سياسةً واقتصاداً!

 وفي الجملة فإن غرائبه لا تحصى.

 ومن وقائع هذه السنة كذلك ما فعله حاكمُ الشام لما تنادى أهلها بطلبِ حقوقهم وحريتهم، فلم يلبث أن سلط عليهم جلاوزتَه، ونفراً كانوا يُسمونهم (الشَّبِّيْحة)، واحدُهم (شَبِّيْح)، وهو الرجلُ من غير العسكرِ يُعطى السلاحَ فيفعل به ما يشاءُ.

 وفعل الرجلُ في أهل الشام ما لو وجده إبليسُ في صحائفِهِ لأخزاهُ واستحيا منه!

 ومثلُ ذلك فعلُهُ رجلٌ ظلَّ يحكم اليمن ثلاثين عاماً، فلما ملّه الناسُ، وآذنوه بالرحيل، عاجلهم قصفاً وقنصاً وقتلاً وجرحاً، فكان ما كان مما لستُ أذكره!

 ثم انقضت هذه السنة ودخلت سنةُ ثلاث وثلاثين وأربعئمة وألف .. وفيها .. " .
 اهـ .
هذا ما نقله الكاتب محمود عثمان نقلاً عن البرفيسور محمود نديم النحاس وهو حلبي  المولد حجازي الموطن والجنسية ... حيث يجسد البرفيسور النحاس بقلمه الأحداث التي وقعت في العام 2011 م بما يمكن أنَّ يقوم به المؤرخ الكبير الإمام ابن كثير وسيكتُبُهُ لو قُدِّر له أن تكون هذه السنةُ العجيبةُ ضمنَ ما أرَّخ له في كتابِهِ الفذّ (البداية والنهاية).
والموضوع بعنوان : "لو كان بيننا ... كيف سيروي ابن كثير تاريخ الربيع العربي؟"

Simple Linux Auditing

Basic Linux system auditing is a bit tricky and data collected and information of that is out of place and readability is not that good. Recently this lead me to put together a Open Source code project and develop simple BASH scripts that do the job nicely.
The code and tar ball can be downloaded from both google code or from SourceForge's website and the project website has links to documentation, help, installation and code.
The Auditor utilities can be safely copied/extracted into /usr/local/bin as this folder is in the path settings in most linux distributions. The utilities work well with the latest versions of RHEL, FEDORA, CENTOS, OPENSUSE, UBUNTU, DEBIAN, SLACKWARE.

Download And Install

At the shell prompt as root and these scripts will only keep one process and only as root:
# wget http://linux-easy-admin-utilities.googlecode.com/files/linux-easy-admin-util-v0.2.tar.gz
# tar -zxvf linux-easy-admin-util-v0.2.tar.gz
# cp easy-admin/* /usr/local/bin/
# adtdepchk
Does a dependency check, i.e. the utility will check if the system has got the necessary apps installed, a few are ip, grep, awk, netstat etc. which are mostly part of the base system.
This should give you a list of dependency error list. The available Auditors features explained at end of page and their syntax are:
genadtchk [ -h -v  -c ]
dksadtchk [ -a -h -v -c ]
fsadtchk [-a -h -v -c ]
netadtchk [-a -h -v -c ]
usradtchk [-c -h -v ]
The audited data is copied into a file in /tmp//filename and a tmp folder cleaner is provided.
An additional utility that is bundled along is the password generator:




genadtchk - General Audit Checker: This script generates a simple information information about your system. Basic system, Memory, Disk, File System, Network data is audited.
dksadtchk - Disk Audit Checker: This script generates a complete and compressive information about your systems disk and storage. Total disks at boot time, contained partitions, partitions used, removable disks, capacity and free capacity etc.
fsadtchk - File System Audit Checker: This script generates a complete and compressive information about the systems FS usage and current mounted, total available, type, size, free, and space occupying number one folder or file from the FS.
netadtchk - Network Audit Checker: This script  generates a complete and compressive information about the network interfaces - hardware, virtual, local and other , firewall and its status, outgoing firewall status, current process that are having listening processes, port - ip - process - executable table, IPV4/6 feature, forwarding, masquerading for the system.

Sunday, January 29, 2012

وصفات طبيعية لتبييض الأسنان

وصفات طبيعية لتبييض الأسنان

تقدم خبيرة التجميل مروة جميل مجموعة من النصائح والوصفات الطبيعية لتبيض الأسنان والحفاظ عليها من الاصفرار التى قد تتأثر نتيجة لتناول بعض الأطعمة والتدخين وأهم هذه الوصفات:
أولا: وضع قليل من العسل الأبيض على فرشاة الأسنان مع المعجون المناسب لطبيعة الأسنان وتغسل بشكل طبيعى.
ثانيا: استخدام قطعة قماش نظيفة ونضع عليها ليمون وننظف الأسنان بها عدة مرات وسنلاحظ البياض.
ثالثا: نقوم بمزج ملعقة ليمون مع ملعقة كبيرة ملح وتفرك بها المناطق الصفراء على الأسنان.
رابعا: استخدام قشر البرتقال لفرك الأسنان للحصول على أسنان لامعة.
خامسا: نمزج ملعقة بيكربونات الصودا مع القليل من الماء ونفرك الأسنان بها.
سادسا: نطحن قطعة خبز محترقة ونضع عليها نصف ملعقة عسل وننظف الأسنان بها جيدا وسنرى النتيجة واضحة، وتضيف مروة هناك مجموعة من الخضروات والفواكه التى تستخدم من أجل العناية بالأسنان وتبيضها وذلك من خلال عمل معجون من مسحوق الفراولة الممزوجة ببيكربونات الصودا ويتم تنظيف الأسنان مرة أو مرتين أسبوعيا لمنع اصفرارها،
مع ملحوظة هامة: تأكدى من تنظيف الأسنان جيدا والتخلص من أثار الفراولة، وكذلك نحرص على تناول التفاح والجزر والقرنبيط وغيرها من الفواكه والخضروات التى تساعد على تنظيف وتجنب اصفرار الأسنان حيث إن طبيعة الألياف عندما تمتزج مع اللعاب فى الفم تسمح بغسل وشطف بقايا الطعام ما بين الأسنان التى قد تسبب الاصفرار وتراكم البكتيريا وتسوسها.

The Grand /usr-fication of Linux

Fedora developers defend the proposed merger of /usr directories

 The Fedora Project is currently mounting a concerted effort to merge Linux filesystem directories into a more organized structure, an effort known as /usr merge.

This is not really new news: I covered this back in November. But a new posting on FreeDesktop.org from systemd developer Lennart Poettering is seeking to dispel many of the arguments against such a merge, while touting the merger's advantages.

Poettering is not the initial proposer of /usr merge--that designation goes to fellow Red Hat developers Harald Hoyer and Kay Sievers, as an effort to clean up the mess that was made when the /sbin and /bin directories were first split off from each other. The Grand /usr-fication Theory will, when implemented, essentially pull in every component of the operating system to a single mounted volume.

When all of the binaries and libraries are on such a volume, it would be far simpler to run multiple instances of the operating system on different machines on a network, as well as facilitate the use of snapshots. With the onset of the btr filesystem (btrfs) in the Linux world, such a unification would be a huge advantage.

In his post this week, Poettering takes pains to note that this filesystem change is neither dependent on systemd, or Fedora alone. systemd is a new init daemon developed by Poettering designed to improve services management on Linux systems--particularly mobile ones that have variable needs depending on where or when the system is used. (Carla Schroder has an excellent series of articles on Linux.com that highlights the features of systemd.)

"systemd supports both systems with split and with merged /usr, and the /usr merge also makes sense for systemd-less systems," Poettering wrote on FreeDesktop.org. "That said we want to encourage distributions adopting systemd to also adopt the /usr merge."

Poettering highlights four broad issues why such a merge makes sense to him:

  • "Improved compatibility with other Unixes/Linuxes in behaviour: After the /usr merge all binaries become available in both /bin and /usr/bin, resp. both /sbin and /usr/sbin (simply because /bin becomes a symlink to /usr/bin, resp. /sbin to /usr/sbin). That means scripts/programs written for other Unixes or other Linuxes and ported to your distribution will no longer need fixing for the file system paths of the binaries called, which is otherwise a major source of frustration. /usr/bin and /bin (resp. /usr/sbin and /sbin) become entirely equivalent.
  • "Improved compatibility with other Unixes (in particular Solaris) in appearance: The primary commercial Unix implementation is nowadays Oracle Solaris. Solaris has already completed the same /usr merge in Solaris 11. By making the same change in Linux we minimize the difference towards the primary Unix implementation, thus easing portability from Solaris.
  • "Improved compatibility with GNU build systems: The biggest part of Linux software is built with GNU autoconf/automake (i.e., GNU autotools), which are unaware of the Linux-specific /usr split. Maintaining the /usr split requires non-trivial project-specific handling in the upstream build system, and in your distribution's packages. With the /usr merge, this work becomes unnecessary and porting packages to Linux becomes simpler.
  • "Improved compatibility with current upstream development: In order to minimize the delta from your Linux distribution to upstream development the /usr merge is key."
As I wrote in November, all of this seems like a pretty good idea, as this will make cross-distro development a lot easier for those distros who adopt the new filesystem architecture. Currently, different distros locate key libraries and binaries in different locations in the Linux filesystem, for which application developers have to compensate when they code and package their apps. An all-in-one solution that would merge or symlink all of these locations together would make things a whole lot easier.

In order to discount some of the objections to this proposal, Poettering listed eleven "myths" that he then dispelled. Of these, the one that caught my eye was this one:
"Myth #9: The /usr split is useful to have a minimal rescue system on the root file system, and the rest of the OS on /usr."
To which Poettering responds:
"Fact: On Fedora the root directory contains ~450MB already. This hasn't been minimal since a long time, and due to today's complex storage and networking technologies it's unrealistic to ever reduce this again. In fact, since the introduction of initrds to Linux the initrd took over the role as minimal rescue system that requires only a working boot loader to be started, but not a full file system."
Poettering seemed to take on the issue that I and others have raised about this proposal, as well as the adoption of the new syslog system, Journal, by the Fedora Project. There are concerns by many, including me, that Fedora's (and subsequently Red Hat's) adoption of these new techniques and tools are an attempt to move forward in the marketplace and set themselves apart from other Linux distros as an "easier" platform for which to develop.

"Multiple other Linux distributions have been working in a similar direction," Poettering wrote.
That is not in dispute, but there is also no denying that the Fedora Project is by far the most aggressive proponent of such moves. Initially, I was critical of this effort, mostly because of my bias towards the Linux Standard Base and concerns that Red Hat was yet again thumbing its nose at the rest of the Linux community and going off and doing it's own thing.

But maybe there's something else afoot here.
A few times, Poettering mentioned this change would mean better compatibility with Solaris 11. Normally, that would be a point of trivial interest. But after running up against a lot of people from Joyent this past weekend at SCALE 10X, some dots are getting connected.

Joyent is a cloud services provider that provides a complete software stack for its customers… with its SmartOS operating-system layer based on Solaris. Joyent is coming out will all guns blazing of late, with lots of presence at events like SCALE 10X, Node Summit, and Monki Gras, not to mention some aggressive positioning of Solaris' Dtrace and other features.

Again, taken alone, this is all well and good… you certainly can't blame Joyent for being enthusiastic about their product.

But, given all of these little breadcrumbs, not to mention more than a little groundswell about Oracle Solaris these days, now one wonders: are Fedora/Red Hat trying to shift themselves (and the rest of Linux) into a better position to combat Solaris?

It might not be a bad idea. If Solaris were to take off (and the cloud is a great platform on which one could deploy bazillions of Solaris instances pretty darn quickly), one area of competition would definitely be application compatibility. If Linux can maintain better compatibility with Solaris (and any other UNIX contender), then that point of contention would be come moot--or at least weaker.

Suddenly, what seemed to be a power-play by Red Hat might ultimately be of great benefit to the overall Linux ecosystem. Sure, Red Hat would reap the initial benefits, but if they were the ones who saw this challenge coming, I certainly wouldn't begrudge them that.

Speculation, to be sure, but broader unification with UNIX-based platforms has to have some reason driving it, and this seems as likely as any.

More Systemd Fun: The Blame Game And Stopping Services With Prejudice

  Systemd, Lennart Poettering's new init system that is taking the Linux world by storm, is all full of little tricks and treats. Today we will play the slow-boot blame game, and learn to how stop services so completely the poor things will never ever run again.

Stomping Services

In the olden days of sysvinit there were several ways to stop a service:
  • Temporarily from the command line, like /etc/init.d/servicename stop, or service servicename stop
  • Changing its startup link in /etc/rcn.d from Sfoo to Kfoo
  • Remove all init scripts
  • Which didn't always do the job because sometimes there lurked a script to automatically restart it that bypassed the init scripts, so you had to hunt this down and change it
In Managing Services on Linux with systemd we learned how systemd simplifies starting and stopping services, both per-session and at boot. systemd has one more way of stopping services, and that is stopping them so completely they will never start again. Or at least not until you change your mind and make them start again. This is how to stop a running service temporarily:
# systemctl stop servicename.service
This stops it from starting at boot, but does not stop a running service:
# systemctl disable servicename.service
That also prevents it from being started by anything else, such as plugging in some hardware, or by socket or bus activation. But you can still start and stop it manually. And there is one way to really really stop a service for good, short of uninstalling it, and that is masking it by linking it to /dev/null:

# ln -s /dev/null /etc/systemd/system/servicename.service
# systemctl daemon-reload

When you do this you can't even start the service manually. Nothing can touch it. After being vexed by mysterious scripts that sneaked around behind my back and restarted services I wanted killed on sysvinit distros, I like this particular command a lot. The unit files in /etc/systemd/system override /lib/systemd/system, which have the same names. Unless your chosen Linux distro does something weird, /etc/systemd/system is for sysadmins and /lib/systemd/system is for your distro maintainers, for configuring package management. So masking should survive system updates.
What if you change your mind? Pish tosh, it's easy. Simply delete the symlink and run systemctl enable servicename.service.
While we're here, let's talk about two reload commands: daemon-reload and reload. The daemon-reload option reloads the entire systemd manager configuration without disrupting active services. reload reloads the configuration files for specific services without disrupting service, like this:
# systemctl reload servicename.service
This reloads the actual configuration file used by the hardy sysadmin, for example the /etc/ssh/sshd_config file for an SSH server, and not its systemd unit file, sshd.service. So this is what to use when you make configuration changes.

Pointing the Finger of Slow Boot Blame

Boot times seem to be an even bigger obsession than uptimes for some folks, and a lot of energy is going into trimming boot times. The time it takes for a PC to boot is controlled by two things: how the long the BIOS takes to do its part, and then the operating system.

Figure 1: A simple boot profile graph generated by systemd-analyze.
Figure 1: A simple boot profile graph generated by systemd-analyze.
There isn't much we can do about BIOS times. Some are fast, some are slow, and unless you're using a system with OpenBIOS you're at the mercy of your motherboard vendor. The PC BIOS hasn't advanced much since its inception lo so many decades ago, except for recurring attempts to lock users out and control what we can install on our own computers, which I think is pretty sad. With quad-core systems as common as dust mites it seems a computer should boot as fast as flicking a light switch.
But I digress, because we're supposed to be talking about systemd. systemd reports to the syslog a boot-time summary, like this example from Fedora 16 XFCE in /var/log/messages:
Jan 09 06:30:13 fedora-verne systemd[1]: Startup finished in 2s 817ms 839us (kernel) + 4s 629ms 345us (initrd) + 1min 11s 618ms 643us (userspace) = 1min 19s 65ms 827us
So this shows that the kernel was initiated in 2 seconds and change, initrd took 4 seconds and change, and and everything else took over a minute nineteen seconds. For all we've been hearing how sysvinit is like all slow and systemd is supposed to be faster, this seems like a long time. (Though it is faster than Windows 7 on the same machine, which needs 6 minutes to completely load all the OEM crap- and ad-ware.) So what's taking so long? We can find out with the systemd-analyze blame command, as this snippet shows:

$ systemd-analyze blame
  60057ms sendmail.service
  51241ms firstboot-graphical.service
  3574ms sshd-keygen.service
  3439ms NetworkManager.service
  3101ms udev-settle.service
  3025ms netfs.service
  2411ms iptables.service
  2411ms ip6tables.service
  2173ms abrtd.service
  2149ms nfs-idmap.service
  2116ms systemd-logind.service
  2097ms avahi-daemon.service
  1337ms iscsi.service

Sendmail? Firstboot graphical service? Iptables? Avahi? Iscsi?? This is from a fresh Fedora installation, so I have a lot of housecleaning to do. There are some limitations to this command: it doesn't show which services start in parallel or what's holding up the ones that take longer. But it does show me a lot of slow services that don't need to be running at all on my system.
If you like pretty graphs systemd includes a cool command for automatically generating an SVG image from the blame output, like this:
$ systemd-analyze plot > graph1.svg
You can view this nice graph in the Eye of GNOME image viewer, or GIMP via the SVG plugin. Figure 1 shows what it looks like.
This doesn't tell you much more than the text output of systemd-analyze blame, but it looks pretty and might give you some clues where the bottlenecks are.

Friday, January 27, 2012

75 Open Source Apps That Could Improve Your Life

'Tis the season for New Year's resolutions. But if you're like many Americans you may have already fallen off the wagon. One study by psychologists at the University of Scranton found that 36 percent of the people who made New Year's resolutions had already broken them by the end of January, and less than half (44 percent) were still going strong in July.

Fortunately, the open source community has created a lot of tools to help you keep your promises to yourself. We last researched these types of open source apps in 2010, so we updated the list for 2012. We found apps to help you improve your financial situation, lose weight and get fit, quit smoking, break a bad computing habit, start your own business, get organized, make better use of your time, take up a new hobby, learn a new language, improve your mind and become more spiritual. At the end, we've also included a list of suggestions for those few people whose resolution is to try out an open source application for the first time.

As usual, feel free to make use of the comments section below to note of other apps we should consider the next time we update this list.

Improve Your Financial Situation

1. Buddi
Designed for home users who have "little or no financial experience," Buddi aims to offer all the features most people need while keeping the interface as simple as possible. It tracks account balances, transactions and budget categories, and it creates simple reports. Operating System: Windows, Linux, OS X

2. Financisto
This open source Android app lets you track your budget from your smarphone or tablet. Key features include Quicken and CSV import, support for multiple accounts and currencies, recurring transactions, budgets and advanced reports. Operating System: Android

3. HomeBank Now nearly 17 years old, this personal finance solution boasts powerful filtering and graphing tools. It imports and exports data to other financial software, and it offers helpful features like auto-completion, transaction reminders and a "car cost" report that tallies up all your vehicle-related expenses. Operating System: Windows, Linux, OS X

4. iFreeBudget
This extremely simple double-entry accounting budget is aimed at home or small business users. The interface is very basic, but the Android support is nice for tracking purchases as you make them. Operating System: Windows, Linux, OS X, Android

5. jGnash
Java-based jGnash offers double-entry accounting for your home finances. It imports data from Quicken and Microsoft Money, and it tracks investments and supports multiple currencies. Operating System: Windows, Linux, OS X

6. JStock
This portfolio manager offers near real-time data from 24 world stock markets. Two features that set this project apart are the cloud-based storage option and the integrated chat capabilities for exchanging tips with other investors. Operating System: Windows, Linux, OS X

7. KMyMoney
This app from KDE claims to be "the BEST Personal Finance Manager for FREE Users, full stop." If you've ever used Quicken or Microsoft Money, you should find it easy to use, and it also imports and exports Quicken files. Operating System: Windows, Linux, OS X

8. Money Manager Ex
With "all the basic features that 90% of users would want to see in a personal finance application," Money Manager Ex offers a very user-friendly, simple interface. Key capabilities include AES encryption, one-click reporting, the ability to run from a USB drive without an install, depreciation tracking, investment tracking, international support and import from CSV and Quicken file formats. Operating System: Windows, Linux, OS X

9. StockManiac
StockManiac describes itself as an "investment time machine" for private investors. It tracks transactions and stores documents related to your portfolio, and it makes it easy to track multiple accounts and multiple portfolios. It automatically updates stock prices with Internet data, and it includes a feed reader that lets you keep up on relevant news. Operating System: OS Independent

10. UnkleBill
One of the newer double-entry accounting apps on our list, UnkleBill offers a particularly attractive interface, complete with a cute UnkleBill cartoon character who offers tips and advice for new users. It supports multiple users and multiple accounts, and it creates PDF reports. Operating System: Windows, Linux, OS X

Lose Weight/Get Fit

11. Cronometer
If you're on a restricted calorie diet, this app can help you track the calories in the foods you eat as well as other health data. The link above will take you to the free Web app; you can find the source code at SourceForge. Operating System: Windows, Linux, OS X, Android, iOS

12. eFit Calorie Counter
With a database of nutrition information for 10,000 foods, this app helps you plan meals and count the calories you consume. It also includes a helpful recipe creator and a tool for tracking your body measurements. Operating System: Windows

13. iDiet
This app supports multiple diets, including Atkins, Summer Fresh, The Zone and Body for Life. Simply input the diet you're following and your goal. The app calculates how many calories, fat, protein, carbs, etc. you should be eating and then tracks your actual food consumption to see if you are staying on your plan. Operating System: OS Independent

14. My Tracks
This Android app uses your smartphone's GPS to trace your path when you go running, walking, biking or hiking. When you're finished, you can import your time, distance, speed and elevation change to a spreadsheet so that you can track your fitness or share your stats with others. Operating System: OS Independent

15. SportsTracker
Whether you're training for a specific event or just want to track your progress toward a more healthful lifestyle, Sports Tracker makes it easy to set up a plan and track your statistics. It also integrates with several popular heart monitors. Operating System: Windows, Linux, OS X

16. TurtleSport
If you have a Garmin fitness device like the Forerunner or the Edge, this app can retrieve your data and create reports. It also integrates with Google Earth and Google Maps so that you can see where you've been. Operating System: Windows, Linux, OS X

Quit Smoking

17. QuitCount
This Linux-only app helps keep you motivated to stop smoking. You tell it the day you quit, and it keeps a running total of how much money you've saved, how much tar you didn't put into your body and how much time you have added to your life expectancy. Operating System: Linux

18. Smoke Reducer
Smoke Reducer keeps track of how long it's been since your last cigarette. It plays an alarm when it's time to smoke again, gradually lengthening out the time between smoking sessions until you stop completely. Operating System: Android

Stop a Bad Computing Habit

19. Amanda
Short for "Advanced Maryland Automatic Network Disk Archiver," Amanda is one of the most popular backup solutions available. It's designed for businesses or other other organizations with a large network of computers that needs to be backup up regularly. Operating System: Windows, Linux

20. Areca Backup
Not backing up your system is one of the worst of the bad computing habits. Fortunately, Areca Backup makes it fast and easy to copy your files to an external drive, and it offers advanced features like compression, encryption, delta backup and more. Operating System: Windows, Linux

21. BleachBit
How long has it been since you performed basic system maintenance on your PC? BleachBit helps speed up your system and protect your privacy by cleaning out your cache, deleting temp files and other junk, and erasing cookies. It also includes a file shredder to eliminate completely all traces of files containing sensitive or personal information. Operating System: Windows, Linux

22. AxCrypt
If you store personal information or data from your small business on your PC, you really should encrypt those files, especially if you are using a laptop. Downloaded more than 2.4 million times, AxCrypt integrates with Windows Explorer to make encrypting or decrypting individual files fast and easy. Operating System: Windows

23. TrueCrypt
If you don't want other people to be able to access any of the data on your drive, try TrueCrypt. It encrypts entire drives or partitions on the fly. Operating System: Windows, Linux, OS X

24. KeePass
If your bad habit is using the same password for everything, KeePass can help. It stores unique passwords for every site or service you use in an encrypted database—you just have to remember one master password, and KeePass does the rest. Operating System: Windows

25. PWGen
Using easy-to-guess passwords is just as bad as using the same password all the time. PWGen creates strong passwords for you, so you won't be tempted to use "password" or "123456." Operating System: Windows

Start Your Own Business

26. Apache OFBiz
The Apache Open for Business Project includes much of the software you need to run a business—ERP, CRM, e-commerce, warehouse management, fulfillment, accounting, point of sale, and more—all in one free package. If you need support or consulting services to help you get started, check out the list of service providers on the site. Operating System: OS Independent

27. PrestaShop
If you're considering starting your own online business, PrestaShop might be for you. This award-winning shopping cart has been used to power more than 100,000 online stores, and it's very easy to use. Operating System: Windows, Linux, OS X.

28. Magento
Acquired by eBay last year, the Magento e-commerce platform powers more than 110,000 sites, including stores for Office Max, Harbor Freight Tool and The North Face. The community version is free; paid professional and enterprise versions and an SaaS version are also available. Operating System: Windows, Linux

29. Zen Cart
Designed in part by actual small business owners, this e-commerce tool is aimed at users without a lot of technical skills. The site includes plenty of tutorials and links to other services that are helpful when you're starting your own online business. Operating System: Windows, Linux

Get Organized

30.Data Crow
If your resolution involved organizing a large collection of CDs, DVDs, books or other stuff, Data Crow can help. This self-proclaimed "ultimate media cataloger" connects to online services to provide detailed data about the items in your library, and it even includes a feature to help you keep track of who borrowed your things. Operating System: OS Independent

31. Dia
Need to create a flowchart or org tree? Dia is the perfect tool for the job, and it's free. Operating System: Windows, Linux/Unix

32. GanttProject
If you're organizing a very large project, you may want to check out GanttProject. It's similar to Microsoft Project, and it allows you to divide a project into smaller subtasks, assign people to each task, and schedule it all. Operating System: Windows, Linux, OS X

33. FreePlane
This fork of FreeMind (see below) has been racking up thousands of downloads. It offers traditional mind-mapping features, plus some advanced functionality. Operating System: Windows, Linux, OS X

34. FreeMind
This mind-mapping software makes it easy to organize your thoughts, plan your activities, brainstorm or take notes. It's like an electronic whiteboard that lets you draw arrows and lines between words to show the relationships between your ideas. Operating System: Windows, Linux, OS X

35. Gourmet
Gourmet helps you organize your recipes. It imports recipes from multiple formats, including websites, plus it generates shopping lists and counts the calories in the meals you're making. Operating System: Windows, Linux

36. OpenProj
OpenProj offers similar features as GanttProject and Microsoft Project. Note that the feature that allows you to export to PDFs is not open source, but the rest of the software is. Operating System: Windows, Linux, Unix, OS X.

37. PNotes
Much like real-world sticky notes, PNotes lets you leave virtual sticky notes for yourself on your computer. Interesting features of this app include audio notes, scheduling, password protection, encryption, transparency and more. Operating System: Windows

38. Stuff Organizer
Stuff Organizer makes it easy to organize and find any kinds of files on your computer—whether they're music, video, or just documents. Features include a compression extracting utility, tagging support and integration with several Web services that provide data about multimedia files. Operating System: Windows

Make Better Use of Your Time

39. eHour
If you're a freelancer, consultant or other professional who bills by the hour, eHour can help you track and bill for the time you spend on projects. It also has some multi-user capabilities suitable for small offices. Operating System: Windows, Linux, OS X

40. Rachota
One way to make sure you're being as efficient as possible is to track the amount of time you spend on tasks. Rachota does just that—for both work and home situations. It's also portable, so you can take it with you. Operating System: OS Independent

41. RedNotebook
This innovative app adds a text editor to a calendar/to-do list app. The result is perfect for keeping a diary or making notes about upcoming events. Operating System: Windows, Linux

42. Makagiga
Makagiga offers the same schedule/journal functionality as RedNotebook, plus it adds a sticky notes widget and a feedreader. Other optional add-ons are also available. Operating System: Windows, Linux

43. qOrganizer
Like several of the other options in this category, qOrganizer offers a calendar, to-do list and an integrated journal. However, this one also adds special student-focused features, such as a booklet for tracking grades and attendance, a timetable for tracking classes and an extra loud alarm in case you've dozed off while studying. Operating System: Windows, Linux

44. Task Coach
Unlike many similar to-do list managers, Task Coach allows you to break tasks down into smaller sub-tasks. It also allows you to tag and organize tasks, and it integrates with some of most well-known e-mail clients, including Outlook and Thunderbird. Operating System: Windows, Linux, OS X

Take Up a New Hobby

45. Storybook
If writing a novel is on your to-do list for this year, Storybook can help you get started. It keeps an overview of characters and scenes in one place, helps you organize your book and includes features to help you maintain continuity. Operating System: Windows, Linux, OS X

46. Celtx
Planning to tackle writing a screenplay or producing your own film? This "all-in-one movie pre-production system" can help you write scripts, produce storyboards, and much more. It boasts more than 1.5 million users in 170 countries. Operating System: Windows, Linux, OS X

47. Stellarium
Have you always wanted to learn more about astronomy? Stellarium can show you the stars in the night sky as seen from any point on earth at any time—it's the same software used by many planetariums. You can use it to help plan your nightly viewing or just to learn more about the universe. Operating System: Windows, Linux, OS X

48. Celestia
Like Stellarium, Celestia helps amateur astronomers explore the night sky, but this project goes one step further. It also lets you virtually "fly" throughout the galaxy and see how the stars would look from Mars, Jupiter or any other point in space. Operating System: Windows, Linux, OS X.

49. Gramps
Short for "Genealogical Research and Analysis Management Programming System," Gramps is one of the best acronyms we've ever seen on an open source project. It's a professional-quality genealogical program with a very active user community and more than 1,100 pages of online documentation to help you trace your own family history. Operating System: Windows, Linux, OS X

50. GenealogyJ
Like Gramps, GenealogyJ is a tool for viewing and editing your family history, but it was designed for amateurs, not professionals. Java-based, it creates family trees, timelines, maps, reports and more. Operating System: OS Independent

51. Sweet Home 3D
Determined to spruce up your home this year? This app helps you create 2D and 3D layouts of your rooms, complete with a preview of how the finished product will look. Operating System: Windows, Linux, OS X

52. LenMus Phonascus
Phonascus is a music theory and aural (ear) training program for musicians of all levels. It includes a wide variety of audio and written exercises, as well as a score editor for composing your own works. Operating System: Windows, Linux, OS X.

53. GNU Solfege
You might not have been born with perfect pitch, but you can get better with practice. This app will help you improve your ability to identify and sing intervals, chords, scales and more. Operating System: Windows, Linux, OS X.

54. ScoreDate
First, let's make it clear that this app is not at all about dating—the "score" refers to musical scores. ScoreDate aims to teach anyone the basics of reading music. Operating System: Windows, Linux, OS X

55. Numismatic
Yes, there's even an open source project for coin collectors. Numismatica stores data related to your collection in a MySQL database that you can access through a Web app. Operating System: OS Independent

Learn a New Language

56. jVLT
The Java Vocabulary Learning Tool, aka jVLT, aims to help users learn vocabulary for new languages. You can make up your own cardset or use the pre-built sets to learn French, English, Spanish, Thai, Chinese, German, Czech, Finnish or Russian. Operating System: Windows, Linux, OS X

57. Parley
KDE's flashcard program can be used to learn any type of information, but it's particularly well adapted to learning new vocabulary. In addition to standard flashcards, it also offers anagram, multiple choice, fill in the blank, conjugation and other types of exercises. Operating System: Windows, Linux.

58. Step Into Chinese
This app can serve as both a Chinese-English dictionary and a flashcard system for mastering vocabulary. It includes pronunciation, translation and contextual information for more than 26,000 modern Chinese words and concepts. Operating System: Windows, Linux, OS X

59. Zkanji
Zkanji is an elaborate English-Japanese dictionary. Included features can help you learn to write Japanese characters, study vocabulary or find meanings for words you don't know. Operating System: Windows

60. ZWDisplay
ZWDisplay helps those studying Chinese learn to pronounce Chinese words and read Chinese text. Clicking the Chinese characters displays a pinyin pronunciation guide and an English translation. Operating System: Linux

Improve Your Mind

61. Brain Workshop
Research suggests that dual n-back activities can improve working memory and fluid intelligence, and they also seem to help some ADHD/ADD sufferers. Downloaded more than 384,000 times, Brain Workshop lets you give your brain a workout by trying dual n-back exercises for yourself. Operating System: Windows, Linux, OS X

62. CoolReader
If your resolution was to read more, this app can help. CoolReader lets you read e-books on your desktop, laptop or Android device. Operating System: Windows, Linux, OS X

63. FlashQard
This learning tool is founded on two basic principles: different cards for different purposes and the Leitner System. Developed in the 1970s, the Leitner System is a proven methodology for spending more time on more difficult material and less time on materials that's already been mastered. As with many of the flashcard-type apps, this app lets you create your own cards or download sets that have already been created. Operating System: Windows, Linux

64. Genius
If you need to memorize something—anything—Genius can help. It's a spaced repetition flashcard program that can help you pass a test, master a subject, prepare for a speech and more. Operating System: OS X

65. The Mnemosyne Project
Another flashcard-type study aid, The Mnemosyne Project relies on a sophisticated algorithm to determine which card shows up when. Users also have the option of transmitting their data and progress to the project's owners, who are conducting a research project about the nature of memory. Operating System: Windows, Linux, OS X, Android

66. Pauker
This flashcard app claims to help strengthen your ultra-short-term, short-term, and long-term memory. You can make your own cards if you want to learn something in particular, or you can use one of the many pre-written lessons, which include foreign languages, states/provinces and capitals, chemical elements, multiplication tables, musical terms and even European license plates. Operating System: Windows, Linux, OS X.

67. OpenCourseWare
The Open Courseware Consortium offers links to hundreds of "open source" university classes. Study nearly any subject you want with materials from institutions like MIT, Johns Hopkins, University of Michigan, University of California and dozens of others. Operating System: OS Independent

Become More Spiritual

68. BibleTime
The BibleTime free Bible study software includes data from more than 100 Bibles, commentaries and other reference materials. It's a good alternative to similar commercial software which can cost hundreds of dollars. Operating System: Windows, Linux, OS X

69. Xiphos
This app works much like BibleTime and even links to the same set of free reference materials. However, Xiphos' modular design allows for user-built add-ons, including some that add journaling and prayer list features. Operating System: Windows, Linux

70. Zekr
Zekr brings the text of the Qu'ran to your PC with advanced search, read aloud and other functions. It's open source because the project owners believe you should "never profit off the prophet." Operating System: Windows, Linux, OS X

Give Open-Source a Try

71. Firefox
One of the most well-known open source projects, Mozilla's Firefox browser boasts fast performance, personalization capabilities, and good security. Now it also comes in mobile versions, including a version optimized for tablets. Operating System: Windows, Linux, OS X, Android

72. OpenOffice.org
Now an Apache Foundation project, OpenOffice.org offers an office productivity suite that reads and saves in Microsoft Office formats. It includes a word processer, spreadsheets, presentations, database and graphics applications. Operating System: Windows, Linux, OS X

73. OpenDisc
This project combines many of the most popular open source apps for Windows into one package. It includes LibreOffice, Firefox, Celestia, The Gimp, Inkscape, Dia, and many other very good open source progams. Operating System: Windows

74. PortableApps.com
This project also collects a ton of open source apps—only this time the apps are formatted so that you can put them on a USB thumb drive and take them with you wherever you go. The standard download comes with some of the most popular open source apps, but the site also includes a library of hundreds of other apps that you can add to your portable drive. Operating System: Windows

75. Ubuntu
Used by 20 million people every day, Ubuntu is one of the most popular Linux distributions and one of the most user-friendly to people who are switching from Windows or a Mac. If you have an older PC sitting around, it's easy to install Ubuntu to take it for a test drive—and it comes with a huge library of free apps.

8 Best Free Android Launchers

The Android platform is arguably one of the most flexible mobile operating systems in the customization stakes. Almost every part of the Android interface can be modified to meet the requirements of the user without having to gain privileged control (often referred to as "root access"). Customization extends far beyond simply changing the wallpaper, sounds, and widgets.

When the Home button on an Android phone is pressed, the stock launcher is displayed. Whilst the concept of this launcher is well thought out, its implementation is not to everyone's taste. Fortunately, there are a whole raft of home replacement applications available for Android, ranging from the slickest and most feature-laden launchers, to the decidedly weird and wacky.

Given the plethora of software, the purpose of this article is to provide an insight into the best free home replacement apps available for the Android platform. Hopefully, there will be something here that will rejuvenate your phone, however old it is.

Now, let's explore the 8 launchers at hand. For each title we have compiled its own portal page, a full description with an in-depth analysis of its features, screenshots of the software in action, together with links to relevant resources and reviews. We give our highest recommendation to LauncherPro, ADW.Launcher, and GO Launcher EX.

LauncherPro Super-smooth home app replacement
ADW.Launcher Jam packed with features, eye candy, functions and hugely customizable
GO Launcher Ex Brings a fresh and extraordinary mobile operation experience
Zeam Launcher Minimalistic and lightweight launcher
MXHome Launcher Sports a 3D cover page and a classy coffee theme
QQLauncher Pro Good screen and program management
Launcher 7 Windows Phone 7 style launcher for Android
HelixLauncher Extends the functions of Launcher

Resize Linux storage with LVM

You need more space on your server/desktop/etc..  This guide will help you add it to the volume you’re currently using on your system. For the sake of making this an easy-to-follow guide, we’ll assume that  you already have the new drive showing in your Linux installation from fdisk, but it’s not yet usable (ie: you made it available from shared storage, you installed a new harddrive, etc..).

First, let’s see if the system can see the new storage:
# fdisk -l
Disk /dev/sdc doesn't contain a valid partition table
Note: you’ll also see information about your current drives..
First things first, create a partition on the drive using fdisk, cfdisk, etc.. toggle it type ’8e’.
# fdisk /dev/sdc
Now it should show up a little better in the fdisk -l command.
Next, create the physical volume on the new partition on the new drive:
# pvcreate /dev/sdc1
Physical volume "/dev/sdc1" successfully created
Now, find out the volume group and logical volume names on your system. Make note of these..
# vgdisplay
# lvdisplay
We’ll assume that the information is:
Volume Group: test_vg
Logical Volume: test_lv
Now, use vgextend to add your new drive to the existing volume group:
# vgextend test_vg /dev/sdc1
  Volume group "test_vg" successfully extended
You can see, by viewing ‘vgdisplay’ again, it will show you the added space:
# vgdisplay
Now, pull it across into the logical volume:
# lvextend -l +100%FREE /dev/test_vg/test_lv
  Extending logical volume test_lv to 6.88 TiB
  Logical volume test_lv successfully resized
You’re almost home free – now, vgdisplay shows the correct info and so does lvdisplay – but a simple df -h still shows the filesystem size has not changed. Let’s tell the filesystem to stretch out across the full logical volume:
# resize2fs /dev/test_vg/test_lv
resize2fs 1.41.12 (17-May-2010)
Filesystem at /dev/test_vg/test_lv is mounted on /TEST; on-line resizing required
old desc_blocks = 347, new_desc_blocks = 441
Performing an on-line resize of /dev/test_vg/test_lv to 1848109056 (4k) blocks.
The filesystem on /dev/test_vg/test_lv is now 1848109056 blocks long.
And to see how it worked out:
# df -h
Filesystem                    Size  Used Avail Use% Mounted on
/dev/mapper/test_vg-test_lv   6.8T  4.9T  1.9T  73% /TEST
It worked!