FreeBSD i386 から amd64 へ2007年06月02日 11時30分46秒

i386 から amd64 への移行を試している。CD 等を準備しなくても出来たら良いなと思ったが無理そうだ。ディアルブートの環境か、CD などから移行した方が簡単そうだ。

ディアルブートの環境でなくても、一時的に利用できるパーティションが一つ以上あれば、単体で i386 から amd64 に移行できるかも知れない。後で、実験したいと思う。

今回は、結局ディアルブートを利用した。ad3s2a から起動した環境で、amd64 用のバイナリを作る。


# make TARGET_ARCH=amd64 buildworld
# make TARGET_ARCH=amd64 buildkernel

i386 の環境から、そのままインストールしてみた。


# make installkernel TARGET_ARCH=amd64 KODIR=/boot/amd64 DESTDIR=/

クロスビルドだと、DESTIDR が設定されていないようだ。

何度か失敗した後に、結局もう一つの ad3s1a から i386 環境を起動して、ad3s2a の環境を /mnt/tmp 以下にマウントした後に


# make installworld TARGET_ARCH=amd64 DESTDIR=/mnt/tmp

で、インストールした。システムはそのまま起動したが、いくつかの ports から入れたアプリケーションは動かなかった。32-bit 互換は入っているが、恐らく今回試している 6.1 以前の古い 32-bit 互換のライブラリが無いからではないかと予想している。

i386 環境から直接 amd64 に移行できるかを幾つか試したが、以下の理由でまだ出来ていない。

  1. i386 で動いているまま make installworld TARGET_ARCH=amd64 DESTDIR=/ した。ライブラリをインストールしている途中に i386 版の物が無くなってしまうので、ldd が失敗する。
  2. 他にも、make installworld の後に、カーネルだけ、amd64 で起動しようとしてみたが、sh が i386 版で、amd64 の 32-bit 互換はまだ入っていなかったので、シングルユーザモードにも落とせなかった。
  3. 最後に、make install32 をやって、32-bit 互換をいれたが、結局ライブラリは amd64 からアクセスできない i386 型なので、/boot/amd64 からのブートに失敗した。

次回

コメント

コメントをどうぞ

※メールアドレスとURLの入力は必須ではありません。 入力されたメールアドレスは記事に反映されず、ブログの管理者のみが参照できます。

※なお、送られたコメントはブログの管理者が確認するまで公開されません。

名前:
メールアドレス:
URL:
コメント:

トラックバック

このエントリのトラックバックURL: http://uyota.asablo.jp/blog/2007/06/02/1550018/tb

※なお、送られたトラックバックはブログの管理者が確認するまで公開されません。