WR720N与OpenWrt(三)

五、挂载USB存储设备

TL-WR720N自带的USB接口(原用于3G网卡)可以为我们接入USB存储设备,扩展容量提供极大便利。

1.准备磁盘

这里可以选择大容量的U盘或磁盘,而我本着废物利用的原则选择从旧电脑上拆下的机械硬盘(当然还需要自行准备USB转SATA数据线),然后进行格式化操作。需要注意的是我使用的USB是基于原路由器3G模式的,因此档位要设置正确。

2.分区与格式化

查看磁盘情况

$ fdisk –l

<获得磁盘/dev/sdg>

根据fdisk命令的指导完成分区。

$ fdisk /dev/sdg

Command (m for help): n 创建新分区

Partition type:

p primary (0 primary, 0extended, 4 free)

e extended

Select (default p): p 类型为主分区

Partition number (1-4, default 1): 1 设定分区号

First sector (2048-312581806, default2048): 设置分区起始位置

Using default value 2048

Last sector, +sectors or +size{K,M,G}(2048-312581806, default 312581806): +140G 设置分区大小

此时创建的1号分区用作ext4分区,接下来同理可分得2号分区用作swap分区。

Command (m for help): p 查看已设定的分区信息

Disk /dev/sdg: 160.0 GB, 160041885184 bytes

255 heads, 63 sectors/track, 19457cylinders, total 312581807 sectors

Units = sectors of 1 * 512 = 512 bytes

Sector size (logical/physical): 512 bytes /512 bytes

I/O size (minimum/optimal): 512 bytes / 512bytes

Disk identifier: 0x3a023a01

Device Boot Start End BlocksId System

/dev/sdg1 2048 293603327146800640 83 Linux

/dev/sdg2 293603328 3125818069489239+ 82 Linux swap / Solaris

Command (m for help): w 保存分区信息

The partition table has been altered!

Calling ioctl() to re-read partition table.

WARNING: Re-reading the partition tablefailed with error 16: Device or resource busy.

The kernel still uses the old table. Thenew table will be used at

the next reboot or after you runpartprobe(8) or kpartx(8)

Syncing disks.

此时可以不重启,直接更新内核分区表。

$ sudo partprobe

然后利用mkfs和mkswap分别格式化并激活分区。

$ mkfs.ext4 -m 0.5 /dev/sdg1

$ mkswap /dev/sdg2

$ swapon /dev/sdg2

查看交换分区并卸载

$ swapon -s

Filename Type Size Used Priority

/dev/sdg2 partition 9489232 0 -1

$ swapoff /dev/sdg2

注:mkfs命令中的m参数用于设置保留分区所占百分比,默认的5%对于大容量磁盘有些浪费。而对已做好分区的磁盘不想擦除内容而直接升级文件系统为ext4,可以使用tune2fs工具。

3.查询USB接口类型

接入路由器USB接口后,利用dmesg查询

$ dmesg | gerp ‘usb’

$ [ 4.740000] usbcore: registered new interfacedriver usbfs

[ 4.740000] usbcore: registered new interfacedriver hub

[ 4.750000] usbcore: registered new devicedriver usb

[ 5.140000] usb 1-1: new high-speed USBdevice number 2 using ehci-platform

可以看到为USB2.0接口,,需要安装支持USB2.0的模块。

4.安装USB与大容量存储设备的支持模块

由于OpenWrt编译时默认不会选择USB支持模块,因此需要通过opkg工具联网安装(确保路由器可以正常访问互联网)。

$ opkg update

$ opkg install kmod-usb-storage block-mountkmod-fs-ext4

$ reboot

注:若出现Collected errors:

* satisfy_dependencies_for:Cannot satisfythe following dependencies for kmod-usb-storage:

* kernel(= 3.18.11-1-317527fb328b694536ee00c07026c22c) * kernel (= 3.18.11-1-317527fb328b694536ee00c07026c22c) *

*opkg_install_cmd: Cannot install package kmod-usb-storage.

表明内核版本不匹配,这一般是由于自己编译的社区版本固件更新太快导致。

5.构建分区映射并移植根分区至USB存储设备

修改分区映射表并激活

$ vim /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 /

option device /dev/sda1

option fstype ext4

option options rw,sync

option enabled 1

opntion enabled_fsck 0

config ‘swap’

option device /dev/sda2

option enabled 1

$ /etc/init.d/fstab enable

挂载磁盘并复制路由器flash中根分区的文件至USB存储设备。

$ mkdir /mnt/sda1

$ mount /dev/sda1 /mnt/sda1

$ mkdir -p /tmp/cproot

$ mount –bind / /tmp/cproot/

$ tar -C /tmp/cproot/ -cvf – . | tar -C/mnt/sda1 -xf –

$ umount /tmp/cproot/

6.检测是否挂载成功

修改欢迎界面后重启检查

$ vim /mnt/sda1/etc/banner

CHAOS CALMER (Bleeding Edge, r45573) boot from usb!

$ reboot

<可以看到欢迎界面出现boot from usb!字样>

$ df –h

<可以检查挂载的USB设备情况>

参考资料:

【1】

【2】

【3】

【4】

只有经历过地狱般的折磨,才有征服天堂的力量。

WR720N与OpenWrt(三)

相关文章:

你感兴趣的文章:

标签云: