나는 이것을 위해 몇 가지 웹 검색을했지만 장치 노드와 연관된 커널 모듈을 가져 오는 것에 대한 결과 만 찾을 수있었습니다. 현재 시스템의 루트 장치 및 해당되는 경우 루트 장치의 상위 장치 (예 : /dev/sda
은 /dev/sda2
의 "상위")의 주 번호와 보조 번호를 얻을 수 있습니까? 커널이 이것을 얻기위한 함수를 내보내거나 간접적으로 가져와야합니까?커널 모듈에서 루트 장치 얻기
답변
장치 노드와 연관된 모듈이 없습니다. 아마 당신은 루트 디렉토리가 프로세스의 로컬 (프로세스 구조는 루트 디렉토리에 대한 inode 참조를 저장합니다 --- 이것은 특권이 부여 된 chroot(2)
시스템 호출로 변경 될 수 있음)과 현재 작업 디렉토리 (경로를 풀기 위해
chroot(2)
콜을 만든되지 않은
, 다음
opendir("/")
및이를 수행하려면 : 루트 디렉토리의 책임이있는 장치를 알고 싶다면당신은 두 가지 옵션이 있습니다)
/
로 시작하지 그것에fstat(2)
(또는에서stat(2)
syscall을 할 수 있습니다.디렉토리). 그러면 루트 디렉토리가있는 장치에st_dev
필드가struct stat
으로 반환됩니다.dev_t
숫자 형식으로되어 있으며 일부 비트는 주 번호와 부 번호를 나타냅니다.MKDEV(ma,mi)
및MAJOR(dev)
및MINOR(dev)
매크로는<linux/kdev_t.h>
에 정의되어 메이저 번호와 마이너 번호에 액세스 할 수 있습니다. 물리 디스크를 얻으려면 부 번호를0xf0
으로 가리고 디스크의 전체 번호를 가져옵니다.프로세스가
chroot(2)
시스템 콜을 만들었으므로 시스템의 실제 루트 디렉토리에 액세스 할 수 없습니다./proc
파일 시스템에 액세스 할 수 있으면mount(1)
명령을 호출하여 마운트 테이블을 가져올 수 있습니다. 해당 테이블에서/
항목을 검색 한 다음/dev/sd<disk>
항목을 가져올 수 있습니다. 일단 장치를 얻으면 부모 장치를 가져 오는 것이 쉽습니다. 마지막 지점에서했던 것처럼 번호를 마스크하여 실제 디스크의 부 번호를 가져올 수 있습니다.
각 블록 장치의 통계를 보여주는 /proc/diskstats
파일을 볼 수도 있습니다. 각 행의 처음 세 필드에 주요, 보조 및 장치 이름이 표시됩니다.
참고
는 RAID 장치 나 볼륨 관리자 디스크로, 파티션을 허용하지 말자 일부 디스크 arrangementes있다. 이 경우 물리적 디스크 (또는 디스크가 여러 개있을 수 있으므로)를 얻는 것이 더 어렵습니다.
- 1. 커널 모듈에서 입력 장치에 대한 참조 얻기
- 2. Linux 커널 모듈에서 화면 밝기 얻기
- 3. 리눅스 커널 모듈에서 네트워크 장치 속도를 결정하는 방법
- 4. 커널 모듈에서 dmesg 읽기
- 5. 커널 모듈에서 fd 만들기
- 6. 커널 모듈에서 난수 생성
- 7. 커널 모듈에서 kfree 사용
- 8. 커널 모듈에서 'assert'는 무엇입니까?
- 9. 커널 모듈에서 블록 장치에 접근하기
- 10. 커널 모듈에서 커널 변수/매개 변수 변경
- 11. 특정 모듈에서 사용하는 모든 커널 모듈의 이름 얻기
- 12. 커널 모듈에서 udev를 지원하는 방법은 무엇입니까?
- 13. 커널 모듈에서 proc_pid_cmdline을 사용하는 방법
- 14. 커널 모듈에서 GetTickCount와 동일한 의미입니다.
- 15. copy_to_user가 커널 모듈에서 작동하지 않습니다.
- 16. 리눅스 커널 모듈에서 xlib 사용하기
- 17. 커널 모듈에서 쉘 명령 실행
- 18. 커널 모듈에서 CPU 확장 구현
- 19. 커널 모듈에서 obj-m 변수
- 20. Linux 커널 모듈에서 .mod.c MODULE_ALIAS 사용자 정의
- 21. 특정 장치 (다른 커널 모듈의 코드)에서 커널 모듈을 언로드하십시오.
- 22. 비 gpl 커널 모듈에서 어떤 커널 API를 사용할 수 있습니까?
- 23. 커널 모듈에서 변경된 내용을 커널 모듈의 파일로 되 돌리십시오.
- 24. 커널 모듈에서 리눅스 커널 버전 번호를 출력하는 방법
- 25. Linux 커널/커널 모듈에서 사용자 공간 프로세스를 "첨부"
- 26. 리눅스 커널 모듈의 문자 장치
- 27. 커널 모드에서 WinUSB 장치 액세스
- 28. 리눅스 커널 무선 장치 드라이버
- 29. Linux 커널 장치 드라이버의 filp_open
- 30. 파일의 루트 경로 얻기
내 질문에 대한 대답이 아닙니다. – Melab