Bookmark

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

Tôi 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; tôi 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]

1
2
3
4
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]

1
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. Tôi 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]

1
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]

1
2
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]

1
2
3
4
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]

1
/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]

1
2
opkg install gdisk
gdisk /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]

1
2
3
opkg install e2fsprogs
opkg install kmod-fs-ext4
mkfs.ext4 /dev/sda1

Với exFAT:[25]

1
opkg install kmod-fs-exfat

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

1
2
3
opkg install f2fs-tools
opkg install kmod-fs-f2fs
mkfs.f2fs /dev/sda1

/dev/sda1 chỉ là ví dụ. Tôi 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]

1
2
3
4
5
6
7
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]

1
uci show fstab

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

1
2
3
ls -l /mnt/sda1
block info
service fstab boot

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

1
2
3
4
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]

1
2
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; 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]

1
2
3
4
# 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]

1
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]

1
opkg update && opkg install hd-idle

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

1
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). Tôi 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


0 Bình luận

Góp Ý / Bình Luận / Đánh giá