1. 程式人生 > 其它 >OpenWRT 掛載 硬碟 U盤

OpenWRT 掛載 硬碟 U盤

每次ssh登陸OpenWRT安裝新軟體時,都必須更新opkg

 opkg update
 

安裝驅動

為了可以識別U盤/行動硬碟,必須安裝相關的驅動。 一類是usb相關的驅動

opkg install kmod-usb-core    #usb驅動
opkg install kmod-scsi-core #SCSI匯流排驅動
opkg install kmod-scsi-generic #scsi驅動
opkg install kmod-usb-uhci    #USB OHCI controllers
opkg install kmod-usb-ohci      #USB UHCI controllers
opkg install kmod-usb2         #usb2.0驅動
opkg install kmod-usb3         #usb3.0驅動,當前少有openwrt支援的存在usb3.0的路由器。確認自己的路由器支援usb3才需要安裝
opkg install    kmod-usb-storage      #usb儲存裝置驅動
opkg install    kmod-usb-storage-extras   #其他USB讀卡器裝置驅動

另外一類是磁碟格式驅動,U盤上的磁碟分割槽有檔案系統,根據上面的分割槽檔案系統不同,需要不同的驅動模組

opkg install kmod-fs-ext2 #安裝ext2分割槽支援
opkg install kmod-fs-ext3 #安裝ext3分割槽格式支援元件
opkg install kmod-fs-ext4 #安裝ext4分割槽格式支援元件
opkg install kmod-fs-ntfs #ntfs核心驅動
opkg install kmod-fs-vfat #掛載FAT

驅動安裝完畢後即可識別usb裝置.建議在電腦上將U盤或行動硬碟格式好後再連線OpenWRT路由器。

ls /dev/sda*  #檢視掛載的usb裝置

/dev/sda   /dev/sda1  /dev/sda2  

顯示有一個磁碟/dev/sda,兩個分割槽 /dev/sda1,/dev/sda2 .下面我們就可以掛載分割槽

#分割槽1掛載到 /smb1目錄
mkdir /smb1
mount -t ext4 /dev/sda1 /smb1 -o noatime,async 

#分割槽2掛載到 /smb2目錄 
mkdir /smb2
mount /dev/sda2 /smb2 -o noatime,rw,async

掛載成功後,既可以進入目錄進行任何檔案操作。但是mount命令掛載的裝置,系統重啟後需要重新掛載。

umount /smb1  #取消掛載
umount /smb2  #取消掛載

自動掛載、開機自動掛載

可以通過安裝 block-mount 工具集實現開機自動掛載檔案系統。

#安裝
opkg update
opkg install block-mount
#生成標準配置檔案
block detect > /etc/config/fstab
#編輯fstab配置檔案
vi /etc/config/fstab
config 'global'
        option  anon_swap       '0'
        option  anon_mount      '0'
        option  auto_swap       '1'
        option  auto_mount      '1'
        option  delay_root      '5'
        option  check_fs        '0'
        
config 'mount'
        option 'target'   '/smb1'
        option 'device'   '/dev/sda1'
        option 'fstype'   'ext4'  #磁碟分割槽型別,根據自己分割槽格式填寫
        option 'options'  'rw,async'
        option 'enabled'  '1'  #是否啟動時自動掛載
        option 'enabled_fsck' '0'
        

除了根據device掛載硬碟外,還可以通過uuid的形式掛載,如上一步 block detect > /etc/config/fstab,自動檢測到掛載的配置。

config 'global'
        option  anon_swap       '0'
        option  anon_mount      '0'
        option  auto_swap       '1'
        option  auto_mount      '1'
        option  delay_root      '5'
        option  check_fs        '0'

config 'mount'
        option  target  '/mnt/sda1'
        option  uuid    '5ff96782-7fe8-47bf-baa0-e35200228368'
        option  enabled '1' 

config 'mount'
        option  target  '/mnt/sda2'
        option  uuid    '8c46f52a-c19b-4570-b4f0-2441106dda8e'
        option  enabled '1'

不要忘記執行以下操作,啟動自動掛載

/etc/init.d/fstab enable

安裝好mount-block後,可以通過如下命令檢視當前系統檔案系統資訊。

block info

/dev/ubiblock0_0: UUID="8b37173e-52c98b73-cb093366-dac33c6c" VERSION="4.0" TYPE="squashfs"
/dev/ubi0_0: UUID="8b37173e-52c98b73-cb093366-dac33c6c" VERSION="4.0" TYPE="squashfs"
/dev/ubi0_1: UUID="1d29bc1e-08cc-4c5c-abd4-76fe27c5c16c" VERSION="w4r0" TYPE="ubifs"
/dev/ubiblock0_0: UUID="8b37173e-52c98b73-cb093366-dac33c6c" VERSION="4.0" TYPE="squashfs"
/dev/sda1: UUID="5ff96782-7fe8-47bf-baa0-e35200228368" NAME="EXT_JOURNAL" VERSION="1.0" TYPE="ext4"
/dev/sda2: UUID="8c46f52a-c19b-4570-b4f0-2441106dda8e" NAME="EXT_JOURNAL" VERSION="1.0" TYPE="ext4"
block mount    #掛載所有列在fstab檔案中的裝置
block umount   #取消列在fstab檔案中裝置的掛載
block detect   #獲取block裝置資訊

其他工具

usbutils 工具 lsusb

 opkg install usbutils
 
 lsusb  #列出usb資訊
 
Bus 001 Device 002: ID 0480:a202 Toshiba America Info. Systems, Inc. 
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

fdisk 硬碟分割槽管理工具

opkg install fdisk

fdisk -l #列出所有磁碟資訊


# 磁碟分割槽 /dev/sda
root@OpenWrt:~# fdisk /dev/sda

Welcome to fdisk (util-linux 2.24.1).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.

如果磁碟未分割槽可以使用fdisk命令進行分割槽,具體分割槽的命令操作自行搜尋

e2fsprogs 格式化工具

opkg install e2fsprogs  

mkfs.ext3 /dev/sda1 #以ext3檔案格式格式化 /dev/sda1
mkfs.ext4 /dev/sda1 #以ext4檔案格式格式化 /dev/sda2

df

df -h #檢視磁碟使用情況

參考

錯誤處理

wget: can't execute 'openssl': No such file or directory
wget: error getting response: Connection reset by peer

OpenWRT 預設安裝的wget不支援SSL。如果需要使用SSL(https),需要重新安裝wget

opkg update
opkg install wget

/usr/bin/wget points now to the full version.

不過opkg install wget 仍然有可能報如上的錯誤,進入一個死迴圈。所以最好的辦法是從自己的電腦上下載好wget,然後傳到openwrt中。

如作者在本機命令列操作如下:
wget http://openwrt.proxy.ustclug.org/chaos_calmer/15.05.1/ar71xx/nand/packages/packages/wget_1.17.1-1_ar71xx.ipk
scp wget_1.17.1-1_ar71xx.ipk [email protected]:/tmp

然後登陸到openwrt,執行
opkg install /tmp/wget_1.17.1-1_ar71xx.ipk