🌐 VI | EN

Dùng USB làm bộ nhớ ngoài cho OpenWrt: driver, phân vùng và automount

Nghia Phan
Nghia Phan
🌐 English version Bài viết kỹ thuật Lượt xem

Mình dùng trang USB storage của OpenWrt khi cần gắn HDD, SSD hoặc flash drive để lưu dữ liệu, chạy Samba/NAS hoặc làm nơi chứa file. Nếu mục tiêu là mở rộng overlay để cài thêm package, đây không phải toàn bộ quy trình extroot; mình tách hai mục tiêu này ngay từ đầu.[25]

Cảnh báo: Bước format sẽ xóa dữ liệu của partition. Trước khi chạy mkfs.*, kiểm tra đúng /dev/sda1 hoặc thiết bị tương ứng và có backup riêng.[25]

1. Cài và kiểm tra USB driver

Làm mới danh sách package, cài driver storage và thêm UAS nếu thiết bị cần:[25]

opkg updateopkg install kmod-usb-storageopkg install kmod-usb-storage-uasopkg install usbutils

Cắm USB rồi kiểm tra:[25]

lsusb -t

Một output hợp lệ có thể có root_hub với driver xhci-mtk/ehci và một dòng Class=Mass Storage dùng usb-storage hoặc usb-storage-uas. Mình cần thấy driver name, không có lỗi ở chuỗi USB; nếu không, quay lại phần cài driver hoặc reboot rồi thử lại.[25]

2. Xác nhận disk và partition

Giữ USB đang cắm và xem block device:[25]

ls -l /dev/sd*

Output cần có một disk như /dev/sda hoặc /dev/sdb, cùng partition nếu disk đã được chia sẵn:[25]

brw-------    1 root     root        8,   0 Oct 30 12:49 /dev/sdabrw-------    1 root     root        8,   1 Oct 30 12:49 /dev/sda1

Cài công cụ để xem UUID/filesystem:[25]

opkg install block-mount# for exFAT you also need libblkidopkg install libblkidblock info | grep "/dev/sd"

Ví dụ block info có thể trả về:[25]

/dev/sda1: UUID="2eb39413-83a4-4bae-b148-34fb03a94e89" VERSION="1.0" TYPE="ext4"

Nếu không thấy disk, kiểm tra lại USB driver và reboot. Nếu có nhiều thiết bị, /dev/sdb1, /dev/sdc1… là các partition của disk tiếp theo; không lấy ví dụ /dev/sda1 thay cho output thực tế.[25]

3. Tạo partition mới bằng gdisk

Chỉ làm phần này khi bước trước không có partition như /dev/sda1:[25]

opkg install gdiskgdisk /dev/sda

Trong giao diện tương tác của gdisk:[25]

  1. n để tạo partition.[25]
  2. Giữ các giá trị mặc định được gợi ý cho number, starting sector, size và Hex code nếu phù hợp.[25]
  3. w để ghi thay đổi.[25]
  4. Y để xác nhận.[25]
  5. Ghi lại tên partition mới cho bước format.[25]

Tài liệu khuyến nghị một partition để khớp quy trình kế tiếp; lệnh ? trong gdisk mở trợ giúp.[25]

4. Cài filesystem và format

Driver filesystem phải được cài kể cả khi partition đã format từ trước. Với EXT4 trên HDD USB:[25]

opkg install e2fsprogsopkg install kmod-fs-ext4mkfs.ext4 /dev/sda1

Với exFAT:[25]

opkg install kmod-fs-exfat

Với F2FS trên SSD hoặc thumb drive:[25]

opkg install f2fs-toolsopkg install kmod-fs-f2fsmkfs.f2fs /dev/sda1

/dev/sda1 chỉ là ví dụ. Mình thay bằng partition đã xác định và kiểm tra backup trước khi format. Với NTFS, dùng driver/quy trình NTFS phù hợp thay vì chạy mkfs.ext4 lên partition đang chứa dữ liệu.[25]

5. Tạo automount bằng fstab

Sinh entry từ block device, bật mount và tùy chọn kiểm tra filesystem khi boot:[25]

block detect | uci import fstabuci set fstab.@mount[-1].enabled='1'uci commit fstab# Optional filesystem check on bootuci set fstab.@global[0].check_fs='1'uci commit fstab

Reboot để kiểm tra rồi xem cấu hình:[25]

uci show fstab

Mình cần thấy enabled='1', một target kiểu /mnt/sda1 và UUID đúng. Kiểm tra điểm mount:[25]

ls -l /mnt/sda1block infoservice fstab boot

Một output xác nhận có thể chứa:[25]

fstab.@mount[0].target='/mnt/sda1'fstab.@mount[0].uuid='49c35b1f-a503-45b1-a953-56707bb84968'fstab.@mount[0].enabled='1'/dev/sda1: UUID="2eb39413-83a4-4bae-b148-34fb03a94e89" VERSION="1.0" MOUNT="/mnt/sda1" TYPE="ext4"
Quảng cáo

6. Tùy chọn spindown cho NAS

Phương án A: hdparm

hdparm ghi timer theo lệnh SATA vào chính ổ đĩa; nhiều adapter USB2 cũ không hỗ trợ, trong khi một số USB3 SATA có thể hỗ trợ. Cài và thử timer 10 phút:[25]

opkg update && opkg install hdparmhdparm -S 120 /dev/sda2

Nếu lệnh lỗi, adapter/drive có thể không hỗ trợ lệnh spindown này. Giá trị 0 tắt timeout; 1240 là bội số 5 giây, từ 5 giây đến 20 phút; 241251 là đơn vị 30 phút, từ 30 phút đến 5,5 giờ.[25]

Nếu muốn áp dụng lại khi boot, tài liệu đưa ví dụ trong /etc/rc.local:[25]

# set timeout to put the drive into idle (low-power) mode/sbin/hdparm -S 120 /dev/sda2exit 0

Phương án B: hd-idle với LuCI

hd-idle chạy như service riêng của OpenWrt và phát lệnh spindown khi bộ đếm idle về 0. Cài bản có giao diện LuCI:[25]

opkg update && opkg install luci-app-hd-idle

Vào Services → HDD Idle để bật và cấu hình. Nếu chỉ muốn CLI:[25]

opkg update && opkg install hd-idle

Sau đó sửa /etc/config/hd-idle, bật và chạy service:[25]

service hd-idle enable && service hd-idle start

Các tùy chọn chính của hd-idledisk (mặc định sda), enabled (mặc định 0), idle_time_unit (mặc định minutes) và idle_time_interval (mặc định 10). Mình thay sda bằng identifier đúng của ổ, không dùng /dev/sda2 của ví dụ nếu layout thực tế khác.[25]

Kiểm tra cuối và giới hạn

Sau khi mount, thử đọc/ghi một file không quan trọng và kiểm tra log nếu disk biến mất sau reboot. USB bus, filesystem, loại ổ, nguồn cấp và adapter đều ảnh hưởng kết quả; page này cấu hình storage chứ không chứng minh mọi adapter đều hỗ trợ UAS hoặc spindown.[25]

Nguồn

Tài liệu gốc: [Using storage devices]1, đăng/cập nhật 2025-09-30.[25]

[25] https://openwrt.org/docs/guide-user/storage/usb-drives — OpenWrt Wiki: Using storage devices

Footnotes

  1. https://openwrt.org/docs/guide-user/storage/usb-drives — Using storage devices.

Bình Luận & Thảo Luận

Góp ý, hỏi đáp và chia sẻ suy nghĩ của bạn

Markdown & QQ Emoji
Đang tải khung bình luận...