标签归档:lede

解决编译LEDE时bughost.org无法访问致下载IPW-2100fw/2200fw驱动失败的问题

尝试编译LEDE固件,遇到IPW-2100fw和ipw2200-fw下载失败。
注意到Makefile中相关字段:

cat package/kernel/mac80211/Makefile
...
IPW2100_NAME:=ipw2100-fw
IPW2100_VERSION:=1.3

define Download/ipw2100
  URL:=http://bughost.org/firmware/
  FILE:=$(IPW2100_NAME)-$(IPW2100_VERSION).tgz
  HASH:=e1107c455e48d324a616b47a622593bc8413dcce72026f72731c0b03dae3a7a2
endef
$(eval $(call Download,ipw2100))
...
IPW2200_NAME:=ipw2200-fw
IPW2200_VERSION:=3.1

define Download/ipw2200
  URL:=http://bughost.org/firmware/
  FILE:=$(IPW2200_NAME)-$(IPW2200_VERSION).tgz
  HASH:=c6818c11c18cc030d55ff83f64b2bad8feef485e7742f84f94a61d811a6258bd
endef
$(eval $(call Download,ipw2200))
...

原因是bughost.org最近几天down机了。
解决方法是将Makefile中的bughost.org换成其他的源,按如下修改再编译就可以了。

...
IPW2100_NAME:=ipw2100-fw
IPW2100_VERSION:=1.3

define Download/ipw2100
  URL:=https://people.freebsd.org/~flz/distfiles/ipw/
  FILE:=$(IPW2100_NAME)-$(IPW2100_VERSION).tgz
  HASH:=e1107c455e48d324a616b47a622593bc8413dcce72026f72731c0b03dae3a7a2
endef
$(eval $(call Download,ipw2100))
...
IPW2200_NAME:=ipw2200-fw
IPW2200_VERSION:=3.1

define Download/ipw2200
  URL:=https://people.freebsd.org/~flz/distfiles/ipw/
  FILE:=$(IPW2200_NAME)-$(IPW2200_VERSION).tgz
  HASH:=c6818c11c18cc030d55ff83f64b2bad8feef485e7742f84f94a61d811a6258bd
endef
$(eval $(call Download,ipw2200))
...

在LEDE上配置Samba文件共享服务

免费开源的Samba协议可以在局域网(LAN)中为Windows、Linux和MacOS提供文件和打印机共享服务。
配置成功的关键在于Samba用户、共享文件目录权限的设置。

背景

在折腾703N扩展LEDE到U盘的时候,把U盘分成了三个区,第三个区用来作为文件存储区,并被挂载到LEDE的/mnt/sda6,sda6内有一个共享文件夹share,其目录结构是:

/
|--mnt
|  |--sda6
|     |--share

希望达到的文件共享方式是:

匿名用户guest(nobody)只能访问文件目录(/mnt/sda6/share),对其内的文件目录及文件具有添加、修改、删除的权限,方便多人共享;
管理员账户root通过密码方式登录,管理整个存储分区(/mnt/sda6),对其内的所有文件目录和文件都具备添加、修改、删除的权限,方便管理。

LEDE 17.01.2 正式版固件上,记录实现上述共享方式的步骤如下:

1 安装samba

#更新软件包列表
opkg update #直接安装中文语言包,会自动安装samba36-server(20170529版本:3.6.25-6)、luci-app-samba opkg install luci-i18n-samba-zh-cn

2 samba全局设置

依次点击LEDE的luci中的“服务” > “网络共享(samba)”,打开Samba的设置界面,点击“编辑模板”,并按如下修改:

...
unix charset = UTF-8
...
#invalid users = root
...
map to guest = Bad User
...
null passwords = yes
...

作用分别是:开启UTF-8国际字符集;允许root用户登录;当用户名输入错误时,则以匿名用户(nobody)登陆;允许空密码。

3 Samba文件共享设置

3.1 共享级访问(Share level access)方式

共享级访问文件共享方式已被用户级访问(User level access)方式通过如下代码取代:

security = user
map to guest = Bad User

这里就不细说了。

3.2 用户级访问(User level access)方式

3.2.1 在LEDE命令行中,为root用户设置samba登录密码

smbpasswd -a root New SMB password: Retype SMB password:

3.2.2 在LEDE命令行中,更改 /mnt/sda6/share目录的权限为777,否则匿名用户无法对其下内容进行添加、修改、删除操作。

chmod 777 /mnt/sda6/share

3.2.3 依次打开LEDE的luci中“服务” > “网络共享 > “共享目录”标签,按下图修改,并点击“保存&应用”。

注:
名称”下的share、root,为共享名称,即用户通过samba客户端访问时见到的主目录名,可设置为自己喜欢的名字;
只有当设置root用户新建文件、目录的权限为0777时,其在/mnt/sda6/share内添加的新文件或新目录,匿名用户才能对其进行修改、删除,否则因为权限问题无法实现我们目的的第一条;
如果完全是自用时,保留root那一行就可以了,同时建议将新建目录或文件的权限设为0755。
至此,设置结束,可以通过不同平台的客户端尝试访问。

4 windows 10中访问Samba文件共享服务器

