24.1 加载 U 盘驱动
将 U 盘连接到开发板,看看是否有如下 USB 的打印信息。
1).添加 USB 相关支持
Kernel modules —> USB Support —> < *> kmod-usb-core. ##默认已经选了
Kernel modules —> USB Support —> < *> kmod-usb-ohci. ## usb1.0
Kernel modules —> USB Support —> < *> kmod-usb-uhci. ## usb1.1
Kernel modules —> USB Support —> < *> kmod-usb-storage.
Kernel modules —> USB Support —> < *> kmod-usb-storage-extras.
Kernel modules —> USB Support —> <*> kmod-usb2. ##默认已经选了 usb2.0
2). 添加 SCSI 支持
Kernel modules —> Block Devices —> <*>kmod-scsi-core ##默认已选
3). 添加 USB 挂载
Base system —> <*>block-mount
4). 添加自动挂载工具
Utilities —> Filesystem —> <*> badblocks
5). 添加文件系统支持
Kernel modules —> Filesystems —> <*> kmod-fs-ext4 (移动硬盘 EXT4 格式选择)
Kernel modules —> Filesystems —> <*> kmod-fs-vfat(FAT16 / FAT32 格式 选择)
Kernel modules —> Filesystems —> <*> kmod-fs-ntfs (NTFS 格式 选择)
6). 添加 UTF8 编码,CP437 编码,ISO8859-1 编码
Kernel modules —> Native Language Support —> <*> kmod-nls-cp437
Kernel modules —> Native Language Support —> <*> kmod-nls-iso8859-1
Kernel modules —> Native Language Support —> <*> kmod-nls-utf8
Utilities —> <*> usbutils…………………………….. USB devices listing utilities
保存退出
接着,在/openwrt/trunk 上执行 make kernel_menuconfig ( 注意不是 menuconfig )配置支持 nls-cp936
File systems —> {M} Native language support —>
< M> Codepage 437 (United States, Canada)
< M> Simplified Chinese charset (CP936, GB2312)
好的,编译 OpenWrt: make V=99
编译完成后把镜像烧写到开发板中!
24.2 开发板挂载使用 U 盘
现在把 U 盘连接到开发板,路由器能识别 U 盘后会在 dev 目录下看到一个 sd*(代表a,b,c,或 d 等等)的文件,ls -l sd会显示如下的文件信息。
brw 表示该文件是个块文件。
我们可以尝试进行 U 盘的挂载:
mount /dev/sda /mnt
如果挂载成功的话,我们可以通过命令进行查询:df –h
可以查询到挂载信息如下:
如果挂载的时候提示说文件没找到,是因为 U 盘文件仅被 Windows 设别,即 fat32文件格式,而 OpenWrt 是以 linux 为基础的,设别的文件是 ext3,所以首先我们对 U 盘文件进行格式化。
注意: 格式化会导致内容丢失,所以先进行必要的备份。
格式化使用的是 mkfs.ext3 命令,见下图:
格式化完成如下:
格式化完成后,为保证不出意外,重启一下 OpenWrt: rebootOK,现在就可以挂载 U 盘了!
成功挂载后,仍然不能通过 cd /dev/sd*来访问路由器中的内容,要访问 U 盘内的内容可以通过 cd /mnt 来查看。成功挂载后对 mnt 目录的操作就是对 U 盘的操作。
注意事项:此时的 U 盘是 ext3 格式的,windows 无法识别,如果你把 U 盘使用windows访问,会提示要求你格式化 U 盘。
25.3 开机自动挂载 U 盘
当我们重启路由器后会发现,我们又无法访问 U 盘了(/mnt),如下图:
如果想访问则需要手动重新挂载,比较麻烦。
这里我们采用一种自动挂载的方式,首先我们照着做,然后再给出解释:
1)在/etc/init.d 目录下创建一个文件:
2)然后进行编辑: vi automount
内容如下:
显然这是一个脚本文件,文件内容是把 U 盘文件( /dev/sda )进行挂载。
3)输入命令:
[email protected]:/etc/init.d# ln -s /etc/init.d/automount /etc/rc.d/S99automount
截图比较清晰:
4) 重启 OpenWrt:
reboot
5) 查看挂载情况:
df –h
我们可以看到 U 盘成功的开机挂载到/mnt 上了:
好的,现在解释一下为什么可以这样做,OpenWrt 在开机启动后会有一个启动流程,其中一个步骤就是执行/etc/rc.d 目录下的内容,我们查看一下这个目录的内容:
在这个目录下的内容都是快捷方式来的,而且格式为: S 数值 名称 这种类型是启动流程会执行到的文件,数值从小到大表示执行的先后顺序,那既然这些是快捷方式,那么真正的文件在哪里呢?在 /etc/init.d 目录中,我们同样查看一下这个目录的文件:
到这里相信很容易就能明白 /etc/rc.d 目录和 /etc/init.d 目录的关系了!所以我们创建的脚步文件放置在 /etc/init.d 中,然后在 /etc/rc.d 目录中创建一个快捷方式。 OpenWrt 启动流程最终会执行到我们的脚步文件,完成 U 盘的挂载工作!
U 盘在不使用的情况下可以进行卸载: umount /mnt