web-dev-qa-db-ja.com

debootstrapとは何ですか?

debootstrapschrootで遊んでみました。 debootstrapを使用して環境をセットアップしています。 debootstrap--second-stageオプションを使用していません。

このオプションをいつ、どのように使用する必要がありますか。第二段階でdebootstrapは何をしますか?

10
cheffo

2つのステージを分離する必要があるのは、外部アーキテクチャのディストリビューションをブートストラップする場合のみです( CrossDebootstrap )。 manページ--foreignオプションの説明を参照してください。たとえば、x86マシンを使用して、埋め込みARMまたはPowerPCシステム用のDebian/Ubuntuインストールを作成します。

最初の段階では、必要な.debファイルをダウンロードし、指定したディレクトリに展開します。 2番目の段階では、すべてのパッケージ構成スクリプトを実行します。これは、ターゲットアーキテクチャを使用して(またはターゲットアーキテクチャをエミュレートするためにqemu-user-staticを使用して)実行する必要があります。

外部アーキテクチャ用のインストールを構築していない場合は、ステージが結合され、--second-stageオプションを無視できます。

10
Matt

debootstrap --second-stageの使用方法の例

Ubuntu 18.04 AMD64ホストからarm64 Ubuntu 18.04イメージをデブートする場合は、次のようにします。

Sudo apt-get install \
  debootstrap \
  qemu-user-static \
;
debootstrap_dir=debootstrap
Sudo debootstrap \
  --Arch arm64 \
  --foreign \
  bionic \
  "$debootstrap_dir" \
  http://ports.ubuntu.com/ubuntu-ports \
;
Sudo mkdir -p "${debootstrap_dir}/usr/bin"
Sudo cp "$(which qemu-aarch64-static)" "${debootstrap_dir}/usr/bin"
Sudo chroot "$debootstrap_dir" /debootstrap/debootstrap --second-stage
Sudo rm -f "$root_filesystem"

Ubuntu 18.04のqemu-user-staticパッケージには、qemu-debootstrapスクリプトも付属しています。このスクリプトは、基本的に私たちと同じですが、すべてのアーキテクチャに一般化されています。ただし、QEMUのメインソースツリーにはありません。

QEMUフルシステムエミュレーションで生成されたシステムを実行するための完全なセットアップを次に示します。 オンラインで事前にビルドされたQEMU Ubuntuイメージ(32ビット)はありますか?

Ubuntu 18.04でテスト済み。