已经设置好Samba文件共享的LEDE路由器IP地址是:192.168.2.1;windows 10具体版本:版本1703(OS内部版本 15063.296)。
在windows 10的文件管理器中,输入Samba服务器地址:file:\\192.168.2.1进行登陆,会有两种情况:

4.1 windows 10以微软账户登陆(username@outlook.com)时:
会先跳出登陆界面:
4.1.1 输入用户名root,和设置好的密码,会进入目录:/usr/local/。
4.1.2 输入除root外的其他任何字符,和任意密码或空密码(null passwords),会匿名(nobody)登陆,进入/usr/local/src。

4.2 windows 10以本地用户登录时:
会先看到我们设置好的两个共享文件目录:root和share:
4.2.1 双击share目录时,直接以匿名用户(nobody)进入目录:/usr/local/src。
4.2.2.1 双击root目录时,会弹出密码登陆选项,输入用户名root及其密码,会进入目录:/usr/local/。
4.2.2.2 双击root目录时,会弹出密码登陆选项,输入root以外的任何字符和密码时,禁止登陆。

较低版本(具体不详)的windows 10 (包括windows 8)可能会碰到禁止登陆的问题,建议及时更新至最新版的windows 10。低版本可通过修改注册表解决首先确认您的权限设置没有问题。然后尝试如下方法 打开注册表 Win+R输入regedit, 定位到如下位置 HKLM\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters 创建一个 DWORD 项, 命名为 ‘AllowInsecureGuestAuth’ , 值设置为“1”. 最后重启计算机再次访问查看结果。

5 清除windows访问Samba的访问记录

在windows中访问Samba服务器后,windows会存储访问记录,比如密码。当我们想清除密码,重新输入时,步骤如下:
5.1 获取访问记录

#在windows的命令行(cmd)中运行net use,可见访问Samba服务器的记录:
C:\Users\User>net use会记录新的网络连接。 
状态       本地        远程                      网络

-------------------------------------------------------------------------------
OK                     \\192.168.2.1\IPC$         Microsoft Windows Network
命令成功完成。

5.2 删除访问记录

C:\Users\User>net use \\192.168.2.1\IPC$ /del /y \\192.168.2.1\IPC$ 已经删除。

5.3 尝试重新登陆Samba。

NETGEAR R6100在LEDE中5GHz频段Wi-Fi的启用、设置与优化

更新

20170428 LEDE 17.01.1已经正式发布,且已集成5GHz驱动,优化设置请直接查看“2 优化5GHz Wi-Fi”部分。
受制于单核CPU 560MHz的性能瓶颈,使得在当今100M网络普及的今天,网件R6100路由器作为折腾帝的主路由器是不合格的。但是由于LEDE(OpenWrt)、DD-WRT等路由器软件对其近乎完美的支持,加之价格实惠,且不容易变砖又很容易救砖等优点,使得它可玩性很高。5GHz Wi-Fi具备良好的速度,但LEDE 17.01.0 正式版固件并未集成相关驱动,Stijn Segers已经提交了相关补丁,该问题应该会在下一版中得到解决。如果未进行设置或设置不当,会导致5GHz Wi-Fi不能发挥很好的连接速度,甚至大大低于2.4GHz Wi-Fi的速度。现就如何在LEDE中开启网件R6100的5GHz Wi-Fi并加以优化进行一下介绍。

1 开启5GHz Wi-Fi

更新软件包的源

opkg update

安装相关驱动

okpg install kmod-ath10k ath10k-firmware-qca988x

重启路由器

reboot

重启后,在LEDE的luci界面中,在“网络” > “无线” > “无线概况” 下可见5GHz Wi-Fi已经成功驱动:

Qualcomm Atheros QCA9880 802.11nac (radio1)

2 优化5GHz Wi-Fi

点击“网络” > “无线” > “无线概况” 5GHz Wi-Fi右侧的“添加”按钮,即可以进行设置。需要注意的优化选项主要有:

设备设置 > 基本设置 > 工作频率 > 模式默认的“AC”即可。

设备设置 > 基本设置 > 工作频率 > 信道5GHz的Wi-Fi信号强弱关键在于此项,很重要,建议选择“149”,还可以选择“153”、“157”或者“161”,不建议选择其他信道。

设备设置 > 基本设置 > 工作频率 > 频宽默认的“80 MHz”即可。

设备设置 > 基本设置 > 无线电功率路由器会根据连接的信号质量自行调节功率,默认的“自动”即可。如为了达到最佳效果,也可以选择最大的“30 dBm”。

设备设置 > 高级设置 > 国家代码可以选择“CN - China”。

设备设置 > 高级设置 > 距离优化OpenWrt文档中,该距离为最远客户端到路由器的距离,单位米。个人认为在“无线电功率”设为自动或最大的情况下,距离默认为空即可。

设备设置 > 高级设置 > 分片阈值设置为:“2346”,直接写数字,无需引号。

设备设置 > 高级设置 > RTS/CTS阈值设置为:“2347”,直接写数字,无需引号。

其他选项(包括无线网络名和密钥之类)可自行研究,配置完成后,点击“保存&应用”来运行保存配置。
最后,在“网络” > “无线” > “无线概况” > “设备设置” > “基本设置” > “无线网络开关” > “启用”来启用优化过的5GHz Wi-Fi。
上一篇:在NETGEAR R6100上安装LEDE以及luci、material主题和中文语言包

