Fedora 19에 /dev/loop* 장치를 더 추가하는 방법은 무엇입니까? 나는 다음을 원한다:
# uname -r
3.11.2-201.fc19.x86_64
# lsmod |grep loop
# ls /dev/loop*
/dev/loop0 /dev/loop1 /dev/loop2 /dev/loop3 /dev/loop4 /dev/loop5 /dev/loop6 /dev/loop7 /dev/loop-control
# modprobe loop max_loop=128
# ls /dev/loop*
/dev/loop0 /dev/loop1 /dev/loop2 /dev/loop3 /dev/loop4 /dev/loop5 /dev/loop6 /dev/loop7 /dev/loop-control
그래서 아무것도 변하지 않았습니다.
답변1
루트로 실행하면 losetup -f
사용 가능한 루프 장치가 없으면 필요에 따라 루프 장치가 자동으로 생성됩니다.
mknod
따라서 새로운 루프 장치를 만드는 가장 쉬운 방법은 직접 사용하는 대신 사용하는 것입니다 sudo losetup -f
. 이 방법을 사용하면 기존 루프 장치를 무료로 제공하거나 필요한 경우 자동으로 새 장치를 생성할 수 있습니다.
답변2
/dev
장치 노드를 생성하려면 mknod를 사용해야 합니다 . 의 장치 노드에는 dev
유형(블록, 문자 등), 메이저 번호, 마이너 번호가 있습니다. 다음을 수행하여 유형과 주요 번호를 찾을 수 있습니다 ls -l /dev/loop0
.
user@foo:/sys# ls -l /dev/loop0
brw-rw---- 1 root disk 7, 0 Oct 8 08:12 /dev/loop0
이는 루프 장치 노드의 블록 유형과 메이저 번호가 7이어야 함을 의미합니다. 각 장치 노드의 마이너 번호는 0부터 시작하여 1씩 증가하므로 Loop0은 0, loop7은 7입니다.
Loop8을 생성하려면 root 로 명령을 실행하세요 mknod -m 0660 /dev/loop8 b 7 8
. 이렇게 하면 /dev/loop8
스위치에 따라 지정된 권한을 가진 장치 노드가 생성됩니다 -m
(아마도 데스크톱 시스템을 실행 중이므로 이는 필요하지 않지만 모든 사람에게 장치 노드에 대한 읽기 및 쓰기 권한을 부여하지 않는 것이 가장 좋습니다).
답변3
하하, 완성되지 않았습니다 :) 새로운 /dev/loops를 추가하려면 이 스크립트를 사용하세요. 숫자 변경의 경우 스크립트는 기본적으로 0-7을 거치므로 8번째부터 시작하여 63번째를 반복합니다. 권한은 /dev/loop0에서 복사됩니다. :)
for i in {8..63}; do if [ -e /dev/loop$i ]; then continue; fi; \
mknod /dev/loop$i b 7 $i; chown --reference=/dev/loop0 /dev/loop$i; \
chmod --reference=/dev/loop0 /dev/loop$i; done
참고로 위의 레시피는 2014년의 레시피입니다. 2023년입니다 :) 현재 개발된 커널은 devfs 가상 파일 시스템을 통해 모든 /dev/ 장치를 생성합니다. 이전 버전과의 호환성을 위해 자동으로 0~7개의 루프 장치를 표시하지만 필요한 경우 추가 루프 장치를 생성합니다. 현재 1바이트 마이너 번호로 인코딩된 루프 장치 수에는 제한이 없습니다. 최신 커널은 2바이트 보조 번호를 지원하며, 이는 장치 수를 65535개로 제한합니다.
현재 이는 Docker 또는 K8S 컨테이너용 페더레이션 파일 시스템에서 사용됩니다.
결국 현대 시스템의 비밀은 쓸모가 없다