私が探しているものと似ていますが、まさに私が望むものではないテーマをたくさん見ました。いくつかの背景知識を提供するために、私の最終目標は、いくつかのCコードをコンパイルし、バイナリを出力できるVagrantボックスを作成することです。私の要件は次のとおりです。
- OSイメージは非常に小さくなければなりません(約50 MBで十分で、小さいほど良いです)。
- 理想的には、使用したいすべてのツールをコンパイルしたくないので、pacmanまたはapt-getを介してArchまたはDebianパッケージリポジトリにアクセスできれば良いでしょう。
- 基本的なイメージに必要なのは、ツールチェーン、基本的なネットワーキング、そして人気のあるパッケージマネージャだけでした。
アイデアは、Packerを使用して他の特定のツールと一緒にこの基本イメージを使用し、それをVagrantボックスにパッケージ化することです。
これまで、私は次の分布を見ました。
- Tiny Core:サイズに関しては非常に興味深いですが(10 MB)、パッケージストアのため、これはできません。パックマンについては何も見たことがありません。
- Arch Linux:基本イメージは私のニーズに比べて非常に大きいです(> 600 MB)。カスタムイメージを作成することもできますが、これは最後の手段になります。
- Puppy:TahrpupはUbuntuに基づいていますが、それでも私の好みに合います。 (200MB)
- Alpine:82MB、十分ですが、パッケージマネージャはこれを禁止します。
答え1
行間を読んでみるとアーチが好きなようですね。を使用してカスタム画像を作成するのは簡単ですmkarchroot
。この例を見てください。
$ mkarchroot -C pacman.conf img packages
どこ
pacman.conf
パックマン設定ファイルは何ですかimg
ファイルを含むディレクトリ。packages
必要なパッケージのリストです(たとえば、で始まるbase grub
)。
img
その後、起動可能なファイルシステムにそのディレクトリの内容を書き込むことができます。ブートローダ(例:)を設定する必要がありますが、grub
ここでは説明しません。
あなたのニーズに合った動作システムを得るためには、パッケージリストを具体化する必要があるかもしれませんが、それを始めることをお勧めします。また、最小作業システムの場合は、すべてのパッケージが不要であるため、base
不要なパッケージを削除できます(必要なパッケージを明示的に一覧表示して省略base
)。
必要に応じて一般バージョンをダウンロードできますpacman.conf
。
curl https://git.archlinux.org/svntogit/packages.git/plain/trunk/pacman.conf.x86_64?h=packages/pacman > pacman.conf
(上記の例では、5.5Gサイズのファイルシステムを作成しました。)