LEDE配置Aria2和其前端yaaw或者webui-aria2

轻量级多协议命令行下载工具: aria2,在OpenWrt时代配置起来相对繁琐。而LEDE项目不仅提供了aria2的图形界面(luci),还直接提供了最常见的两个前端界面软件包:YAAWwebui-aria2,使得配置起来相对轻松很多。

本文步骤是在安装了LEDE 17.02.0正式版的tl-wr703N路由器上进行配置的。

1 更新软件包列表

opkg update

2 安装

2.1 aria2、luci以及语言包

opkg install aria2 luci-app-aria2 luci-i18n-aria2-zh-cn

2.2 安装前端界面

使用LEDE软件包安装和下载后并上传到/www/目录下其实是一样的,如果想追求最新版,可以使用后者。
YAAW的软件包只有120KB左右,webui-aria2则近3MB,但安装好后运行起来还是很流畅的,对于703N来说,还是YAAW吧。
YAAW和webui-aria2可以同时安装,也可以单独安装,看自己喜好了。

opkg install yaaw
opkg install webui-aria2

3 配置

3.1 配置Aria2

进入LEDE的luci,定位到“服务” > “Aria2 配置”。
建议启用RPC令牌认证方式,其主要需要配置的选项如下:

基本配置 > 启用勾选,以运行aria2。
基本配置 > 以此用户权限运行这里可以选择daemon。
基本配置 > RPC认证方式建议选择“令牌”。否则在前端运行时,会提示不安全。
基本配置 > RPC令牌建议随机生成,比如:
ou2dkxl9mh7x2ffktwdmyrs2l8deb6wx
webui-aria2需要将该令牌添加到“密码令牌 (可选)"
基本配置 > 查看JSON-RPC URL根据上一步生成的令牌生成JSON配置路径,比如:
http://token:ou2dkxl9mh7x2ffktwdmyrs2l8deb6wx@192.168.2.1:6800/jsonrpc
YAAW需要将该内容添加到“JSON-RPC Path”
文件和目录 > 默认下载目录可根据自身需要设置。

其他选项可自行研究,配置完成后,点击”保存&应用“来运行aria2。

3.2 配置前端

在“服务” > “Aria2 配置” > “Aria2 状态”下,此时可见:Aria2 正在运行。其后可见安装的两个前端的打开快捷链接:“打开YAAW”,“打开WEBUI-ARIA2”。

3.2.1 配置YAAW

“打开YAAW”,在弹出的YAAW界面中,点击右上角“扳手”图标,在“JSON-RPC Path”添加上一步“基本配置 > 查看JSON-RPC URL”中生成的JSON配置路径:

http://token:ou2dkxl9mh7x2ffktwdmyrs2l8deb6wx@192.168.2.1:6800/jsonrpc

“Save”,即可。

3.2.2 配置webui-aria2

“打开WEBUI-ARIA2”,在弹出的webui-aria2界面中,“设置” > “密码令牌 (可选)”后添加上一步“基本配置 > RPC令牌”随机生成的令牌:

ou2dkxl9mh7x2ffktwdmyrs2l8deb6wx

“保存连接设置”,即可。

4 错误排查

4.1 错误1

YAAW:
Error: Internal server error
webui-aria2:
The last connection attempt was unsuccessful. Trying another configuration
上一个连接请求失败, 请尝试修改设置

解决方法:请在“服务” > “Aria2 配置” > “Aria2 状态”下中检查Aria2是否处于已运行状态,启用复选框是否已经勾选。

4.2 错误2

YAAW:
Error: Unauthorized
webui-aria2:
Oh Snap! Authentication failed while connecting to Aria2 RPC server. Will retry in 10 secs. You might want to confirm your authentication details by going to Settings > Connection Settings
不能连接到 Aria2 RPC 服务器, 将在10秒后重试. 您可能希望检查连接设置, 打开 设置 > 连接设置

解决方法:请检查YAAW的“JSON-RPC Path”是否添加正确;webui-aria2的“密码令牌 (可选)”是否添加。

为TP-Link TL-WR703N的无luci的LEDE设置PPPoE或无线桥接(bridge)的方法

更新

20170222 snapshots固件,或者通过imagebuilder自行构建的正式版固件,都可以使用该方法。 20170212 设置并不复杂。 对于无luci的LEDE(OpenWrt)来说,避免麻烦的最好方法是:由于LEDE(OpenWrt)的网络配置文件目前没有大改,暂时还可以通用。所以可以通过安装某一带luci的正式版,在luci中设置好网络,然后保存好/etc/config 下的网络相关的配置文件network、wireless和firewall。在安装Snapshop版后,通过Winscp传回或用putty对照修改就可以了。

 一 背景

一代经典路由器TP-Link TL-WR703N具备一个网口,工作模式可以是wan口也可以是lan口,使得其玩法很多。在设置没有luci的Snapshot版的LEDE(OpenWrt)时看起来很复杂,如何简化设置思路呢?

1.1 从网络数据传输来分析:

