64ビットのハードウェアで実行する32ビットのUbuntuインストールがあります。 multi-Archが実装されました になったので、OSを再インストールせずに64ビットに切り替えたいと思います。
これは、 仕様で指定されたユーザーストーリー のいずれかです。
Shawnは32ビットバージョンのUbuntuを使用してシステムをインストールしましたが、ハードウェアは64ビットであり、切り替えたいと考えています。彼は手動でdpkgとaptのAMD64バージョンをインストールし、i386バージョンを置き換え、デフォルトとして使用されるアーキテクチャを変更しました。次に、AMD64 ubuntu-minimalパッケージをインストールします。その後、AMD64 ubuntu-desktopパッケージをインストールします。時間の経過とともに、アップグレード時に残りのi386パッケージが自動的に置き換えられます。
ただし、そこの指示に従おうとすると、64ビットバージョンのdpkgまたはaptが見つかりません。
このユーザーストーリーは最終仕様で別の方法で実装されましたか、それとも何か別の方法で行う必要がありますか?
つまり、32ビットインストールを64ビットに切り替えるにはどうすればよいですか?
上記のように、私はやった:
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で、32ビットユーザーランドを64ビットカーネルで実行できます。
質問は 2ビットから64ビットへの「アップグレード」は可能ですか? (まだ読んでいないなら、試してみることをお勧めします。そこにある答えは良いものです。 )次のリンクも読むことをお勧めします。
パフォーマンスを向上させるには、32ビットまたは64ビットをインストールする必要がありますか?
2ビットインストールを64ビットインストールに切り替えるにはどうすればよいですか?
2ビットと64ビットの違いは何ですか?どちらを選択すればよいですか?
可能ですか:はい
簡単ですか:いいえ!
メモリに問題がある場合は、Ubuntu 32ビットが4GBを超えるRAM(最大64 GB)を読み取れることを知っておく必要があります。そのため、32ビットまたは64ビットアーキテクチャのコンピューターで最新のUbuntu 32ビットバージョンを使用し、RAMを追加しても問題はありません。単に余分なRAMを読み取って動作します。
これらの手順は、システムを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
注:
これにより、32ビットカーネルが信頼できるものとして削除される場合があります-デフォルトでは、更新されたカーネル(utopicのカーネル)が付属しています。 14.04リリースノート を参照してください。この場合、現在のカーネルはインストールする64ビットカーネルと競合するため、削除されます。この考えが気に入らない場合は、代わりに古い64ビットカーネルパッケージ「linux-generic-lts-trusty:AMD64」を試してください。
「--add-architecure」コマンドは必須です。これがないと、パッケージシステムは異なるアーキテクチャのパッケージをサポートしません。 Multiarch-HowTo を参照してください
システムに対するapt-get
の動作を確認するには、「冗長シミュレーションモード」を有効にするオプション-Vs
を指定して実行します。これにより、インストールおよび削除されるすべてのパッケージが印刷されます。
新しいカーネルを使用してシステムをブートするかどうかは、grub
構成に依存します。 rootユーザーとして、update-grub
を実行してgrubを更新し、現在のブート構成を出力します。リストの最初のイメージがデフォルトとして起動されます。
別のカーネルイメージを選択するには、GRUB_HIDDEN_TIMEOUT=0
から/etc/default/grub
行を削除し、root userupdate-grub
として実行しました。ブート時に、別のカーネルを選択できるようになりました(キーを押すのに10秒かかります。そうしないと、grubはデフォルトのカーネルで続行します)。
最も多くの票を獲得した回答は2011年のものであり、私の意見では絶望的に時代遅れです。 Multiarchを使用すると、同じマシンに複数のアーキテクチャのライブラリパッケージを手間をかけずにインストールできます。
これらの答えはやや時代遅れです。 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...
せいぜい、依存関係の解決に時間がかかり、時間がかかる可能性があります。
おそらく、私が同じ問題に直面しているとき、これはうまくいくでしょう、それは私がやろうとしていたことです:
64ビットバージョンのOSを取得し、パーティションにインストールします。32ビットインストールからドキュメントやその他のものを完全にコピーしたら、すべてを安全にコピーしたら、残りのドライブをフォーマットして使用できます。
ええ、クロスアーキテクチャパッケージをインストールするためには、外部アーキテクチャラインが最も重要です。しかし、その後、他のいくつかのユーザーが述べたようにしてください:
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
それはちょうどそれを行う必要があります...
Ubuntu 16.04 Xenialの私のレシピは、新しくインストールした32ビットUbuntu VMでテストしましたが、標準システムとSSHサーバーを使用しますが、GUIは使用しません。
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 <(pkgs i386) <(pkgs AMD64))
while ls *AMD64*deb
do dpkg -i *AMD64*deb
dpkg -l | awk '$1=="ii" && $4=="AMD64" {print $2}' | awk -F: '{print $1}' |
while read a
do [ -f ${a}_*AMD64*deb ] && rm ${a}_*AMD64*deb
done
done
上記のループでは、正常にインストールされ、dpkgリストで「ii」ステータスになった.debファイルを削除します。
最初の試行では成功しないため、dpkg -i
の実行を繰り返す必要があります
reboot
現在、64ビットカーネルとユーザー空間の両方で、残りのi386パッケージを削除できます。
dpkg --purge $(dpkg -l | awk '$4=="i386"{print $2}')
pkgs1
ファイルに保存したリスト。今後のニーズに使用できます。
クロスグレード(異なるアーキテクチャへのアップグレード)はまだサポートされていません。
良い質問。私はあなたが引用したユーザーストーリー以外で狩りをしましたが、これを行う方法についての詳細は見つかりません。すべてのドキュメントは、すでに64ビットOSで32ビットアプリケーションを実行するためだけのものであることを示しています。
ただし、試してみたい場合は、以下を試してみてください([1]のリンクから派生)
echo foreign-architecture AMD64 | Sudo tee /etc/dpkg/dpkg.cfg.d/multiarch
Sudo apt-get install linux-image:AMD64
AMD64カーネルで開始する必要があると思います。32ビットカーネルでは64ビットバイナリを実行できないためです。ただし、64ビット版では32ビットバイナリを実行する必要があります(ia32-libsがインストールされている場合)。
64ビットカーネルをインストールして起動したら、そこからapt:AMD64をインストールし、先ほど引用したユーザーストーリー、ubuntu-minimal、ubuntu-desktopなどに従ってください。
Apt:AMD64をインストールした後、その時点で基本的に切り替えたため、外部アーキテクチャラインを削除できると思います。
免責事項:テストする32ビットシステムがないため、これはすべて当て推量です。幸運を!