17.4. Dispositivos de Armazenamento USB
Anterior | Capítulo 17. Armazenamento | Próxima

## 17.4. Dispositivos de Armazenamento USB

Contribuído por Marc Fonvieille.

Muitas soluções de armazenamento externo, como discos rígidos, thumbdrives USB e gravadores de CD e DVD, usam o Universal Serial Bus ( USB ). O FreeBSD fornece suporte para dispositivos USB 1.x, 2.0 e 3.0.

### Nota:

O suporte a USB 3.0 não é compatível com alguns hardwares, incluindo os chipsets Haswell (Lynx Point). Se o FreeBSD inicializar com uma mensagem falhou com erro 19, desative xHCI/USB3 na BIOS.

O suporte para dispositivos de armazenamento USB é embutido no kernel `GENERIC`. Para um kernel personalizado, certifique-se de que as seguintes linhas estejam presentes no arquivo de configuração do kernel:

    device scbus	# SCSI bus (required for ATA/SCSI)
    device da	# Direct Access (disks)
    device pass	# Passthrough device (direct ATA/SCSI access)
    device uhci	# provides USB 1.x support
    device ohci	# provides USB 1.x support
    device ehci	# provides USB 2.0 support
    device xhci	# provides USB 3.0 support
    device usb	# USB Bus (required)
    device umass	# Disks/Mass storage - Requires scbus and da
    device cd	# needed for CD and DVD burners

O FreeBSD usa o driver umass(4) que usa o subsistema SCSI para acessar o armazenamento de dispositivos USB. Como qualquer dispositivo USB será visto como um dispositivo SCSI pelo sistema, se o dispositivo USB for um gravador de CD ou DVD, não inclua `device atapicam` em um arquivo de configuração do kernel personalizado.

O restante desta seção demonstra como verificar se um dispositivo de armazenamento USB é reconhecido pelo FreeBSD e como configurar o dispositivo para que ele possa ser usado.

### 17.4.1. Configuração de Dispositivo

Para testar a configuração USB, conecte o dispositivo USB. Use `dmesg` para confirmar que a unidade aparece no buffer de mensagens do sistema. Deve parecer algo como isto:

    umass0: <STECH Simple Drive, class 0/0, rev 2.00/1.04, addr 3> on usbus0
    umass0:  SCSI over Bulk-Only; quirks = 0x0100
    umass0:4:0:-1: Attached to scbus4
    da0 at umass-sim0 bus 0 scbus4 target 0 lun 0
    da0: <STECH Simple Drive 1.04> Fixed Direct Access SCSI-4 device
    da0: Serial Number WD-WXE508CAN263
    da0: 40.000MB/s transfers
    da0: 152627MB (312581808 512 byte sectors: 255H 63S/T 19457C)
    da0: quirks=0x2<NO_6_BYTE>

A marca, o nó de dispositivo (`da0`), a velocidade e o tamanho serão diferentes de acordo com o dispositivo.

Como o dispositivo USB é visto como um SCSI, o `camcontrol` pode ser usado para listar os dispositivos de armazenamento USB conectados ao sistema:

    # camcontrol devlist
    <STECH Simple Drive 1.04>          at scbus4 target 0 lun 0 (pass3,da0)

Alternativamente, o `usbconfig` pode ser usado para listar o dispositivo. Consulte o usbconfig(8) para obter mais informações sobre este comando.

    # usbconfig
    ugen0.3: <Simple Drive STECH> at usbus0, cfg=0 md=HOST spd=HIGH (480Mbps) pwr=ON (2mA)

Se o dispositivo não tiver sido formatado, consulte Seção 17.2, “Adicionando Discos” para obter instruções sobre como formatar e criar partições na unidade USB. Se a unidade vier com um sistema de arquivos, ela pode ser montada pelo `root` usando as instruções em Seção 3.7, “Montando e Desmontando Sistemas de Arquivos”.

### Atenção:

Permitir que usuários não confiáveis ​​montem mídia arbitrária, ativando `vfs.usermount` como descrito abaixo, não deve ser considerado seguro do ponto de vista da segurança. A maioria dos sistemas de arquivos não foi criada para proteger contra dispositivos maliciosos.

Para tornar o dispositivo montável como um usuário normal, uma solução é tornar todos os usuários do dispositivo membros do grupo `operator` usando pw(8). Em seguida, certifique-se de que `operator` possa ler e gravar o dispositivo adicionando estas linhas ao `/etc/devfs.rules`:

    [localrules=5]
    add path 'da*' mode 0660 group operator