1.1.1 703N之后的网络连接:
即703N到客户端的连接:可以通过无线网络(Wireless)或者通过703N的网口经网线与客户端连接。
个人认为在现实世界中大部分人是将703N作为无线路由器来使用的,因此为了表达和简化设置说明,在此假定:客户端是通过访问703N建立的Wireless来上网的,而不是使用网线连接其网口来达到上网的目的。
此外,部分光猫的设置地址是192.168.1.1,而LEDE的默认管理地址也是192.168.1.1,会出现想访问703N的路由器设置地址但出现光猫管理界面的问题, 因此需要为703N的LEDE管理地址设置为新的ip,比如:192.168.2.1。此时,客户端的ip会变成192.168.2.*。
1.1.2  703N之前的网络连接:
有两种比较常见的场景:
一是PPPoE方式,即需要输入用户名和密码进行验证的上网方式,此时703N的网口需要工作在wan口模式;
二是无线桥接(Bridge)方式,即Bridge一个已知的无线网络。

1.2 简化的网络连接图


	+-----------+
	|   PPPoE   +---+
	+-----------+	|	+-----------+	    +-----------+
			+  ==>  +   703N    +  ==>  +  Wireless	|
	+-----------+	|	+-----------+	    +-----------+
	|   Bridge  +---+
	+-----------+

简化的设置思路是:
1.2.1 设置703N的无线网络(Wireless):
开启703N的无线网络(需要网线连接电脑与路由器的网口),通过接入无线网络完成后续的设置(不再需要网线连接电脑与路由器的网口)。
1.2.2 设置PPPoE(入户网线插入路由器的网口)或者桥接(Bridge)。

 

二 具体的设置方法

LEDE的网络相关设置的文件保存在/etc/config/下,主要包括3个:
network wireless firewall

2.1 设置703N无线网络

2.1.1 开启无线网络:
安装好LEDE后,用putty登陆路由器的管理地址:192.168.1.1.设置路由器密码后,就可以开始设置网络了。
官方提到的命令行工具是uci,但是vi直接改配置文件也挺方便。

vi /etc/config/wireless

将option disabled ‘1’改为option disabled ‘0’


config wifi-device 'radio0'
        option type 'mac80211'
        option channel '11'
        option hwmode '11g'
        option path 'platform/ar933x_wmac'
        option htmode 'HT20'
        option disabled '0'

config wifi-iface 'default_radio0'
        option device 'radio0'
        option network 'lan'
        option mode 'ap'
        option ssid 'LEDE'
        option encryption 'none'

2.1.2 更改LEDE的管理地址:

vi /etc/config/network

将option ipaddr ‘192.168.1.1’改为option ipaddr ‘192.168.2.1’


config interface 'loopback'
        option ifname 'lo'
        option proto 'static'
        option ipaddr '127.0.0.1'
        option netmask '255.0.0.0'

config globals 'globals'
        option ula_prefix 'fdd8:a2c4:707f::/48'

config interface 'lan'
        option type 'bridge'
        option ifname 'eth0'
        option proto 'static'
        option ipaddr '192.168.2.1'
        option netmask '255.255.255.0'
        option ip6assign '60'

注:此时可以看到lan区块下的option ifname 为’eth0’。

应用新的网络设置:

/etc/init.d/network restart

此时断开有线连接,搜索并接入刚开启的默认的无密码无线网络:LEDE。
注:开启的无线网络名称、密码、加密方式等可后续再设置,这里为了简化就不说了。

2.2 设置PPPoE连接或无线桥接

2.2.1 设置PPPoE连接的方法
将入户网线接入703N的网口;通过无线网络连接路由器LEDE,putty登陆LEDE管理地址:192.168.2.1。

vi /etc/config/network

将lan区域下的option ifname ‘eth0’改为option ifname ‘eth1’,并在最下面添加wan区块信息:


config interface 'loopback'
        option ifname 'lo'
        option proto 'static'
        option ipaddr '127.0.0.1'
        option netmask '255.0.0.0'

config globals 'globals'
        option ula_prefix 'fdd8:a2c4:707f::/48'

config interface 'lan'
        option type 'bridge'
        option ifname 'eth1'
        option proto 'static'
        option ipaddr '192.168.2.1'
        option netmask '255.255.255.0'
        option ip6assign '60'

config interface 'wan'
        option ifname 'eth0'
        option proto 'pppoe'
        option username 'PPPoE账户'
        option password 'PPPoE密码'

根据实际情况,更改PPPoE的用户名和密码。

保存,并应用新的网络配置:

/etc/init.d/network restart

设置完毕,应该可以上网了。

2.2.2设置无线桥接的方法
假设按“2.1设置703N无线网络”开启了无线网络LEDE,不需要PPPoE,而是需要桥接已有网络,则设置方法如下:
还是通过无线连接路由器LEDE,putty登陆LEDE管理地址:192.168.2.1。

vi /etc/config/network

在最下面添加wwan区块:


config interface 'loopback'
        option ifname 'lo'
        option proto 'static'
        option ipaddr '127.0.0.1'
        option netmask '255.0.0.0'

config globals 'globals'
        option ula_prefix 'fdd8:a2c4:707f::/48'

