O USB HDD OpenSuse obtém o nome do nó do dispositivo “/ dev / sdb” do HDD interno

0

SO: OpenSuse Leap 42.2, Kernel 4.4.76-1-default

Eu tenho o seguinte problema:

Quando eu conecto meu dispositivo de armazenamento USB durante o tempo de execução, ele recebe o nome do nó do dispositivo /dev/sdk atribuído, o que é bom.

Se eu reiniciar a máquina com a unidade USB externa conectada, o sistema operacional decide conectar o dispositivo de armazenamento USB a /dev/sdb , que deve ser um disco rígido interno.

Eu preciso de uma maneira de forçar a unidade USB externa a obter um nome de nó de dispositivo maior ou igual a /dev/sdk

De this Thread eu aprendi até agora:

According to udev manual, there's no way to change the names of files in the /dev/ directory: NAME The name to use for a network interface. The name of a device node cannot be changed by udev, only additional symlinks can be created.

Isso significa para mim que não posso usar a regra udev para forçar o Kernel / Driver a atribuir ao meu dispositivo USB um nome de determinado dispositivo como /dev/sdk .

Eu criei um link simbólico usando este Thread e o Symlink funciona. Agora eu tenho um alias estático usbDevice -> sdb1 / usbDevice -> sdk1 que se refere à unidade USB externa, independentemente de estar montada em /dev/sdk ou /dev/sdb .

Mas isso não resolve meu problema porque não altera o nome do nó real do meu dispositivo USB.

Alguém sabe como posso:

  • Forçar este dispositivo USB específico para obter o nome de nó atribuído maior ou igual a /dev/sdk

Talvez informando ao sistema operacional que ele deve procurar dispositivos USB depois que todos os outros dispositivos estiverem conectados à pasta /dev .

Eu não me importo com o nome do nó do dispositivo em que o dispositivo USB externo é atribuído, desde que ele não esteja substituindo um dos nós de dispositivo já usados.

Alguém pode me dar uma dica por onde começar? Serviço Systemd?

    
por Viktor Carlson 08.12.2017 / 11:04

2 respostas

0

Uma maneira de forçar a ordem dos dispositivos que funcionou para mim (pelo menos para os drivers da placa de som) é garantir que o driver SATA seja compilado no kernel e carregar o módulo de armazenamento em massa USB posteriormente durante a inicialização. Dessa forma, você garante que sua unidade interna receba /dev/sdb

    
por 08.12.2017 / 11:13
0

Nunca tente forçar os discos rígidos para um determinado dispositivo /dev/sd* . O kernel enumera esses dispositivos e eles podem inicializar em uma ordem diferente de inicialização para inicialização. Se você tentar se intrometer com isso, você só vai quebrar as coisas.

Em vez disso, use os links simbólicos já fornecidos para fornecer nomes persistentes. Estes podem ser encontrados nos diretórios /dev/disk/by-* . Você pode escolher entre um hardware caminho (por exemplo, alguma porta USB em algum dispositivo USB), UUID s que são atribuídos a volumes e funcionam independentemente de onde o disco rígido está conectado, rótulos atribuídos aos volumes com tune2fs e que podem ser facilmente lembrados, ou Id s que consiste no fabricante e no modelo do disco rígido.

Use-os em todos os lugares em que você queria usar /dev/sdk e você é bom.

    
por 08.12.2017 / 12:10