32ビットのインストールを64ビットに切り替えるには?

私は64ビットのハードウェアで32ビットのUbuntuをインストールしています。multi-archが実装された]1ので、OSを再インストールすることなく64ビットに切り替えたいと思っています。

これは、仕様で扱われているユーザーストーリーの1つです:

Shawnは、32ビット版のUbuntuを使用してシステムをインストールしましたが、ハードウェアが64ビットであるため、切り替えたいと考えています。彼はdpkgとaptのamd64バージョンを手動でインストールし、i386バージョンを置き換えて、デフォルトとして使用されるアーキテクチャを変更します; それから彼はamd64のubuntu-minimalパッケージをインストールします; それから彼はamd64のubuntu-desktopパッケージをインストールします。時間の経過とともに、残りのi386パッケージはアップグレード時に自動的に置き換えられます

しかし、その指示に従おうとしても、64ビット版のdpkgもaptも見つからない。

このユーザー・ストーリーは、最終的な仕様では別の方法で実装されたのでしょうか、それとも何か違うことをする必要があるのでしょうか?

要するに、32ビットのインストールを64ビットに切り替えるにはどうすればいいのでしょうか?

質問へのコメント (1)
ソリューション

このようなアプローチは非常に複雑で、すべてのパッケージが i386 バージョンの代わりに amd64 バージョンになる可能性は低いでしょう。実際にアップグレードを受けるパッケージだけがアーキテ クチャを変更されるでしょうし、アップグレードされない他のパッケ ージが i386 アーキテクチャであることに依存していない場合 に限られるでしょう。Ubuntuリリースのサポートサイクル全体を通して、アップデートを 全く 受け取らないパッケージもあるので、このようなテクニックを使っても、完全に amd64 なシステムにはならないでしょう。さらに、このような手法には公式なサポートがありません。 代わりに、既存のUbuntuシステムを新しい64ビットインストールに置き換えることをお勧めします。 しかし、このテクニックを試したい場合は、dpkgapt 用の .deb ファイルを 手動で ダウンロードする必要があります。Launchpad の Ubuntu の dpkgUbuntu の apt ページで見つけることができます。"The Oneiric Ocelot" の下にある、リリース、セキュリティ、および/またはアップデートとマークされた最新バージョンを展開してください (ただし、提案版および/またはバックポートとマークされたバージョンだけは、もしあったとしても、おそらく必要ありません)。次に、amd64とマークされた .deb ファイルをダウンロードする。具体的には、以下のファイルが必要になる:dpkg` 用のこのファイル (および、それらのパッケージがインストールされていれば、リストにある他のファイルも) と、apt 用の このファイルこのファイルこのファイルこのファイルこのファイル です。 これらのファイルで何かをする前に、インストールしたUbuntuシステムの重要なドキュメントや、その他の重要なファイル(音楽、電子書籍、ビデオなど)のバックアップを必ず取ってください。 これらのパッケージをインストールするには、何も入っていないフォルダ(フォルダ名は debsDownloads ディレクトリ内にあるとします)に入れ、次のコマンドを実行します:

sudo dpkg -Ri ~/Downloads/debs

もちろん、いったんインストールしても、実行ファイルは64ビットであり、32ビットのUbuntuシステムは32ビットカーネル(32ビットの実行ファイルしか実行できない)を実行しているため、実際には実行されません。実際、実行不可能な64ビット実行可能ファイルを呼び出すインストール後のスクリプトがあるため、インストールが完了しないことさえあります。 64ビットカーネルを32ビットシステムにインストールする方法はいろいろありますが、どれも非常に複雑なので、代わりに64ビットのOneiricライブCD(これ自体が64ビットカーネルを実行する)から起動して、インストールしたUbuntuシステムにchrootし、最近インストールした64ビットのaptdpkgを使って64ビットカーネルをインストールすることをお勧めします。 以下はその具体的な手順ですが、私がうまくいくと言っているわけではありません。私はこれを試していません。(ライブCDからインストールしたUbuntuシステムにchrootして、パッケージ管理やその他の操作を行ったことはありますが、ここで提案されているクロスアーキテクチャの操作は試していません) 1.インストールしたUbuntuシステムで、ターミナルウィンドウを開き(Ctrl+Alt+T)、mount | grep ' on / ' を実行します(ターミナルに貼り付けてエンターキーを押します)。すると、/dev/sda2 on / type ext4 (rw,errors=remount-ro,commit=0) のように表示されるはずです。気になるのはonの前のデバイス名(この例では/dev/sda2)です。覚えておくか、メモしておくこと。 2.ステップ 1 で / パーティションのデバイス名がわかりました。もし/bootパーティションが別にあるなら、そのデバイス名も知っておく必要があります。その場合は、mount | grep ' on /boot ' を実行してください。すると「/dev/sda1 on /boot type ext2 (rw)」のように表示されます。これも覚えておくかメモしておく。 3.3.Oneiricのamd64(つまり64ビット)ライブCDからブートし、"Ubuntuをインストールする"ではなく"Ubuntuを試す"を選択します。 4.ウェブブラウザに入り、インターネット接続が完全に機能していることを確認する。そうでない場合は設定する。 5.ターミナルウィンドウを開き、sudo mount /dev/sda2 /mntを実行する(/dev/sda2は、ステップ1で取得したデバイス名で置き換えてください(異なる場合))。 6.インストールしたシステムに独立した/bootパーティションがある場合は、sudo mount /dev/sda1 /mnt/bootを実行します (/dev/sda1をステップ 2 で取得したデバイス名で置き換えます。異なる場合)。 7.インストールしたシステムに chroot するために、以下のコマンドを実行します: sudo mount --bind /dev /mnt/dev sudo chroot /mnt mount -t proc none /proc mount -t sysfs none /sys mount -t devpts none /dev/pts 8.ping -c 4 launchpad.net を実行して、インターネット接続が chroot 内から完全に機能するかどうかを確認する。以下のようになることを期待する: PING launchpad.net (91.189.89.223) 56(84) バイトのデータ。 64バイト from launchpad-net.banana.canonical.com (91.189.89.223): icmp_req=1 ttl=41 time=141 ms 64 bytes from launchpad-net.banana.canonical.com (91.189.89.223): icmp_req=2 ttl=41 time=143 ms launchpad-net.banana.canonical.com (91.189.89.223) から 64 bytes: icmp_req=3 ttl=41 time=142 ms 64 bytes from launchpad-net.banana.canonical.com (91.189.89.223): icmp_req=4 ttl=41 time=140 ms

    --- launchpad.netのping統計---。
    送信4パケット、受信4パケット、パケットロス0%、時間3003ms

9.パケットを送受信できなかった場合は、chrootでインターネット接続をセットアップする必要がある。そのためには、以下のコマンドを実行してください(chrootを出るには、ライブCDシステムから関連する設定ファイルをchrootにコピーし、再度chrootに入ります): sudo cp /mnt/etc/resolv.conf /mnt/etc/resolv.conf.old sudo cp /mnt/etc/hosts /mnt/etc/hosts.old sudo cp /etc/resolv.conf /mnt/etc/resolv.conf sudo cp /etc/hosts /mnt/etc/hosts 一般的には、エラーが発生したらこのプロセスを止めるべきだが、これら4つのコマンドのうち、1番目と2番目のコマンドが失敗しても心配する必要はない。 chrootを戻して、もう一度やってみよう: sudo chroot /mnt ping -c 4 launchpad.net 10.以下のコマンドを実行して、chroot環境を完全に使える状態にする: export HOME=/root export LC_ALL=C 11.11. 64ビット版の dpkgapt.deb ファイルをインストールしていなけれ ば、今すぐインストールしてください。インストールしたが設定エラーがあった場合は、 dpkg --configure -a を実行して修正してください。(うまくいけばうまくいくかもしれませんが...インストールしたシス テムで起動している間に 64 ビット版の dpkg をインストールすると、 dpkg が使用できない状態になってしまうかもしれません)。 12.64 ビット版の dpkgapt をインストールし、それらが自動的に 64 ビッ トパッケージをインストールすると仮定すると、32 ビットカーネルをすべて削除し、 64 ビットカーネルをインストールすることができます。32 ビットカーネルを削除するには、dpkg -l | grep linux- を実行してください。linux-で始まるインストール済みパッケージの一覧が表示されます。具体的には、linux-genericlinux-imagelinux-serverlinux-headersで始まるパッケージが対象となる。これらのファイルを削除するには、apt-get purge ...(...はスペースで区切られた削除するパッケージのリストに置き換えてください)。 13.13. 削除したパッケージを再インストールしてください。(実際には、例えばlinux-image-3.0.0-13-genericのように、パッケージ名にバージョン番号が含まれているパッケージについては、最新のバージョンのパッケージ名のみをインストールすればよい)。この場合、apt-get install ...をインストールするパッケージのスペース区切りのリストに置き換えてください。 14.14.ブートローダーの設定を更新し、いくつかのデバイスをアンマウントし、chroot から離脱します: update-grub umount /proc || umount -lf /proc umount /proc || umount -lf /proc umount /dev/pts 終了 sudo mnt/dev を umount する。 15.sudo cp /mnt/etc/resolv.conf /mnt/etc/resolv.conf.old を実行して失敗しなかった場合は、次に sudo cp /mnt/etc/resolv.conf.old /mnt/etc/resolv.conf を実行してください。 16.16. sudo cp /mnt/etc/hosts /mnt/etc/hosts.old を実行して失敗しなかった場合は、次に sudo cp /mnt/etc/hosts.old /mnt/etc/hosts を実行してください。 17.17. インストールしたシステムに独立した /boot パーティションがある場合は、そ れをアンマウントします:sudo umount /mnt/bootです。 18.sudo umount /mnt/boot 18. インストールしたシステムの / パーティションをアンマウントします。 19.ターミナルウィンドウを出て (exit を実行してください)、ライブ CD システムを再起動 (またはシャットダウン) して、インストールしたシステムで起動します。 20.システムが使用可能かどうか、64ビットカーネルが動作しているかどうかを確認し てください (uname -m はアーキテクチャが x86_64 であることを示すはずです)。 これを動作させるには、 ia32_libslibc6 の 64 ビットバージョンなど、インストールが必要な追加パッケージがあるかもしれない。これらの中には、64 ビット版の dpkgapt をインストー ルしようとすると、必要であることを通知されるものもあります。その他のものについては、必要であることを知らされないかもしれません。 (上記のchroot化とchroot化された環境での操作の説明は、この関連するが異なる手順と、私のいくつかのLaunchpad Answersの投稿、特に#6 こちらと#6 こちらにかなりの部分基づいています。また、64ビットの dpkgapt 実行ファイルが32ビットのカーネルを実行しているシステムでは動作しないことを指摘してくれた Caesium に感謝します)。

解説 (6)

上記のように、私はしました:

echo foreign-architecture amd64 | sudo tee /etc/dpkg/dpkg.cfg.d/multiarch
sudo apt-get update
sudo apt-get install linux-image:amd64
sudo apt-get install gcc-multilib
sudo update-grub

動いた。 Ubuntu 12.04で、64ビットカーネルで32ビットユーザーランドを実行できます。

解説 (3)

質問はhttps://askubuntu.com/questions/5018/is-it-possible-to-upgrade-from-a-32bit-to-a-64bit-installationに似ていますが?rq = 1(前に読んでいない場合は、試すことをお勧めします。 答えは良いです。)また、次のリンクを読むことをお勧めします。

https://askubuntu.com/questions/19803/for-better-performance-should-i-install-32-bit-or-64-bit?lq = 1。

https://askubuntu.com/questions/81824/how-can-i-switch-a-32-bit-installation-to-a-64-bit-one?lq = 1。

https://askubuntu.com/questions/7034/what-is-the-difference-between-32-bit-and-64-bit-and-which-should-i-choose/70551#70551

可能ですか:はい。

簡単ですか:いいえ。!

問題がメモリにある場合は、Ubuntu 32ビットが4 GBを超えるRAM(最大64 GB)を読み取ることができることを知っておく必要があります。 したがって、32ビットまたは64ビットのアーキテクチャを備えたコンピューターで最新のUbuntu 32ビットバージョンを使用し、より多くのRAMを導入しても問題はありません。 追加のRAMを読み取って動作するだけです。

解説 (0)

これらの答えはやや時代遅れです。 Debian wikiでDebianのクロスグレーディングが文書化されましたが、それでもお勧めできません。

別のアーキテクチャからのカーネルのインストールは、ここで説明するのと同じくらい簡単になりましたが、新しい「apt」は以前のアーキテクチャからのパッケージを認識しないため、すべてのフロントエンドで多くの壊れたパッケージが報告される場合があります。 これには、すべての依存関係を他のアーキテクチャに変更するか、aptとdpkgを32ビットに戻す必要があります。

したがって、最良のアプローチは、最初に「dpkg --get-selections」の結果を保存し、そこから:i386をストリップして、依存関係のそれぞれについてamd64パッケージをキャッシュにダウンロードすることです。

apt-get --download-only install perl:amd64 python3:amd64 python3-gi:amd64 xorg:amd64...

せいぜい、依存関係の解決には時間がかかり、時間がかかる可能性があります。

解説 (0)

これらの手順により、システムは64ビットカーネルで起動しますが、ほとんどのユーザーランドプログラムは変更されません。

64ビットCPUでシステムをアップグレードした後、32ビット14.04.2 Ubuntu(コードネーム:Trusty)に64ビットカーネルをインストールしたいと思いました。 これを行うには、 root user として次のコマンドを入力しました。

dpkg --add-architecture amd64   
apt-get update
apt-get install linux-generic-lts-utopic:amd64

メモ:

1。 これにより、32ビットカーネルが信頼できるものとして削除される可能性があります-デフォルトでは-更新されたカーネル(utopicのカーネル)が同梱されます。14.04リリースノートを参照してください。 この場合、現在のカーネルは64ビットカーネルと競合してインストールされるため、削除されます。 このアイデアが気に入らない場合は、代わりに古い64ビットカーネルパッケージ「linux-generic-lts-trusty:amd64」を試してみてください。

2。 「--add-architecure」コマンドは不可欠です。 それがなければ、パッケージシステムはさまざまなアーキテクチャのパッケージをサポートしません。Multiarch-HowToを参照してください。

3。 システムに「apt-get」がどのような影響を与えるかを確認するには、「冗長シミュレーションモード」を可能にするオプション「-Vs」で実行します。 これにより、インストールおよび削除するすべてのパッケージが印刷されます。

4。 新しいカーネルを使用してシステムブーツを使用するかどうかは、「grub」構成によって異なります。 root user として、 update-grubを実行してgrubを更新し、現在のブート構成を印刷します。 リストの最初の画像はデフォルトで起動されます。

5。 別のカーネル画像を選択するには、 / etc / default / grubから GRUB_HIDDEN_TIMEOUT = 0行を削除し、 root user update-grubとして実行しました。 起動時に、別のカーネルを選択できるようになりました(キーを押すのに10秒かかります。そうしないと、デフォルトのカーネルでgrubが続行されます)。

6。 最も投票数の多い答えは2011年のものであり、私の意見では絶望的に時代遅れです。 Multiarchを使用すると、複数のアーキテクチャからライブラリパッケージを、あまり苦労せずに同じマシンにインストールできます。

解説 (2)

Ubuntu 16.04 Xenialの私のレシピは、標準システムとSSHサーバーを備えた、GUIなしの、新しくインストールされた32ビットUbuntu VMでテストされています。

sudo -s
dpkg --get-selections > pkg1
dpkg --add-architecture amd64
apt update
apt install linux-image-generic:amd64 thermald 

(それ以外の場合は、thermald:amd64をインストールし、32ビットカーネルで再起動できません)。

reboot

64ビットカーネルで再起動した後:

sudo -s
unset LANG
apt install apt:amd64 apt-utils:amd64

タイプ 'はい、私が言うようにしてください。!'尋ねられたとき、それは安全になるでしょう。


mkdir /tmp/upgrade 
cd /tmp/upgrade
pkgs() { dpkg -l | awk '$4=="'$1'"{print $2}' | awk -F: '{print $1}' | sort -u
}
apt download $(comm -23 
解説 (1)

おそらく、同じ問題に直面すると、これはうまくいくでしょう。それは私が計画していたことです。

OSの64ビットバージョンを取得し、パーティションにインストールします。32ビットインストールからドキュメントやその他のものを完全にコピーすると、すべてが安全にコピーされたときに、ドライブの残りの部分をフォーマットして使用できます。

解説 (0)

ええ、外部アーキテクチャラインは、クロスアーチパッケージをインストールするために最も確実に不可欠です。 しかしその後、他のいくつかのユーザーが述べたようにしてください:

sudo apt-get update
sudo apt-get install linux-image:amd64
sudo apt-get install linux-modules:amd64
sudo init 6 #reboot into new kernel
sudo apt-get install apt:amd64
sudo apt-get install ubuntu-desktop:amd64

それはちょうどそれをするべきです。..

解説 (1)

クロスグレード(異なるアーキテクチャへのアップグレード)はまだサポートされていません。

解説 (0)

いい質問ですね。いろいろと調べてみましたが、あなたが引用したユーザーストーリー以外には、この方法についての詳細は見つかりませんでした。すべてのドキュメントによると、これはすでに64ビットのOS上で32ビットのアプリケーションを実行するためのものだそうです。

しかし、もしあなたが実験する気があるのなら、以下を試してみてください([1]の私のリンクから派生したものです)。

 echo foreign-architecture amd64 | sudo tee /etc/dpkg/dpkg.cfg.d/multiarch
 sudo apt-get install linux-image:amd64

32ビットカーネルでは64ビットバイナリを実行できないので、まずamd64カーネルから始める必要があると思います。しかし、64ビットカーネルは32ビットバイナリを実行できるはずです (ia32-libs がインストールされていれば?)。

64ビットカーネルをインストールして起動したら、そこからapt:amd64をインストールし、先に引用したユーザーストーリーに従って、ubuntu-minimal、ubuntu-desktopなどをインストールすればいい。

apt:amd64がインストールされたら、その時点で実質的に切り替わっているので、foreign-architectureの行を削除していいと思います。

免責事項:私はテストする32ビットシステムを持っていないので、これはすべて推測です。幸運を祈る!

[1] https://wiki.ubuntu.com/OneiricOcelot/TechnicalOverview/Beta1#Improved_handling_of_32-bit_compatibility_on_amd64_systems

解説 (0)