config interface 'lan'
        option type 'bridge'
        option ifname 'eth0'
        option proto 'static'
        option ipaddr '192.168.2.1'
        option netmask '255.255.255.0'
        option ip6assign '60'

config interface 'wwan'
        option proto 'dhcp'
vi /etc/config/wireless

将LEDE区块下的’default_radio0’删除,并增加桥接区块
config wifi-iface ‘default_radio0’改为config wifi-iface


config wifi-device 'radio0'
        option type 'mac80211'
        option channel '11'
        option hwmode '11g'
        option path 'platform/ar933x_wmac'
        option htmode 'HT20'
        option disabled '0'

config wifi-iface
        option device 'radio0'
        option network 'lan'
        option mode 'ap'
        option ssid 'LEDE'
        option encryption 'none'

config wifi-iface 'default_radio0'
        option device 'radio0'
        option network 'wwan'
        option mode 'sta'
        option ssid '已知无线网络的名称'
        option bssid '12:34:56:78:90:01'
        option encryption '无线网络的加密方法'
        option key '无线网络的密码'

需要更具实际情况更改的信息有:ssid,bssid,encryption,key。
ssid就是我们在手机或电脑WIFI那里看到的无线网络名称,bssid其实就是已知无线网络对应的无线网卡的MAC地址,encryption加密方法可尝试设为psk2,key是无线网络的密码。
更改防火墙配置:

vi /etc/config/firewall

在wan区块最后添加一行:option network ‘wan wan6 wwan’


...

config zone
        option name wan
        list network 'wan'
        list network 'wan6'
        option input REJECT
        option output ACCEPT
        option forward REJECT
        option masq 1
        option mtu_fix 1
        option network 'wan wan6 wwan'

...

应用新的网络配置:

/etc/init.d/network restart

设置完毕,应该可以上网了。

在TL-WR703N上安装LEDE并扩展到U盘运行(Extroot)

更新

20170808 感谢@ian提醒,先修改fstab再复制overlay,就不会出现 fstab 恢复原始状态的状况。重新更改该部分内容。 20170706 在720N上,目前新版的LEDE使用f2fs格式化的U盘做exroot时,会出现类似如下的错误: mount: mounting /dev/sda1 on /mnt failed: Invalid argument mount: mounting /dev/sda1 on /mnt failed: I/O error 暂时解决办法是:windows上使用MiniTool Partition Wizard将U盘格式化为ext4格式。 相应的,制作固件时的命令改为: make image PROFILE=tl-wr703n-v1 PACKAGES="block-mount kmod-fs-ext4 kmod-usb-storage" 20170625 LEDE稳定发行版已于20170610更新为17.01.2,本文内容做相应修改。 20170430 LEDE稳定发行版已于20170418更新为17.01.1,本文内容做相应修改。 20170315 所有硬件版本的703N均可以按此方法扩展,但是强烈建议在可以刷入pepe2k不死uboot的703N上进行操作,理论上包括:v1.0-v1.6,以及v1.7(Dec. 2012 (FW build 121204))。 20170222 延迟1周后,LEDE第一个正式版的固件和软件包终于出现在了LEDE官方的下载库中,具体版本号是:17.01.0-r3205-59508e3官方网页暂时仍显示为Current Release - LEDE 17.01.0-rc2,但是应该很快会更新。按正式版重新整理里此文档,但不管是releases版还是snapshots,此文档均适用。 20170212 在无luci的情况下,设置PPPoE和无线桥接的方法可以参考这里20170205 LEDE目前已经放出了发行版的时间表,并已公布了第一个预览版 17.01.0 RC1。 17.01.0最终版将于2017年2月15公布。

说明

说明放在前面,以免浪费你的宝贵时间或可能破坏掉你的路由器: 1.不死uboot 因为只要有了不死uboot,就可以保证只要在uboot中刷入任何固件都不会导致变砖,所以我建议折腾的基础是建立在能刷入不死uboot的703N上。目前理论上可以方便的刷入pepe2k的不死uboot的703N硬件版本为:v1.0-v1.6,以及v1.7(Dec. 2012 (FW build 121204))。尽管事实上,如果想刷,任何版本的703N(包括April 2014 (3.17.1 Build 140120 Rel.56593n))都可以按此法进行扩展,只是个别703N--特指April 2014 (3.17.1 Build 140120 Rel.56593n)--因为不能方便的写入不死uboot,在操作的过程中存在变砖的可能性,尽管有一些硬件DIY可以救,但是这种情况是应该而且可以避免的。LEDE文档说支持的是703N V1。我这个背面铭牌上印的是:Ver:1.6,并操作成功;所以,我不清楚其他版本的情况; 2.这不是一个完全手把手的教程,只是记录自己折腾的过程,因此对于从没有折腾过OpenWrt的人来说,将会面对很多细节问题,一个小问题也许就会卡住你好几天的时间,甚至破坏了你的703N; 3.如果你想折腾,请务必读完全文再决定是否动手; 4.动手之前,请务必备份好网络配置文件(/etc/config/下的network,wireless,firewall),我假设你之前成功折腾了OpenWrt,不过,你折腾过OpenWrt,这些保不保存也无所谓了; 5.如果你对在没有luci(网页版的管理界面)的情况下如何配置网络完全不了解,我劝你动手之前还是要三思。 4.本文亦适用于TL-WR720N。

