私はハッキングされたChromebookを持っていて、そこでGentooを実行しています。コンパイルしようとすると何もない、CPU使用量が100%に急増し、温度が摂氏10度程度上がり、バッテリー使用量が急増(4.XW -> 10W)するのが遅いプロセスです。ただし、SSH経由で接続できる実行中のArch Linuxシステムもあります。どちらもx86_64 CPUです。 SSHを使用してコンテンツ編集(Linuxカーネル、毎日のパッケージなど)をArch Linuxシステムにオフロードする方法はありますか?私は前にこのようなことをしたことがありません。たぶんクロスコンパイルが必要かもしれません。
答え1
いいえ、クロスコンパイルする必要はありません。 (他のアーキテクチャを対象とする場合は必要です。)これを行うためにシステムを設定する2つの方法を考えることができます。
使用
distcc
。これルート図そしてアーチスウィキプログラムをインストールして構成する方法はよく説明されているので、ここに内容全体をコピーしないでください。つまり、機能するには以下を設定する必要があります。あなた
CFLAGS
は/etc/portage/make.conf
必然ではないまたは、リモートコンピュータはローカルコンピュータでmarch=native
はなくmtune=native
「デフォルト」CPUの概念を使用するためです。 「ネイティブ」を使用している場合は、使用するフラグを確認してください。以下を実行して:$ gcc -v -E -x c -march=native -mtune=native - < /dev/null 2>&1 | grep cc1 | perl -pe 's/^.* - //g;'
どちらのコンピュータも同じコンパイラとbinutilsのバージョンが必要です。
- 両方のコンピューターを
distcc
インストール、構成、および実行する必要があります。
chroot
Archシステムの環境とChromebookファイルシステムのコピーを使用します(Gentooをインストールするのと同じように、resolv.conf
Archインストールからコピーし、それぞれに適切なファイルシステムをマウントします)。Gentooインストールマニュアル/dev/shm
、Archバージョンがシンボリックリンクかどうかに関する警告を覚えておいてください。 )Chromebook環境にできるだけ近いはずです。そうしないと、コピーを作成すると誤ったバイナリが生成される可能性があるため、より少ない数のパッケージを再構築する必要があります。この環境の内部:- に追加してください
FEATURES="buildpkg"
。/etc/portage/make.conf
- 生成されたパッケージはにあります
/usr/portage/packages
。この方法でカーネルをコンパイルすることもできます。作成したカーネルとその/lib/modules
ディレクトリをChromebookにコピーするだけです。 (このディレクトリの場所はchrootに相対的であることを覚えておいてください。)Wikiでは、ファイルを手動でコピーする必要がないように、NFSまたは他のサーバーをインストールすることをお勧めします。これはArchシステムで正しく設定できます。私はrsyncd
この目的のために設定したいのですが、ファイルにアクセスするには好きな方法を使用してください。
Chromebookから:
- ローカルでコンパイルされるのを防ぐためにに追加してください
FEATURES="getbinpkg"
。/etc/portage/make.conf
- リモートファイルアクセスを使用している場合に追加し
PORTAGE_BINHOST="protocol://path/to/your/chroot/usr/portage/packages"
てください/etc/portage/make.conf
。
よりGentoo Wikiのバイナリパッケージングガイドより多くの情報を知りたいです。
- に追加してください
私は以前この2つの方法をすべて試したことがあり、うまくいきました。 2つのアプローチの私の観察は次のとおりです。
distcc
両側に同じ設定があっても作業が難しいです。gcc
バージョンをbinutils
同じに保つことが最大の課題になります。ただし、一度起動するとかなり高速で、十分に高速な追加のコンピュータがあれば追加できます。環境は
chroot
それほど難しくありませんが、Portage環境の一部(CFLAGS
、USE
フラグ、マスク、構成ファイルなど)を変更する場合は、両方が一貫していることを確認する必要があります。それ以外の場合はパッケージで終わることがあります。間違った依存関係があります。 GentooはUSEフラグが一致していることを確認することをうまく実行しますが、バイナリパッケージのコンパイラオプションを追跡しません。 1つの利点は、コンパイルのためにChromebookのディスク容量とメモリ(不足)によって制限されないことです。
そのアプローチを使用するには、chroot
設定に必要なすべての面倒な作業を実行するスクリプトを作成します(/mnt/gentoo
chrootの場所を置き換えます)。
cp -L /etc/resolv.conf /mnt/gentoo/etc
mount -t proc proc /mnt/gentoo/proc
mount --rbind /sys /mnt/gentoo/sys
mount --make-rslave /mnt/gentoo/sys
mount --rbind /dev /mnt/gentoo/dev
mount --make-rslave /mnt/gentoo/dev
chroot /mnt/gentoo /bin/bash
umount -R /mnt/gentoo/dev
umount -R /mnt/gentoo/sys
umount /mnt/gentoo/proc
答え2
許可された回答に触発されましたが、コメントが多すぎます。
優秀Chromebook、システムマウントポイントからルートファイルシステムを取り外します/dev
。/sys
/run
mount -o bind / /mnt/gentoo
# If neccesary
mount -o bind /boot /mnt/gentoo/boot
mount -o bind /usr /mnt/gentoo/usr
場所/etc/exports
: /mnt/gentoo 192.168.0.2 (rw, sync, nohide, no_root_squash)
カーネルがNFS経由のエクスポートをサポートしていることを確認してください。関連サービスを開始します。 ( nfsd
)
優秀アーチLinuxボックス、/etc/fstab
:
# You might need to tune mount options for performance.
192.168.0.3:/mnt/gentoo /mnt/gentoo nfs defaults 0 0
Arch側(netmount
または)でnfs
正しいサービスが開始されていることを確認してください。リモートファイルシステムが正常にマウントされたことを確認します。
resolv.conf
ErikFからエレガントに盗まれました(実行中のシステムに既にあるのでコピーしないでください):
mount -t proc proc /mnt/gentoo/proc mount --rbind /sys /mnt/gentoo/sys mount --make-rslave /mnt/gentoo/sys mount --rbind /dev /mnt/gentoo/dev mount --make-rslave /mnt/gentoo/dev chroot /mnt/gentoo /bin/bash umount -R /mnt/gentoo/dev umount -R /mnt/gentoo/sys umount /mnt/gentoo/proc
/etc/portage/make.conf
設定が正しいことを確認してください。-march
いいえnative
!
今emerge
すぐ好きなように実行すると、すべてがChromebookのrootfsに直接インストールされます。
重要なヒント:この回答を興味深く見える可能性として追加しました。まだテストされていません。また、ルートファイルシステム(rw、no_root_squash)をエクスポートすると、ITセキュリティを尊重する人なら誰でも気味が悪くなります。したがって、非常に信頼できるネットワークでのみこれを実行してください。