web-dev-qa-db-ja.com

chroot環境でdev、proc、sysをマウントしますか?

私はカスタムピッキングパッケージでLinuxイメージを作成しようとしています。
私がやろうとしているのは、私がXOラップトップで使用するパッケージを手作業で作成することです。必要なパッケージをすべてビルドしてフラッシュするだけでは、実際のXOハードウェアでパッケージのコンパイルにはかなり時間がかかるXOへのイメージは、私は時間とスペースを節約することができます。

私がいくつかのパッケージをインストールしようとしたとき、proc、sys、devディレクトリがないために設定に失敗しました。それで、私は他の場所から私は自分のchroot環境にHost proc、...ディレクトリを "マウント"する必要があることを学びました。

私は2つの構文を見ましたが、どちらを使用すればよいかわかりません。

ホストマシンの場合:

  mount --bind /proc <chroot dir>/proc 

そして別の構文(chroot環境で):

  mount -t proc none /proc

どちらを使用すればいいですか、そしてその違いは何ですか?

81
Patrick

/proc/sysについては、どちらの方法を使ってもいいと思います。どちらも特別なファイルシステムであるため、何度でも再作成できます(バインドマウント方式ではホストシステムとまったく同じマウントを使用し、他の方式では新しいマウントを使用します)。私は常にガイドで推奨されているバインドマウントを見てきたので、それを使うことにします。私の知る限りでは、本当の意味での違いはありません。

ただし、/devは通常、udevによって管理されるtmpfsマウントであるため、実際にはホストマシンと同じファイルシステムである必要があります。つまり、バインドマウント方法を使用する必要があります。

このchrootがしばらくの間続くことになるならば、あなたは物事を単純化するためにホストシステムの/etc/fstabにこれらのエントリーを入れることができます。

43
Zifre

Arch Linux Wiki は以下のコマンドを提案します。

cd /mnt/Arch # or where you are preparing the chroot dir
mount -t proc proc proc/
mount -t sysfs sys sys/
mount -o bind /dev dev/

彼らが私のために働いたことを確認することができます。

103
gacrux

Gentooハンドブック は、/ procと/ devを再マウントするためにこれら2つのコマンドを明確に示しています。私はそれらを数回使ったことがあります。

mount -t proc none /mnt/chroot/proc
mount -o bind /dev /mnt/chroot/dev

/ sysは単なる普通のフォルダなので、ハードリンクを張ることができるはずです。

ln /sys /mnt/chroot/sys
12
robert

Arch Linuxがスクリプトを作成した Arch-chroot ;この人気のある質問に注目する価値があるかもしれません。 Arch-install-scripts-15-1-any.pkg.tar.xzをダウンロード

これはArch-LinuxManjaroの両方で、関連するさまざまな問題の面倒を見てくれます。おそらく、ParabolaのようなArch - 派生物も同様に互換性があります。

単純な標準のchrootをManjaroの二次インストールに追加すると、実行することができなくなります。

pacman --sync linux

(システムクラッシュ後の銀の弾丸)、その行を

Arch-chroot /run/media/*YOURSELF*/manja-disk2

次の方法でArch-derivateの二次インストールを修正することができます。

pacman --sync linux

魔法のように。 bashスクリプトArch-chrootは、/dev /sys /procおよびその他多くの面倒を見ます。これらは標準のchrootによって残されています。

Arch-chrootを使う

1
y guy