Dùng USB làm bộ nhớ ngoài cho OpenWrt: driver, phân vùng và automount
MỤC LỤC BÀI VIẾT (Nhấn để 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/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 update
opkg install kmod-usb-storage
opkg install kmod-usb-storage-uas
opkg 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/sda
brw------- 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 libblkid
opkg install libblkid
block 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 gdisk
gdisk /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 e2fsprogs
opkg install kmod-fs-ext4
mkfs.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-tools
opkg install kmod-fs-f2fs
mkfs.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 fstab
uci set fstab.@mount[-1].enabled='1'
uci commit fstab
# Optional filesystem check on boot
uci 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/sda1
block info
service 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 hdparm
hdparm -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/sda2
exit 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
https://openwrt.org/docs/guide-user/storage/usb-drives — Using storage devices. ↩︎
OpenWRT
- Chia sẻ ổ USB qua Samba trên OpenWrt: cấu hình, firewall và xử lý lỗi
- DNS over TLS trên OpenWrt với Unbound: cấu hình và kiểm tra rò rỉ DNS
- Dùng USB làm bộ nhớ ngoài cho OpenWrt: driver, phân vùng và automount Đang đọc
- LuCI essentials trên OpenWrt: cài đặt, HTTPS, port thay thế và offline
- Sao lưu và khôi phục cấu hình OpenWrt bằng LuCI và SSH
Bình luận & Thảo luận 0
Chia sẻ thắc mắc, phản hồi hoặc kinh nghiệm thực chiến của bạn