Solarisからx86の Linuxへの移植ガイド

32 または 64 ビット SPARC の Solaris から x86 の Linux へプロジェクトを移行

Solaris は UNIX® 系 OS の中でも特に Linux™ に近い OS と考えられていますが、移行に関しては、メモリ・マッピング、スレッディング、自然言語のサポートなどの領域で両者間に違いが生じる可能性があります (これらは数例にすぎません)。この移植ガイドでは、Linux/x86 への移行計画に関するアドバイスのほか、開発環境やアーキテクチャの違いについても説明します。

Ajay Sood (r1sood@in.ibm.com), Advisory Software Engineer, IBM Global Services, Bangalore, India

Ajay Soodは、9年以上IBMで働いており、DB2 DataLinksやTXSeries-CICSなどの製品開発チームに開発者として従事してきました。トランザクション処理やミドルウェア、UNIXプラットフォームでのシステム・プログラミングなどの領域を経験してきています。


developerWorks 貢献著者レベル

2005年 4月 29日

UNIX 系 OS の中でも、Solaris は Linux に最も近いと考えられています。このため、大きな Unix ベース・アプリケーションを Linux に移植する前には、オペレーティング・システム依存のコードを Solaris から取得するのが一般的です。それでも、アーキテクチャ、メモリ・マップ、スレッディングなどに依存する領域や、システム管理や自然言語のサポートなどいくつかの特定領域で違いが生じる可能性があります。

ここでは、これらの違いについて説明および比較しながら、32/64 ビットの SPARC アーキテクチャで動作する Solaris から x-86 アーキテクチャで動作する Linux へ移行する方法を説明します。Solaris に関する説明は、バージョン 8 以降に基づきます。Linux に関する説明は、x-86 プロセッサー対応サーバー (SUSE LINUX Enterprise Server 9、Red Hat Enterprise Linux AS V3 または V4) で使用可能な配布に焦点をあてています。

このドキュメントの内容は次のとおりです。

  • 移植計画
  • 開発環境 (コンパイラー、make ユーティリティーなど)
  • アーキテクチャまたはシステム依存の違い

移植計画

SPARC の Solaris から x86 の Linux に正しく移行するには、次の 6 つのステップを実行する必要があります。アプリケーションを別のオペレーティング・システムに移植した経験がある人にとっては、覚えのある手順だと思います

  1. 準備
  2. 環境および make ファイルの変更
  3. コンパイラーの修正
  4. テストおよびデバッグ
  5. パフォーマンスの調整
  6. パッケージ化および配布

ステップ 1. 準備

適切な準備を行うために大事なことは、次のような領域における違いを理解することです。

  • システム呼び出し
  • ファイル・システムのサポート
  • マシン依存のコード
  • スレッディング
  • メモリ・マップ
  • システム呼び出し
  • エンディアン

アプリケーションの移植時には、関連するサードパーティのパッケージがターゲット・プラットフォーム上で使用できることを必ず確認してください。32 ビット・アプリケーションの場合は、64 ビット・バージョンに移行する必要があるかどうかを検討するとともに、ターゲット・プラットフォームで使用するコンパイラーを決定してください。x86 ベースの Linux プラットフォームでは、gcc がコンパイラーとして使用されます。

ステップ 2. 環境および make ファイルの変更

このステップでは、環境変数に関する決定、make ファイルへの変更、環境に対するその他必要な変更など、開発環境の設定を行います。この段階が終了すると、アプリケーション構築の開始準備が整います。

次のステップに移る準備が整うまで、必要に応じてこのステップを数回繰り返してください。

ステップ 3. コンパイルおよびビルド

この段階で、コンパイラー・エラーやリンカー・エラーなどを修正します。場合によっては、エラーのないビルドが生成されるまでに、このステップを繰り返し実行する必要があります。

ステップ 4. テストおよびデバッグ

アプリケーションが正しく構築されたら、ランタイム・エラーがないかどうかをテストします。テスト時に注意すべき領域としては、クライアント/サーバー間の通信、データ交換形式、データコードの変換 (シングル・バイトコード・ページからマルチ・バイトコード・ページへの変換など)、永続ストレージなどが挙げられます。

