It's drill-down time. After reading my recent series on Unix-to-Linux migrations, IT pros asked SearchEnterpriseLinux.com...
for some nitty-gritty information on Solaris-to-Linux issues. So, this series' focus is strictly on Solaris and what's involved in Solaris-Linux porting.
Arguably, most of the Unix-to-Linux ports today are coming from Solaris environments, which is one reason for the strong demand for the information. Though Solaris is of course a Unix, there are certainly many Solaris-specific issues that pose problems for anyone doing a port to Linux. Let's attack those issues by starting with the single most important part of the port: your technical assessment.
For you to end up in the right place when porting, you need to know from whence you came. So, you have to document everything you have on your system that could affect your current Solaris environment and which may have to be ported. This includes the compilers you are using, the language you use to write the application, your database engine and any additional utilities or programs that must run on the Linux environment to be complete.
Do not cut corners on the assessment. Spend as much time as you need, and do it right! If you don't, six months later you could be working 24x7 on rewriting some custom-made query that is critical to your application and prevents anything from working.
The next big step is figuring out which Linux distribution you'll be using, whether it's Red-Hat, SuSE or one of the many other variants. When choosing your distro, ask yourself these questions:
- Are you one of those people that like the support of a big company, or do you prefer to rewrite kernels in your spare time? If you choose the first option, using Red Hat or SuSE will put more resources at your disposal.
- Which Linux distributor (or distribution project group) has the best relationship with the application that you are looking to port? For example, there is a ton of information on successful Oracle/Red Hat Linux installations. Ask your application vendor what Linux variants they have tested.
- While the 2.6 Linux kernel may be the greatest thing since sliced bread, do you want your company to be the first in your type of industry to have ported your application to this new kernel? Maybe you do, but maybe not! Don't forget to ask your Linux distributor and application vendors about their support of the Linux kernel versions.
The programmers doing the work must also understand that while Solaris is Unix, and Linux is Unix-like, Linux is different. The tools used in either environment will be different. You probably will also be using different compilers and programming interfaces. For example, both Solaris and Linux environments have standards regulated by POSIX, but there are still differences. Also, you probably have been used to working with the SPARCworks compilers from SunSoft, but they are not available on Linux. Linux folk mostly use GNU GCC. Don't be afraid that you'll have to use inferior tools on Linux: I have only good things to say about the quality of Linux developers. Just be prepared to learn about a whole new world of tools.
There are many ways to do the actual application port. One interesting way is actually doing a reverse port first. This method involves putting the GNU GCC compiler on Solaris first, getting the apps compiled and working first on Solaris. Doing this will make it that much easier to port to Linux during subsequent stages of the implementation and might help you nip some issues in the bud earlier, rather than later.
GNU compilers for Solaris have been around for quite some time, and I actually like the reverse-port approach. The only issue here is that the programmers need to really start getting a feel for Linux, and the sooner they start developing on Linux and understanding that platform, the better.
The next part in this series will focus more on the different porting methods available to you, as well as the languages, compilers and the tools that you'll use in a Solaris-to-Linux porting project.
>> Click here to go on to part two.