TFM/GNU linux server 3.4 RC1

After a long wait and lots of internal changes TFM/GNU Linux server 3.4 is ready. The product will be released first to our partners and soon after to the public.

What is new ?

  • Installation flow is now fixed . All packages are now installed in the proper order
  • IPV6 is enabled in all relevant packages
  • apt can now be used to keep the distribution up to date ( commercial support is also available see www.tfmgroup.eu for details)
  • the LAMP stack ( apache / php / mysql ) is extremely stable and also we kept maximum backward compatibility with the old php applications.
  • kernel 2.6.38.8
  • and a lot more

This version will be available here Server ISO image.

TFM/GNU linux server 3.3 RC7

TFM/GNU linux server 3.3 RC7 is now available. There are a lot of changes since the last RC.
Kernel was updated to 2.6.34, apache 2.2.15, php 5.2.13, mysql 5.0.90 .
iscisi support was improved , and a lot of other minor changes on various subsystems. All reported bugs were corrected.

This will be the final RC before 3.3 release.

You can download this version here: Server ISO image.

BLUG*OS*CON

We are pleased to invite you to attend the Conference BLUG*OS*CON, to be held in the hall AN010 of Politehnica University of Bucharest.

An event dedicated to everyone who uses Software Open Source, beginners or advanced.

Free entrance!(free as in beer). The event is organized by BLUG.ro – Bucharest Linux User Group.

BLUG*OS*CON in a conference for truly Linux users, a conference just for fun,
Intrarea liberă! (free as in beer). Evenimentul este organizat de BLUG.ro – Bucharest Linux User Group, free from any influence in the IT industry, a kind of conference open source Do-It-Yourself. Free from prejudice, advertising and vanity. You are all welcome!

The schedule is rich and full of interest for everyone. You will be able to increase your knowledge for the Linux platform, whether you are a beginner (you have lots of tracks where you care improve yourself) or a true geek (the first in Romania). And last, but not the least, BLUG*OS*CON is a unique platform  for socializing Romanian FLOSS communities.

You can consult the full schedule at http://blugoscon.blug.ro/Main/ProgramulConferintei.

Communities in Romania will have their own stands where you can socialize heavily.

Who can participate:

  • novice Linux users
  • advanced Linux users
  • programmers
  • professors

Free entrance

MIME headers and how we add an attachment in an e-mail

The idea of this article is very simple. I will try to explain how it should be done, to be able to attach “manually” an attachment to an email . To those who have red and have asked themselves which is the purpose of some action, I strongly recommend not to continue with the lecture, because this article is not for them.

The applications for adding an attachment are enough, I will mention only one: creating those “corporate” footers with pictures and others wonders.

So, lets assume that we want to create a different kind of footer, in HTML, with a nice picture which should be representative for the emails send through the server we want to configure.

Strictly for the disclaimer / footer part, altermime can be used without any problem. The problem is that, if we want also, to add  an image (which will appear in footer), things will get complicated.

The solution is to modify the messages body and to add our attachment the way we wanted. Easy to say, but what happens, when we run across “Content-Type: multipart/mixed; boundary=”_004_A8EC770875E1AE4A84851C05B6F730038D98AEFF4A_””…?

Well, we have just meet MIME. I won’t get into unnecessary details, but I will sum up the essential. We are interested in that “boundary=”.  All that is between quotation marks after the equal sign represents an separator (unique for a message) which breaks the various attachments/ parts of the message. So “_004_A8EC770875E1AE4A84851C05B6F730038D98AEFF4A_” is that boundary which we should look for in the body of the message, to be able to add our attachment.

A MIME content area starts with two signs “-” and is succeeded by that boundary, like so

“–_004_A8EC770875E1AE4A84851C05B6F730038D98AEFF4A_” (of course without “).

The area lasts until the meeting  point with another same marking line or until the meeting point with the final line, formed of boundary succeeded by to signs “-“, like so:  “_004_A8EC770875E1AE4A84851C05B6F730038D98AEFF4A_–”

That’s pretty much about the structure of an email, at least that’s what interests us.

If you wonder how to add attachments however, now comes the answer:

Our attachment can be added just before the final mark we talked about. We will have an example at the end. What you should know is that an attachment from an email is encoded base64. So, if we want to add an JPEG file, we must converted first in base64 (uuencode -m, for example) and after that to add it, using a sequence like:

Content-Type: image/jpeg; name=”sign.jpg”
Content-Description: sign.jpg
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename=”sign.jpg”
Content-ID: <sign.jpg@00000000>

After all of the above, next is base64 encoding for the sign.jpg file.

All of this achieved, we have a message to which we added the attachment and it could be very nicely displayed form footers HTML .

I2C Bus Protocol – General description

Protocolul I2C was developed to create a communication channel between integrated circuits. I2C  consists of two lines physically active and earthing connection. The lines are called SDA and SCL active, both lines are bi-directional. SDA is Serial Data Line and SCL  is Serial Clock Line.

Any device connected to bus has its unique address, no matter if it is MMU, driver LCD, memory or ASIC. Every one of these chips can receive and/or broadcast depending on the desired functionality. Obviously an LCD driver can only receive while a memory or an I / O device can receive and transmit data.

I2C is a bus multi-master. Thus, in I2C bus can be connected more integrated circuits able to initiate data transfers. I2C protocol specifies that the integrative which initializes the connection is considered Bus Master. Consequently the remaining circuits connected to I2C are regarded as Bus Slaves.

Cum Bus Master are microcontrolere(MCU), this is how a sequence of communication, looks like on I2C.

  1. MCU sends the sequence START . At this time all circuits on the bus switches to reception
  2. MCU sends the ADDRESS of the circuit, with which wants to communicate together with the flag operation ( READ / WRITE ) .
  3. Circuits compares ADDRESS with own address and if the message is not for it, waits for the STOP condition
  4. If one circuit has the ADDRESS desired by MCU, then the chip will make a message ACKNOWLEDGE.
  5. Then it moves to the data transfer. When data transfer has finished it is send the STOP sequence.

