特定の量のディスク容量を割り当てずにbtrfsサブボリュームを使用して複数のLinuxディストリビューションを試すことはできますか?

特定の量のディスク容量を割り当てずにbtrfsサブボリュームを使用して複数のLinuxディストリビューションを試すことはできますか?

ext4などのファイルシステムを使用して新しいLinuxディストリビューションを使用する前に、既存のパーティションを縮小してからディストリビューションをインストールできるように、特定のサイズにロックされた新しいパーティションを作成する必要があります。これにはいくつかの欠点があります。

  • 一定量のストレージをすぐに展開にコミットする必要があります。
  • このストレージスペースを使用しないと、再割り当てが難しくなります。
  • ディスク操作は少し面倒です。特に、隣接する空きスペースを作成するためにアイテムを移動することがよくあります。

BTRFSサブボリュームはこの問題を解決できますか?実際、ディスク全体をボリューム/パーティションとして持ち、ブート、スワップ、ルート、およびプライマリパーティションがサブボリュームとして存在するため、占有スペースを占有できますか?いつでもサイズがゼロに初期化された新しいサブボリュームを作成できますか?本当ですか?

答え1

部分的にやってみました。

OpenSUSEのインストール(btrfsデフォルトで使用されています)で、次の操作を行いました。

  • サブボリューム(btrfs subvol create /debian)が作成されます。
  • インストールするdebootstrap
  • deboostrap --arch=amd64 stable /debian http://deb.debian.org/debian/
  • で、カーネルをchroot /debianインストールしbtrfs-toolsてパスワードを設定してください!
  • OpenSUSE ルートシェルに戻り、修正し、/boot/grub2/grub.cfg1 つのエントリを追加します。

Debian通常、私はOpenSUSEエントリをコピーし、名前()を変更し、linuxDebianカーネルとinitrdファイル(および行)rootflags=subvol=@/debianを使用します。 GRUBはデフォルトのルートFSを検索するため、両方のファイルが存在します.)linux=initrd=/debian/boot/

再起動... Debian サブボリュームから Debian を起動する Debian ブートエントリがあります。デフォルトでは何もマウントされませんが、たとえばOpenSUSEサブボリュームをマウントしてDebianでも使用できるようにすることmount -o subvol=@/home /dev/sda2 /homeができます。/homeもちろん編集を行うと/etc/fstab内容は永久に維持されます。 (そしてUUIDを使用する方が良いです)。

このインストールは完全に満足できません。 Suseでカーネルを更新すると、GRUB Debianエントリが削除されます。また、Debianでカーネルを更新してもGRUB設定は更新されません。 (GRUB os-proberはサブボリュームではなくパーティションのみをスキャンします。)

ただし、私の設定は、同じパーティションに複数のLinuxインストールをインストールできることを示していますbtrfs

OpenSUSEはルートサブボリュームの名前を指定します@。我々はそれを見るために使用することができますbtrfs list /。異なるディストリビューションで異なるルールを使用しているかどうかわかりません。最初の行はbtrfs subvol show /debian使用する名前を提供します。rootlags=subvol=

答え2

そうそうできます。すべての有名なディストリビューションを見てください。

  • Gentooは、ほとんどすべての最新のディストリビューションの既存のインストールから標準のGentooインストールプロセスを使用して、この方法で簡単にインストールできます。
  • Alpine Linuxは、(「一般的な」インストール方法の代わりに)ミニルートファイルシステムの1つを使用して、ほぼすべてのディストリビューションの既存のインストールからこの方法で簡単にインストールできます。
  • ArchiLinuxは最大この方法でインストールするのは通常のインストールプロセスでは簡単ですが、ブートローダの設定を特別に処理する必要があります。
  • debbootstrapDebian は既存のインストール(ライブシステムでインストールするように設計されています)を使用してからブートローダを手動で設定することで、比較的簡単にこの方法でインストールできます。
  • 理論的には、UbuntuはDebianと同じようにインストールできますが、debbootstrapUbuntu開発者はAIUIなどのインストールをまったくサポートしていないため、安定して動作しない可能性があります。
  • openSUSE、Fedora、およびほとんどのRHELクローン(CentOS、Alma、Rocky、Oracle Linuxなど)は理論的にはこの方法でインストールできますが、パーティションを設定するときに特別な手動構成が必要です。

しかし、このアプローチにはいくつかの実質的な問題があります。

  • でもできますが、インストールするほとんどのディストリビューションはこのように動作しますが、通常はこれらの設定管理を大幅にサポートしていません。特に、特にデフォルトで別のブートローダを使用するディストリビューションを選択すると、ブートローダの設定の問題が発生する可能性があります。
  • 上記の点で、ほとんどの人はこのタイプの設定を使用していないため、十分に文書化されておらず、完全にテストされておらず、問題が発生した場合はサポートを見つけるのが困難になる可能性があります。
  • BTRFS サブボリュームはファイルシステム自体に依存します。ディストリビューションがファイルシステムを停止すると失われます。みんなファイルシステムを破壊するディストリビューションだけでなく、ディストリビューション。
  • BTRFSサブボリュームブロックデバイスではありません。。これはZFS zvolsまたはLVM論理ボリュームとは異なります。理論的には、スワップファイルを作成して1つのスワップスペースを使用できますが、とにかく1つの共有スワップパーティションしか必要ありません(マルチブート設定を使用する場合は、システムを休止状態にする必要はありません。パーティションが必要な唯一の理由です。

一般的に使用する方が良いです。左心室容積フラットパーティションではなく、各ディストリビューションのルートファイルシステムに1つの論理ボリュームを作成します(/homeスワップスペース用に1つ、スワップスペース用に1つ追加)。それでも各展開のデフォルトのスペースサイズを設定する必要がありますが、オンラインでサイズ変更(および縮小)できるファイルシステムがある場合は、LVMを使用してすぐにサイズを変更できます。この設定では、まだ「一般」ブートパーティション(およびEFIシステムパーティション)が必要です。提案したBTRFS設定とは異なり、はいほとんどすべての主要なディストリビューションがうまくサポートされており、初期設定を慎重に実行する限り、デフォルトでは初期インストール後は手動操作なしで機能します。

答え3

私はZFSを使ってそのような設定をしました。概念はbtrfsに似ている必要があります。

私は3つのパーティションを使いました。

  • ESPは再検索
  • スワップパーティション(すべてのディストリビューションに共通)
  • /各デプロイメントは別々のボリューム(btrfsのサブボリューム)であり、/home共通のZFSプール

ESPのEFIディレクトリの下には、各リリースのサブディレクトリがあります(リリースのrefindアイコン名と一致するように命名)。このディレクトリはそのディストリビューション/bootと同様にバインドマウントされています/etc/fstab(IIRCはシンボリックリンクを使用するのが好きではないため、bootバインドマウントを使用しました)、カーネル、initramfs、およびブートrefind_linux.confパラメータを持つファイルが含まれています。

Refindは自動的に各ディレクトリを起動エントリとして検出し、デフォルトで最新の(タイムスタンプ付き)カーネルを起動します。複雑な grub 構成を処理する必要はなく、grub パッケージはすべてのインストールから削除できます。

唯一の潜在的な問題は、initramfs-toolsFAT32パーティションからinitramfsを作成できないことです(シンボリックリンクを作成しようとしています)。dracutとにかく優れているのでどこでも使います。

関連情報