TL-WR703N只有4M闪存,如果想要安装官方稳定发行版(Stable Release,带luci),不管是OpenWrt还是LEDE,目前能成功配置USB扩展(Extroot)的最新版本是barrier_breaker 14.07

作为OpenWrt的Reboot项目,LEDE已运行多时。半年多了,第一个正式版已经发布,但目前只有此外每日更新的为snapshot版(该版本默认不带luci)。因闪存空间不足以安装扩展所需的软件,LEDE官方稳定发行版(Stable Release)和其开发快照版(Development Snapshot)都是无法扩展到U盘(Extroot)的。但是LEDE和OpenWrt一样,同样提供了一个固件构建程序包(imagebuilder),可以将扩展U盘所需软件直接打包进固件当中,避免了使用opkg安装这些文件出现的空间不足问题,从而成功实现Usb扩展。因为是采用官方工具自己构建,所以对那些使用别人打包的软件心存芥蒂的人来说,是个不错的选择。此外imagebuilder并非从头编译固件,只是相对简单的打包(make),因此不会耗费太多硬件资源和时间。

本文主要参考:
https://lede-project.org/docs/user-guide/extroot_configuration

1 Extroot的背景知识:

LEDE固件将所支持设备的内部存储划分为两部分,一部分高度压缩且只读(/),另一部分可写(/overlay)。LEDE(OpenWrt)通过linux内核的功能可以在表现形式上将这两部存储合并起来,使得对应用程序来说,只感觉到一个总的可读写的存储空间。
Extroot,则是在这两者之外,通过外置U盘等再添加一个外部的(/overlay),在启动时接替了(mounted over)内部的(/overlay)工作,从而实现扩展。还有个好处是,外部(/overlay)接替内部(/overlay)工作,并不彻底覆盖掉或破坏内部的(/overlay),只是运行于其上,这就意味着当外接U盘损坏或移除后,仍然可以通过内部的(/overlay)部分启动,恢复到开启Extroot前的状态。

2 实现步骤

2.1 所需的条件

64位的linux系统(运行在虚拟机中的也可以)
选择正确的固件构建程序包(imagebuilder)
假设是一个u盘(当时折腾14.07时分了三个区

2.2 建立工作目录

mkdir lede-703n
cd lede-703n

2.3 获取正确的imagebuilder

2.3.1 对于正式版:

2.3.1.1 在LEDE的下载库中找到703N所在的文件夹,并找到相关文件
https://downloads.lede-project.org/releases/17.01.2/targets/ar71xx/generic/

tl-wr703n-v1-squashfs-factory.bin
sha256sum: 6989535e198c7d250fcf39a4cf46e74a6230a0a40d2b5c66c22f290101e32c7c
tl-wr703n-v1-squashfs-sysupgrade.bin
sha256sum: 812ec41c9de2e94cb9fa1150f9662e050f4b2b21bd00ce328a8096f55aa1b458
lede-imagebuilder-17.01.2-ar71xx-generic.Linux-x86_64.tar.xz
sha256sum: 21635b5f9c8a21544fb46cb0fac714c4146d5da625105722867f45259fec07db

2.3.1.2 下载对应的imagebuilder:

wget https://downloads.lede-project.org/releases/17.01.2/targets/ar71xx/generic/lede-imagebuilder-17.01.2-ar71xx-generic.Linux-x86_64.tar.xz

wget出错就:

wget --no-check-certificate https://downloads.lede-project.org/releases/17.01.2/targets/ar71xx/generic/lede-imagebuilder-17.01.2-ar71xx-generic.Linux-x86_64.tar.xz

2.3.1.3 解压imagebuilder

xz -d lede-imagebuilder-17.01.2-ar71xx-generic.Linux-x86_64.tar.xz
tar -xvf lede-imagebuilder-17.01.2-ar71xx-generic.Linux-x86_64.tar
2.3.2 对于snapshots版:

2.3.2.1 在LEDE的下载库中找到703N所在的文件夹,并找到相关文件
https://downloads.lede-project.org/snapshots/targets/ar71xx/generic/

tl-wr703n-v1-squashfs-factory.bin
tl-wr703n-v1-squashfs-sysupgrade.bin
lede-imagebuilder-ar71xx-generic.Linux-x86_64.tar.xz

2.3.2.2 下载对应的imagebuilder:

wget https://downloads.lede-project.org/snapshots/targets/ar71xx/generic/lede-imagebuilder-ar71xx-generic.Linux-x86_64.tar.xz

wget出错就:

wget --no-check-certificate https://downloads.lede-project.org/snapshots/targets/ar71xx/generic/lede-imagebuilder-ar71xx-generic.Linux-x86_64.tar.xz

2.3.2.3 解压imagebuilder

xz -d lede-imagebuilder-ar71xx-generic.Linux-x86_64.tar.xz
tar -xvf lede-imagebuilder-ar71xx-generic.Linux-x86_64.tar

2.4 安装make所需的依赖

2.4.1 若是CentOS/RHEL
yum install subversion git gawk gettext ncurses-devel zlib-devel openssl-devel libxslt unzip
yum group install "Development Tools"
2.4.2若是Debian/Ubuntu
apt-get install subversion build-essential libncurses5-dev zlib1g-dev gawk git ccache gettext libssl-dev xsltproc unzip

2.5 打包固件

2.5.1 进入imagebuilder工作目录:
cd lede-imagebuilder-*
2.5.2 获取703N的打包参数PROFILE:tl-wr703n-v1。
make info
...
tl-wr703n-v1:
    TP-LINK TL-WR703N
    Packages: kmod-usb-core kmod-usb2
...
2.5.3 打包并获取固件
make image PROFILE=tl-wr703n-v1 PACKAGES="block-mount kmod-fs-f2fs kmod-usb-storage mkf2fs f2fsck"

打包很快完成,在bin/targets/ar71xx/generic/下可以找到已经打包好的固件。

ls ./bin/targets/ar71xx/generic/

17.01.2正式版:

lede-17.01.2-ar71xx-generic-tl-wr703n-v1-squashfs-factory.bin
lede-17.01.2-ar71xx-generic-tl-wr703n-v1-squashfs-sysupgrade.bin

snapshots版:

lede-ar71xx-generic-tl-wr703n-v1-squashfs-factory.bin
lede-ar71xx-generic-tl-wr703n-v1-squashfs-sysupgrade.bin

2.6 刷入固件

网线连接703N,强烈推荐在不死uboot中刷入sysupgrade固件。

2.7 扩展到U盘(Exroot)

2.7.1 更改root密码

安装好固件后,等指示灯稳定后,用puyyt连接路由器 192.168.1.1,首先是更改root密码

passwd
2.7.2 查看挂载情况
block info
/dev/mtdblock2: UUID="9fd43c61-c3f2c38f-13440ce7-53f0d42d" VERSION="4.0" MOUNT="/rom" TYPE="squashfs"
/dev/mtdblock3: MOUNT="/overlay" TYPE="jffs2"
/dev/sda1: UUID="fdacc9f1-0e0e-45ab-acee-9cb9cc8d7d49" VERSION="1.4" TYPE="ext4"
/dev/sda5: VERSION="1" TYPE="swap"
/dev/sda6: UUID="fffaa123-1234-5678-abcd-1234abcd5678" VERSION="1.7" MOUNT="/mnt/sda6" TYPE="ext4"

这里借用了原文的信息来说明情况。可见已经成功挂载U盘,三个区是:sda1、sda5、sda6。
sda1是为Extroot准备的,sda5是swap,sda6后续可以作为aria2和samba等文档存储区。

2.7.3 将U盘的第一个区sda1和第三个区sda6格式化为f2fs格式
mkfs.f2fs /dev/sda1
mkfs.f2fs /dev/sda6

f2fs格式是为闪存设计的,u盘和ssd建议为f2fs格式。

2.7.4 自动修改文件系统(fstab)信息:
block detect > /etc/config/fstab; \
sed -i s/option$'\t'enabled$'\t'\'0\'/option$'\t'enabled$'\t'\'1\'/ /etc/config/fstab; \
sed -i s#/mnt/sda1#/overlay# /etc/config/fstab; \
cat /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  '/overlay'
        option  uuid    'fdacc9f1-0e0e-45ab-acee-9cb9cc8d7d49'
        option  enabled '1'

config 'swap'
        option  device  '/dev/sda5'
        option  enabled '1'

config 'mount'
        option  target  '/mnt/sda6'
        option  uuid    'fffaa123-1234-5678-abcd-1234abcd5678'
        option  enabled '1
2.7.5 复制/overlay到sda1
mount /dev/sda1 /mnt ; tar -C /overlay -cvf - . | tar -C /mnt -xf - ; umount /mnt

直接重启路由器:

reboot
2.7.6 重启后就可以查看到成功了:
df -h

2.8 后续

2.8.1想办法,把没有luci的路由器联网
如果之前备份过OpenWrt的网络配置文件,通过WinScp传回重启就可以了。
2.8.2安装必要组件:
opkg update
opkg install luci luci-i18n-base-zh-cn luci-theme-material
opkg install ...

注:
1.现在没必要安装luci-ssl,它使用的是一个自签名的证书;
2.不要在成功扩展后(Extroot)运行opkg upgrade,更不要通过luci或者putty更新固件,更新固件永远在uboot中进行。

在NETGEAR R6100上安装LEDE以及luci、material主题和中文语言包

更新

20170308
由于正式版发布,强烈建议使用正式版。但是如果仍然想安装Snapshot固件,那么该文档仍然适合你。
20170222
无luci的固件联网方法,可以参照这个帖子:
LEDE第一个正式版固件17.01.0已经可以下载。
如果R6100刷了LEDE后,感觉WIFI下载速度不够快,可以看看这个帖子:
NETGEAR R6100在LEDE中5GHz频段Wi-Fi的启用、设置与优化

OpenWrt的部分核心程序员认为OpenWrt不够开放透明,核心人员不够活跃又缺少合作,修补bug移植新功能速度慢,基础设施也不健全,所以他们决定重启试试(reboot),来建立一个更好的项目:LEDE

我折腾这个目前还处在Snapshot阶段(已足够稳定,未预装luci界面)并亟待发布稳定版的LEDE的原因很简单:
我暂时觉得material主题很漂亮。
因为OpenWrt的material主题处于snapshot中,未在Chaos Calmer 15.05.1中提供,即使可以强行安装成功,但会碰到opkg update失败(wget returned 5.)的情况。

简单记录下折腾过程:

折腾环境是:

假如路由器是NETGEAR R6100
路由器R6100通过网线连接移动宽带的光猫;
电脑通过WIFI连接R6100实现上网。

折腾思路是:

因为只有一根网线,且LEDE暂时未预装luci界面,只能通过putty操作。
1 安装LEDE;
2 通过这根网线连接电脑和LEDE路由器的LAN口,设置root密码,开启LEDE路由器的WIFI功能,顺带设置好LEDE路由器的PPPOE功能;
3 再通过这根网线将LEDE路由器的WAN口与移动光猫的LAN口连接,电脑通过WIFI和R6100连通,实现上网;
4 在电脑上通过WIFI和putty进一步设置。

折腾过程是:

1.安装LEDE

在LEDE下载目录中
https://downloads.lede-project.org/snapshots/targets/
找到R6100的固件。当前R6100正在运行OpenWrt,故下载sysupgrade固件即可。
https://downloads.lede-project.org/snapshots/targets/ar71xx/nand/lede-ar71xx-nand-r6100-squashfs-sysupgrade.tar

在OpenWrt的luci里: 系统-备份/升级中刷写新固件,此处注意要去掉“保留配置”的钩,之后刷写固件,切勿断电

2 有线连接电脑与LEDE路由器

刷入LEDE几分钟后,将电脑与LEDE路由器LAN口通过网线连接。LEDE路由器默认IP地址为192.168.1.1。将电脑有线网络设置ipv4自动获取,或者设置为192.168.1.2。此时在电脑上ping 192.168.1.1应该可以有回应了。

2.1 设置root密码

用putty通过 22端口登陆192.168.1.1,用户名为root,密码为空。见到欢迎界面后,即可设置root密码:

passwd
2.2 开启无线网络,设置PPPOE

2.2.1 开启WIFI

vi /etc/config/wireless

将config wifi-device ‘radio0’下的option disabled ‘1’改为

option disabled '0'

保存,并应用网络设置

/etc/init.d/network restart

稍等片刻,即可发现名为LEDE的可供连接的无线网络,密码为空。可在装好luci图形界面后再设置WIFI密码。

2.2.2 设置PPPOE

uci set network.wan.proto=pppoe
uci set network.wan.username=用户名
uci set network.wan.password=密码
uci commit

应用网络设置

/etc/init.d/network restart

2.2.3 更改LEDE路由器LAN的默认网关地址
(实测不更改此地址亦无问题,但强烈建议更改。否则通过浏览器登陆LEDE路由器luci界面的默认网关IP 192.168.1.1时,可能会出现移动光猫的登陆界面,因为移动光猫的网关IP默认也是192.168.1.1。)
此时最好将LEDE路由器LAN的默认网关设置为其他IP,本步及下文均设置为192.168.2.1。

vi /etc/config/network

将config interface ‘lan’区域下的option ipaddr ‘192.168.1.1’改为

option ipaddr '192.168.2.1'

保存,并应用新的网络设置

/etc/init.d/network restart

3 有线连接LEDE路由器和光猫,WIFI连接电脑和LEDE路由器

此时,用网线将LEDE路由器的WAN口与移动光猫的LAN口连接,电脑通过WIFI连接LEDE路由器,此时应该可以上网了。
putty登陆刚才设置好的LEDE路由器网关,192.168.2.1。

okpg update
opkg update

安装luci、material主题、中文语言包。

opkg install luci-ssl luci-theme-material luci-i18n-base-zh-cn

等待结束。
此时浏览器登陆192.168.2.1,顺利的话就可以看到material的luci界面了。
下一篇:NETGEAR R6100在LEDE中5GHz频段Wi-Fi的启用、设置与优化

解决Chromebook的secure shell连接openwrt时出现的“WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!”

更新

20170319 该方法适用Openwrt、LEDE以及Linux服务器。

使用chromebook secure shell 连接 openwrt时出现如下问题:

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that a host key has just been changed.
The fingerprint for the RSA key sent by the remote host is
dd:3b:ad:5f:c5:5c:fc:09:58:21:df:ca:f5:23:3d:be.
Please contact your system administrator.
Add correct host key in /.ssh/known_hosts to get rid of this message.
Offending RSA key in /.ssh/known_hosts:3
RSA host key for 192.168.1.1 has changed and you have requested strict checking.
Host key verification failed.
NaCl plugin exited with status code 255.
(R)econnect, (C)hoose another connection, or E(x)it?

解决方法如下:

1.打开secure shell;
2.尝试登录openwrt;
3.按 ctrl+shift+j 组合键,调出控制台;
4.输入如下命令:

term_.command.removeAllKnownHosts()

回车后,可以看见 true;
5.重新连接openwrt,出现
Are you sure you want to continue connecting (yes/no)?
时,输入

yes

6.输入登录密码…