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.

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>.