Linuxカーネルはアンマウントされたext4パーティションを変更しますか?

Linuxカーネルはアンマウントされたext4パーティションを変更しますか?

4.9 Linuxカーネルが起動してMMCパーティションの存在を認識するときにパーティションがマウントされていない場合、どのようにパーティションを変更しますか?

ビルド時に「filesystem.img」のsha256(ext4)を事前に計算しました。

MMCパーティションにファイルシステムを次のように適用しました。

dd if=myfilesystem.img of=/dev/mmcblk0p2 bs=4096 count=XYZABC 

パーティションを再度読み、フラッシュが正しいことを確認できます。

dd if=/dev/mmcblk0p2 bs=496 count=XYZABC | sha256sum

ジャーナリング機能が無効になっています。ファイルシステムを読み取り専用で手動でマウントし、必要に応じてマウント解除できます。 sha256は変更されません。

ただし、再起動してチェックサムを再実行すると、パーティションのsha256は異なる結果を提供します。再起動する前に書き込んだパーティションはマウントされませんでした。ただし、カーネルでは mmcblk0p2 として認識されます。

カーネルは、パーティションをマウントする前にどのようにパーティションのデータを変更しますか?

ベストアンサー1

どの展開/環境から起動していますか?

これはファイルシステムチェックと同じくらい簡単で、最後のスキャンのタイムスタンプを更新するだけです。ハッシュ合計を取得する代わりに、1:1のコピーを作成してバイトごとに比較(cmp -l)して、正確に何が変更されたかを調べてください。

通常、ファイルシステムを変更するのはカーネルではなく起動するユーザー領域です。ほとんどのLiveCD(Live-USB-Stick)は、構造目的で使用されていても、独自のライブデータを取得するためにマウントしてファイルシステムを変更します。 systemd / udevを使用すると、あなたが認識できないかもしれない後ろに多くの魔法が起こっています。

initramfs/early bootを変更できる場合は、/proc/sys/vm/block_dump他の作業を実行する前に最初に設定してみてください。 .txtに記録されている内容に驚くことがありますdmesg

注:書き込みごとに別々のログに別の書き込みが発生するため、すでにカーネルメッセージをディスクに書き込んでいる場合は問題が発生します。

ファイルシステムを読み取り専用で手動でマウントし、必要に応じてマウント解除できます。

読み取り専用のマウントでも必ずしも不変が保証されるわけではありません。

# truncate -s 100M foobar.iso
# losetup --find --show foobar.iso 
/dev/loop0
# mkfs.ext4 foobar.iso
# md5sum foobar.iso 
59dea589bb84855e282d1415b3238230  foobar.iso
# mount -o ro /dev/loop0 loop/
# md5sum /dev/loop0
47c89177d619b55b701a1ddbde352c90  /dev/loop0

ここで何が起こっているのでしょうか?わからない、本当に…

--- a.txt   2018-12-26 20:39:13.578096660 +0100
+++ b.txt   2018-12-26 20:39:18.444742584 +0100
@@ -1536,11 +1536,10 @@
 *
 03000400  c0 3b 39 98 00 00 00 04  00 00 00 00 00 00 04 00  |.;9.............|
 03000410  00 00 10 00 00 00 00 01  00 00 00 01 00 00 00 00  |................|
-03000420  00 00 00 00 00 00 00 00  00 00 00 12 00 00 00 00  |................|
+03000420  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
 03000430  15 de d5 f7 6f 52 43 9b  a9 18 9b 3d 28 65 2d 51  |....oRC....=(e-Q|
 03000440  00 00 00 01 00 00 00 00  00 00 00 00 00 00 00 00  |................|
-03000450  04 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
-03000460  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
+03000450  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
 *
 03800400  58 64 00 00 00 90 01 00  00 14 00 00 40 6d 01 00  |Xd..........@m..|
 03800410  4d 64 00 00 01 00 00 00  00 00 00 00 00 00 00 00  |Md..............|

読み取り専用のアイデアを少し強化するには、mount -o loop,roそれらの間に読み取り専用ループデバイスを追加するを使用してください。しかし、それでさえ何も保証しません。

おすすめ記事