Debian amd64/i386 biarch
AMD Turion 64 を登載した HP Compaq nx6125 を有効活用すべく、 Debian sid で amd64/i386 の biarch 環境を作ってみた。 とはいっても 32bit と 64bit が混在するアグレッシブなユーザランドではなく、 基本的に カーネルは x86_64 でユーザランドは i386 とし、 amd64 ユーザランドは必要に応じて chroot で利用するというぬるい方針である。
i386 のほうをメインにしたのは Acrobat や Flash、XILINX といったところで i386 用アプリケーションが多いからだが、 Debian sarge で提供されている biarch カーネルパッケージ が どう作られているのか謎だったので調べてみたかったという理由もある。 要点は以下の通りである。
- make-kpkg を使用する。オプションに --arch amd64 をつければクロスビルドができる。
- GNU toolchain は i386 用の binutils と gcc-4.0 がそのまま使える。
ただし gcc -m64 といった適切なオプションを付加する必要がある。
make-kpkg によるクロスビルドでは
amd64-linux-gcc といった名前で toolchain を起動しようとするので (CROSS_COMPILE=amd64-linux-)、
そのような名前で適切なオプションと共にコマンドを起動するラッパースクリプトを用意しておく。
- amd64-linux-gcc (引数に -m32 がないときだけ -m64 をつけるというややこしいことをしている)
- amd64-linux-ld
- amd64-linux-nm
- amd64-linux-ar
- amd64-linux-objcopy
- amd64-linux-objdump
- make-kpkg が生成する deb のアーキテクチャは環境変数 DEB_HOST_ARCH で指定したものとなる (何も指定しないと amd64 用の deb ができてしまい、i386 ではインストールできなくなる)。 事前に eval `dpkg-architecture -s` すれば必要な環境変数がすべてセットできる。
以下の手順で linux-image-2.6.14.4-nx6125-amd64_0.1_i386.deb というカーネルパッケージができる。
% tar -xjvf linux-2.6.14.4.tar.bz2 % cd linux-2.6.14.4 % make ARCH=x86_64 menuconfig % eval `dpkg-architecture -s` % make-kpkg --arch amd64 --rootcmd fakeroot \ --append-to-version -nx6125-amd64 \ --revision 0.1 --initrd kernel-image
一方、カーネルモジュールパッケージに関してはまた別の注意が必要となる。
- CROSS_COMPILE 環境変数が渡されないので自分で指定する必要がある。
- DEB_HOST_ARCH 環境変数を amd64 に上書きしてしまうので モジュールの debian/rules スクリプトを書きかえる必要が出てくる。 たとえば ndiswrapper の場合は ndiswrapper-biarch.diff のような修正を行う。
以下の手順で ndiswrapper-modules-2.6.14.4-nx6125-amd64_1.5-1+0.1_i386.deb というカーネルモジュールパッケージができる。
% tar -xjvf /usr/src/ndiswrapper-source.tar.bz2 % patch < ndiswrapper-biarch.diff % MODULE_LOC=$PWD/modules \ MAKEFLAGS="CROSS_COMPILE=amd64-linux- V=1" \ make-kpkg --arch amd64 --rootcmd fakeroot \ --append-to-version -nx6125-amd64 \ --revision 0.1 modules-image
実は ndiswrapper については カーネルとユーザランドでアーキテクチャがヘテロな環境での利用は 重大な問題があることが後に判明するのだが、 それについては気の向いたときに書こう。
なお ATI の Xorg/XFree86 ドライバ fglrx に関しては、 ユーザランドのドライバモジュールしかない状態でも 2D 表示はできるということがわかった (カーネルモジュールがない場合は 3D アクセラレーションが使えなくなる)。 よって apt-get install fglrx-driver とすれば、いちおう fglrx ドライバで X が使える。 NVIDIA と違ってこれはかなりありがたい。
カテゴリ
Debianトラックバック(0)
このブログ記事を参照しているブログ一覧: Debian amd64/i386 biarch
このブログ記事に対するトラックバックURL: http://www.keshi.org/mt/mt-tb.cgi/27
コメントする