Home
Packages
Forums
Wiki
GitLab
Security
AUR
Download
コンテンツにスキップ
メインメニュー
メインメニュー
サイドバーに移動
非表示
案内
メインページ
目次
コミュニティに貢献
最近の出来事
おまかせ表示
特別ページ
交流
ヘルプ
貢献
最近の更新
最近の議論
新しいページ
統計
リクエスト
ArchWiki
検索
検索
表示
アカウント作成
ログイン
個人用ツール
アカウント作成
ログイン
64ビット環境に32ビット環境をインストールのソースを表示
ページ
議論
日本語
閲覧
ソースを閲覧
履歴を表示
ツール
ツール
サイドバーに移動
非表示
操作
閲覧
ソースを閲覧
履歴を表示
全般
リンク元
関連ページの更新状況
ページ情報
表示
サイドバーに移動
非表示
←
64ビット環境に32ビット環境をインストール
あなたには「このページの編集」を行う権限がありません。理由は以下の通りです:
この操作は、次のグループに属する利用者のみが実行できます:
登録利用者
。
このページのソースの閲覧やコピーができます。
[[Category:Arch の入手とインストール]] [[cs:Install bundled 32-bit system in 64-bit system]] [[en:Install bundled 32-bit system in 64-bit system]] [[fr:Install environnement 32 sur un systeme 64]] [[zh-hans:Install bundled 32-bit system in 64-bit system]] この記事では32ビットのアプリケーションを動作させる一つの方法を説明しています。multilib リポジトリから lib32-* ライブラリをインストールする代わりに32ビットのアプリケーションを分離させます。この方法では "chroot 監獄" を作成して32ビットのアプリを管理します。 {{Tip|1=Xyne が下記のように 32ビットの chroot に最小インストールするパッケージを作成しています。詳しくは [https://bbs.archlinux.org/viewtopic.php?id=97629] や [http://xyne.archlinux.ca/projects/arch32-light] を見て下さい。}} == インストール == 1. ディレクトリを作成: # mkdir /opt/arch32 2. chroot 用に一時的な [[pacman]] の設定ファイルを作成: # sed -e 's/\$arch/i686/g' /etc/pacman.d/mirrorlist > /opt/arch32/mirrorlist # sed -e 's@/etc/pacman.d/mirrorlist@/opt/arch32/mirrorlist@g' -e '/Architecture/ s,auto,i686,' /etc/pacman.conf > /opt/arch32/pacman.conf *これらのファイルは (後でインストールする) 通常の pacman ファイルと衝突します。 *そのため一時的な場所に保存する必要があります (上記では {{ic|/opt/arch32}} を使用)。 *multilib リポジトリを有効にしている場合は {{ic|/opt/arch32/pacman.conf}} ファイルで無効化しておいてください。 3. ディレクトリを作成: # mkdir -p /opt/arch32/var/{cache/pacman/pkg,lib/pacman} 4. pacman を同期: # pacman --root /opt/arch32 --cachedir /opt/arch32/var/cache/pacman/pkg --config /opt/arch32/pacman.conf -Sy 5. base グループと任意で base-devel グループをインストール: # pacman --root /opt/arch32 --cachedir /opt/arch32/var/cache/pacman/pkg --config /opt/arch32/pacman.conf -S base base-devel (任意) 他のマシンの chroot でコンパイルをするときはお好きなテキストエディタと distcc を追加してください: # pacman --root /opt/arch32 --cachedir /opt/arch32/var/cache/pacman/pkg --config /opt/arch32/pacman.conf -S base base-devel sudo vim distcc (任意) pacman のミラーリストを移動して下さい: # mv /opt/arch32/mirrorlist /opt/arch32/etc/pacman.d === 設定 === 重要な設定ファイルをコピーしてください: # for i in passwd* shadow* group* sudoers resolv.conf localtime locale.gen vimrc mtab inputrc profile.d/locale.sh; do cp -p /etc/"$i" /opt/arch32/etc/; done ビルドする前に {{ic|/opt/arch32/etc/makepkg.conf}} で MAKEFLAGS などの値を正しく定義してください。 === デーモンと systemd サービス === {{hc|/etc/systemd/system/arch32.service|<nowiki> [Unit] Description=32-bit chroot [Service] Type=oneshot RemainAfterExit=yes ExecStart=/usr/local/bin/arch32 start ExecStop=/usr/local/bin/arch32 stop [Install] WantedBy=multi-user.target </nowiki>}} {{hc|/usr/local/bin/arch32|<nowiki> #!/bin/bash ## User variables. MOUNTPOINT=/opt/arch32 ## Set MANAGEPARTITION to any value if /opt/arch32 resides on a separate ## partition and not mounted by /etc/fstab or some other means. ## If /opt/arch32 is part of your rootfs, leave this empty. MANAGEPARTITION= ## Leave USEDISTCC empty unless you wish to use distccd from within the chroot. USEDISTCC= DISTCC_SUBNET='10.9.8.0/24' ## PIDFILE shouldn't need to ba changed from this default. PIDFILE=/run/arch32 start_distccd() { [[ ! -L "$MOUNTPOINT"/usr/bin/distccd-chroot ]] && ln -s /usr/bin/distccd "$MOUNTPOINT"/usr/bin/distccd-chroot DISTCC_ARGS="--user nobody --allow $DISTCC_SUBNET --port 3692 --log-level warning --log-file /tmp/distccd-i686.log" [[ -z "$(pgrep distccd-chroot)" ]] && linux32 chroot "$MOUNTPOINT" /bin/bash -c "/usr/bin/distccd-chroot --daemon $DISTCC_ARGS" } stop_distccd() { [[ -n "$(pgrep distccd-chroot)" ]] && linux32 chroot "$MOUNTPOINT" /bin/bash -c "pkill -SIGTERM distccd-chroot" } case $1 in start) [[ -f "$PIDFILE" ]] && exit 1 if [[ -n "$MANAGEPARTITION" ]]; then mountpoint -q $MOUNTPOINT || mount LABEL="arch32" $MOUNTPOINT fi dirs=(/tmp /dev /dev/pts /home) for d in "${dirs[@]}"; do mount -o bind $d "$MOUNTPOINT"$d done mount -t proc none "$MOUNTPOINT/proc" mount -t sysfs none "$MOUNTPOINT/sys" touch "$PIDFILE" [[ -n "$USEDISTCC" ]] && start_distccd ;; stop) [[ ! -f "$PIDFILE" ]] && exit 1 [[ -n "$USEDISTCC" ]] && stop_distccd if [[ -n "$MANAGEPARTITION" ]]; then umount -R -A -l "$MOUNTPOINT" else dirs=(/home /dev/pts /dev /tmp) [[ -n "$USEDISTCC" ]] && stop_distccd umount "$MOUNTPOINT"/{sys,proc} for d in "${dirs[@]}"; do umount -l "$MOUNTPOINT$d" done fi rm -f "$PIDFILE" ;; *) echo "usage: $0 (start|stop)" exit 1 esac </nowiki>}} 初期化スクリプトに実行可能属性を付与してください: # chmod +x /usr/local/bin/arch32 {{ic|arch32.service}} を[[起動]]・[[有効化]]してください。 == 設定 == 新しい環境に chroot: # /usr/local/bin/arch32 start $ xhost +SI:localuser:username_to_give_access_to # chroot /opt/arch32 通常の環境との区別がつくように32ビットの chroot 環境では bash プロンプトをカスタマイズすることを推奨します。例えば、{{ic|~/.bashrc}} で定義する ''PS1'' 変数に ''ARCH32'' という文字列を追加します。Debian のデフォルトの .bashrc プロンプトは作業ディレクトリが chroot の中かどうか表示するようになっています。 === 初期設定 === ロケールの問題を修正: # /usr/bin/locale-gen pacman を初期化: # sed -i 's/CheckSpace/#CheckSpace/' /etc/pacman.conf # pacman-key --init && pacman-key --populate archlinux == Schroot == {{Pkg|schroot}} をネイティブの'''64ビット'''環境に[[pacman|インストール]]: {{ic|/etc/schroot/schroot.conf}} を編集して ''[Arch32]'' セクションを作成して下さい。 [Arch32] type=directory profile=arch32 description=Arch32 directory=/opt/arch32 users=user1,user2,user3 groups=users root-groups=root personality=linux32 aliases=32,default (任意) {{ic|/etc/schroot/arch32/mount}} を編集して {{ic|/usr/local/bin/arch32}} で作成されるマウントと一致させます。 === Schroot を使って32ビットのアプリケーションを実行 === chroot の中にあるアプリケーションを呼び出すときは以下のようにします: # schroot -p -- htop 上記の例の場合、htop は32ビット環境から実行されます。 == トラブルシューティング == === コンパイルとインストール === Ensure the desired options are set in the local {{ic|/etc/makepkg.conf}}. Some packages may require a {{ic|--host}} flag be added to the ./configure script in the PKBUILD: $ ./configure --host="i686-pc-linux" ... This is the case when the build makes use of values (for example, the output of the {{ic|uname}} command) inherited from your base system. ===ビデオ問題=== ビデオアクセラレーションが必要なアプリケーションを実行したときに以下のように表示される場合: X Error of failed request: BadLength (poly request too large or internal Xlib length error) chroot の中で適切な[[Xorg#ドライバーのインストール|ビデオドライバー]]をインストールしてください。 === Flash の音声 === Firefox の Flash プレイヤーから音を流すには、ターミナルを開いて32ビット環境に chroot: # chroot /opt/arch32 そして、[[pacman]]で {{Pkg|alsa-oss}} をインストールします。 それから以下を入力してください: $ export FIREFOX_DSP="aoss" Every chroot into the 32-bit system will require this export command to be entered so it may be best to incorporate it into a script. Finally, launch Firefox. For [[Wine]] this works the same way. The package alsa-oss will also install the alsa libs required by [[Wine]] to output sound. == Tips and tricks == === chroot の Java === [[Java]] を見て下さい。インストール後、パスを設定します: $ export PATH="/opt/java/bin/:$PATH" === 32ビットアプリケーションから64ビットの PulseAudio にアクセス === chroot 環境にパスをバインドマウントする必要があります: # mount --bind /var/run /opt/arch32/var/run # mount --bind /var/lib/dbus /opt/arch32/var/lib/dbus 環境を離れるときはアンマウントしてください: # umount /opt/arch32/var/run # umount /opt/arch32/var/lib/dbus Optionally add the commands to the {{ic|/usr/local/bin/arch32}} script after the other bind-mount/umount commands. See [[PulseAudio/サンプル#chroot から PulseAudio (e.g. 32-bit chroot in 64-bit install)|PulseAudio from within a chroot]] for details === Firefox の音声 === root で {{ic|/usr/bin/firefox32}} を作成: #!/bin/sh schroot -p firefox $1;export FIREFOX_DSP="aoss" 実行可能属性を付与: # chmod +x /usr/bin/firefox32 必要であれば Firefox のエイリアスを作成: alias firefox="firefox32" 上記を {{ic|~/.bashrc}} に追加して source してください。もしくは、デスクトップ環境のランチャーから firefox32 が使われるように変更してもかまいません。 === 3D アクセラレーション === 適切なパッケージをインストールしてください。 グラッフィックアダプタの設定については以下の記事を参照: * [[ATI]] * [[Intel]] * [[NVIDIA]] === Wine === Wine をコンパイルするには、32ビット環境をインストールする必要があります。[http://art.ified.ca/?page_id=40 PulseAudio] を動作させるパッチをあてるには Wine のコンパイルが必要です。AUR の {{AUR|wine-hacks}}{{Broken package link|{{aur-mirror|wine-hacks}}}} を見てください。 以下のエイリアスを {{ic|~/.bashrc}} に追加: alias wine='schroot -pqd "$(pwd)" -- wine' The {{ic|-q}} switch makes schroot operate in quiet mode, so it works like "regular" wine does. Also note that If you still use dchroot instead of schroot, you should use switch {{ic|-d}} instead of {{ic|-s}}. === 印刷 === {{note|If you have a 64-bit base installation with a 32-bit chroot environment, explicit installation of CUPS is not necessary in the 32-bit environment.}} chroot 環境からインストール済みの CUPS プリンターにアクセスするには、{{ic|/var/run/cups}} ディレクトリを chroot 環境の同じ場所にバインドする必要があります。 chroot 環境に {{ic|/var/run/cups}} ディレクトリが存在することを確認してホストの {{ic|/var/run/cups}} を chroot 環境にバインドマウントしてください: # mkdir ''chroot32-dir/var/run/cups'' # mount --bind /var/run/cups ''chroot32-dir/var/run/cups'' すぐに32ビットの chroot アプリケーションからプリンターが使えるようになるはずです。
64ビット環境に32ビット環境をインストール
に戻る。
検索
検索
64ビット環境に32ビット環境をインストールのソースを表示
話題を追加