ステップ 5. パフォーマンスの調整

この時点で、移植されたコードがターゲット・プラットフォーム上で稼働するようになります。パフォーマンスを監視し、移植されたコードが期待どおりに動作することを確認してください。動作に問題がある場合は、パフォーマンスの調整が必要です。

パフォーマンス分析ツールとしては、Performance Inspector と OProfile が便利です。Performance Inspector には、Linux 上のアプリケーションにおけるパフォーマンスの問題を特定するためのツール・セットが用意されています。カーネル 2.6 以降からは、コードのプロファイリング・ツールとして OProfile が推奨されています。OProfile は RHEL4 にも使用可能です (これらのツールの詳細は、参考文献を参照してください)。

ステップ 6. パッケージ化および配布

完成したコードを他のユーザーにも配布する必要がある場合は、パッケージ化の方法を決定します。

Linux では、tarball、自己インストール型のシェル・スクリプト、RPM など、アプリケーションをパッケージ化する方法がいくつかあります。RPM は Linux で広く利用されているパッケージ管理システムです。Solaris では、パッケージ・マネージャーとして pkgadmin を使用しています。

Solaris の pkgadmin で使用されるパッケージ仕様のテンプレート・ファイル形式は、RPM で使用される仕様ファイルとは異なり、パッケージ情報をテンプレート・ファイルから仕様ファイルへ変換する際にかなり手間がかかります。InstallShield for Multiplatforms (ISMP) などのソフトウェア・パッケージを使用すると、両方のオペレーティング・システム間で共通したパッケージ・ソフトウェアを提供でき、移植の手間も軽減されます。ISMP を使用すると、アプリケーション開発者はプラットフォーム間で共通の仕様ファイルを使用できるようになります。


開発環境

Solaris と Linux の開発環境では、次のような違いがあります。

  • Make ファイル
  • コンパイラーおよびリンカー・オプション
  • 32 ビットから 64 ビットへ移行する際の考慮事項

GNU Make と Solaris Make の違い

ソース・プラットフォームで Solaris Make を使用している場合、Linux で GNU Make を使用するには make ファイルを修正する必要があります。両者の違いの詳細については、「AIX 5L Porting Guide」の第 6 章を参照してください (リンクについては、参考文献を参照してください)。

コンパイラーおよびリンカー・オプション

前述のとおり、x86 の Linux に使用できるコンパイラーは GNU GCC です。SUN Studio C/C++ コンパイラーで広く使われているコンパイラー・オプションと、それに相当する GNU GCC 用のオプションを以下にリストします。

表 1. Solaris と Linux のコンパイラー・オプション対応表
SUN StudioGNU GCC説明
-#-vコンパイルの進行状況に関する情報を報告するようコンパイラーに指示します。
-###-###何も呼び出さずにコンパイルをトレースします。
-Bstatic-staticlibx.a という名前のファイルのみを検索するようリンク・エディターに指示します。
-Bdynamic(Default)libx.so という名前のファイルを検索した後、lx オプションが指定されている場合は libx.a を検索するようリンク・エディターに指示します。
-G-shared動的にリンクされる実行可能ファイルではなく、共有オブジェクトを生成します。
-xmemalign-malign-natural,最大想定メモリ・アラインメントと、不整データ・アクセスの動作を指定します。
-xO1, -xO2, -xO3, -xO4, -xO5-O, -O2, -O3コンパイル時に選択したレベルでコードを最適化します (O2 を推奨)。
-KPIC-fPIC共有ライブラリで使用する、位置に依存しないコードを生成します (大型モデル)。
-Kpic-fpic共有ライブラリで使用する、位置に依存しないコードを生成します (小型モデル)。
-mt-pthreadマルチスレッド・コード用のコンパイルとリンクを行います。
-R dirlist-Wl, -rpath, dirlist動的なライブラリ検索パスを実行可能ファイルに組み込みます。
-xarch-mcpu, -marchターゲットのアーキテクチャ命令セットを指定します。

