Linux에서 UAS USB3 스토리지를 사용하기 위한 우회 방법
Source: Dev.to
스토리지 식별
lsusb -tv
# USB 트리와 사용 중인 커널 드라이버(uas vs usb-storage) 확인
# VID:PID 확인
팁: lsusb -tv는 커널이 실제로 어떤 드라이버를 장치에 바인딩했는지 확인하는 가장 쉬운 방법입니다.
퀴크 플래그 (u와 m 의미)
usb-storage 모듈은 다음 형식의 하나 이상의 항목을 포함하는 quirks= 파라미터를 받습니다:
VID:PID:FLAGS
주요 플래그:
u= IGNORE_UAS – 커널이 이 장치에uas드라이버를 바인딩하지 않도록 강제하고 대신usb-storage(BOT)를 사용합니다.m= MAX_SECTORS_64 – 전송 크기를 64 섹터(32 KB)로 제한합니다. 큰 전송에서 비정상 동작하는 장치/브리지를 안정화시킬 수 있지만 성능은 떨어집니다.
자주 쓰이는 조합은 mu: UAS를 비활성화하고 전송 크기를 제한하여 안정성을 높이는 것입니다.
임시 설정 (런타임 / 비영구)
sysfs에 쓰면 현재 실행 중인 커널에만 적용됩니다. 재부팅 시 사라집니다.
단일 장치
echo "0bc2:231a:u" | sudo tee /sys/module/usb_storage/parameters/quirks
# 분리 후 다시 연결
여러 장치 (쉼표 구분)
printf '0bc2:231a:u,6795:2756:mu\n' | sudo tee /sys/module/usb_storage/parameters/quirks
# 분리 후 다시 연결
주의사항
- 쉼표만 사용하고, 공백은 넣지 마세요.
- 기존 값을 덮어씁니다(추가되지 않음).
기존 항목을 유지하면서 장치 추가하기
sysfs는 append 모드를 지원하지 않으므로 현재 값을 읽어와 새 항목을 추가한 뒤 다시 씁니다:
cur=$(cat /sys/module/usb_storage/parameters/quirks)
new='0bc2:231a:u'
if [ -z "$cur" ]; then
printf '%s\n' "$new" | sudo tee /sys/module/usb_storage/parameters/quirks >/dev/null
else
printf '%s,%s\n' "$cur" "$new" | sudo tee /sys/module/usb_storage/parameters/quirks >/dev/null
fi
# 분리 후 다시 연결
영구 설정 (권장)
재부팅 후에도 퀴크가 유지되게 하려면 modprobe.d에 설정합니다.
예: /etc/modprobe.d/usb-storage-quirks.conf 파일을 생성합니다:
options usb-storage quirks=0bc2:231a:u,6795:2756:mu
그런 다음 재부팅하거나 모듈을 다시 로드합니다(재부팅이 가장 간단하고 USB 스토리지 바인딩에 가장 확실합니다).
initramfs 주의사항 (dracut / update‑initramfs)
대부분의 경우 modprobe.d 파일을 추가하고 재부팅하면 충분합니다. 하지만 시스템이 initramfs 단계에서 스토리지 드라이버를 로드한다면(예: USB 스토리지에서 부팅하거나 해당 장치에 LUKS/LVM을 사용 중인 경우) 새 modprobe.d 설정이 초기 부팅에 적용되지 않을 수 있으므로 initramfs를 재생성해야 합니다.
RHEL/CentOS/Rocky/Alma/Fedora (dracut)
sudo dracut -f
sudo reboot
Debian/Ubuntu (initramfs‑tools)
sudo update-initramfs -u
sudo reboot
주의사항
grub2-mkconfig는modprobe.d변경에 보통 필요하지 않습니다(이는 GRUB 메뉴/커널 커맨드라인 변경에 필요하고, 모듈 옵션 파일에는 해당되지 않음).- initramfs를 재생성한 뒤에도 장치를 분리·재연결하거나 재부팅해야 드라이버 바인딩이 다시 평가됩니다.
확인
장치가 usb-storage(uas가 아님) 를 사용하고 있는지 확인합니다:
lsusb -tv
장치 경로에 Driver=usb-storage 와 같은 라인이 있는지 확인하세요.