FreeBSD 9.1 on Thinkpad T420

beastieVery recently I was thinking of trying FreeBSD operating system on a laptop as a desktop system. FreeBSD is an excellent UNIX class of operating systems primarily used as a server on internet. Among other things the operating system posses excellent memory management features, ZFS and LLVM etc.

I have installed various BSD class of operating systems earlier also, but when I installed FreeBSD 9.1 this time, I noticed that the default disk partitioning options have changed in the installer. By default if the automatic partitioning option is chosen, FreeBSD creates GPT (GUID Partition Table). I decided to proceed with all default options except the timezone settings were changed to IST.

At the end of the install, the system refused to boot from the hard disk. I thought this is because the BIOS may be configured to use the UEFI (Unified Extensible Firmware Interface) being configured in BIOS as the laptop had windows 7 installed in it. I tried changing the setting to – disable, EUFI/legacy, legacy – but still the laptop did not boot. Upon my research on the internet I came across – https://wiki.freebsd.org/UEFI. Here it was mentioned that –

Partitions not seen. When using GPT, FreeBSD will create a protective MBR. This MBR has one partition entry covering the whole disk. FreeBSD marks this partition active. This causes at least some UEFI implementations to ignore the GPT. To fix this the partition needs to be marked inactive. This should be fixed as of r251588, to be confirmed.

Running

fdisk /dev/sda0

from the live mode in FreeBSD confirmed that there is an MBR partition created and the flag 80 (active) has been set on it. I booted from a linux CD and ran

fdisk -l /dev/sda0

to confirm that this is indeed the case. So I used linux fdisk to remove the active flag (toggle option), but this did not help me.

At this moment I decided to drop this issue here and take the easy way out in order to get the operating system installed. During the installation this time I chose manual partitioning –

  • deleted all partition
  • changed the partitioning scheme to MBR (the default was GPT)
  • created a FreeBSD partition on it with further two partitions (slices) within the FreeBSD disk area
    • one as type freebsd-swap
    • other freebsd-ufs (mounted at /).

During the end of the installation an option to go to shell for additional installation is provided. I selected that option and then ran the

sysinstall

utility and selected options as follows –

sysinstall -> Configure -> Packages -> FTP -> Main Site

Selected all the desired software and finished the installation. The reboot took me straight to FreeBSD.

Enabling UTF-8

The available locales can be checked using the locale command. In order to find out the UTF-8 locale which are installed –

# locale -a | grep UTF-8|grep US
en_US.UTF-8

In order to add the support for this locale, following lines need to be added in /etc/login.conf –

:charset=UTF-8:\
:lang=en_US.UTF-8:

Finally run the –

#cap_mkdb /etc/login.conf

Now in order to use these following two environment variables can be set –

LANG=en_US.UTF-8
GDM_LANG=en_US.UTF-8

Installing X windows and Windows Managers

Since I wanted to get a graphical desktop on the laptop, I need to install X windows, a window manager and some other graphical tools like browser etc.

# pkg_add -r x11 ratpoison awesome stumpwm firefox

Configuring X and starting is done as below –

# X -configure
# cp /root/xorg.conf.new /etc/xorg.conf
# cat ~/.xinitrc
export LC_ALL=en_US.UTF-8
export LANGUAGE=en_US.UTF-8
export LANG=en_US.UTF-8
exec /usr/local/bin/ratpoison

Following two lines needs to be added to

/etc/rc.conf

for the X to work correctly –

hald_enable="YES"
dbus_enable="YES"

and then finally

startx

to launch the X. May be later on I will install one of the display managers to facilitate graphical login.

So I am ON with freebsd and now I can start learning/exploring this further and may be try some of the other BSDs along with this as multiboot. I have not really worked on BSDs from quite sometime. I expect this to be a good refresher.

Posted in FLOSS | Tagged | Leave a comment

Raspberry Pi And Me