表 2 に、各種 Linux 系 OS 対応 C コンパイラーのレベルの違いを説明します。

表 2. C コンパイラーのレベルの違い
オペレーティング・システムカーネル・レベルGCC レベルGlibc レベルGnu binutils レベルJDK レベル
SLES92.63.3.32.3.32.15.901.4.2*
RHEL32.43.2.32.3.22.14.901.4.2
RHEL42.63.4.32.3.4-22.15.92.0.2-10.EL41.4.2*
Solaris 10Solaris 103.3.22.2.31.4.2

注: *LinuxThreads は、x86 の Linux に対応する 64 ビット・バージョンの IBM JDK 1.4.2 ではサポートされていません。Java の場合は、NPTL 64 ビット・スレッド・ライブラリしかサポートされていません。

また、SLES9 で構築した C++ アプリケーションを RHEL4 上で展開する場合は、compat-libstdc++-33-3.2.3-47.3.i386.rpm としてパッケージ化された compat ライブラリを使用する必要があります。SLES9 と RHEL4 では ABI 互換性のレベルが異なるため、この compat が必要になります。SLES9 は LSB 1.3 標準に準拠していますが、RHEL4 は LSB 2.0 標準に準拠しています。

32 ビットから 64 ビットへ移行する際の考慮事項

アプリケーションを 32 ビット環境から 64 ビット環境へ移行する方法としては、次の 2 つが考えられます。

  • アプリケーションを 64 ビット対応にする。
  • ターゲット・プラットフォームの 64 ビット機能を利用する。

まず、アプリケーションを 64 ビット環境に対応させてから、ターゲット・プラットフォームの 64 ビット機能を利用してみます。

32 ビット・アプリケーションは通常、64 ビットのターゲット上で問題なく動作しますが、関連するサードパーティ製品によっては、64 ビット・モードで動作を開始するにもかかわらず 、32 ビット・バージョンのライブラリ・オブジェクトは出荷されない場合があるため、アプリケーションを 64 ビット環境対応にすることが重要です。

64 ビット環境に移行する際には、その製品の 32 ビット・バージョンのサポートを継続すべきかどうかを決定する必要があります。両方のバージョンをサポートする必要がある場合は、パッケージ化とテストの所要時間にその分の余裕を見ておいてください。

64 ビット機能の利用は、64 ビット対応にした後で行います。演習を始める前に、64 ビット機能を利用する利点について、慎重に検討してください。

32 ビットから 64 ビット環境へのアプリケーション移行に関するトピックは、他のドキュメント (参考文献に示す「AIX 5L Porting Guide」の第 3 章など) で広く扱われています。


アーキテクチャおよびシステム固有の違い

ここで、Solaris と x86 の Linux におけるアーキテクチャおよびシステム固有の違いを見てみましょう。主な違いとしては、基本データ・タイプ、カーネル・パラメータの設定、アーキテクチャ依存の違い、エンディアン、システム呼び出し、シグナル、データ・タイプ、スレッド・ライブラリなどがあります。

参考文献には、大規模な移植演習を行う際の考慮事項を示した実用チェックリストが用意されています。

基本データ・タイプおよびアラインメント

システム上で使用できるデータ・タイプには、基本データ・タイプと派生データ・タイプの 2 種類があります。

基本データ・タイプとは、C 言語や C++ 言語の仕様で規定されているすべてのデータ・タイプを言います。表 3 は、x86 の Linux と SPARC の Solaris の基本データ・タイプを比較したものです。

表 3. Linux と Solaris の基本データ・タイプの比較
Linux (x86)Solaris (SPARC)
基本タイプILP32
(サイズ)
(バイト単位)
LP64
(IA64
ベース・システムの場合)
(サイズ)
(バイト単位)
ILP32
(サイズ)
(バイト単位)
LP64
(サイズ)
(バイト単位)
char1111
short2222
Int4444
float4444
long4848
pointer4848
long long8888
double8888
long double12161616

