Dùng USB làm bộ nhớ ngoài cho OpenWrt: driver, phân vùng và automount
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/sda1hoặ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]
- Gõ
nđể tạo partition.[25] - 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]
- Gõ
wđể ghi thay đổi.[25] - Gõ
Yđể xác nhận.[25] - 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"
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; 1–240 là bội số 5 giây, từ 5 giây đến 20 phút; 241–251 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-idle là disk (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
-
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