标签归档:OpenWrt

在树莓派3B上安装OpenWrt 18.06.0

更新日志

20180910
OpenWrt 升级至18.06.1;
更正部分疏漏和错误;
有趣的地方在于:直接格式化存储卡,写入 18.06.1镜像,上电,发现之前的设置居然还在。使用firstboot命令后才清除。


经历LEDE分支的快速发展后,OpenWRT与LEDE又重新走到了一起,并于2018年7月放出了首次合并后的正式版OpenWrt 18.06.0。今天介绍下如何在树莓派3 Modle B上安装正式版的OpenWrt 18.06.0,主要目的是介绍如何配置3B的网络。

安装OpenWRT

下载所需的固件和写入软件

下载适配树莓派3B的固件

openwrt-18.06.1-brcm2708-bcm2710-rpi-3-squashfs-factory.img.gz

解压后得到openwrt-18.06.1-brcm2708-bcm2710-rpi-3-squashfs-factory.img。

下载并安装写入软件

Win32DiskImager

写入OpenWRT

建议将TF卡事先格式化一次,保证卡上内容为空。

以管理员方式打开Win32DiskImager,在“Image File”处选择解压好的“openwrt-18.06.1-brcm2708-bcm2710-rpi-3-squashfs-factory.img”,谨慎选择要写入的目标TF卡所在的盘符“Device”,之后点击“Write”写入。

修改OpenWRT网络配置

初始化设置

将写好的TF卡插入3B,通电,以网线连接上3B与电脑,打开 192.168.1.1,直接点击“Login”登陆。

设置密码和修改SSH设置

点击上方提示处的“Go to password configuration…”,
设置密码(Router Password)。
将“Dropbear Instance”下的“Interface”选择“lan”,之后点击“Save & Apply”保存并生效。

开启并连接3B的无线网络

依次打开“Network” > “Wireless”,在“Wireless Overview”界面,找到“SSID: OpenWrt | Mode: Master”,点击“Enable”开启无线,此无线的用户名为“OpenWrt”,默认密码为空。
断开有线连接,在无线网络找到“OpenWrt”,进行连接,重新登陆路由器。

修改网络接口设置并添加WAN口配置

修改LAN接口网卡适配器的设置

依次打开“Network” > “Interfaces”,在”Interfaces”下找到“LAN”,点击“Edit”进入“Interfaces – LAN”的配置界面,找到“Common Configuration”选项卡下的“Physical Settings”,在“Interface”点击右侧的下拉列表,去掉“Ethernet Adapter: “eth0” (lan)”前面的钩,之后点击“Save & Apply”保存并生效。

对无线网络的进一步配置,如更改无线名称,加密设置等在此不赘述。

添加WAN口

依次打开“Network” > “Interfaces”,点击“Add new interface…”打开新建接口的界面“Create Interface”,如下修改:

  • “Name of the new interface”处,填入“WAN”。
  • “Protocol of the new interface”处,根据是否由光猫拨号进行选择:如果是宽带的账户密码在光猫中设置并拨号,就选择“DHCP client”;如果是在树莓派的OpenWRT中设置宽带账号并拨号,就选择“PPPoE”。
  • “Cover the following interface”处,选择“Ethernet Adapter: “eth0″”。

设置好之后,点击“Submit”提交修改。
此时,返回WAN口的设置界面“Interfaces – WAN”:
如果选择了PPPoE,就在该界面下方输入宽带的用户名“PAP/CHAP username
”和密码“PAP/CHAP password”。
在该界面的右侧防火墙设置“Firewall Settings”中:
“Create / Assign firewall-zone”处,选择“wan:(empty)”。
点击“Save & Apply”保存并生效。

安装中文语言包和material主题

putty登陆3B,安装语言包和material主题

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

解决编译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))
...

解决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.输入登录密码…

TL-WR703N、TL-WR720N将官方OpenWrt系统扩展到U盘运行

更新

2017-08-08 如无较大错漏,本文不再更新,请尽快更新至LEDE; 感谢@ian提醒,先修改fstab再复制overlay,就不会出现 fstab 恢复原始状态的状况。重新更改该部分内容。 2017-05-29 LEDE已更新为17.01.12017-02-22 目前LEDE已放出了第一个正式版,因此建议采用最新版:17.01.02017-01-18 1.如果想尝试新版固件,OpenWrt官方和LEDE均提供了一个工具:imagebuilder。可以参考这个帖子进行。 2.不要在已经Extroot的系统上更新系统或固件,可能会导致设备变砖,如需更新,请拔下U盘,并在uboot中操作。

