OpenSuse USB HDD 내부 HDD의 장치 노드 이름 "/dev/sdb"를 가져옵니다.

OpenSuse USB HDD 내부 HDD의 장치 노드 이름 "/dev/sdb"를 가져옵니다.

운영 체제: OpenSuse Leap 42.2, 커널 4.4.76-1 - 기본값

다음과 같은 질문이 있습니다.

런타임에 USB 저장 장치를 연결하면 할당된 장치 노드 이름을 가져오는데 /dev/sdk괜찮습니다.

외부 USB 드라이브가 연결된 상태에서 컴퓨터를 다시 시작하면 운영 체제는 /dev/sdbUSB 저장 장치가 내부 하드 드라이브여야 할 때 해당 장치에 연결하기로 결정합니다.

외부 USB 드라이브가 다음보다 크거나 같은 장치 노드 이름을 갖도록 강제하는 방법이 필요합니다./dev/sdk

~에서이 주제지금까지 배운 것:

udev 매뉴얼에 따르면 /dev/ 디렉토리에 있는 파일 이름은 변경할 수 없습니다. NAME 네트워크 인터페이스에 사용되는 이름입니다. udev는 장치 노드의 이름을 변경할 수 없으며 추가 기호 링크만 생성할 수 있습니다.

이것이 나에게 의미하는 바는 udev커널/드라이버가 USB 장치에 특정 장치 노드 이름을 할당하도록 강제하는 규칙을 사용할 수 없다는 것입니다 /dev/sdk.

나는 다음을 사용하여 심볼릭 링크를 만들었습니다.이 주제그리고 심볼릭 링크가 작동합니다. 이제 usbDevice -> sdb1 / usbDevice -> sdk1외부 USB 드라이브의 장착 여부에 관계없이 외부 USB 드라이브를 참조하는 /dev/sdk정적 별칭이 생겼습니다 /dev/sdb.

그러나 이것은 내 USB 장치의 실제 노드 이름을 변경하지 않기 때문에 내 문제를 해결하지 못합니다.

내가 어떻게 할 수 있는지 아는 사람 있나요?

  • 이 특정 USB 장치가 다음보다 높거나 같은 할당된 노드 이름을 갖도록 강제합니다./dev/sdk

/dev다른 모든 장치가 해당 폴더에 연결된 후 USB 장치를 찾아야 한다고 OS에 지시하는 것일 수도 있습니다 .

이미 사용 중인 장치 노드 중 하나를 대체하지 않는 한 외부 USB 장치에 어떤 장치 노드 이름이 할당되는지는 신경 쓰지 않습니다.

어디서부터 시작해야 할지 힌트를 줄 수 있는 사람이 있나요? 시스템 서비스?

답변1

나에게 효과가 있었던 장치 순서를 강제하는 한 가지 방법(적어도 사운드 카드 드라이버의 경우)은 SATA 드라이버가 커널로 컴파일되고 나중에 부팅 프로세스에서 USB 대용량 저장 장치 모듈을 로드하는지 확인하는 것입니다. 이렇게 하면 내부 드라이브가/dev/sdb

답변2

안 돼요하드 드라이브를 특정 /dev/sd*장치에 강제로 연결해 보십시오. 커널은 이러한 장치를 열거하며 부팅할 때마다 다른 순서로 초기화될 수 있습니다. 방해하려고 하면 일이 망가질 뿐입니다.

대신 제공된 기호 링크를 사용하여 영구 이름을 제공하세요. 이러한 내용은 /dev/disk/by-*카탈로그에서 찾을 수 있습니다 . 하드웨어를 선택할 수 있습니다.(예: 일부 USB 장치의 일부 USB 포트)보편적으로 고유한 식별자볼륨에 할당되며 하드 드라이브가 어디에 연결되어 있든 작동합니다.상표볼륨에 할당 tune2fs하고 이를 쉽게 기억할 수 있습니다.IDs는 하드 드라이브의 제조업체와 모델로 구성됩니다.

원하는 곳에 사용하면 됩니다 /dev/sdk.

관련 정보