I bought a Raspberry Pi somewhere in March this year. After a very hectic schedule, I managed to find few hours yesterday evening to explore it. I bought the following accessories in order to use it –

  • A Belkin 4-port powered USB Hub
  • Netgear Wireless USB Micro Adapter
  • Dell LCD Monitor (wall mounted). This was a cheap VGA based
  • HDMI to VGA converter. Raspberry Pi has HDMI port, so I needed a converted to attach it to my monitor.
  • A USB A to USB Micro cable to power the Raspberry Pi
  • iBall Wireless USB Keyboard and Mouse
  • 32 GB MicroSD card with a Micro SD to SD card adapter

The LCD and USB hub occupies the power sockets. The Raspberry Pi is powered from the USB hub using a USB A to USB micro cable. The two USB ports on the Raspberry Pi have been occupied with the USB Hub and iBall wireless adapter for Keyboard and Mouse. The Netgear wireless adapter has been connected to the USB Hub and so is my external HDD for extra storage.

I am using Raspbian (a variant of Debian meant for Raspberry Pi), distributed by the the Raspberry Pi Foundation, which is a little different from the images by Raspbian project.

I had (and still have) some problems with booting while my monitor is connected, perhaps because the HDMI to VGA converter is drawing too much power from the RPi. I need to look into it later.

The initial idea of using it as a light weight desktop environment is not going to work because of lack of flash support, and speed related issues. Although HTML 5 videos can be played, they need a separate configuration for the installed browser Midori. More on that configuration later.

In general it is a bit slower because all the applications are not designed to use the GPU effectively and the processor is too slow by even the standards of a high end mobile phone. Although I am typing this blog post on RPi using Midori web browser, I can feel the slowness while trying to add pictures as an attachment which needs JavaScripts to be processed at client side. I tried opening up the Yahoo Mail earlier today, it worked but it was very slow, almost unusable.

However, I have observed that it is ok for teaching programming to kids and also I can perhaps run it as a headless media player using XBMC and so on. For now I have installed Perl, Python and FreeBasic programming environments on this. All of which should work through command line effectively.

I will make further posts sharing my experience on this credit card size device.

Stay tuned.

Posted in RaspberryPi | Tagged | 1 Comment

Creating a DEB package for Oracle Java

Linux based operating systems comes by default with Open JDK installations. Often it is necessary for various developmental needs to install the Oracle Java. Oracle only supplies two installations of Java for Linux based operating systems – a rpm and a tar.gz binary distribution.

For RPM based distributions it is fairly easy to have the uniform setup on a large farm of servers, but on DEB based distributions a lot of manual work needs to be done at each host after unpacking the tar.gz file such as updating the alternatives etc to make the Oracle Java a default Java installation.

I have been thinking about how to deploy Oracle Java SDK on multiple Debian servers in a standardized way i.e by creating a DEB file.

A search on Debian Packages revealed the existence of a tool called – “make-jpkg”, a part of “java-package” package. This tool is capable of creating a DEB package from this tar.gz file. Here is how I created the package –

$ sudo apt-get install fakeroot java-package

I downloaded the Oracle Java Standard Edition  on my Linux Mint Debian Edition (LMDE) virtual machine.

Next I ran the command –

$ fakeroot make-jpkg --full-name "Ajitabh Pandey" --email "ajitabh@unixclinic.com" /home/ajitabhp/Downloads/jdk-7u25-linux-x64.tar.gz

I got an error stating “No Matching Plugin was found”

Just above this error message the plugin path was given for various plugins used by this utility – “make-jpkg”. The plugins were in /usr/share/java-package directory in the form of “.sh” files (shell scripts). I next opened each shell script to try and decipher them and found the possible problem in the plugins “/usr/share/java-package/oracle-j2*.sh”. The following pattern picked up from “/usr/share/java-package/oracle-j2sdk.sh” was the culprit –

"jdk-7u"[0-9]"-linux-x64.tar.gz") # SUPPORTED
j2se_version=1.7.0+update${archive_name:6:1}${revision}
j2se_expected_min_size=180 #Mb
j2se_priority=317
found=true
;;

If you see this pattern, it clearly indicates that it is only supporting up to update 9 of the JDK and the JDK I downloaded was update 25. So I added the following lines just below the above lines to add the support for my version.

"jdk-7u"[0-9][0-9]"-linux-x64.tar.gz") # SUPPORTED
j2se_version=1.7.0+update${archive_name:6:2}${revision}
j2se_expected_min_size=180 #Mb
j2se_priority=317
found=true
;;

There are two differences, one in first line and the second in second line. I am sure you will be able to spot them and decipher them.

After making similar changes in the other oracle* files I ran the make-jpkg as mentioned above and it created a DEB file – oracle-j2sdk1.7_1.7.0+update25_amd64.deb, which is deploy-able with the usual “dpkg -i”.

Changing the Default Java Installation to the Oracle Installation

After installing the package, you may want to change some alternatives in order to make the Oracle JDK and associated JRE installations as defaults. As the default version of Java may be something different. You can check the current version of java and its provider by –

$ java -version
java version "1.6.0_24"
OpenJDK Runtime Environment (IcedTea6 1.11.5) (6b24-1.11.5-1)
OpenJDK 64-Bit Server VM (build 20.0-b12, mixed mode)
$ file `which java`
/usr/bin/java: symbolic link to `/etc/alternatives/java'
$ ls -l /etc/alternatives/java
lrwxrwxrwx 1 root root 46 Aug 16 20:18 /etc/alternatives/java -> /usr/lib/jvm/java-6-openjdk-amd64/jre/bin/java

First find out the name of the available installations –

$ /usr/sbin/update-java-alternatives -l
j2sdk1.7-oracle 317 /usr/lib/jvm/j2sdk1.7-oracle
java-1.6.0-openjdk-amd64 1061 /usr/lib/jvm/java-1.6.0-openjdk-amd64

We will switch our default Java to “j2sdk1.7-oracle” with the following command –

$ sudo /usr/sbin/update-java-alternatives -s j2sdk1.7-oracle

Now you can check your Java version by

$ java -version
java version "1.7.0_25"
Java(TM) SE Runtime Environment (build 1.7.0_25-b15)
Java HotSpot(TM) 64-Bit Server VM (build 23.25-b01, mixed mode)
$ file `which java`
/usr/bin/java: symbolic link to `/etc/alternatives/java'
$ ls -l /etc/alternatives/java
lrwxrwxrwx 1 root root 41 Aug 16 20:22 /etc/alternatives/java -> /usr/lib/jvm/j2sdk1.7-oracle/jre/bin/java

Posted in FLOSS, Tips/Code Snippets | Tagged , , | 1 Comment

Questions of Travel

Questions of Travel Cover PhotoThere are two parallel stories running in this book. One story is of Laura Fraser, who was born and brought up in Sydney and the other is of Ravi Mendis, born and brought up in Sri Lanka. This book describes life and experiences of two different people. The author has beautifully described in great details the various places and times which both of these people lived.

Its a very slow novel and needs a lot of concentration and regularity in reading. This is the first novel of this kind which I have read. It took me some time to finish this. At the end I feel that there was too many details and the focus of the book was more of an artistic touch. I could not relate with either of the two characters in this book.

Posted in Book Reviews | Tagged , , | Leave a comment

Bad Luck And Trouble (Jack Reacher #11)

Bad Luck and Trouble Book Cover ImageIn addition to his standard folding toothbrush, Jack Reacher started carrying his passport as his identity document and an ATM card to withdraw cash from his account. This is a good progress into the “civilized world” for a guy like Reacher.

One fine day while withdrawing cash, he saw a deposit with a very strange looking number, something which triggered an alarm in his sub-conscious. After validation the source of deposit from his bank, he realized its a call from a fellow officer seeking help, and he proceeded immediately to LA. Upon his arrival he found that 4 out of his old team of 8 special investigators from Army days is missing and perhaps dead. And Reacher got involved in the investigations along with the remaining members of his team. It turns out a mix of arms/defense technology and terrorism related stuff.

It was a pleasure seeing Reacher working in a team, rather than the usual “alone”. He seems to also realize that they are getting out dated in terms of modern methods of investigation and are being out-smarted by other folks. In this case, Reacher manages to secure some finances for himself so that he can continue for some more time without having  to work somewhere in order to replenish his depleting bank reserves.

Let us see what happens in the next book in the series.

Posted in Book Reviews | Tagged , , | Leave a comment