異なるプラットフォーム間や 32 ビット・モードと 64 ビット・モード間でアプリケーションを移植する際には、パフォーマンスの低下やデータの破損を避けるために、各環境で使用できるアラインメント設定の違いを考慮する必要があります。

表 4 に、x86 の Linux のアラインメント値を示します。

表 4. x86 の Linux のアラインメント値 (バイト単位)
データ・タイプLinux IA-32
(ILP32)
Linux IA-64
(LP64)
Bool11
Char11
wchar_t44
int44
Short22
long48
long long88
Float44
Double48
long double4*16

注: アラインメントは、使用しているコンパイラー・スイッチによって異なります。これらのスイッチは、"long double" タイプのサイズを制御します。i386 アプリケーション・バイナリー・インターフェースはサイズを 96 ビットに指定するため、32 ビット・モードでは-m96bit-long-double がデフォルトとなります。最近のアーキテクチャ (Pentium 以降) では、"long double" を 8 または 16 バイト境界に合わせてアラインメントすることが主流になっています。ABI 準拠の配列または構造では、これは不可能です。したがって、-m128bit-long-double を指定すると、"long double" を追加の 32 ビットのゼロで埋めることで、16 バイト境界に合わせて "long double" がアラインメントされます。

システム派生データ・タイプ

派生データ・タイプとは、既存の基本タイプまたは他の派生タイプの派生物または構造体を言います。システム派生データ・タイプのバイト・サイズは、採用するデータ・モデル (32 ビットまたは 64 ビット) やハードウェア・プラットフォームによって異なる場合があります。

表 5 に、Solaris と異なる Linux の派生データ・タイプをいくつか示します。

表 5. Solaris と Linux の派生データ・タイプ
OSgid_tmode_tpid_tuid_twint_t
Solaris ILP32 llongunsigned longlonglonglong
Solaris LP64intunsigned intintintint
Linux ILP32unsigned intunsigned intintunsigned intunsigned int
Linux LP64unsigned intunsigned intintunsigned intunsigned int

マシン依存コードの例

次のような場合には、マシン依存コードが必要となります。

  • スタック・ポインターの取得
  • アトミック・ロック

Linux-x86 では、次のようにしてスタック・ポインターを取得できます。

リスト 1. Linux-x86 でのスタック・ポインターの取得
int get_stack(void **StackPtr)
{
  *StackPtr = 0;
  __asm__ __volatile__ ("movl %%esp, %0": "=m" (StackPtr) );
 return(0);
}

Solaris では、次のサンプル・コードを使用してスタック・ポインターを取得できます。

リスト 2. Solaris でのスタック・ポインターの取得
  .section       ".text"
        .align  8
        .global my_stack
        .type   my_stack,2
my_stack:
        ! Save stack pointer through 1st parameter
        st      %sp,[%o0]
        ! Compute size of frame in return result reg
        retl
        sub     %fp,%sp,%o0
        .size  my_stack,(.-my_stack)

Linux x86 では、比較およびスワップ操作を使用して、アトミック・ロックを実装できます。次に、Linux x86 で比較およびスワップを行うための、サンプルの実装コードを示します。

