Arch64 FAQ

提供: ArchWiki
2017年2月9日 (木) 21:10時点におけるKusakata.bot (トーク | 投稿記録)による版 (文字列「[[zh-cn:」を「[[zh-hans:」に置換)
ナビゲーションに移動 検索に移動

以下は Arch Linux の 64ビット版 (Arch64) に関してよく寄せられる質問のリストです。

私のプロセッサが x86_64 に対応しているかどうかを知る方法は?

Linux ユーザー

以下のコマンドを実行してください:

$ less /proc/cpuinfo

flags エントリーを探してください。 lm フラグがあったら、あなたのプロセッサーは x86_64 対応です。

もしくは以下のコマンドを実行してみることも出来ます:

$ grep -q "^flags.*\blm\b" /proc/cpuinfo && echo "x86_64" || echo "not x86_64"

Windows ユーザー

フリーウェアである CPU-Z を使って、64ビット互換があるかどうか確認できます。AMD の命令セットである AMD64 または Intel の命令セット EM64T は x86_64 のバイナリと互換性があります。

32ビットと64ビット、どちらの Arch を使うべきでしょうか?

あなたのプロセッサーが x86_64 に対応しているなら、Arch64 を使うべきです。

Arch64 をインストールする方法は?

公式のインストール ISO でインストールできます。

移植の完成度は?

デスクトップやサーバー環境として日常的に使用するのに十分な移植がされています。

32ビット版の Arch を使っているのですが、今まで私が使っていたプログラムは動くでしょうか?

リポジトリが移植されており、ほとんど全て問題なく動作するでしょう。

稀に、AUR の古いパッケージで 'i686' しか対応していないことがありますが、普通は64ビットでも動作します。'x86_64' を追加して試して下さい。

64ビットにする理由は?

多くの状況下で (32ビットに比べて) 高速であり、通常の i686 カーネルでは PAE が無効化されているために利用できないアドレス空間配置のランダム化 (ASLR)位置独立コード (PIC)NX ビットを使用することによりセキュリティが向上することが挙げられます。もしコンピューターに 4GB 以上のメモリが載っている場合、32ビット OS では利用できない分のメモリも使用することができるので、ぜひ64ビットを使用するべきでしょう。

更に、64ビットの拡張をサポートしている新しい x86 CPU に対して、レガシーな32ビットの CPU をプログラマーがサポートしなくなってきているというのもあります。

以上の理由が32ビット環境を避けるべきという我々のアドバイスですが、カーネルやユーザースペース、個々のプログラムなど、64ビットの方が優れているものは他にもたくさんあり、全てをここに書き出す事は出来ません。

差異のレポートも見てください。32/64ビットのパッケージバージョンの比較を行うことが出来ます。

バグレポートはどこに送ればいいですか?

Arch の Flyspray を使って下さい。Architecture フィールドで x86_64 を選ぶのは、移植関連に問題があると判断した場合だけにしてください。

pacman で設定するべきリポジトリはどれですか?

全てのレポジトリは移植をサポートしています。

既存の PKGBUILD を Arch64 で使用するためにパッチをあてる方法は?

以下の変数を移植されたパッケージに追加してください:

arch=('i686' 'x86_64')

小さなパッチは直接 sources と md5sums に追加します:

[ "$CARCH" = "x86_64" ] && source=(${source[@]} 'other source')
[ "$CARCH" = "x86_64" ] && md5sums=(${md5sums[@]} 'other md5sum')

小さな修正を施したいときは build に以下を追加:

[ "$CARCH" = "x86_64" ] && (patch -Np0 -i ../foo_x86_64.patch)

もしくは多くの変更が必要な場合:

if [ "$CARCH" = "x86_64" ]; then
    configure/patch/sed      # for x86_64
  else configure/patch/sed   # for i686
fi

Arch64 で使えなくなるものはありますか?

いいえ。現在では、ほとんど全てのアプリケーションが64ビットをサポートしているか、または64ビット対応への作業中です。

最大の問題はクローズドソースまたは x86 固有のアセンブリを含んだパッケージであり、64ビットに移植するのに厄介な問題を抱えています (特にエミュレータ)。

以前はこれらのアプリケーションが問題となっていましたが、今では AUR から利用できるようになり、問題なく動作します:

  • Acrobat Reader は64ビット版が存在しませんが、互換モードで32ビット版を実行できます。また、PDF ファイルを読むことができるオープンソースのアプリケーションは他にも多数存在します。

あらゆるものが完全に動作します。x86_64 でコンパイルできるのに Arch32 に移植パッケージが存在しないときは (他の64ビットのディストリビューションでネイティブのパッケージを見つけるということも考えられます)、開発者に連絡するかフォーラムで新しいパッケージをリクエストしてください。

Arch64 環境下で32ビットのアプリケーションは動かすことは出来ますか?

はい。動かすことが出来ます。

  • lib32-* を [multilib] リポジトリからインストールしてください。リポジトリを使用するために /etc/pacman.conf に以下の設定を追加してください:
[multilib]
SigLevel = PackageRequired
Include = /etc/pacman.d/mirrorlist

現時点で (2011年11月)、[multilib] には WineSkype が含まれています。さらに、multilib コンパイラも使えます。

32ビットの chroot を作成する別の方法は64ビット環境に32ビット環境をインストールを参照してください。

Arch64 環境下で i686 用の32ビットアプリケーションを作成することはできますか?

はい、できます。以下の2つの方法があります:

Multilib リポジトリ

[multilib] を使用するには、/etc/pacman.conf を編集し、以下のコメントアウトを無効化してください:

[multilib]
SigLevel = PackageRequired
Include = /etc/pacman.d/mirrorlist

pacman -Syu であなたのシステムをアップグレードします。その後 gcc-multilib パッケージをインストールしてください。

ノート: もしシステムに base-devel グループがインストールされている場合、下にあるように [extra] バージョンを [multilib] バージョンに置換してください。gcc-multilib は32/64ビットのコードをビルドすることが出来ます。multilib-devel をインストールすることで安全にパッケージを置き換えられます。ただし base-devel は必要とする他のパッケージがあるので削除できません。詳しくは https://bbs.archlinux.org/viewtopic.php?id=102828 を見て下さい。
# pacman -S gcc-multilib
resolving dependencies...
warning: dependency cycle detected:
warning: lib32-gcc-libs will be installed before its gcc-libs-multilib dependency
looking for inter-conflicts...
:: gcc-libs-multilib and gcc-libs are in conflict. Remove gcc-libs? [y/N] y
:: binutils-multilib and binutils are in conflict. Remove binutils? [y/N] y
:: gcc-multilib and gcc are in conflict. Remove gcc? [y/N] y
:: libtool-multilib and libtool are in conflict. Remove libtool? [y/N] y

Remove (4): gcc-libs-4.6.1-1  binutils-2.21.1-1  gcc-4.6.1-1  libtool-2.4-4

Total Removed Size:   87.65 MB

Targets (7): lib32-glibc-2.14-4  lib32-gcc-libs-4.6.1-1  gcc-libs-multilib-4.6.1-1  binutils-multilib-2.21.1-1
             gcc-multilib-4.6.1-1  lib32-libtool-2.4-2  libtool-multilib-2.4-2

Total Download Size:    25.04 MB
Total Installed Size:   108.27 MB

Proceed with installation? [Y/n]

x86_64 上で i686 パッケージをコンパイルするには以下のような記述を別の設定ファイル (例えば ~/.makepkg.i686.conf) に追加するだけです:

CARCH="i686"
CHOST="i686-pc-linux-gnu"
CFLAGS="-m32 -march=i686 -mtune=generic -O2 -pipe -fstack-protector-strong --param=ssp-buffer-size=4 -D_FORTIFY_SOURCE=2"
CXXFLAGS="${CFLAGS}"
LDFLAGS="-m32 -Wl,-O1,--sort-common,--as-needed,-z,relro"

そして以下のコマンドを実行します:

$ linux32 makepkg -src --config ~/.makepkg.i686.conf

chroot

64ビット環境に32ビット環境をインストールを見て下さい。

再インストールせずに i686 環境から x86_64 環境にアップグレード出来ますか?

できません。厳格に言えば、環境の移行とは、全てのパッケージを新しいアーキテクチャ向けに再インストールするということを意味します。ただし、新規インストールをすることなく、現在インストールされているシステムから、環境を移行することは可能です。このフォーラムスレッドの手順に従えば、設定やデータを失うことなく、32ビットから64ビットに移行できます。移行には外付けのハードドライブを使用するので注意してください。

もしくは、Arch64 インストール CD でシステムを起動し、ディスクをマウントして、32ビットバイナリ以外の、残しておきたいデータ (例えば /home/etc など) をバックアップして、インストールします。

詳しくは再インストールせずにアーキテクチャを移行を読んでください。