### Nota:

Se discos internos SCSI também estiverem instalados no sistema, altere a segunda linha da seguinte maneira:

    add path 'da[3-9]*' mode 0660 group operator

Isso excluirá os três primeiros discos SCSI (`da0` para `da2`) pertencentes ao grupo `operator`. Substitua `3` pelo número de discos SCSI internos. Consulte devfs.rules(5) para obter mais informações sobre esse arquivo.

Em seguida, ative o conjunto de regras no arquivo `/etc/rc.conf`:

    devfs_system_ruleset="localrules"

Em seguida, instrua o sistema para permitir que usuários comuns montem sistemas de arquivos incluindo a seguinte linha no arquivo `/etc/sysctl.conf`:

    vfs.usermount=1

Como isso só entra em vigor após a próxima reinicialização, use `sysctl` para definir essa variável agora:

    # sysctl vfs.usermount=1
    vfs.usermount: 0 -> 1

A etapa final é criar um diretório no qual o sistema de arquivos deve ser montado. Esse diretório precisa pertencer ao usuário que deve montar o sistema de arquivos. Uma maneira de fazer isso é para o `root` criar um subdiretório de propriedade daquele usuário como `/mnt/`username``. No exemplo a seguir, substitua `username` pelo nome de login do usuário e `usergroup` pelo grupo principal do usuário:

    # mkdir /mnt/username
    # chown username:usergroup /mnt/username

Suponha que um thumbdrive USB esteja conectado e um dispositivo `/dev/da0s1` apareça. Se o dispositivo estiver formatado com um sistema de arquivos FAT, o usuário poderá montá-lo usando:

    % mount -t msdosfs -o -m=644,-M=755 /dev/da0s1 /mnt/username

Antes que o dispositivo possa ser desconectado, ele deve ser desmontado primeiro:

    % umount /mnt/username

Após a remoção do dispositivo, o buffer de mensagens do sistema mostrará mensagens semelhantes às seguintes:

    umass0: at uhub3, port 2, addr 3 (disconnected)
    da0 at umass-sim0 bus 0 scbus4 target 0 lun 0
    da0: <STECH Simple Drive 1.04> s/n WD-WXE508CAN263          detached
    (da0:umass-sim0:0:0:0): Periph destroyed

### 17.4.2. Montando Automaticamente Uma Mídia Removível

Dispositivos USB podem ser montados automaticamente removendo o comentário desta linha no arquivo `/etc/auto_master`:

    /media		-media		-nosuid

Então adicione estas linhas ao arquivo `/etc/devd.conf`:

    notify 100 {
    	match "system" "GEOM";
    	match "subsystem" "DEV";
    	action "/usr/sbin/automount -c";
    };

Recarregue a configuração se autofs(5) e devd(8) já estiverem em execução:

    # service automount restart
    # service devd restart

autofs(5) pode ser configurado para iniciar no boot, adicionando esta linha ao arquivo `/etc/rc.conf`:

    autofs_enable="YES"

autofs(5) requer que o devd(8) esteja ativado, como é por padrão.

Inicie os serviços imediatamente com:

    # service automount start
    # service automountd start
    # service autounmountd start
    # service devd start

Cada sistema de arquivos que pode ser montado automaticamente aparece como um diretório em `/media/`. O diretório é nomeado após o rótulo do sistema de arquivos. Se o rótulo estiver ausente, o diretório será nomeado após o nó do dispositivo.

O sistema de arquivos é montado de forma transparente no primeiro acesso e desmontado após um período de inatividade. Unidades montadas automaticamente também podem ser desmontadas manualmente:

    # automount -fu

Este mecanismo é normalmente usado para cartões de memória e cartões de memória USB. Pode ser usado com qualquer dispositivo de bloco, incluindo unidades ópticas ou iSCSI LUNs.

Anterior | Acima | Próxima
17.3. Redimensionando e Ampliando Discos | Principal | 17.5. Criando e Usando Mídia em CD

All FreeBSD documents are available for download at https://download.freebsd.org/ftp/doc/

Questions that are not answered by the documentation may be sent to <freebsd-questions@FreeBSD.org>.
Send questions about this document to <freebsd-doc@FreeBSD.org>.