リスト 3. Linux x86 での比較およびスワップ
bbool_t My_CompareAndSwap(IN int *ptr, IN int old, IN int new)
{
        unsigned char ret;
        /* Note that sete sets a 'byte' not the word */
        __asm__ __volatile__ (
                " lock\n"
                " cmpxchgl %2,%1\n"
                " sete %0\n"
                : "=q" (ret), "=m" (*ptr)
                : "r" (new), "m" (*ptr), "a" (old)
                : "memory");
        return ret;

Solaris SPARC では、次のようにアトミック・ロック操作を実装できます。

リスト 4. Solaris でのアトミック・ロック
        .section       ".text"
        .align  8
        .global        My_Ldstub
        .type          My_Ldstub,2
My_Ldstub:
        ldstub         [%o0],%o0         ! Atomic load + set
        sll            %o0,24,%o0        ! Zero fill ...
        retl                             ! ... result register
        srl            %o0,24,%o0        ! ... and retrn
        .size          My_Ldstub,(.-My_Ldstub)

バイト順序 (エンディアン)

SPARC はビッグエンディアンであるのに対し x86 はリトルエンディアンであるため、エンディアンの問題を考慮する必要があります。

異機種ネットワークを介したクライアント通信、ディスク上の永続データ・ストレージ、製品トレース (SPARC で生成されたトレースが x86 で正しくフォーマットされることが重要)、およびその他の関連領域に関するアプリケーション部分を移植する際には、エンディアンの問題が重要となります。IA-64 Linux カーネルはデフォルトによりリトルエンディアンを使用しますが、ビッグエンディアンのバイト順序を使用することも可能です。

システム呼び出し

別の名前または署名を使用する (つまり Linux では使用できない) Solaris システム呼び出しは、「Guide to porting from Solaris to Linux on POWER」にリストされています。RHEL4 で使用可能になったシステム呼び出しは次のとおりです。

  • Waitid
  • Putmsg
  • putpmsg
  • Getmsg
  • getpmsg

Curses ライブラリ

curses ライブラリ用の Linux ライブラリ関数は、Solaris よりも AIX に近いものです。たとえば、Linux ではaddwch などの関数がサポートされておらず、Solaris ではmvchgat などの一部の関数呼び出しを使用できません。curses 関連のコードを Solaris から Linux へ移植する際には、ほとんどのコードを記述し直さなければならない場合があります。

ターミナル IO

Solaris の termio 構造は Linux と異なります。Linux の termio 構造には、入力速度と出力速度を記述できる追加フィールドがいくつかあります。

Linux の termio 構造の定義は /usr/include/bits/termios.h にあります。Solaris の定義は /usr/include/sys/termios.h にあります。

IOCTL

ioctl の実行に使用できるオプションは、Solaris と Linux で異なります。たとえば、リソースの使用率を取得するには、オプション PIOCUSAGE を ioctl システム呼び出しに渡します。

Return_code = ioctl("/proc/<pid>", PIOCUSAGE, &buff) ;

Linux では、/proc/<pid> ディレクトリから関連ファイルを読み取って、関連する詳細情報を取得する必要があり、オプションPIOCUSAGE は使用できません。SolarisでもLinuxでも、pid は、コマンドを実行している現行プロセスのプロセス id を示します。

また、プロセス・ヒープ情報を取得する場合の例もあります。Solaris でプロセス・ヒープ情報を取得するには、次のコードを使用します。

Return_code = Ioctl("/proc/<pid>",PIOCPSINFO,&psinfo)

このコード・ビットのpsinfostruct prpsinfo タイプの情報を示し、Prpsinfo.pr_size はプロセス・ヒープのサイズを示します。

Linux では、使用中のページの数を /proc/<pid>/mem および /proc/<pid>/stat から取得できます。ページ・サイズは、システム呼び出しgetpagesize によって取得できます。ページ数とページ・サイズの 2 つの値を乗算すると、現在のヒープ・サイズが求められます。

Getopt

Linux でのgetopt 呼び出しは、環境変数POSIXLY_CORRECT が設定されている場合に限り POSIX 標準に準拠します。

環境変数POSIXLY_CORRECT が設定されている場合は、オプション引数ではない最初の非オプション・パラメーター ("-" で始まらないパラメーター) が検出された時点で、解析が停止します。残りのパラメーターはすべて、非オプション・パラメーターとして解釈されます。

シェル・スクリプトの呼び出し時の違い

シェル・スクリプトがsu コマンドを使用する場合は、子シェルが生成されます。一方Solaris の場合は、su コマンドを使用しても新しいシェルは生成されません。

Linux 上でsu - root コマンドを発行した場合、ps コマンドの出力内容は次のようになります。

30931 pts/4    00:00:00 su
31004 pts/4    00:00:00 ksh

このコードの 30931 は、プロセス 31004 の親プロセスを示します。状況によっては、この関係の影響を受ける一部のスクリプトを修正する必要があります。

再起動時のデバイス処理

RHEL4 以降から、Linux ではホットプラグ・サブシステム udev の概念を採用しています。udev では、構成可能な動的デバイス命名がサポートされています。デバイス構成は、毎回の再起動時に動的に作成されます。

たとえば、新しいディレクトリ /dev/dsk を作成しても、システムがその存在を認識できなければ、再起動時にこのディレクトリが消失してしまいます。/dev/dsk ディレクトリの消失を避けるには、ディレクトリ /etc/udev/devices/dsk を作成します。こうすると、システムは再起動時にこの情報を保持できるため、毎回の再起動後も /dev/dsk を使用できるようになります。

カーネル・パラメーター

Solaris では、ファイル /etc/system でカーネル・パラメーターを設定できます。Linux では、sysctl システム呼び出しを使用してカーネル・パラメーターを変更できます。変更可能なパラメーターは、/proc/sys/kernel にあります。sysctl が機能するためには、procfs のサポートが必要です。

シグナル

シグナルの違いについては、「Technical guide for porting applications from Solaris to Linux」で詳しく説明されています。その他の顕著な違いとして、Solaris のシグナル数が 38 であるのに対し Linux のシグナル数が 31 であることや、sigaction 構造が違うことなどが挙げられます。たとえば、Linux のsigaction 構造は次のようになります。

リスト 5. Linux の sigaction 構造
struct sigaction
  {
    /* Signal handler.  */
#ifdef __USE_POSIX199309
    union
      {
        /* Used if SA_SIGINFO is not set.  */
        __sighandler_t sa_handler;
        /* Used if SA_SIGINFO is set.  */
        void (*sa_sigaction) (int, siginfo_t *, void *);
      }
    __sigaction_handler;
# define sa_handler     __sigaction_handler.sa_handler
# define sa_sigaction   __sigaction_handler.sa_sigaction

#else
    __sighandler_t sa_handler;
#endif
    /* Additional set of signals to be blocked.  */
    __sigset_t sa_mask;
    /* Special flags.  */
    int sa_flags;
    /* Restore handler.  */
    void (*sa_restorer) (void);
  };

Solaris の sigaction 構造は次のようになります。

リスト 6. Solaris の sigaction 構造
struct sigaction {
        int sa_flags;
        union {
#ifdef  __cplusplus
                void (*_handler)(int);
#else
                void (*_handler)();
#endif
#if defined(__EXTENSIONS__) || ((__STDC__ - 0 == 0) && \
        !defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE)) || \
        (_POSIX_C_SOURCE > 2) || defined(_XPG4_2)
                void (*_sigaction)(int, siginfo_t *, void *);
#endif
        }       _funcptr;
        sigset_t sa_mask;
#ifndef _LP64
        int sa_resv[2];
#endif
};

siginfo_t 構造が異なるのは、サポートされるシグナルの数が違うためです。Linux の siginfo_t 構造は /usr/include/bits/signal.hにあります。Solaris の siginfo_t 構造は /usr/include/sys/siginfo.h にあります。

スレッディングのサポートおよび IPC

POWER の Linux および Solaris からの移植に関するドキュメントでは、Solaris スレッドと Linux 上の POSIX スレッド (NPTL ライブラリより提供) の違いについて説明されています。

筆者の経験では、アプリケーションがすでに Solaris 上で POSIX スレッドを使用していると、NPTL ベースのスレッディングを使用した Linux への移行が比較的簡単になります。Linux では、プロセス共有 mutex などの機能も使用できるため、pthread mutex ロックや条件変数を使用する IPC メカニズム関連の Solaris コードを使用することができます。

自然言語のサポート

Solaris における自然言語サポートに関するコード・ページは Linux と異なる (つまり単にこれらの名前が異なる) 場合があります。ただし、Solaris のロケールやコード・ページのほとんどは、Linux にもそれに相当するロケールやコード・ページがあります。


まとめ

ほとんどの場合、Solaris から x86 の Linux へ移植する作業には、再コンパイルやコンパイラー/リンカー・スイッチに対する若干の変更を伴います。また、ロック、メモリ・マップ、スレッディングなどの領域に関するプラットフォーム固有の変更も必要になる場合があります。移植にかかる時間を短縮するためにも、これらの違いを理解したうえで移植計画を立てることをお勧めします。

