i386環境から再インストールをしないでamd64に移行させる作業をやってみました。なんとか実現できたものの、今のところは無理やり感が否めません。実際にやってみた感触を記録しておきます。 背景 Debianはメジャーリリース間のアップグレードが行えることを重要視しているディストリビューションであり、実際自分もbo(1.3)からwheezy(7.x)まで更新し続けているインスタンスを持っています。 しかしながら、当然そのような古くからのシステムはアーキテクチャがi386のままです。amd64が公式にサポートされたのはetch(4.0.x, 2007~)からです。途中でmultiarchという複数のアーキテクチャのパッケージを一つのシステムに導入する仕組みもできましたが、それはi386→amd64への移行に直接利用できるようなものではありません。 手法 i386→amd64化を試みた人はこれまでにもあり、いくつかはネット上の私的なドキュメントとして残されています。今回はDebian Wikiに書かれている方法をとってみました。 作業の流れ 大まかに実施する作業の流れを以下に示します。 amd64 kernelパッケージのインストール i386アーキテクチャでもlinux-image-*-amd64パッケージがあり、kernelだけ64bit化することはできる debootstrapで/chroot64 以下にamd64の最小環境を構築 あとで必要になるパッケージ群を追加で入れる(libc6-i386 file bzip2 openssh-client lftp) Live CD/USB等を使って起動し、/chroot64以下の実行ファイルを/にコピー /chroot64/etc/ld.so.cache も忘れずコピーする /chroo64/lib64は/lib64にコピーを行う Wikiではsymlinkを張る、と記述されているがコピーでないと正常に動作しなかった 動作するかどうかは実際にchroot /chroot64 /bin/sh 等を実行してみれば判断できる amd64 kernelでブートする この段階でパニックを起こした場合、/lib64等が適切に処理されておらずdll不足でinitが実行できなかった可能性が高い インストールされているパッケージをi386からamd64に入れ替える apt-get updateを実行 依存関係と戦いながらi386パッケージをamd64に置き換える インストールパッケージ数が多いほどここの作業は大変 何かあったら以下の手段を試す dpkg –remove –force-all [パッケージ名]:i386; apt-get install [パッケージ名] apt-get -f install cd /var/cache/apt/archives; dpkg -i –force-all [パッケージ名]*.deb… Continue reading Debian Jessie i386をamd64に無理やり移行させる