fstab は、次の fstab ファイルへのリンクです。
# <file system> <mount pt> <type> <options> <dump> <pass>
/dev/root / ext2 ro,noauto 0 1
proc /proc proc defaults 0 0
/dev/mmcblk0p10 /data ext4 defaults 0 0
overlay / overlay
lowerdir=/,upperdir=/data/rfs_overlay,workdir=/data/rfs_overlay_work 0 0
fstabを使用すると、上書きは適用されず、mountコマンドの出力には上書き行は含まれません。
fstab行を次のように変更してみました。
# <file system> <mount pt> <type> <options> <dump> <pass>
overlay /data/rfs_overlay overlay
lowerdir=/,upperdir=/data/rfs_overlay_upper,workdir=/data/rfs_overlay_work 0 0
その後、mountコマンドから次の行を取得します。
overlay on /data/rfs_overlay type overlay
(rw,relatime,lowerdir=/,upperdir=/data/rfs_overlay_upper,workdir=/data/rfs_overlay_work)
ただし、rootfs で test.txt ファイルを生成しようとすると、次の結果が表示されます。
touch test.txt
touch: test.txt: Read-only file system
rootfsをrwに変更してrootfsにファイルを作成すると、ファイルが屋根とオーバーレイに作成されることに注意する価値があります。
mount -o remount,rw /
touch test.txt
find / -name test.txt
/data/rfs_overlay/root/test.txt /root/test.txt
私は成功せずに次のリンクを試しました。
答え1
まず、2回目の試みで何が起こるのかを理解する必要があります。
# <file system> <mount pt> <type> <options> <dump> <pass>
overlay /data/rfs_overlay overlay
lowerdir=/,upperdir=/data/rfs_overlay_upper,workdir=/data/rfs_overlay_work 0 0
- あなたのサブディレクトリ
/
。 lowerdirは静的でなければならず、読み取り専用でなければなりません。このディレクトリを「デフォルト」と考えることができます。元の変更されていないファイルです。 - 親ディレクトリはです
/data/rfs_overlay_upper
。変更を保存する必要があるフォルダまたはサブディレクトリの「delta」。 - この場合、マウントポイントはです
/data/rfs_overlay
。これは、このインストールが/
lowerdir("base"-) と upperdir("delta"-) の間のマージ結果になることを意味します/data/rfs_overlay_upper
。
たとえば、あなたの場合、ファイルを作成すると、/data/rfs_overlay/afile
そのファイルがupperdir:に作成されたことがわかります/data/rfs_overlay_upper/afile
。そのため、lowerdirは変更されません。upperdirには、lowerdirとマージされたフォルダ間の変更である「デルタ」が含まれています。
/
あなたの場合は、のサブディレクトリである変更を行いました/data/rfs_overlay
。前に述べたように、lowerdirは静的に保持する必要があります(したがってr / oです)。子ディレクトリまたは親ディレクトリに触れるのではなく、マージされたインストールにのみ触れてください。カーネルは親ディレクトリを変更する必要があります。
2回目の試みで何が起こるのかを説明します。
最初の試みについて。まず、2回インストールしようとしていますが、/
これは不可能です。
理論的には、まず、子、親、および作業ディレクトリを含むパーティションをマウントする必要があります。最後に、マージされたターゲットパスをインストールする必要があります。
しかし、あなたのケースでは、両方のアプローチは効果がないようです。あなたはあなたのマージフォルダを望んでいます/
(だから私が言ったように、それをインストールする必要があります後ろにlower/upper/working ディレクトリ)。しかし、ルートファイルシステムも最初にマウントする必要があります!残りのブラケットは上部に取り付ける必要があるためです。だから不可能です。
私はあなたの目標がrootfsの一種の「スナップショット」を提供することによってこれを静的に保ち、すべての変更を親ディレクトリに書き込むことを前提としています。それが必要な場合は、ルートファイルシステムスナップショットをサポートする書き込み時にコピーファイルシステムを使用することをお勧めします。BTFSまたはZFS。もちろん、これを行うにはコンソールを再インストールする必要があります。ただし、目的の方法でオーバーレイを使用することはできません。