参考文献

  • XL C/C++ V7.0 compilerを入手してください。
  • GNU binutilsはXL C/C++コンパイラー・セットとGCCの両方で、オブジェクトを生成するために使われています。その詳細は、GNU Binutilsのサイトで見ることができます。
  • IBM Developer Kit for Linux, Java Technology Edition version 1.4.2を入手してください。
  • IBM RedbookAIX 5L Porting Guideは、他のUNIXベース・プラットフォームからAIX 5Lオペレーティング・システムにアプリケーションを移植する際に遭遇しがちな問題を詳述しています。
  • Multithreaded Programming Guideは、POSIXやSolarisのスレッドAPI、同期オブジェクトを持つプログラミング、マルチスレッド・プログラムのコンパイルなどを網羅しています。
  • Migrating to Linux kernel 2.6は、既存のアプリケーションを2.6カーネルに移植する方法や、Native POSIX Threading Library (NPTL) に関する話題を議論しています。
  • Performance Inspectorをダウンロードして、このツール・スイートに関する情報を入手してください。
  • OProfileのWebサイトを見てください。
  • RPM.orgでは、RPMに関して、さらに詳しい情報が得られます。
  • developerWorksのMigration stationは、ツールや技術記事、オンライン・チュートリアル、技術教室、フォーラム、Webキャスト、カスタム化サービスその他、様々なハードウェア・プラットフォーム用にLinuxを迅速に移行するための資料を見つける場所です。
  • Technical guide for porting applications from Solaris to Linux, version 1.0」(developerWorks, 2002年)は、SolarisとLinuxとの違い、またSolarisアプリケーションをLinuxに移植するための詳細を説明しています。
  • Solaris to Linux Porting Guideは、7.xシリーズのRed Hat LinuxディストリビューションからSolarisへの移行を議論しています。
  • Porting enterprise apps from UNIX to Linux」(developerWorks, 2005年)は、大規模な移植を行う際に考慮すべきことを議論しています。
  • Guide to porting from Solaris to Linux on POWER」(developerWorks, 2005年)は、この記事を補完するものとして、POWERベースのLinuxに移植するための指針や資料を提供しています。
  • Smashing performance with OProfile」(developerWorks, 2003年)は、ハードウェアとソフトウェアの間に予期せぬ相互動作があった場合にも、このツールでパフォーマンス分析ができることを説明しています。
  • developerWorksのLinuxゾーンには、Linux開発者のための資料が豊富に用意されています。
  • 皆さんの次期Linux開発プロジェクトを、IBM trial softwareを使って革新してください。developerWorksから直接ダウンロードすることができます。

コメント

developerWorks: サイン・イン

必須フィールドは(*)で示されます。


IBM ID が必要ですか?
IBM IDをお忘れですか?


パスワードをお忘れですか?
パスワードの変更

「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 ご使用条件を読む

 


お客様が developerWorks に初めてサインインすると、お客様のプロフィールが作成されます。会社名を非表示とする選択を行わない限り、プロフィール内の情報(名前、国/地域や会社名)は公開され、投稿するコンテンツと一緒に表示されますが、いつでもこれらの情報を更新できます。

送信されたすべての情報は安全です。

ディスプレイ・ネームを選択してください



developerWorks に初めてサインインするとプロフィールが作成されますので、その際にディスプレイ・ネームを選択する必要があります。ディスプレイ・ネームは、お客様が developerWorks に投稿するコンテンツと一緒に表示されます。

ディスプレイ・ネームは、3文字から31文字の範囲で指定し、かつ developerWorks コミュニティーでユニークである必要があります。また、プライバシー上の理由でお客様の電子メール・アドレスは使用しないでください。

必須フィールドは(*)で示されます。

3文字から31文字の範囲で指定し

「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 ご使用条件を読む

 


送信されたすべての情報は安全です。


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=60
Zone=Linux
ArticleID=231397
ArticleTitle=Solarisからx86の Linuxへの移植ガイド
publish-date=04292005