이것이 어떻게 가능합니까? 동일한 파티션이 두 번 마운트되고 각 마운트가 다른 콘텐츠를 표시합니까?

이것이 어떻게 가능합니까? 동일한 파티션이 두 번 마운트되고 각 마운트가 다른 콘텐츠를 표시합니까?

동일한 파티션이 두 번 마운트되어 각 마운트 지점에 다른 콘텐츠가 표시됩니다. 어떻게 이럴 수있어?

# mkdir /mnt/tmp
# mount -t ext4 -o noatime /dev/block/sda1 /mnt/tmp/

# mount | grep sda1
/dev/block/sda1 on /data type ext4 (rw,seclabel,noatime)
/dev/block/sda1 on /mnt/tmp type ext4 (rw,seclabel,noatime)

# ll /data
drwx------  2 root     root       4096 2021-08-19 18:34 adb
drwxrwxr-x  2 system   system     4096 2021-08-19 18:34 anr
drwxrwx--x  8 system   system     4096 2021-08-21 22:42 app
(...)
drwx--x--x  2 system   system     4096 2021-08-19 18:34 user
drwx--x--x  3 system   system     4096 2021-08-19 18:34 user_de
drwxrwx--x  3 root     root       4096 2021-08-19 18:34 vendor

# ll /mnt/tmp/                                                    
drwxr-xr-x 3 root root 4096 2021-08-19 18:33 android-8.1-r6
drwxr-xr-x 2 root root 4096 2021-08-19 18:33 grub
drwx------ 2 root root 4096 1970-01-01 01:00 lost+found

동일한 파티션이 /dev/block/sda1두 번 마운트되고 각 마운트 지점( /data/mnt/tmp)은 서로 다른 내용을 표시합니다.

menu.lst배경: android-x86에서는 GRUB의 디버그 모드를 통해서만 사용할 수 있거나 mount 를 통해 android 자체에서 사용할 수 있는 GRUB 파일을 수정하고 싶습니다 /dev/block/sda1. 이렇게 했고 실제로 menu.lst( /mnt/tmp/grub/menu.lst)에 액세스할 수 있지만 작동 방식과 /dev/block/sda1마운트 지점에 따라 다른 콘텐츠를 표시하는 이유는 제 능력이 아닙니다.

[편집하다:아래 사용자 488112의 답변]

/data실제로 는 의 "루트"가 아닌 의 /android-8.1-r6/data하위 디렉터리에 설치된 것 같습니다 . 불완전함(마운트된 "루트"가 아닌 장치 블록만 표시함):/dev/block/sda1dev/block/sda1# mount

# egrep '/data|/mnt/tmp' /proc/self/mountinfo                         
18 15 8:1 /android-8.1-r6/data /data rw,noatime shared:3 - ext4 /dev/block/sda1 rw,seclabel
237 28 8:1 / /mnt/tmp rw,noatime shared:23 - ext4 /dev/block/sda1 rw,seclabel

답변1

그게 다야 :

# cd /tmp
# mkdir foo bar
# mount -B /usr/bin foo
# mount -B /var/log bar
# mount | egrep 'foo|bar'
/dev/sda1 on /tmp/foo type ext4 (rw,relatime,errors=remount-ro)
/dev/sda1 on /tmp/bar type ext4 (rw,relatime,errors=remount-ro)

너무 깁니다;dr;이 명령의 출력은 mount최신 Linux 버전에서 신뢰할 수 없습니다. 대신 이것을 사용하십시오 cat /proc/self/mountinfo(형식은 리소스에 문서화되어 있습니다 man 5 mountinfo). 이는 "장치"뿐만 아니라 마운트의 "루트"도 표시합니다.

# egrep 'foo|bar' /proc/self/mountinfo 
380 26 8:1 /usr/bin /tmp/foo rw,relatime shared:1 - ext4 /dev/sda1 rw,errors=remount-ro
457 26 8:1 /var/log /tmp/bar rw,relatime shared:1 - ext4 /dev/sda1 rw,errors=remount-ro

관련 정보