TL-WR703N、TL-WR720N的闪存只有4M,装完官方版的OpenWrt后空间所剩无几,好在它们提供了一个usb口,可通过官方教程挂载U盘,并将OpenWrt运行在U盘中,即扩大rootfs,同时解决安装软件没有空间的尴尬。

1 系统、挂载模式、挂载方法的选择

OpenWrt系统:
如果只想安装OpenWrt官方固件,那么建议选择barrier_breaker 14.07,不建议选择最新的稳定版chaos_calmer 15.05,后者会出现空间不足导致U盘驱动无法安装的情况。
挂载模式:
目前OpenWrt官方推荐rootfs挂载’/overlay’的模式(本文使用该方法),不再推荐’/’的模式。如果U盘损坏,拔下U盘可以启动系统。
挂载方法:
如果按照官方文档所说barrier_breaker的挂载方法反而比较麻烦一点点,本文采用挂载模式中链接的最新方法。

2 准备好U盘

目前U盘价格下降,10几元就能买到8G以上的,如果都作为系统盘来用过于浪费,所以建议将U盘分成3个区,1是用来挂载系统安装软件,1-2G足够了;2作为SWAP区,比如256M;3剩下的空间作为数据区,用来做aria2或离线迅雷的下载区。U盘需要事先在windows中可通过MiniTool Partition Wizard软件分成三个区,1、3区格式化为ext4格式,2区选择swap。

3 具体步骤

将U盘插入usb口,注意:720N需要将开关拨到3G模式,否则无法识别U盘。

3.1 安装exroot所需软件包

通过putty进入路由器,更新软件包列表

root@OpenWrt:~# opkg update

安装挂载U盘必须的包
官方建议安装kmod-usb-storage-extras。但没有足够的空间。有的教程提到安装e2fsprogs来格式化U盘,那选择的一定不是官方系统,因为空间不够。这里选择的是官方系统,所以需要事先格式化好U盘。

root@OpenWrt:~# opkg install opkg install block-mount kmod-fs-ext4 kmod-usb-storage
root@OpenWrt:~# reboot

3.2 查看u盘是否已经挂载

谢谢@huxin指出命令拼写错误。

root@OpenWrt:~# block info

/dev/mtdblock2: UUID="********-********-********-********" VERSION="4.0" TYPE="squashfs"
/dev/mtdblock3: TYPE="jffs2"
/dev/sda1: UUID="********-****-****-****-************" NAME="EXT_JOURNAL" VERSION="1.0" TYPE="ext4"
/dev/sda5: VERSION="2" TYPE="swap"
/dev/sda6: UUID="********-****-****-****-************" NAME="EXT_JOURNAL" VERSION="1.0" TYPE="ext4"

出现/dev/sda1下面的三行说明U盘已经挂载成功,挂载的U盘的三个区,sda1、sda5、sda6。

3.3 修改文件系统配置文件

root@OpenWrt:~# vi /etc/config/fstab

将option enabled ‘0’改为option enabled ‘1’,
将option target ‘/dev/sda1’改为option target ‘/overlay’,
按如下修改:

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 '********-****-****-****-************'
option enabled '1'

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

config 'mount'
option target '/mnt/sda6'
option uuid '********-****-****-****-************'
option enabled '1'

按ESC键,输入:wq,保存并退出编辑器。

3.4 复制/overlay到U盘

将/dev/sda1挂载到/mnt

root@OpenWrt:~# mount /dev/sda1 /mnt

将/overlay复制到/mnt

root@OpenWrt:~# tar -C /overlay -cvf - . | tar -C /mnt -xf -
root@OpenWrt:~# umount /mnt
root@OpenWrt:~# reboot

3.5 检查是否扩展到u盘成功

查看rootfs是否增加

root@OpenWrt:~# df

也可以在luci中system-mount points下查看rootfs的大小和挂载情况。

4 解决遗留问题

此时再次查看fstab

root@OpenWrt:~# vi /etc/config/fstab

可见fstab又恢复原始状态,同时在luci中system-mount points可见Mount Points和SWAP的未勾上。
此时再次按之前的改动方法修改fstab,

root@OpenWrt:~# vi /etc/config/fstab

保存重启。

进入luci界面可见Mount Points和SWAP处enabled的勾已启用,但是Mount Points 的Filesystem处是问号。

第一行是sda1运行的/overlay,点击后面的edit,在device 处选择/dev/sda1,filesystem选择之前格式化好的格式ext4,同时勾上use as root filesystem,Save & Apply,然后点击back to overview返回Mount points主界面。

第二行是数据盘/mnt/sda6,点击edit,在device 处选择/dev/sda6,filesystem选择格式ext4,
Save & Apply,保存应用即可。

现在就可以安装很多你想安装的东西了。