Mount
這怎麼可能:同一個分區掛載了兩次,每次掛載顯示不同的內容?
同一個分區掛載了兩次,在每個掛載點上顯示不同的內容。這怎麼可能?
# 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
) 顯示不同的內容。背景:我想修改 GRUB 的
menu.lst
文件,在 android-x86 中,該文件似乎只能通過 GRUB 的調試模式使用,或者通過安裝從 android 本身可用/dev/block/sda1
。我這樣做了,然後確實可以訪問menu.lst
(/mnt/tmp/grub/menu.lst
),但是這是如何工作的,以及為什麼/dev/block/sda1
根據掛載點顯示不同的內容超出了我的範圍![編輯:user488112給出的答案如下]
看起來
/data
實際上是安裝在/android-8.1-r6/data
的子目錄上/dev/block/sda1
,而不是安裝在 的“根目錄”上dev/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
就是這樣:
# 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)
tl;博士; 該
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