ビルド済みのDebianインストーラにZFSを追加する

ビルド済みのDebianインストーラにZFSを追加する

私は通常のパーティション設定を介さずに(自動かどうかにかかわらず)、利用可能なすべてのHDからルートzpoolを自動的に生成する事前に構築されたDebian(拡張)インストーラ(法的理由で内部)を作成しようとしています。

ZFSルートで見たほとんどのアドバイス(おそらく、より権威のあるガイド)には、debianをインストールしてから手動でLiveCDから起動し、そのLiveCDにZFSをインストールし、ZFSを設定してから、新しいchrootZFSルートに移動してすべてを再インストールする必要があります。これはエラーが発生しやすく退屈なようです。それでもわかります。法的理由Debian インストーラには ZFS が組み込みオプションとして含まれない場合があります。

私の研究では、多くの人が管理者に同様の質問をしましたが、常に法的な説明に変わり、質問に対する回答がないメーリングリストスレッドのいくつかを見つけました。 (もし再び見つけることができれば共有しますが、読むのはほとんど時間の無駄です)。

見て安定したサンプルプロファイル、次のような興味深い行を見ることができます。

### Apt setup
# You can choose to install non-free and contrib software.
#d-i apt-setup/non-free boolean true
#d-i apt-setup/contrib boolean true

もう少し下へ:

# Individual additional packages to install
#d-i pkgsel/include string openssh-server build-essential

実際にZFSのインストールを要求できるため、これは有望に見えます。

d-i apt-setup/contrib boolean true
d-i pkgsel/include string zfs-dkms zfsutils-linux zfs-initramfs

ただし、パーティショニング段階の後に適切な設定とパッケージのインストールが行われるため、遅すぎる可能性があります。

私が見つけたこのガイドこれはインストールプロセスに無料でないパッケージを追加する別の方法を説明します(tl;dr debをダウンロードしてdpkg-deb -xinitrdに入れてからisoを再作成します)。これは(私の考えでは)パーティショニングステップの前に使用できるという利点があります。 ZFSをインストールするのと同様のことを行うことが可能です(ただし、initrdに書き込む前に最初にコンパイルする必要があります)。ここで難しいのは、分割ステップをZFSプールを作成するスクリプトに置き換えるためのフックが必要なことです。@ferencwagnerでコメントからpartmanの一部のLVMエントリの変更に対するSE Unixスレッド有望に見えますが、これを達成する方法についての具体的な詳細はありません(そして認められた答えによれば、partmanはそのようなカスタムタスクを実行できないことを示唆しています)。

これを検討してください:

  1. d-i apt-setup/contribルートfsを作成するときにZFSを使用するのは本当に遅すぎましたかd-i pkgsel/include
  2. 上記が正しい場合、パーティション化段階でZFSを使用できるようにする正しい方法はinitrdにパッケージを含めることですか?
  3. (1) が正しいかどうかにかかわらず、partman ステップをカスタム ZFS ルートプール作成にどのように変更できますか?

ベストアンサー1

ZFSルートが必要なので、Debian-InstallerにZFSサポートを追加する必要がありますが、pkgsel/includeこれは役に立ちません。正しい方法はすでにDebian を起動著者: フランス・ポフ:

partman前のメニューに含まれているカスタムudeb(つまり、3500から4000の番号付きメニュー項目)を作成し、partmanのすべての基本機能を実行し、partmanと同じ擬似パッケージを提供する必要があります。

partmanの基本機能は次のとおりです。

  • /target ディレクトリの作成
  • パーティションの作成
  • /target/etc/fstab 生成
  • /target にパーティションをマウントします。

カスタム udeb の作成に関する基本情報については、次をご覧ください。Debian インストーラの内部

(以前のリンクを現在のリンクに置き換えました。)

実験のために事前にシードしanna/choose_modules、partmanが表示されたらシェルにログインし、必要なファイル/スクリプトをダウンロードし、インストーラ環境でテストしてnetwork-consolepartman操作を手動で実行することをお勧めします(partmanを使用してマウントポイントを設定できます) 。その後、udebsをビルドするか、単に追加のファイルを置くことができます。wget/rootinitrdと入力してくださいまたは、initrdオーバーレイ(ext / sys / iso / pxelinuxによってロードされる追加のinitrdイメージ)に入ります。

適切なパートマン統合は驚くべき成果になるかもしれませんが、これを達成する方法を実際に案内することはできません。これ古い文書それでも関連性が高いかもしれません。次の既存のモジュールを使用できます。patman-btrfsインスピレーションを求めてください。しかし、尋ねるのは良いことです。Debian を起動これは、重複した努力を避けたり、間違った道に行くことから始まります。

おすすめ記事