AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / unix / Perguntas / 444936
Accepted
Gerald Schneider
Gerald Schneider
Asked: 2018-05-21 04:04:09 +0800 CST2018-05-21 04:04:09 +0800 CST 2018-05-21 04:04:09 +0800 CST

Montando exfat com regras udev automaticamente

  • 772

Estou tentando montar vários cartões SD automaticamente com as regras do udev. Comecei com essas regras , resolvi um problema com ajuda dessa questão , e agora estou com a seguinte situação:

Dispositivos formatados em ext4 e vfat funcionam perfeitamente, mas quando conecto um disco formatado em exfat ou NTFS, obtenho a seguinte linha em mount:

/dev/sda1 on /media/GoPro type fuseblk (rw,nosuid,nodev,noatime,user_id=0,group_id=0,default_permissions,allow_other,blksize=4096)

E a listagem de diretórios fica assim:

$ ls -l /media/
ls: cannot access '/media/GoPro': Transport endpoint is not connected
total 0
d????????? ? ? ? ?            ? GoPro

Não consigo fazer nada sob esse ponto de montagem, nem mesmo como root:

$ sudo ls -l /media/GoPro
ls: cannot access '/media/GoPro': Transport endpoint is not connected

Os únicos problemas que posso encontrar de outras pessoas com a mensagem de erro Transport endpoint is not connectedparecem acontecer depois que um disco não foi desmontado corretamente. Mas eu tenho o problema enquanto o disco está montado.

Minhas regras atuais do udev são assim:

KERNEL!="sd[a-z][0-9]", GOTO="media_by_label_auto_mount_end"
ACTION=="add", PROGRAM!="/sbin/blkid %N", GOTO="media_by_label_auto_mount_end"

# Do not mount devices already mounted somewhere else to avoid entries for all your local partitions in /media
ACTION=="add", PROGRAM=="/bin/grep -q ' /dev/%k ' /proc/self/mountinfo", GOTO="media_by_label_auto_mount_end"

# Global mount options
ACTION=="add", ENV{mount_options}="noatime"
# Filesystem-specific mount options
ACTION=="add", PROGRAM=="/sbin/blkid -o value -s TYPE %E{device}", RESULT=="vfat|ntfs", ENV{mount_options}="%E{mount_options},utf8,uid=1000,gid=100,umask=002"
ACTION=="add", PROGRAM=="/sbin/blkid -o value -s TYPE %E{device}", RESULT=="exfat", ENV{mount_options}="%E{mount_options},utf8,allow_other,umask=002,uid=1000,gid=1000"

# Get label if present, otherwise assign one
ENV{ID_FS_LABEL}!="", ENV{dir_name}="%E{ID_FS_LABEL}"
ENV{ID_FS_LABEL}=="", ENV{dir_name}="usbhd-%k"

# Mount the device
ACTION=="add", ENV{dir_name}!="", RUN+="/bin/mkdir -p '/media/%E{dir_name}'", RUN+="/bin/mount -o %E{mount_options} /dev/%k '/media/%E{dir_name}'"

# Clean up after removal
ACTION=="remove", ENV{dir_name}!="", RUN+="/bin/umount -l '/media/%E{dir_name}'"
ACTION=="remove", ENV{dir_name}!="", RUN+="/bin/rmdir '/media/%E{dir_name}'"

# Exit
LABEL="media_by_label_auto_mount_end"

Eu tentei usar user_ide group_idem vez de uide gidmas sem sucesso.

Montar o dispositivo manualmente funciona bem:

$ sudo mount -o noatime,utf8,allow_other,umask=002,uid=1000,gid=1000 /dev/sdb1 /media/GoPro/
FUSE exfat 1.2.5
$ ls -l /media/
total 132
drwxrwxr-x 1 pi   pi   131072 Jan  1  1970 GoPro
udev fuse
  • 1 1 respostas
  • 2439 Views