Installing Adobe FMS on TFM/GNU Linux

First install TFM/GNU 32 Linux. You can download it from here. Be sure to check Quick Download on main web page to see if a newer release is available.

After you installed it you will need to download and install  the following 2 aditional rpm’s : nspr-4.6.7-1tfm.i686.rpm and nss-3.11.7-1tfm.i686.rpm .


cd /tmp
mkdir 1 ; cd 1
wget http://download.tfm.ro/TFM_3.2/aditional/nspr-4.6.7-1tfm.i686.rpm
wget http://download.tfm.ro/TFM_3.2/aditional/nss-3.11.7-1tfm.i686.rpm
rpm -Uvh *.rpm

Then download Adobe FMS and modified install from here:


cd /tmp
mkdir 2 ; cd 2
unzip Flashmedia3_Int_Strm_ALP.zip
tar xf FlashMediaServer3.tar.gz
cd FMS_3_0_1_r123
rm -f installFMS
wget http://download.tfm.ro/TFM_3.2/aditional/installFMS
chmod +x installFMS
./installFMS

The installation of adobe FMs is beyond this article scope so i will skip it. After you installed FMS if you need it to autostart on boot you have to edit /etc/rc.d/rc.multi and add to the end of file the following line


cd /opt/adobe/fms ;./server start ; ./adminserver start

That’s all folks. You have Adobe FMS running on TFM/GNU 32 Linux server.

From our tests one FMS can server on one live stream more than 1400 simultaneous users. If you like it or you find it usefull or even better use it , let us know. Feedback is important.

MyTcpProxy version 0.2

We are pleased to announce the immediate availability of MyTcpProxy version 0.2. This is our solution for load balancing and failover at the TCP protocol. MyTcpProxy can operate as a load balancer for any service that uses TCP, including MySQL. Unlike other solutions balacing load and failover, such as haproxy, MyTcpProxy persistence allow TCP connections at the session, which we recommend, along with failover functionality as a load balancer of trust for MySQL.

To be able to download visit this link.

Sample usage:

Let’s assume that your proxy server has ip 10.0.0.10 and you have 3 mysql servers with ip’s 10.0.0.1, 10.0.0.2, 10.0.0.3.

  • On each mysql server give access to the proxy ip to the databases:

GRANT ALL ON yourdb.* TO my_cluster@10.0.0.10 IDENTIFIED BY ‘your_pass’;

  • Start the proxy with the command:

/usr/bin/myproxy –server 10.0.0.1:3306 –server 10.0.0.2:3306 –server 10.0.0.3:3306

  • Connect mysql to 10.0.0.10 to port 33060

mysql -h 10.0.0.10 -P 33060 -u my_cluster -p

  • Run your queries and enjoy.

TFM/GNU linux server 3.2 ( iulie 2008) released

O noua versiune de TFM/GNU linux server 3.2 este disponibila. Aceasta versiune contine multe imbunatatiri in special pe partea de storage, web si high availability.

apache webserver a fost updatat la versiunea 2.2.9 , kernelul este 2.6.25.11. Au fost adaugate : lvm2 , mnogosearch si altele

A fost adaugat suportul pentru ocfs, iscsi si gfs. In momentul de fata realizarea unui shared storage redundant a devenit posibila folosind strict componentele din TFM server. Documentatia si exemplele de realizare vor fi publicate pe site in curind.

Viteza sistemului de instalare a fost radical imbunatatita prin trecerea la un nou sistem de initrd de instalare. Algoritmul de compresie din rpm a fost schimbat cu un algoritm mult mai performant.

Aceasta versiune este considerata 3.3 RC. Practic 3.3 va fi aceasta versiune cosmetizata ( avem in vedere cosmetizarea structurii din /etc/rc.d/services si eventualelor probleme cu aceasta imagine )

Pentru a downloada aceasta versiune puteti intra aici. Pentru a fi siguri de integritatea imaginii pe care o downloadati puteti verifica suma de control comparand-o cu aceasta.

Capacity data storage system 60Tb AoE version

It is given the next problem. Implement astorage system  which can allow 60Tb  data, which can be extensible,  fit in a rack and to be fault tolerant?

The solution consists of a series of blocks connected to each other. So:

  • One block consist in :
  1. Switch Gigabit (1U )
  2. Enclosure AOE ( 15 HDD SATA 1TB each ) (3U)
  3. Controler (1U)
  • 1 Rack 0f 48U which will consist of 5 blockuri + UPS

Hardware costs:


6 * Switch Gbic 24 porturi (480$) = 2880$
5 * Enclosure AOE (4000$) = 20000$
5 * Controller (1000$) = 5000$
75 * Harddisk SATA 1 Tb (400$) = 30000$

TOTAL 57880$

Software solution:

Each controller takes care of one enclosure AOE. Each enclosure will have hard drives in RAID 5. Thus on each enclosure it is obtain a capacity of 14 TB of data. Set of blocks can be arranged in RAID  (stripping) to obtain a total capacity of 70Tb. But any failure of controller compromises the entire system. (Single point of failure). Each controller is exporting the file system using vlbade and ‘controller of controllers’ performs RAID 5 level blocks.

For full redundancy blocks are organized in RAID 5 capacity (56 TB)

That means a cost of $ 1,000 / Tb redundant.

Note 1: Calculation was done in March 2007. Meanwhile the prices of harddisks 1TB has fallen.

Note 2: We have not included all the costs of implementation. And how the implementation is done, makes the difference between a successful solution or a bad one.