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그 사이에 읽기 전용 루프 장치를 추가하는 를 사용하세요. 그러나 그것조차도 아무것도 보장하지 않습니다.

관련 정보