1 respostas

  • Voted
  1. Best Answer
    Gerald Schneider
    2018-05-21T06:29:47+08:002018-05-21T06:29:47+08:00

    TL;DR: udev e fuse não são realmente compatíveis


    Depois de perceber que esse problema não ocorre apenas com exfat, mas também com dispositivos formatados em NTFS, comecei a procurar especificamente por problemas com udev e fuse.

    Alguns comentários sobre a combinação que encontrei:

    Eu acho que o processo de fusível está sendo morto. Você não pode iniciar processos de longa duração a partir de uma regra udev, isso deve ser tratado pelo systemd.

    ( do Debian-devel )

    Aviso: para montar unidades removíveis, não chame mount das regras do udev. No caso de sistemas de arquivos FUSE, você obterá erros de terminal de transporte não conectado. Em vez disso, você pode usar udisks que lidam com a montagem automática corretamente ou para fazer a montagem funcionar dentro das regras do udev, copie /usr/lib/systemd/system/systemd-udevd.service para /etc/systemd/system/systemd-udevd.service e substitua MountFlags =escravo para MountFlags=compartilhado.[3] Lembre-se de que o udev não se destina a invocar processos de execução longa.

    ( do ArchWiki )

    E há mais.

    Acabei usando os scripts e arquivos de configuração desta resposta . Funciona perfeitamente com todos os tipos de sistema de arquivos. Eu gostaria de ter encontrado isso antes, teria me poupado alguns dias de depuração, tentativa e erro.

    • 5

relate perguntas

  • Como atribuir links simbólicos a dispositivos seriais do dispositivo usb para serial CP2105?

  • Por que o Udev está carregando dois módulos de kernel para um único dispositivo USB?

  • Altere os dados dos sensores iio por meio de ACCEL_MOUNT_MATRIX personalizado

  • Executando script por meio da regra udev no Chrome OS [fechado]

  • udev, udisks, dbus e comando dd

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Como exportar uma chave privada GPG e uma chave pública para um arquivo

    • 4 respostas
  • Marko Smith

    ssh Não é possível negociar: "nenhuma cifra correspondente encontrada", está rejeitando o cbc

    • 4 respostas
  • Marko Smith

    Como podemos executar um comando armazenado em uma variável?

    • 5 respostas
  • Marko Smith

    Como configurar o systemd-resolved e o systemd-networkd para usar o servidor DNS local para resolver domínios locais e o servidor DNS remoto para domínios remotos?

    • 3 respostas
  • Marko Smith

    Como descarregar o módulo do kernel 'nvidia-drm'?

    • 13 respostas
  • Marko Smith

    apt-get update error no Kali Linux após a atualização do dist [duplicado]

    • 2 respostas
  • Marko Smith

    Como ver as últimas linhas x do log de serviço systemctl

    • 5 respostas
  • Marko Smith

    Nano - pule para o final do arquivo

    • 8 respostas
  • Marko Smith

    erro grub: você precisa carregar o kernel primeiro

    • 4 respostas
  • Marko Smith

    Como baixar o pacote não instalá-lo com o comando apt-get?

    • 7 respostas
  • Martin Hope
    rocky Como exportar uma chave privada GPG e uma chave pública para um arquivo 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Wong Jia Hau ssh-add retorna com: "Erro ao conectar ao agente: nenhum arquivo ou diretório" 2018-08-24 23:28:13 +0800 CST
  • Martin Hope
    Evan Carroll status systemctl mostra: "Estado: degradado" 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim Como podemos executar um comando armazenado em uma variável? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S Por que /dev/null é um arquivo? Por que sua função não é implementada como um programa simples? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 Como ver as últimas linhas x do log de serviço systemctl 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - pule para o final do arquivo 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla Por que verdadeiro e falso são tão grandes? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis Substitua a string em um arquivo de texto enorme (70 GB), uma linha 2017-12-30 06:58:33 +0800 CST
  • Martin Hope
    Bagas Sanjaya Por que o Linux usa LF como caractere de nova linha? 2017-12-20 05:48:21 +0800 CST

Hot tag

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve