再次折腾我的WNDR4300:OpenWrt文件共享

ddlee · March 12, 2017

生命不惜,折腾不止。

缘起

再次成为IOS用户后,访问Google和文件共享成了两大需求。问题出现了,就要解决,于是有此文记录的活动。

重新安装OpenWrt

OpenWrt已经到了15.05版本,版本代号是Chaos Calmer。重装需要的-factory.img,可以在这里下载。

我的WNDR4300平台是ar71xx,可以从OpenWrt对应的硬件主页找到固件镜像文件。

TFTP重装

如果你的路由器还是出厂系统的话,可以通过登入后台在线上传镜像文件进行刷机,而我的已经是OpenWrt系统,只能通过网页端升级,故选用了TFTP方式刷机。

刷机步骤摘自OpenWrt wiki

  1. set a static IP on your computer, i.e 192.168.1.35, and connect the ethernet cable to the router
  2. power on the router
  3. press and hold the RESET button as soon as the switch LEDs light up.
  4. keep holding RESET until the power LED begins to flash orange and then green.
  5. once the power LED is flashing green, release RESET
  6. start the TFTP transfer to router at 192.168.1.1. In your computer execute: tftp 192.168.1.1 -m binary -c put factory.img

总体来说是分为三步:

  1. 将电脑与路由器设置在同一内网中
  2. 令路由器进入恢复模式
  3. 利用TFTP将刷机包推入路由器

U盘挂载,文件共享

安装好OpenWrt后,就可以从网页端访问路由器,设置PPPoE拨号,设置WIFI等等。

U盘挂载

U盘挂载部分主要参考了跟 UMU 一起玩 OpenWRT(入门篇6):挂接 U 盘

首先是安装相应的包:

opkg update

# 核心包
opkg install kmod-usb-storage
opkg install kmod-scsi-generic

# 文件系统
opkg install kmod-fs-ext4

# 辅助工具
opkg install usbutils fdisk e2fsprogs

利用lsusb命令查看U盘是否已经被路由器识别。

这时可以选择用fdisk进行重新分区,不需要分区的话,可以用命令ls /dev | grep sd查看/dev分区中是否已经出现U盘。

在OpenWrt上使用U盘,建议用ext4格式,可以用下面的命令进行格式化:

# sda1为上一命令得到的结果
mkfs.ext4 /dev/sda1

接下来就可以用mount命令进行挂载了:

# 路径/mnt/usb/即为挂载目标点
mkdir /mnt/usb
touch /mnt/usb/USB_DISK_NOT_PRESENT
chmod 555 /mnt/usb
chmod 444 /mnt/usb/USB_DISK_NOT_PRESENT
mount /dev/sda1 /mnt/usb

这时可以测试一下,如果U盘里面存储了文件,可以通过/mnt/usb访问的到。

下面是开机自动挂载U盘的命令。

# block-mount blkid用于查看U盘的UUID
opkg install block-mount blkid

# 实际上要操作的是fstab的配置文件/etc/config/fstab,要将enabled值改成1
block detect > /etc/config/fstab
uci set fstab.@mount[-1].target='/mnt/usb' u
ci set fstab.@mount[-1].enabled=1
uci commit fstab

更详细的信息可以参见这里

文件共享

文件共享可以通过FTP和SAMBA,推荐的方式是SAMBA。

SAMBA

安转SAMBA:

opkg update
opkg install samba36-server

# luci程序,可选
opkg install luci-app-samba

安装好SAMBA后,主要配置两个参数,一是共享文件夹的路径,如/mnt/usb/sambashare,可以通过更改配置文件/etc/samba/smb.conf实现,也可以通过luci实现。

示例:

[sambashare]
path = /mnt/usb/sambashare
valid users = root
read only = no
guest ok = yes
create mask = 0750
directory mask = 0750

第二个参数是访问账户,可以通过命令sambpasswd -a将你的当前用户加入到SAMBA的组中,需要设置一个密码。另外,可能需要将配置文件/etc/samba/smb.conf的[global]中的invalid users = root注释掉。

最后,设置SAMBA服务启动和开机自启

/etc/init.d/samba start
/etc/init.d/samba enable
FTP

FTP可以用vsftpd包来设置,大致过程与SAMBA类似:设置路径、添加用户、设置自启。

SAMBA服务可以在Windows文件资源管理器中自动检测的到,Linux下可以通过smb://Host/sharepath访问,在IOS系统中,类似Documents的应用也支持添加SAMBA的功能。

这里强推一下Documents这个应用,结合PDF EXPERT,已经成为了我的文档中心。

后记

这天的活动,本来只有我和上帝知道,再过一个月,就只有上帝知道了。遂作笔记。

@ddlee