맨페이지/proc/pid/마운트 정보필드가 있다고 가정해 보세요.
36 35 98:0 /mnt1 /mnt2 rw,noatime master:1 - ext3 /dev/root rw,errors=continue
(1)(2)(3) (4) (5) (6) (7) (8) (9) (10) (11)
(10)마운트 소스: 파일 시스템 관련 정보 또는 "없음".
이 필드(10)는 정확히 무엇을 의미합니까? 내 실험에서 이상한 결과가 나왔습니다.
279 23 7:0 /file//deleted /home/xtricman/file_mnt_point rw,relatime shared:158 - ext4 /dev/loop0 rw
301 23 7:0 /file2//deleted /home/xtricman/file_mnt_point2 rw,relatime shared:158 - ext4 /dev/loop0 rw
268 23 7:0 / /mnt rw,relatime shared:159 - ext4 /dev/loop0 rw
313 23 7:0 / /home/xtricman/home_mnt rw,relatime shared:183 - ext4 /home/xtricman/loop1 rw
/dev/loop0
mount
이렇게 하면 프로그램에서 자동으로 생성되고 mount a.ext4 /mnt
수동 /home/xtricman/loop1
으로 생성됩니다 mknod loop1 b 7 0
.
그러면 제가 보고 있는 결과는 대부분 설명할 수 있을 것 같은데, 왜 장치 노드 경로가 (10) 필드에 나타나는 걸까요? 저는 ArchLinux에서 Linux 5.0.4 커널을 사용하고 있습니다.
답변1
이 필드(10)는 정확히 무엇을 의미합니까?
source
이는 시스템 호출( )에 전달된 첫 번째 인수이거나 mount(2)
다음에 의해 제공됩니다.show_devname()
파일 시스템이 이를 구현하는 경우 콜백.
실제로 는 존재하지 않을 수 있으므로 실제로 존재할 수 있는 (7)
선택적 필드의 목록 입니다 .(10)
(9)
/dev/loop0
이렇게 하면 mountmount a.ext4 /mnt
및/home/xtricman/loop1
manual 에 의해 자동으로 생성됩니다mknod loop1 b 7 0
.
/dev/loop0
시스템 호출을 사용할 때 "자동 생성"이 없습니다 mount(2)
.
이것은mount(8)
유용일반 파일 "장치" 인수(및 일부 DWIM 추측 사용)를 사용하여 호출하면 먼저 사용 가능한 루프 장치를 찾아 인수로 제공된 파일에 추가한 다음 mount(2)
루프 장치의 경로와 마운트 지점을 인수로 사용합니다. .
예:
# strace -e trace=ioctl,mount mount /tmp/foo $'/tmp/foox\tX\nX\\X X'
ioctl(3, LOOP_CTL_GET_FREE) = 0
ioctl(4, LOOP_SET_FD, 3) = 0
ioctl(4, LOOP_SET_STATUS64, {lo_offset=0, lo_number=0, lo_flags=LO_FLAGS_AUTOCLEAR, lo_file_name="/tmp/foo", ...}) = 0
ioctl(3, BLKGETSIZE64, [536870912]) = 0
ioctl(3, CDROM_GET_CAPABILITY, 0) = -1 EINVAL (Invalid argument)
ioctl(3, BLKSSZGET, [512]) = 0
mount("/dev/loop0", "/tmp/foox\tX\nX\\X X", "btrfs", MS_MGC_VAL, NULL) = 0