英国雷迪RD1000非金属管线探测仪

华硕路由器Asus RT-ACRH17 OpenWrt,刷openwrt教程

华硕路由器刷OPENWRT教程

注:该教程整理自恩山论坛,因论坛内容较为繁琐,理解不便,特整理优化本文。

所需文件列表

解锁Bootloader的固件

【openwrt-ipq806x-asus_rt-acrh17-squashfs-flash-factory.trx】

opboot固件

【opboot-rt-acrh17-flash-v1.0.6.bin】

lean制作的openwrt固件

【openwrt-ipq40xx-asus_rt-acrh17-squashfs-sysupgrade.bin】

所需工具软件列表

SSH控制台工具

xshell 或 putty

SFTP文件传输工具

winscp

附,所需文件下载地址:

链接:https://pan.baidu.com/s/1Ocn-8O6Qo_EdXKbP8NjpUA 提取码:s9qy

1、备份出厂设置,防止变砖

  • 登陆路由器管理界面(初始化设置好路由器管理的账号密码)。 系统设置——Enable SSH 打开
  • 使用putty 登陆命令行控制台(路由的IP地址请查看路由器的LAN设置界面,用户名密码即为路由器管理设置的账号密码)
  • 找到ART分区,输入 cat /proc/mtd 查看
  • 使用dd命令,拷贝mtd3、mtd4到 tmp文件夹
  • cd /tmp
  • dd if=/dev/mtd3 of=/tmp/Factory.bin
  • dd if=/dev/mtd4 of=/tmp/Factory2.bin
  • 使用winScp 将tmp下的文件复制到电脑,自行保存好以备不时之需

2、原厂固件刷入 LEDE(用于解锁bootloader分区)

  • 在原厂固件升级界面,上传文件【openwrt-ipq806x-asus_rt-acrh17-squashfs-flash-factory.trx】(用户名:root,密码:password) 刷入即可。

3、刷入 opBoot

  • 使用winScp上传【opboot-rt-acrh17-flash-v1.0.6.bin】 到/tmp目录下
  • 使用 putty进入ssh后台,解锁bootloader分区。
  • mtd unlock /dev/mtd0
  • md5校验一下文件,防止变砖:md5sum /tmp/opboot-rt-acrh17-flash-v1.0.6.bin  校验得到的MD5值为 716a1501871687bf91af2064a475b72c (不同版本MD5可查看附注的历史版本链接)
  • 将opboot刷入bootloader分区: mtd -r write /tmp/opboot-rt-acrh17-flash-v1.0.6.bin Bootloader(如果成功,会出现Rebooting…字样)
  • 等待重启,如果要进入opboot,请在接通电源前按住WPS按钮8秒以上(1.0.2之前的版本为复位按钮)

附注: opboot的历史版本链接 http://www.mleaf.org/downloads/rt-acrh17/opboot/

4、刷入openwrt

  • 进入opboot之后,在更新固件界面选择固件【openwrt-ipq40xx-asus_rt-acrh17-squashfs-sysupgrade.bin】,点击更新,更新完等待重启即可。

 后记:

– 本文刷入的 openwrt 其实是网友自行根据lean大的git仓库编译而来, 大家也可以参考恩山的编译贴,自行编译所需刷机包。

– 另外,2019.6月,lean更新了 acrh17 刷梅林的包,在分享的网盘中可以看到对应文件,需要的可以刷入试试,据说很稳。

– 这里还有一个更简便的刷机方式,不经过opboot中转,https://hceasy.com/rt-acrh17-openwrt-firmware/

 

本文参考来源:

– [ASUS 华硕] RT-ACRH17 免拆机刷不死OpBoot教程

– 新人小白,华硕RT-ACRH17原厂备份ART

– Lean R8.1.12 Asus RT-ACRH17 openwrt固件[附上编译过程]

– [2019-06-07] 全球首发!原创高通梅林 RT-ACRH17 发布!内置 Fullcone 和 软件中心

 

如何编译符合自己路由器的的OpenWrt固件

前言:

玩OpenWrt已经快两年了,最早接触是因为CHDBITS,选择了G300NH2来搭载,发现性能较差,之后就更换为AG300H使用官方原版挂种100下载速度700kb+稳定运行,后来先后购入了乐视小米ipad后就有了越来越多的想法,安装了各种插件,过一段时间更新后发现有问题,然后只有重新刷,每次都很繁琐,5月以来使用了很多基友的包(已经集成了很多插件)发现不大稳定,所有萌发了自己编译符合自己AG300H的固件来。

一、准备工作

1、ubuntu+1 VM虚拟机什么都可以

2、固件获取:svn://svn.openwrt.org/openwrt/branches/barrier_breaker  你需要什么版本的就下载什么版本

二、更新系统软件

1、使用 root 账户登录 ubuntu

2、使用 apt-get update 更新组建

3、安装编译需要的组件(如下\绿色是aria2编译需要的组建)

apt-get install g++
apt-get install libncurses5-dev
apt-get install zlib1g-dev
apt-get install bison
apt-get install flex
apt-get install unzip
apt-get install autoconf
apt-get install gawk
apt-get install make
apt-get install gettext
apt-get install gcc
apt-get install binutils
apt-get install patch
apt-get install bzip2
apt-get install libz-dev
apt-get install asciidoc
apt-get install subversion

apt-get install texinfo

apt-get install sharutils

apt-get install ncurses-term

apt-get install git-core

apt-get install sphinxsearch

apt-get install libtool

apt-get install sphinx-common

apt-get install libssl-dev

apt-get install libsqlite3*

apt-get install intltool

apt-get install libiconv*

apt-get install gstreamer-0.10*

apt-get install glib2.0

apt-get install libxml2-dev

apt-get install qemu

sphinxsearch libtool sphinx-common

4、退出 root身份  (exit)

5、新建一个账户  adduser openwrt    sodu openwrt

5、为了防止文件读写权限造成问题,需要将源码copy到openwet的根目录下进行所有操作

cd ~

cp -R /home/user/ ./

三、加载RA-MOD

1、添加ra-mod 编辑目录下的feeds.conf.defaul 注释掉原有的Luci 并加入

src-git ramod git://github.com/ravageralpha/my_openwrt_mod.git

2、执行以下命令

./scripts/feeds uninstall luci

./scripts/feeds update -a

./scripts/feeds install -a

./scripts/feeds install luci

./scripts/feeds update -a

./scripts/feeds install -a

svn update

这样就可以显示出来了,不然有些同学说我加了ra-mod的怎么不显示呀,或没有显示luci

四、进入订制界面

make defconfig

make menuconfig

五、按你的需求选择需要的功能

usbutils 

Garget—system—atherosar7xxx/ar9xxx 路由芯片
Target—profile—buffalowzr-hp-ag300h 我的路由型号
Base—system—block-mount USB挂载
                         libstdcpp 安装aria2需要
luci—collections—luci 添加luci界面
         applications—luci-app-ddns dns界面
                               luci-app-hd-idle 磁盘休眠控制界面
                               luci-app-multiwan 多拨控制界面
                               luci-app-qos qos界面
                               luci-app-samba samba界面
                               luci-app-ushare ushare界面
        translations—luci-i18n-chinese luci中文语言包
kernelmodules—filesytems—kmod-fs-ext4 硬盘ext4格式支持
                          nativelanguagesupport—kmod-nls-utf8 utf8支持??
                          usbsupport—kmod-usb-ohci Ohci控制器
                                               kmod-usb-storage 添加储存设备驱动
                                               kmod-usb-storage-extras 储存设备扩展
                                               kmod-usb-uhci Uhci控制器
                                               kmod-usb2 Uusb2.0
bootloaders—uboot-ar71xx-nbg460n_550n_550nh 默认
libraries—filesystem—libext2fs 硬盘格式化工具
               ssl—libopenssl 安装aria2需要
               libffmpeg-mini ushare需要
               libxml2 安装aria2需要
network—filetransfer—aria2 aria2(我没选)
                                    vsfpd ftp服务器
                                    multiwan 多拨软件
                                    ppp 默认
                                       ppp-mod-pppoe 默认
                                    samba36-server Samba共享
                                    wpad-mini 默认
multimedia—ushare ushare媒体共享

六、 编译

make v=99

第一次编译时间较久,make v=99最稳定。

5、完成 

编译完成后,编译好的固件在主文件夹/bin中,拷贝出来到自己要保存的文件夹中。以下命令是清理后以便于下次编译的。

清除缓存 make dirclean

彻底清理make distclean    或  make clean

编译单个包

编译一个单独的软件包(例如在cups软件包):

make package/cups/compile V=99

转载于:https://my.oschina.net/zj2055/blog/341550

Linux curl与wget 命令的区别和联系

       虽然它们有一些相似的特征,但它们并不是完全一样。这两个程序适用与不同的场合,在特定场合下,都拥有各自的特性。

curl与wget相似之处:

wget 和 cURL 都可以下载内容。它们的核心就是这么设计的。它们都可以向互联网发送请求并返回请求项。这可以是文件、图片或者是其他诸如网站的原始 HTML 之类。

这两个程序都可以进行 HTTP POST 请求。这意味着它们都可以向网站发送数据,比如说填充表单什么的。

由于这两者都是命令行工具,它们都被设计成可脚本化。wget 和 cURL 都可以写进你的 Bash 脚本 ,自动与新内容交互,下载所需内容。

curl的优势:

 

cURL是一个多功能工具。当然,它可以下载网络内容,但同时它也能做更多别的事情。

cURL 技术支持库是:libcurl。这就意味着你可以基于 cURL 编写整个程序,允许你基于 libcurl 库中编写图形环境的下载程序,访问它所有的功能。

cURL 宽泛的网络协议支持可能是其最大的卖点。cURL 支持访问 HTTP 和 HTTPS 协议,能够处理 FTP 传输。它支持 LDAP 协议,甚至支持 Samba 分享。实际上,你还可以用 cURL 收发邮件。

cURL 也有一些简洁的安全特性。cURL 支持安装许多 SSL/TLS 库,也支持通过网络代理访问,包括 SOCKS。这意味着,你可以越过 Tor 来使用cURL。

cURL 同样支持让数据发送变得更容易的 gzip 压缩技术。

wget的优势:

 

wget 简单直接。这意味着你能享受它超凡的下载速度。wget 是一个独立的程序,无需额外的资源库,更不会做其范畴之外的事情。

wget 是专业的直接下载程序,支持递归下载。同时,它也允许你下载网页中或是 FTP 目录中的任何内容。

wget 拥有智能的默认设置。它规定了很多在常规浏览器里的事物处理方式,比如 cookies 和重定向,这都不需要额外的配置。可以说,wget 简直就是无需说明,开罐即食!

总结:

那你应该使用 cURL 还是使用 wget?这个比较得看实际用途。如果你想快速下载并且没有担心参数标识的需求,那你应该使用轻便有效的 wget。如果你想做一些更复杂的使用,直觉告诉你,你应该选择 cRUL。

cURL 支持你做很多事情。你可以把 cURL 想象成一个精简的命令行网页浏览器。它支持几乎你能想到的所有协议,可以交互访问几乎所有在线内容。唯一和浏览器不同的是,cURL 不会渲染接收到的相应信息。

两者对比Curl更具有编程性,更适合开发用,而Wget的下载功能更强。近年来,致力于用Wget2替换wget。具有相似功能集的其他两个功能强大的工具还包括aria2和axel(已经好久未更新项目),更详细的功能对比,可参考Curl官方的功能对比。

非要说区别的话,curl由于可自定义各种请求参数所以在模拟web请求方面更擅长;wget由于支持ftp和Recursive所以在下载文件方面更擅长。类比的话curl是浏览器,而wget是迅雷9。

 

1. 下载文件

curl -O http://man.linuxde.net/text.iso                    #O大写,不用O只是打印内容不会下载
wget http://www.linuxde.net/text.iso                       #不用参数,直接下载文件

 

2. 下载文件并重命名

curl -o rename.iso http://man.linuxde.net/text.iso         #o小写
wget -O rename.zip http://www.linuxde.net/text.iso         #O大写

 

3. 断点续传

curl -O -C - http://man.linuxde.net/text.iso               #O大写,C大写
wget -c http://www.linuxde.net/text.iso                    #c小写

 

4. 限速下载

curl --limit-rate 50k -O http://man.linuxde.net/text.iso
wget --limit-rate=50k http://www.linuxde.net/text.iso

 

5. 显示响应头部信息

curl -I http://man.linuxde.net/text.iso
wget --server-response http://www.linuxde.net/test.iso

 

6. 同时打印请求头和响应头

curl -v http://man.linuxde.net/text.iso
curl http://man.linuxde.net/text.iso --trace-ascii /dev/stdout
wget -d http://www.linuxde.net/test.iso

 

7. wget利器–打包下载网站

wget --mirror -p --convert-links -P /var/www/html http://man.linuxde.net/

————————————————————分界线——————————————————

wget是个专职的下载利器,简单,专一,极致;而curl可以下载,但是长项不在于下载,而在于模拟提交web数据,POST/GET请求,调试网页,等等。

在下载上,也各有所长,wget可以递归,支持断点;而curl支持URL中加入变量,因此可以批量下载。

curl(文件传输工具)

常用参数如下:

-c,–cookie-jar:将cookie写入到文件

-b,–cookie:从文件中读取cookie

-C,–continue-at:断点续传

-d,–data:http post方式传送数据

-D,–dump-header:把header信息写入到文件

-F,–from:模拟http表达提交数据

-s,–slient:减少输出信息

-o,–output:将信息输出到文件

-O,–remote-name:按照服务器上的文件名,存在本地

–l,–head:仅返回头部信息

-u,–user[user:pass]:设置http认证用户和密码

-T,–upload-file:上传文件

-e,–referer:指定引用地址

-x,–proxy:指定代理服务器地址和端口

-w,–write-out:输出指定格式内容

–retry:重试次数

–connect-timeout:指定尝试连接的最大时间/s

wget(文件下载工具)

常用参数如下:

1、 启动参数

-V,–version:显示版本号

-h,–help:查看帮助

-b,–background:启动后转入后台执行

2、 日志记录和输入文件参数

-o,–output-file=file:把记录写到file文件中

-a,–append-output=file:把记录追加到file文件中

-i,–input-file=file:从file读取url来下载

3、 下载参数

-bind-address=address:指定本地使用地址

-t,-tries=number:设置最大尝试连接次数

-c,-continue:接着下载没有下载完的文件

-O,-output-document=file:将下载内容写入到file文件中

-spider:不下载文件

-T,-timeout=sec:设置响应超时时间

-w,-wait=sec:两次尝试之间间隔时间

–limit-rate=rate:限制下载速率

-progress=type:设置进度条

4、目录参数

-P,-directory-prefix=prefix:将文件保存到指定目录

5、 HTTP参数

-http-user=user:设置http用户名

-http-passwd=pass:设置http密码

-U,–user-agent=agent:伪装代理

-no-http-keep-alive:关闭http活动链接,变成永久链接

-cookies=off:不使用cookies

-load-cookies=file:在开始会话前从file文件加载cookies

-save-cookies=file:在会话结束将cookies保存到file文件

6、 FTP参数

-passive-ftp:默认值,使用被动模式

-active-ftp:使用主动模式

7、 递归下载排除参数

-A,–accept=list:分号分割被下载扩展名的列表

-R,–reject=list:分号分割不被下载扩展名的列表

-D,–domains=list:分号分割被下载域的列表

–exclude-domains=list:分号分割不被下载域的列表

CURL命令
1、列出ftp服务器上的目录列表:
curl ftp://www.xxx.com/ –user name:passwd
curl ftp://www.xxx.com/ –u name:passwd #简洁写法
curl ftp://name:passwd@www.xxx.com #简洁写法2

2、只列出目录,不显示进度条
curl ftp://www.xxx.com –u name:passwd -s

3、下载一个文件:
curl ftp://www.xxx.com/size.zip –u name:passwd -o size.zip

4、上载一个文件:
curl –u name:passwd -T size.mp3 ftp://www.xxx.com/mp3/

5、从服务器上删除文件(使用curl传递ftp协议的DELE命令):
curl –u name:passwd ftp://www.xxx.com/ -X ‘DELE mp3/size.mp3’

6、另外curl不支持递归下载,不过可以用数组方式下载文件,比如我们要下载1-10.gif连续命名的文件:
curl –u name:passwd ftp://www.xxx.com/img/[1-10].gif –O #O字母大写

7、要连续下载多个文件:

————————————————
版权声明:本文为CSDN博主「panamera12」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/wteruiycbqqvwt/article/details/108406168

=================实例:====================

命令:

1
wget -k -p -nH -N http://www.baidu.com

2、wget -r -p -np -k https://openwrt.proxy.ustclug.org/snapshots/packages/i386_pentium4/

-k 把已下载文件中的所有链接都转换为本地引用,不在依赖原始或在线内容

-p  下载所有必要文件,确保离线可用,包括图片和样式表

-nH 禁止把文件下载到以主机名为前缀的文件夹中。

-N 启用文件的时间戳,以匹配来源的时间戳.

-r –recursive(递归) specify recursive download.(指定递归下载)
-k –convert-links(转换链接) make links in downloaded HTML point to local files.(将下载的HTML页面中的链接转换为相对链接即本地链接)
-p –page-requisites(页面必需元素) get all images, etc. needed to display HTML page.(下载所有的图片等页面显示所需的内容)
-np –no-parent(不追溯至父级) don’t ascend to the parent directory.

这里写代码片额外参数:

-nc 断点续传
-o 生成日志文件

示例一:对方网站使用referer防盗链的情况,需要伪造来路来破解防盗链,然后下载目标文件(下面是抓取某个站2015文件夹下所有图片)

1
wget -E –referer http://example.com/ -r -m -k http://img.example.com/2015/

参数:
-r 递归:对于HTTP主机,wget首先下载URL指定的文件,然后(如果该文件是一个HTML文档的话)递归下载该文件所引用(超级连接)的所有文件(递归深度由参数-l指定);对FTP主机,该参数意味着要下载URL指定的目录中的所有文件,递归方法与HTTP主机类似
-m 镜像:相当于同时使用-r和-N参数
-k 连接转换为本地相对链接
-N 时间戳:该参数指定wget只下载更新的文件,也就是说,与本地目录中的对应文件的长度和最后修改日期一样的文件将不被下载
简单来说基本的用法如下,根据需求添加参数

1
wget -E –referer http://伪造来路网址/ http://目标网址/要下载的东西

防盗链做法:referer防盗链太简单,只能防君子,如何反制?采用token方式防盗链,对下载链接、图片链接加参数引用,需要改程序来支持。

示例二:无防盗链的情况

1
wget -r -p -np -k http://xxx.com/xxx/

参数:
-r 递归
-p –page-requisites(页面必需元素)
-np –no-parent(不追溯至父级)
-k 连接转换为本地相对链接

示例三:

1
wget -r -np -nd http://example.com/packages/

这条命令可以下载 http://example.com 网站上 packages 目录中的所有文件
参数:
-np 的作用是不遍历父目录
-nd 表示不在本机重新创建目录结构

再添加排除某些文件或指定下载的文件类型的参数后是这样的

1
wget -r -np -nd –accept=iso http://example.com/centos-5/i386/

与上一条命令相似,但多加了一个 –accept=iso 选项,这指示 wget 仅下载 i386
目录中所有扩展名为 iso 的文件。你也可以指定多个扩展名,只需用逗号分隔即可
参数:
–accept=LIST 可以接受的文件类型
–reject=LIST 拒绝接受的文件类型

示例四:直接

1
wget -m -k (-H) http://www.example.com/

该命令可用来镜像一个网站,wget 将对链接进行转换。
如果网站中的图像是放在另外的站点,那么可以使用
参数:
-m 镜像:相当于同时使用-r和-N参数
-k 连接转换为本地相对链接
-H 可以目标站主机以外的主机内容,图片单独存放在一个主机上的情况

1、使用wget下载单个文件

以下的例子是从网络下载一个文件并保存在当前目录

wget http://cn.wordpress.org/wordpress-3.1-zh_CN.zip

在下载的过程中会显示进度条,包含(下载完成百分比,已经下载的字节,当前下载速度,剩余下载时间)。

2、使用wget -O下载并以不同的文件名保存

wget默认会以最后一个符合”/”的后面的字符来命令,对于动态链接的下载通常文件名会不正确。

错误:下面的例子会下载一个文件并以名称download.php?id=1080保存

wget http://www.centos.bz/download?id=1

即使下载的文件是zip格式,它仍然以download.php?id=1080命令。

正确:为了解决这个问题,我们可以使用参数-O来指定一个文件名:

wget -O wordpress.zip http://www.centos.bz/download.php?id=1080

3、使用wget –limit -rate限速下载

当你执行wget的时候,它默认会占用全部可能的宽带下载。但是当你准备下载一个大文件,而你还需要下载其它文件时就有必要限速了。

wget –limit-rate=300k http://cn.wordpress.org/wordpress-3.1-zh_CN.zip

4、使用wget -c断点续传

使用wget -c重新启动下载中断的文件:

wget -c http://cn.wordpress.org/wordpress-3.1-zh_CN.zip

对于我们下载大文件时突然由于网络等原因中断非常有帮助,我们可以继续接着下载而不是重新下载一个文件。需要继续中断的下载时可以使用-c参数。

5、使用wget -b后台下载

对于下载非常大的文件的时候,我们可以使用参数-b进行后台下载。

wget -b http://cn.wordpress.org/wordpress-3.1-zh_CN.zip

Continuing in background, pid 1840.

Output will be written to `wget-log’.

你可以使用以下命令来察看下载进度

tail -f wget-log

6、伪装代理名称下载

有些网站能通过根据判断代理名称不是浏览器而拒绝你的下载请求。不过你可以通过–user-agent参数伪装。

wget –user-agent=”Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Chrome/10.0.648.204 Safari/534.16″ 下载链接

7、使用wget –spider测试下载链接

当你打算进行定时下载,你应该在预定时间测试下载链接是否有效。我们可以增加–spider参数进行检查。

wget –spider URL

如果下载链接正确,将会显示

wget –spider URL

Spider mode enabled. Check if remote file exists.

HTTP request sent, awaiting response… 200 OK

Length: unspecified [text/html]

Remote file exists and could contain further links,

but recursion is disabled — not retrieving.

这保证了下载能在预定的时间进行,但当你给错了一个链接,将会显示如下错误

wget –spider url

Spider mode enabled. Check if remote file exists.

HTTP request sent, awaiting response… 404 Not Found

Remote file does not exist — broken link!!!

你可以在以下几种情况下使用spider参数:

定时下载之前进行检查

间隔检测网站是否可用

检查网站页面的死链接

8、使用wget –tries增加重试次数

如果网络有问题或下载一个大文件也有可能失败。wget默认重试20次连接下载文件。如果需要,你可以使用–tries增加重试次数。

wget –tries=40 URL

9、使用wget -i下载多个文件

首先,保存一份下载链接文件

cat > filelist.txt

url1

url2

url3

url4

接着使用这个文件和参数-i下载

wget -i filelist.txt

10、使用wget –mirror镜像网站

下面的例子是下载整个网站到本地。

wget –mirror -p –convert-links -P ./LOCAL URL

–miror:开户镜像下载

-p:下载所有为了html页面显示正常的文件

–convert-links:下载后,转换成本地的链接

-P ./LOCAL:保存所有文件和目录到本地指定目录

11、使用wget –reject过滤指定格式下载

你想下载一个网站,但你不希望下载图片,你可以使用以下命令。

wget –reject=gif url

12、使用wget -o把下载信息存入日志文件

你不希望下载信息直接显示在终端而是在一个日志文件,可以使用以下命令:

wget -o download.log URL

13、使用wget -Q限制总下载文件大小

当你想要下载的文件超过5M而退出下载,你可以使用以下命令:

wget -Q5m -i filelist.txt

注意:这个参数对单个文件下载不起作用,只能递归下载时才有效。

14、使用wget -r -A下载指定格式文件

可以在以下情况使用该功能

下载一个网站的所有图片

下载一个网站的所有视频

下载一个网站的所有PDF文件

wget -r -A.pdf url

15、使用wget FTP下载

你可以使用wget来完成ftp链接的下载。

使用wget匿名ftp下载

wget ftp-url

使用wget用户名和密码认证的ftp下载

wget –ftp-user=USERNAME –ftp-password=PASSWORD url

linux 中出现 Read-only file system

    当linux操作系统启动出现root用户也无法进行任何的文件写操作时,无论什么用户(包括root)写文件保存或者删除文件,且对操作文件或目录都有写权限时,还任然报错:E212: Can’t open file for writing 或者 Read-only file system。

1、root用户在home目录下创建test文件,保存时报错如下:


2、root用户删除

[root@hadoop01 home]# ll /etc/.pwd.lock
-rw——-. 1 root root 0 Jun  1  2002 .pwd.lock
[root@hadoop01 home]# rm -rf /etc/.pwd.lock
rm: cannot remove `/etc/.pwd.lock’: Read-only file system
[root@hadoop01 home]# mount -o remount rw /      (这一步是关键的一步,让“/”根文件系统重新挂载并有可读写模式)
[root@hadoop01 home]# rm -rf /etc/.pwd.lock
[root@hadoop01 home]#

造成这个问题的原因大多数是因为非正常关机后导致文件系统受损引起的,在系统重启之后,受损分区就会被Linux自动挂载为只读。解决的方法是通过fsck来修复文件系统,然后重启即可,以下是以针对/dev/xvde1分区,ext4文件系统分区的一个操作案例:

fsck.ext4 -y /dev/xvde1
本文只着重强调一点:要针对出问题的分区进行操作,在挂载了多个硬盘的机器上要仔细分辨一下。

 

报错read-only file system的原因是你所在的分区只有读权限, 没有写权限

mount为挂载分区命令,mount -o remount -w 重新挂载分区并增加写权限,增加读写权限即为 -rw

 

 

问题:

push 某个文件到目标板(比如/data目录下)时,提示其目录是只读的;可通过如下命令,将目标目录临时变更为可读写模式:

解决方法:

mount -o remount -rw  /data

 

【扩展:】

重新挂载为已经挂载了的文件系统(以读写权限挂载),需要注意的是,挂载点必须是一个已经存在的目录,这个目录可以不为空。一般用于此目录下的文件为ro权限,需要临时变更为可修改权限。

参数:

-o <选项> 指定挂载文件系统时的选项,有些也可写到在 /etc/fstab 中。常用的有:
defaults 使用所有选项的默认值(auto、nouser、rw、suid)
auto/noauto 允许/不允许以 –a选项进行安装
dev/nodev 对/不对文件系统上的特殊设备进行解释
exec/noexec 允许/不允许执行二进制代码
suid/nosuid 确认/不确认suid和sgid位
user/nouser 允许/不允许一般用户挂载
codepage=XXX 代码页
iocharset=XXX 字符集
ro 以只读方式挂载
rw 以读写方式挂载
remount 重新安装已经安装了的文件系统

loop 挂载“回旋设备”以及“ISO镜像文件”

 

1、mount:
用于查看哪个模块输入只读,一般显示为:
[root@localhost ~]# mount
/dev/cciss/c0d0p2 on / type ext3 (rw)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
/dev/cciss/c0d0p7 on /home type ext3 (rw)
/dev/cciss/c0d0p6 on /var type ext3 (rw)
/dev/cciss/c0d0p3 on /usr type ext3 (rw)
/dev/cciss/c0d0p1 on /boot type ext3 (rw)
tmpfs on /dev/shm type tmpfs (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw)
/dev/dm-0 on /home/book/upload/BookFile1 type ext3 (rw)
/dev/dm-1 on /home/book/upload/BookFile2 type ext3 (rw)
/dev/dm-2 on /backup type ext3 (rw)
/dev/dm-3 on /home/book/upload/BookFile3 type ext3 (ro)

2、如果发现有ro,就重新mount,或者umount以后再remount

3、umount /dev/dm-3
如果发现有提示“device is busy”,找到是什么进程使得他busy
fuser -m /mnt/data 将会显示使用这个模块的pid
fuser -mk /mnt/data 将会直接kill那个pid
然后重新mount即可。

4、还有一种方法是直接remount,命令为
mount -o rw,remount /mnt/data。

OpenWrt编译后生成的bin文件:jffs2与squashfs、factory与sysupgrade

OpenWrt编译后会生成多个bin文件,比如

openwrt-ar71xx-generic-tl-wr841nd-jffs2-factory.bin      8126464
openwrt-ar71xx-generic-tl-wr841nd-jffs2-sysupgrade.bin     4980740
openwrt-ar71xx-generic-tl-wr841nd-squashfs-factory.bin   8126464
openwrt-ar71xx-generic-tl-wr841nd-squashfs-sysupgrade.bin  3538948

bin文件名称中有两种不同的格式,jffs2与 squashfs。这两种格式的固件区别在于,squashfs格式的bin文件安装后,会占用一定的空间来存放系统的一些必要文件,这些文件都只是可读的,其作用是帮助恢复系统。当OpenWrt崩溃时,可以基于这些文件,使用firstboot脚本重建初始系统,而jffs2则不会存储这样的文件,好处是节省了空间。一般使用squashfs格式的固件,方便恢复系统到初始状态。

每种格式都有两个文件,factory与sysupgrade,这两者的区别是,factory多了一些验证的东西,用于在原厂固件的基础上进行升级,如果已经是OpenWrt,直接使用sysupgrade文件即可。并且,在原厂固件的基础上进行升级时,首先使用factory文件,然后需要再次使用 sysupgrade文件,选择不保留原来配置进行升级。

官方下载的都分jffs2和squafs两种格式
jffs2文件系统格式是适合于断电的系统,不像FAT那样容易丢文件,因为路由器一般都容易突然断电。
官方的jffs2格式刷到路由器后就是一个jffs2分区,ROM本身和以后安装的软件都在这个分区里都可以读写。


而squafs格式则是把ROM压缩到了一个文件刷进路由器,然后剩下的空间格式化成jffs2并且优先于ROM文件,有点像WM手机上的情况。ROM只读分区挂在/rom下,而另一个可读写jffs2分区挂到/overlay,当/overlay下有和/rom同名的文件就优先读这个,相当于覆盖了ROM文件,实际上并没有覆盖。这种情况的优点是ROM压缩率高,可写分区就更大一点,其次只要备份/overlay就可以把ROM以为的所有文件都备份下来,以后全部还原就可以不用重新配置了。格式化/overlay分区就相当于恢复openwrt出厂设置了。

官方推荐squafs,因为这种格式就算配置乱了还可以恢复刷机后的出厂设置,二是压缩后节省空间。jffs2格式搞乱了就只能重刷了

(squashfs和jffs2区别是,squashfs本身会占用1M空间存放系统必要的文件,并且这些文件是只读的,当系统损坏时,可以执行firstboot恢复初始状态。jffs2,虽然剩余空间仍然为2M,但是openwrt本身占用的空间你也是可以支配的,换句话说系统本身是可以改写的。相对于squashfs方式,你将多出约1M左右的可支配空间,代价是需要删除一些系统的部件,而缺点是一旦系统崩溃,有可能你无法使用firstboot脚本重建初始系统。所以一般都下载squashfs的)

OPENWRT 镜像生成器ImageBuilder 使用方法及说明

注意:官方网站下载的ImageBuilder 在编译固件时会出错,提示“权限不够”,在命令前加sudo 后提示“Error 126”错误!只能自己编译 ImageBuilder 来用!自编译 ImageBuilder 时,先在linux 环境下设置好再编译,编译后就会包含个性设置!

 

一、操作步骤:

1、 下载ImageBuilder 压缩包

http://downloads.openwrt.org/snapshots/trunk/ar71xx/OpenWrt-ImageBuilder-ar71xx_generic-for-linux-x86_64.tar.bz2

也可自己编译;

 

2、 解压ImageBuilder 压缩包

tar -xjvf OpenWrt-ImageBuilder- ar71xx_generic-for-Linux-x86_64.tar.bz2

 

3、 进入解压后文件夹

cd Openwrt-ImageBuilder-ar71xx_generic-for-Linux-x86_64

4、 查看默认软件包和硬件支持列表

make info

 

make info

Current Target: “ar71xx(Generic)”  (ar71xx目前支持75种路由型号)

Default Packages: base-files libc libgccbusybox dropbear mtd uci opkg hotplug2 netifd kmod-leds-gpiokmod-gpio-button-hotplug kmod-wdt-ath79 swconfig kmod-ledtrig-default-onkmod-ledtrig-timer kmod-ledtrig-netdev kmod-ath9k wpad-mini uboot-envtoolsdnsmasq iptables ppp ppp-mod-pppoe kmod-ipt-nathelper firewall (默认有26个软件包,wr703n有28个包)
TLWR703:

TP-LINKTL-WR703N
kmod-usb-core kmod-usb2

 

5、 编译(8M固件增加39个软件包,x86增加55个包)

sudo make image PROFILE=x86PACKAGES=”block-mount librt luci luci-i18n-chinese luci-app-ddnsluci-proto-3g luci-app-hd-idle luci-app-p910nd luci-app-qos luci-app-sambaluci-app-upnp luci-app-wol  openvpnopenvpn-easy-rsa kmod-scsi-core kmod-scsi-generic kmod-fs-ext4 kmod-fs-ntfskmod-fs-vfat kmod-nls-utf8 kmod-nls-cp936 kmod-nls-cp437 kmod-usb-storage kmod-usb-storage-extraskmod-usb-ohci kmod-usb-uhci  kmod-usb2 kmod-usb-acmkmod-usb-serial kmod-usb-serial-ftdi kmod-usb-serial-pl2303 kmod-usb-serial-ch341kmod-usb-acm kmod-usb-printer kmod-video-core kmod-video-uvc mjpg-streamermotion ser2net badblocks e2fsprogs restorefactory coreutils transmission-daemontransmission-remote transmission-web vsftpd kmod-rtl8192se kmod-rt2800-usbkmod-rt2x00-usb kmod-rt2800-pci kmod-rt2x00-pci njit8021xclient njit8021xclient-webkmod-usb-hid” FILES=x86

 

本固件只适合已改机的8M/32M机器!
集成的软件有:luci,中文语言包,DDNS,硬盘休眠,openvpn,打印服务器,QOS,samba,upnp,relay,网络唤醒,USB挂载,硬盘格式支持(ntfs-3g/ext4/ntfs),UTF8编码,USB扩展支持,USB驱动,复位键支持,transmission下载工具,8187.3070等多种网卡驱动..

注意输入不要有错!前面输错了3个地方,找了很久!!!

 

编译前可以先从官方网站:http://downloads.openwrt.org/snapshots/trunk/ar71xx/packages/下载ipk文件并放到dl 文件夹里面以节省编译时间。放置文件出错一般是文件夹操作权限不够,除使用sudo命令外,还需要用chmod777 /home/submars/SDK 命令让文件夹获得最高的 777 权限。通过网络共享文件的方式复制到ubuntu中的文件(文件夹)只有普通用户权限,操作时需要sudo 命令提升权限!

 

编译过程中出现的错误和makefile文件中对应。

 

二、个性化设置方法:

1、在源码的menuconfig 菜单里设置好,再编译生成Imagebuilder,就会默认已经设置好的内容;

2、在Imagebuilder的根目录创建一个文件夹存放个性化的配置文件,然后在命令后面加上 FILES=文件夹名 就可以了。
rg. FILES = wr703n(常用的配置的文件的目录)

放在解压后的 imagebuilder 目录下就可以。
个性设置文件也可以直接复制Openwrt…/etc/config/*。

 

三、8M固件支持(新版本需要修改两个文件)
703n 最新SVN trunk版本更新很大,原来修改8m flash的结构体消失了

(1)/tools/firmware-utils/src/mktplinkfw.c 中代码:

static struct flash_layout layouts[] = {
{
.id               = “4M”,
.fw_max_len       = 0x3c0000,
.kernel_la       = 0x80060000,
.kernel_ep       = 0x80060000,
.rootfs_ofs       = 0x140000,
}, {
.id               = “4Mlzma”,
.fw_max_len       = 0x3c0000,
.kernel_la       = 0x80060000,
.kernel_ep       = 0x80060000,
.rootfs_ofs       = 0x100000,
}, {
.id               = “8M”,
.fw_max_len       = 0x7c0000,
.kernel_la       = 0x80060000,
.kernel_ep       = 0x80060000,
.rootfs_ofs       = 0x140000,
}, {
.id               = “8Mlzma”,
.fw_max_len       = 0x7c0000,
.kernel_la       = 0x80060000,
.kernel_ep       = 0x80060000,
.rootfs_ofs       = 0x100000,
}, {
/* terminating entry */
}
};

static struct board_info boards[] = {
}, {
.id               = “TL-WR703Nv1”,
.hw_id               = HWID_TL_WR703N_V1,
.hw_rev               = 1,
.layout_id       = “4Mlzma”,     //只需将此处修改为8Mlzma
}, {
}

(2)在imagebuilder下面修改(如果用imagebuilder 来编译固件,需修改此处!)
/target/linux/ar71xx/image/Makefile

把703n最后的4Mlzma改成8Mlzma!

 

所有设置完成后用make defconfig检查,确保得到类似以下结果:

openssl-util………………………Open source SSL toolkit (utility) (PACKAGE_openssl-util) [Y/?] y

owipcalc………………………..Simple IPv4/IPv6 address calculator (PACKAGE_owipcalc) [N/m/y/?] n

OpenWrt提取系统镜像

前言:在路由器中flash了openwrt系统,并安装了许多软件及相关配置,现想将整个系统的镜像提取出来,并flash到另一台相同的设备中。

方法

1.先查看fireware分区所对应的mtd设备

## 输入命令
cat /proc/mtd

## 输出以下结果
dev:    size   erasesize  name
mtd0: 00030000 00001000 "u-boot"
mtd1: 00010000 00001000 "u-boot-env"
mtd2: 00010000 00001000 "factory"
mtd3: 007b0000 00001000 "firmware"  ## 关键
mtd4: 00180d87 00001000 "kernel"
mtd5: 0062f279 00001000 "rootfs"
mtd6: 003be000 00001000 "rootfs_data"

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

2.备份固件文件到/tmp目录


dd if=/dev/mtd3 of=/tmp/firmware_backup.bin

## 注意要及时从/tmp目录中拷贝到U盘或其他存储设备中,否则断电后会消失

  • 1
  • 2
  • 3
  • 4
  • 5

3.恢复、flash固件

恢复固件的方法:将firmware_backup.bin上传到/tmp目录中,然后执行


mtd -r write /tmp/firmware_backup.bin firmware

  • 1
  • 2
  • 3

此过程路由器将会重启

flash到其他设备的方法:直接在luci界面中升级固件选项flash即可。

 

WordPress和Prettify免插件实现代码高亮

发表时间:2015-12-03 15:16 | 分类:建站经验 | 浏览:2,284 次

使用插件可以实现wordpress代码高亮,之前我一直用的是SyntaxHighlighter插件。最后选择放弃的原因其实就是太复杂。想要实现代码高亮,必须添加[code language=”xxx”]…[/code]标记。而且我在卸载该插件后发现,文章中直接显示有code字样。这个给人的感觉也不好。如何免插件而且简单的实现代码高亮?最后我选择了Google的Prettify,效果如下图所示。

20151203150342

Google Code Prettify 是 Google 开源的一个用于代码高亮的 Javascript 库,支持 C/C++, Java, Python, Ruby, PHP,Javascript 等常见语言。使用Prettify一般只需包含两个文件:prettify.js 和 prettify.css。压缩过后的 prettify.js 大小差不多在 15K 左右,非常小巧。还有一个吸引人的就是简单,使用它进行代码高亮时,不需要指明语言类型,Prettify会自动判断并处理。

WordPress免插件实现代码高亮步骤

一、下载js和css文件

本站js地址:https://zhangnq.com/wp-content/themes/P1/js/prettify/prettify.min.js

本站css地址:https://zhangnq.com/wp-content/themes/P1/css/prettify-default.css

css文件只包含代码高亮样式主题,我选择默认default。当然你可以在这里挑选适合自己的样式。

二、修改functions.php文件

打开wordpress主题文件中的functions.php文件,在末尾?>前添加如下代码。第一步下载js文件我保存在当前主题下的js目录。

function dangopress_esc_html($content) {
    $regex = '/(<pre\s+[^>]*?class\s*?=\s*?[",\'].*?prettyprint.*?[",\'].*?>)(.*?)(<\/pre>)/sim';
    return preg_replace_callback($regex, dangopress_esc_callback, $content);
}
function dangopress_esc_callback($matches) {
    $tag_open = $matches[1];
    $content = $matches[2];
    $tag_close = $matches[3];

    //$content = htmlspecialchars($content, ENT_NOQUOTES, get_bloginfo('charset'));
    $content = esc_html($content);

    return $tag_open . $content . $tag_close;
}
function setup_load_script() {
    // Register prettify.js
    wp_enqueue_script('prettify-js', get_template_directory_uri().'/js/prettify/prettify.min.js',
                       array(), '20130504', true);
}
function wp_prettify_load() {
    if ( is_single() ) {
        add_filter('the_content', 'dangopress_esc_html', 2);
        add_filter('comment_text', 'dangopress_esc_html', 2);
        add_action('wp_enqueue_scripts', 'setup_load_script');
    }
}
add_action( 'wp', 'wp_prettify_load' );

最后wp_prettify_load表示只在文章加载。

三、修改header.php文件

打开wordpress主题文件中的header.php文件,在</head>标签前添加如下代码,用来加载主题样式,也只在文章页加载。

<?php if ( is_single() ) { ?><link rel="stylesheet" type="text/css" media="all" href="<?php echo get_template_directory_uri().'/css/prettify-default.css' ;?>" />

到这里wordpress+prettify免插件纯代码实现文章代码高亮设置就结束了。我们在编写文章时把代码放在pre标签内即可。

参考连接:

http://kodango.com/highlight-code-with-google-code-prettify

https://code.google.com/archive/p/google-code-prettify/

本文标签:

本文链接:https://zhangnq.com/2295.html

欢迎您在本博客中留下评论,如需转载原创文章请注明出处,谢谢!

TP-LINK TL-WR720N V3 OpenWrt 南浦月 固件下载

固件信息

系统名称 OpenWrt
路由型号 TP-Link TL-WR720N v3
固件版本 OpenWrt Barrier Breaker r35420 / LuCI Trunk (trunk+svn9664)
内核版本 3.7.5
编译时间 2013年2月2日
编译者 南浦月
TL-WR720NTL-WR720N

固件特性

调整:

  • 默认中文
  • 默认UTC+8时区
  • 默认Bootstrap主题
  • 默认无线开启

修正:

  • 修正实时信息界面的错别字(“链接”应作“连接”)

其他:

  • 默认使用自建软件源,解决安装内核模块时版本不一致的问题(配置文件在/etc/opkg.conf)

opkg配置opkg配置

下载地址

提供两个定制版本下载,一个usb扩展版,一个mini最小化版,原厂固件刷“factory”,已经是OpenWrt的刷“sysupgrade”。
usb版:
http://files.nanpuyue.com/openwrt/ar71xx/tl-wr720n-v3/usb/openwrt-ar71xx-generic-tl-wr720n-v3-squashfs-sysupgrade.bin
http://files.nanpuyue.com/openwrt/ar71xx/tl-wr720n-v3/usb/openwrt-ar71xx-generic-tl-wr720n-v3-squashfs-factory.bin
md5校验值:

a85c09fd6ee80661a7170c2cab145b3a    openwrt-ar71xx-generic-tl-wr720n-v3-squashfs-factory.bin7979c3ddaaea325b707f8d8e55ebb5ff    openwrt-ar71xx-generic-tl-wr720n-v3-squashfs-sysupgrade.bin

刷机前请仔细核对。
mini版:
http://files.nanpuyue.com/openwrt/ar71xx/tl-wr720n-v3/mini/openwrt-ar71xx-generic-tl-wr720n-v3-jffs2-factory.bin
http://files.nanpuyue.com/openwrt/ar71xx/tl-wr720n-v3/mini/openwrt-ar71xx-generic-tl-wr720n-v3-jffs2-sysupgrade.bin
http://files.nanpuyue.com/openwrt/ar71xx/tl-wr720n-v3/mini/openwrt-ar71xx-generic-tl-wr720n-v3-squashfs-factory.bin
http://files.nanpuyue.com/openwrt/ar71xx/tl-wr720n-v3/mini/openwrt-ar71xx-generic-tl-wr720n-v3-squashfs-sysupgrade.bin
md5校验值:

9dfdb11af85642d3d5b911a45db61a9d    openwrt-ar71xx-generic-tl-wr720n-v3-jffs2-factory.bin453122a31c987e9a9627de6cffae86f0    openwrt-ar71xx-generic-tl-wr720n-v3-jffs2-sysupgrade.bin2e57317dd55514b131fa2307ce2341ed    openwrt-ar71xx-generic-tl-wr720n-v3-squashfs-factory.bin9648d237485802f27b35b460fcd817f4    openwrt-ar71xx-generic-tl-wr720n-v3-squashfs-sysupgrade.bin

刷机前请仔细核对!
Image Builder:
http://s.yunio.com/mMriUr(云诺)
文件名:openwrt_image_builder_ar71xx_x64_2013-2-4.tar.gz

md5校验值:c1562373db6a340f84f566cd26b29a33

云诺注册邀请

https://www.yunio.com/index/url/code/UWcvTGJ3VkVraTdLRWlhaENJai9Wc1dpKzNxclFFRW05ZktiZ3VtaXpvZ1N0Ylpqa3FuR3RvQQ==

USB版固件设置U盘扩展

首先,我并不推荐exroot,这里介绍的方法是将U盘挂载到/overlay的方法。
先将U盘分区,这里提供的固件并没有集成分区工具,所以不能完成分区,当然你也可以不分区,这样整个U盘就是一个分区。
然后格式化要挂载的分区格式化为ext4,可以在Linux系统的电脑上完成,也可以在路由器上完成。假设这个分区是/dev/sda1(如果没有分区,它可能是/dev/sda),则使用下面的命令完成格式化:

mkfs.ext4 /dev/sda1

然后就可以将其挂载点设置为/overlay了:
挂载到overlay挂载到overlay
设置好后点“保存&应用”并重启即可,如果不想重启后其他设置恢复初始值,可以在重启前备份设置,并在重启后以恢复备份文件即可。
另外要注意的是,如果U盘没有被挂载到/overlay,而是/tmp/overlay-disabled,请删除/tmp/overlay-disabled/etc/extroot.md5sum后重启。

设置40MHz频宽

默认的无线是20MHz的频宽,我没有更改默认设置,但是这样无线速率最高只有150M的一半,如果想要150M的无线速率,要将频宽设置为40MHz:
OpenWrt-40MHzOpenWrt-40MHz
“HT模式”选“40MHz HT40-”和“40MHz HT40+”均可,下面的“强制40MHz频宽”不是必须的,但是不勾选的话可能造成客户端仍以20MHz频宽连接。

Image Builder使用方法

由于我是在64位系统上编译的,所以这个Image Builder也是64位的,使用时解压,终端进入解压所得文件夹。
显示帮助信息:

make help

上面提供下载的固件分别是用下面的命令生成的:
usb版

make image PROFILE="TLWR720" PACKAGES="luci luci-theme-bootstrap luci-i18n-chinese kmod-usb-storage kmod-usb-storage-extras kmod-usb2 kmod-fs-ext4 kmod-fs-ntfs kmod-fs-vfat e2fsprogs block-mount" FILES=files/

mini版

make image PROFILE="TLWR720" PACKAGES="luci luci-theme-bootstrap luci-i18n-chinese -kmod-usb2 -kmod-usb-core" FILES=files/

PROFILE=后跟的参数是要生成固件的路由器型号,使用make info可以查看可用型号列表,PACKAGES=后的参数是在默认软件包的基础上要添加或删除的软件包,软件包名前加减号表示删除,FILES=后则是要在固件中额外添加的文件。

相关文章
  • 1. TPLINK-WR720N刷openwrt
  • 2. TPLINK 3G+MINI WIFI路由器TL-WR703N刷OpenWRT固件教程
  • 3. OpenWRT刷固件
  • 4. TPLINK WR-703N刷openwrt心得
  • 5. tplink openwrt路由重置
  • 6. 编译Openwrt固件
  • 7. 烧写Openwrt固件
  • 8. 编译TPLINK WR703Nv1 8M trunk固件
  • 9. 固件挂载
  • 10. 利用OpenWRT的Image Builder修改生成不同大小ROM固件 4MB改8MB 为固件添加package
  • 更多相关文章…
  • (转)TP-LINK WR720N v3 刷OpenWrt

    Posted on 2018-09-13 17:41  ricks  阅读(18275)  评论(0)  编辑  收藏

    之前买了一台改过硬件的TP-Link WR841N-V7路由器,并且成功刷机OpenWrt也完成了翻墙,WR841N-V7的更多详情可以看这里,但是可能卖家焊接的有问题,导致老是听到滋滋滋高频率的赤耳声音,很不爽,因此无奈拿起之前的TL-WR720N V3,这台内存小,存储空间小的路由器,捣腾起来,没想到,踩了一天的坑,总算是完美翻墙。


    本文不会再提到坑的过程,有些地方稍微点下,主要是步骤。


    刷完并完成挂载后

    I. 选用固件

    II. 刷入目标OpenWrt

    没有刷过OpenWrt的路由器

    连接以后,登录路由器,在系统升级页面选择刷机包,选择不配置,确定升级,在升级过程不可断电。升级结束后,就刷好了。

    刷过OpenWrt的路由器

    1. 通过scp openwrt-ar71xx-generic-tl-wr720n-v3-squashfs-sysupgrade.bin root@192.168.2.1:/tmp拷贝到路由器的/tmp目录
    2. 进入openwrt以后mtd write /tmp/openwrt-ar71xx-generic-tl-wr720n-v3-squashfs-sysupgrade.bin firmware刷入。
    3. 完成以后重启。reboot

    III. 修改默认源为国内源

    替换为: http://mirrors.ustc.edu.cn/openwrt 这个源,速度飕飕的。
    最后几行是根据ShadowSocks安装该官方文档添加的源,方便后面shadowsocks安装。

    openwrt 使wget支持https下载

    添加ssl支持
    wget: SSL support not available, please install one of the libustream-.*[ssl|tls] packages as well as the ca-bundle and ca-certificatespackages.
    
    opkg update
    opkg install libustream-openssl
    opkg install ca-certificates

    1). ssh连上openWrt

    2). 修改/etc/opkg.conf文件内容为:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    dest root /
    dest ram /tmip
    lists_dir ext /var/opkg-lists
    option overlay_root /overlay
    src/gz barrier_breaker_base http://mirrors.ustc.edu.cn/openwrt/barrier_breaker/14.07/ar71xx/generic/packages/base
    src/gz barrier_breaker_luci http://mirrors.ustc.edu.cn/openwrt/barrier_breaker/14.07/ar71xx/generic/packages/luci
    src/gz barrier_breaker_packages http://mirrors.ustc.edu.cn/openwrt/barrier_breaker/14.07/ar71xx/generic/packages/packages
    src/gz barrier_breaker_routing http://mirrors.ustc.edu.cn/openwrt/barrier_breaker/14.07/ar71xx/generic/packages/routing
    src/gz barrier_breaker_telephony http://mirrors.ustc.edu.cn/openwrt/barrier_breaker/14.07/ar71xx/generic/packages/telephony
    src/gz barrier_breaker_management http://mirrors.ustc.edu.cn/openwrt/barrier_breaker/14.07/ar71xx/generic/packages/management
    src/gz barrier_breaker_oldpackages http://mirrors.ustc.edu.cn/openwrt/barrier_breaker/14.07/ar71xx/generic/packages/oldpackages
    #shadowsocks
    src/gz openwrt_dist http://openwrt-dist.sourceforge.net/releases/ar71xx/packages
    src/gz openwrt_dist_luci http://openwrt-dist.sourceforge.net/releases/luci/packages

    IV. 挂载u盘(参考加菲猫的博客进行调整,优化)

    1). 安装包

    1
    2
    opkg update
    opkg install kmod-usb-ohci kmod-usb2 kmod-fs-ext4 kmod-usb-storage block-mount kmod-nls-base kmod-nls-cp437 kmod-ipt-nat-extra iptables-mod-nat-extra

    ps: 安装过程中会提示: kmod: failed to insert /lib/modules/…的错误,不要管,回头重启就好了。

    2). 现在关闭路由器

    运行 df,会发现rootfs只剩下40k左右。

    3). 准备

    1. 格式化准备好的u盘为ext4,并插入路由器的usb口。
    2. 将路由器模式开关调为3g,开启路由器。
    3. 等到路由器灯不闪了,ssh登录路由器。

    4). 挂载操作

    1. 运行ls /dev/sda*,如果显示/dev/sda /dev/sda1 ...,说明u盘已经认出来了。否则拔出来格式化下。
    2. 接着运行
    1
    2
    block detect > /etc/config/fstab
    vim /etc/config/fstab

    修改内容为(uuid不要改动)

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    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 ‘4a639f83-8137-f649-0f2c-79d66189a4ca’
    option fstype ext4
    option options rw,sync
    option enabled ‘1’
    option enabled_fsck 0
    config ‘swap’
    option device ‘/dev/sda2’
    option enabled ‘1’

    接着把4M文件系统中的文件拷贝到u盘

    这么做附带是,能够从u盘重启失败,把u盘拔出来,还是可以通过路由器4M闪存进入系统操作

    1
    2
    3
    4
    5
    6
    7
    8
    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 /dev/sda1
    umount /tmp/cproot
    echo option force_space >> /etc/opkg.conf

    重启路由器

    5). 挂载最后的配置

    1. 通过网页输入路由器ip进入luci
    2. 选择system->mount point,可以看到rootfs已经变为U盘的大小
    3. 最后的swap那边,勾选enable
    4. 在Mount points,找到/dev/sda1那行,点击删除
    5. 在Mount points后面点击添加
    6. 选择/dev/sda1,文件系统选择ext4,这时候会出来一个选项,设置为rootfs,选中它,再选中启用
    7. 保存并应用

    6). 挂载最终效果

    V. 安装chinadns和shadowscks

    参考 ShadowSocks安装

    1). 安装ipset

    1
    2
    opkg update
    opkg install ipset

    ps: 安装过程中如果提示kmod:failed to insert /lib/modules/...的错误不用管他。

    好了以后,重启路由器。

    2). ssh登录路由器,安装软件

    1
    2
    3
    4
    5
    6
    7
    8
    opkg update
    opkg install libpolarssl
    opkg install resolveip
    opkg install luci-i18n-chinese
    opkg install ChinaDNS
    opkg install luci-app-chinadns
    opkg install shadowsocks-libev-spec
    opkg install luci-app-shadowsocks-spec

    3). 通过路由器ip登录 luci,可以将luci修改为中文

    选用system -> system -> language 选择中文
    重启路由器

    VI. 配置shadowsocks和chinadns

    1). 通过路由器ip访问luci

    2). 配置ChinaDNS

    进入 服务->ChinaDNS 修改上游服务器为:

    1
    223.6.6.6,123.125.81.6,114.114.115.115,114.114.114.114,8.8.4.4,127.0.0.1:5151

    3). 配置Shadowsocks

    1. 进入 服务->ShadowSocks 配置好全局配置,UDP转发 选择勾选。
    2. UDP本地端口保证与ChinaDNS中 上游服务器 中设置的本地的端口一样: 5151。

    4). DHCP/DNS设置

    4个是为了保证稳定性,否则经常会出现解析失败导致网页无法打开,

    网络->DHCP/DNS设置->基本设置->DNS转发设置为:

    这里确实是#号

    1
    2
    3
    4
    127.0.0.1#5353
    127.0.0.1#5353
    127.0.0.1#5353
    127.0.0.1#5353

    基本设置->HOST和解析文件

    1. 忽略解析文件 打勾
    2. 忽略HOSTS文件 打勾

    5). 更新ChinaDNS过滤ip

    /etc/chinadns_chnroute.txt 替换为 服务->ChinaDNS中的 国内路由表 地址

    1
    2
    3
    opkg update
    opkg install libcurl curl
    curl ‘http://ftp.apnic.net/apnic/stats/apnic/delegated-apnic-latest’ | grep ipv4 | grep CN | awk -F\| ‘{ printf(“%s/%d\n”, $4, 32-log($5)/log(2)) }’ > /etc/chinadns_chnroute.txt

    计划,每天凌晨4点更新下

    1
    4 * * * curl ‘http://ftp.apnic.net/apnic/stats/apnic/delegated-apnic-latest’ | grep ipv4 | grep CN | awk -F\| ‘{ printf(“%s/%d\n”, $4, 32-log($5)/log(2)) }’ > /etc/chinadns_chnroute.txt

apache配置多站点

通过把apache配置安装为服务设置多站点

  1. 打开wamp\bin\apache\Apache2.2.21\conf文件夹,复制httpd.conf,重命名为 my.conf
  2. 打开my.conf,修改并保存
    1. Listen 8009 # 端口号 #
    2. ServerName localhost:8009 #服务器名#
    3. DocumentRoot “G:/WapStatic” #设置为网站根目录的url”
    4. <Directory />
    5. Options Indexes FollowSymLinks Includes #支持服务端包含 *.shtml文件支持#
    6. AllowOverride None
    7. Order allow,deny
    8. allow from all
    9. </Directory>
    10. <Directory “G:/WapStatic”> #设置网站根目录的权限#
    11. Options Indexes FollowSymLinks Includes #支持服务端包含 *.shtml文件支持#
    12. AllowOverride all
    13. Order Allow,Deny
    14. Allow from all
    15. </Directory>
  3. 接下来安装站点
    运行 cmd 定位到apache安装目录下的bin文件夹(wamp\bin\apache\Apache2.2.21\bin
    执行 httpd.exe -k install -n “服务名” -f “配置文件的路径”; //安装一个apache服务
    可以用 httpd.exe /?查看各个选项的意思

    1. # 比如:(服务名和配置文件的路径必须用双引号括起来)
    2. httpd.exe -k install -n “longsun” -f “F:\Program Files\Apache Group\Apache2\conf\longsun.conf”
  4. 运行apache目录下的 apacheMonitor.exe 查看当前的apache服务,启动我们刚刚建的服务。
  5. 浏览器打开 http://www.localhost:8009 验证站点是否正常

通过1个IP多端口的方式配置多站点

一个IP + 一个端口 映射一个站点

  1. 打开 conf/httpd.conf 配置文件,修改如下:
    1. Listen 8012 #监听新端口
    2. Include conf/extra/httpd-vhosts.conf # ctrl+f 查找,去掉前面的#注释,包含外部虚拟主机配置文件
    3. #打开虚拟主机配置文件 ( conf/extra/ httpd-vhosts.conf ) , 在底部增加这样一段配置信息
    4. <VirtualHost *:8012>
    5. ServerAdmin webmaster@myweb.com
    6. DocumentRoot “d:/mysite/” #站点根目录
    7. ServerName localhost:8012 #站点主机名 域名+端口 唯一标识一个主机
    8. #由于httpd.conf的全局配置比较严格,默认所有目录不可访问,所以要这个放宽访问权限
    9. <Directory />
    10. Options FollowSymLinks
    11. AllowOverride all
    12. Order deny,allow
    13. Allow from all
    14. </Directory>
    15. </VirtualHost>
  2. 保存配置文件后,重启apache,然后就可以预览 http://localhost:8012/test.html
  3. 在命令行下,转到 apache2/bin目录 运行httpd -S可以分析虚拟主机配置文件是否正确。

通过修改host方式配置多站点

hosts文件位于 window\system32\drivers\etc下

  1. 修改本机的hosts文件,如下:
    1. 127.0.0.1 localhost
    2. 127.0.0.1 www.dede.com
    3. 127.0.0.1 www.phpcms.com
  2. 打开httpd.conf文件,分别去掉下面两行文字前面的#号。
    1. #启用apache的虚拟主机功能。
    2. #LoadModule vhost_alias_module modules/mod_vhost_alias.so
    3. #包含虚拟主机配置。
    4. #Include conf/extra/httpd-vhosts.conf
  3. 打开extra/httpd-vhosts.conf文件,加上自己的虚拟主机配置。
    1. # www.glife.com, www.myphp.com是在hosts文件中指定解析为本机ip的
    2. <VirtualHost *:80>
    3. ServerAdmin stephenjj@126.com
    4. DocumentRoot “d:/pan/shopilex” #注意 目录分隔符用斜杠/
    5. ServerName www.glife.com
    6. </VirtualHost>
    7. <VirtualHost *:80>
    8. ServerAdmin stephenjj@126.com
    9. DocumentRoot “d:/web”
    10. ServerName www.myphp.com
    11. </VirtualHost>
  4. 重启apache, 并访问对应网址试试

1、创建站点文件

站点文件可以是把已经准备好的文件copy 的指定目录,也可以自己一步一步的在本地主机搭建起来。
  • 1

在这里展示一下搭建一个站点文件:

1、cd /var/www/
  // 跳转到指定目录
2、sudo mkdir test
  // 创建test目录
3、 cd test/ 
  //跳转到test目录下
4、sudo vim index.html
  //新建一个index.html 并输入一下代码:
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
<html>
<head>
   <meta charset="utf-8">
</head>
<body>
看到本也页面,说明已经搭建多域名成功了!!
</body>
</html> 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

在这里插入图片描述

保存并退出。index.html 文件会自动生成。

在这里插入图片描述

2、申明一个域名

liunx系统在/ect目录下有个hosts 文件,其作用是是Linux系统上一个负责ip地址与域名快速解析。
那我们现状要做的就是要申明一个域名,通过这个域名来访问本地主机上的一个网站文件。所以,
需要在hosts 添加一条映射。操作如下

在终端上运行如下命令:

sudo vim /etc/hosts
//打开hosts文件
  • 1
  • 2

你会在文件最前面看到类似如下信息:

127.0.0.1       localhost
127.0.1.1       jay-VirtualBox
……
  • 1
  • 2
  • 3

在该文件里,ip 地址和域名都是成对出现的。
127.0.0.1 就是本地主机的ip, localhost 就是相对应的域名。
接下来,我们在最后一条域名解析记录下添加一条域名解析记录:

127.0.0.1   test.com
// 新增一个域名,其指向本地主机(127.0.0.1)
  • 1
  • 2

在这里插入图片描述
保存离开。

3、绑定站点文件

域名有了,那浏览器就可以通过域名访问到指定IP的服务器(这里是本地主机)
但是我们并没有指出接下来浏览器该怎么走。所以我们还需要给出一份更加详情的“地图”给浏览器。

注:
	如果只配置的步骤二就在浏览器进行访问,我们就会看到浏览器会自动访问默认站点文件。当然,
	前提是你已经配置好了一个域名服务器
  • 1
  • 2
  • 3

要绘制这份“地图”,我们需要借助apache(我使用的apache 为apache2。apache2 下载安装 和 具体目录结构请自行百度。)

操作如下:

1、sudo cp /etc/apache2/sites-available/000-default.conf  /etc/apache2/sites-available/test.conf
  ///etc/apache2/sites-available/copy 000-default.conf 配置文件,并在该目录下粘贴、重命名为test.conf。
2. cd /etc/apache2/sites-available/
  // 进入sites-available 目录
3、sudo vim test.conf
  //打开test.conf 文件
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

修改以下信息:
1、找到 ServerName 去掉 # 的注释,并把后面的域名改为设置的 test.com
2、ServerAdmin 修改为 webmaster@localhost

ServerAdmin 设置一个邮件地址,如果服务器有任何问题将发信到这个地址, 这个地址会在服务器产生的某些页面中出现。

3、DocumentRoot 站点物理路径改为 var/www/test
在这里插入图片描述

注意:如果站点的文件不在 var/www/目录及其子目录下,我们需要在 /etc/apache2/ 目录下的apache2.conf 添加如下代码:

<Directory /home/VMShareFiles/test/>  //这里假定站点物理路径为 /home/VMShareFiles/test/
	Options FollowSymLinks
	AllowOverride All
	Require all granted
</Directory>
  • 1
  • 2
  • 3
  • 4
  • 5

在这里插入图片描述

4、切换激活站点并重启apache2

sudo a2ensite test.conf
sudo /etc/init.d/apache2 restart
  • 1
  • 2

5、浏览器访问 test.com

在这里插入图片描述

通过以上的操作就可以在现有一个域名的情况下在搭建一个新的域名。如果还想再搭建其他域名,重复以上操作即可。

Apache2设置是否显示目录列表

Apache2设置是否显示目录列表

Apache2的配置文件为 /etc/apache2/apache2.conf ,在 <Directory> 部分设置目录访问权限。

一般我们需要隐藏服务器的跟目录,所以我们将配置改为

<Directory />
-	Options Indexes FollowSymLinks
+	Options FollowSymLinks
	AllowOverride None
	Require all denied
</Directory>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

假如我们需要访问部分服务器下的目录,则新设置一个 <Directory> 节点,并且在将目录设置为服务器的绝对路径,如我们需要访问服务器下的 DownLoadList 目录

<Directory /var/www/html/DownLoadList/>
  Options Indexes
  IndexOptions NameWidth=25 Charset=UTF-8 
  Allow from all
  DirectoryIndex none
</Directory>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

其中DirectoryIndex none的作用是为了避免自动打开目录下的index.html文件

1 apache安装过程(centos5.1_64)
./configure –prefix=/usr/local/apache2.2.8 LDFLAGS=”-L/usr/lib64 -L/lib64″–enable-mods-shared=all –enable-so –libdir=/usr/lib64 –with-mpm=worker –enable-cache –enable-disk-cache –enable-mem-cache –enable-file-cache –enable-rewrite=share –enable-proxy=share –enable-cgi –enable-proxy-ajp=share –enable-dav=share –with-apr=/usr/local/apr –with-apr-util=/usr/local/apr-util/
make && make install
2 和tomcat成功整合后,配置apache的默认语言为中文:
vi httpd.conf里 去掉注释#
Include conf/extra/httpd-languages.conf
然后配置conf/extra/httpd-languages.conf文件
添加如下:
DefaultLanguage zh-CN
AddDefaultCharset gb2312
设置虚拟目录:
vi ../httpd.conf
……
Alias /shujb “/home/jack”
<directory “=”” home=”” jack”=””>
Options Indexes FollowSymlinks
       AllowOverride None
Order allow,deny
Allow from all
…….
设置完成后,可以显示目录,但无法正常显示中文,出现乱码。在浏览器切换编码可以正常显示。说明问题处在apache设置的默认语言没有生效。
个性化Apach2目录列表,主要取决于对mod_autoindex模块中的各种指令的使用
和配合。可以去先阅读一下Apache2.0手册中的mod_autoindex模块文档。
个性化配置开始
一、修改httpd.conf文件
对需要个性化的目录进行定制:
 <directory “=”” www=”” download”=””>
Options Indexes FollowSymlinks
IndexOptions FancyIndexing ScanHTMLTitles NameWidth=25
DescriptionWidth=128 VersionSort FoldersFirst
IndexIgnore favicon.ico header.html footer.html images
HeaderName header.html   #header.html路径相对于主目录的
ReadmeName footer.html
AddDescription “ftp安装包” vsftpd.tar.gz
IndexOrderDefault Ascending Name
AllowOverride None
Order allow,deny
Allow from all
[编辑]
部分指令说明:
    * ScanHTMLTitles:如果目录中含有HTML文件,则Apache会自动读取HTML文
件的< title>……部分,用HTML文件的标题作为Description(描述
)显示在列表目录中的 Description部分。。(注意:加载该指令会加大CPU的
负荷!)
    * NameWidth=25 :指定目录列表可以显示最长为25字节的文件/目录名,如
果使用*来做值,会自适应到最长文件名。
    * DescriptionWidth=128:指定目录列表可以显示最长为128字节的文件/目
录描述内容。
    * VersionSort:如果目录中含有同一文件的不同版本,则Apache会对该文
件按照版本号自动排序。
    * FoldersFirst:最先列出文件夹会使显示效果更好看一些吧!
    * IndexIgnore:在它后面设定的文件/目录不会在目录列表中显示。
    * HeaderName:指定该目录列表的header模板,指定一个html文件后,
Apache会用这个网页替换掉默认目录列表上面呆板的Index of …..而显示出个
性化的头网页。(注意:文件路径是相对于列表目录的根而言的,并不是相对于
系统根或者网站根而言的!)
    * ReadmeName:指定该目录列表的footer模板,指定一个html文件后,
Apache会在目录列表的底部加载这个网页。(注意:文件路径是相对于列表目录
的根而言的,并不是相对于系统根或者网站根而言的!)
    * AddDescription:如果你想为某个文件设置一个Description(描述)的
话,就使用这个指令,格式是AddDescription “描述” 文件名 。
    * IndexOrderDefault Ascending Name:指定目录列表的排序方式为按名称
排序。
当然,还可以定制很多其他的内容,包括可以为每一个文件设定一个图标等等,
去读文档吧。
[编辑]
二、建立header.html和footer.html
这两个文件是列表目录的头网页和尾网页,也是个性化的关键。其实这部分和
Apache水平已经没有什么关系了,主要还是看你制作网页水平如何了,呵呵。
这里给出两个文件的格式:
    * header.html:
可以在这里加入个性化内容,图片、FLASH、表格等等,随意啦!

* footer.html:

可以在这里加入个性化内容,图片、FLASH、表格等等,随意啦!

注:
options -indexes
(此时直接访问目录403 Forbidden)
显示:
options +indexes

Apache默认显示文件列表.
可以进一步控制文件列表显示模式:
这里有许多配置

HeaderName HEADER.html
在返回的文件列表信息顶部插入的Html文件.可以使用绝对或相对路径.不过仍然
建议使用绝对路径,因为相对路径无法被子目录继承..
指定的文件在Apache里设定的MIME类型必须为 text/*
默认的文件是header.html
ReadmeName /avc.htm
附加在文件列表尾部的HTML文件.用法同 HeaderName Filename的语法
默认的文件是当前目录下 footer.html
IndexOptions Charset=GB2312 这是目录的默认语言。
IndexIgnore *.jpg *.ico .htaccess php.ini
在返回文件列表中屏蔽特定文件.如果设置为 IndexIgnore * ,那么实际上返回
一个空文件
IndexOrderDefault Ascending|Descending Name|Date|Size|Description
文件列表排序方式
AddDescription “Qmail安装包” qmail.tar.gz
设置目录列表中文件、文件夹的描述
Note:
通常的header.html 和 footer.html格式:
header.html
…..

footer.html

……

即把文件列表嵌套.在 表格里

最后我的设置为:
Alias /shujb “/home/jack”
<directory “=”” home=”” jack”=””>
Options Indexes FollowSymlinks
IndexOptions FancyIndexing ScanHTMLTitles HTMLTable NameWidth=125 DescriptionWidth=256 VersionSort FoldersFirst
IndexIgnore favicon.ico header.html footer.html images
HeaderName /conf/extra/header.html
ReadmeName /conf/extra/footer.html
IndexOptions Charset=GB2312
IndexOrderDefault Descending Name
AllowOverride None
Order allow,deny
Allow from all
header.html放在主目录ROOT/conf/extra/header.html下。
header.html,footer.html也就没有设置什么。至此目录可以正常显示了。。相对于apache默认的好多了。呵呵。

实例:

导读:apache2服务器中禁止目录列表的设置方法,修改Options项,去掉Indexes,或改成-Indexes,禁止显示目录列表。

Apache2禁止显示目录列表的设置方法

一、默认情况,如果apache指定的目录没有配置“index.php index.html index.htm”文件之一,则appache会显示目录及目录下的所有文件:

复制代码代码示例:
<IfModule dir_module>
DirectoryIndex index.php index.html index.htm
</IfModule>

二、在apache2中,所有配置都可以写到/etc/apache2/httpd.conf(默认里面是空的), 但在站点配置文件/etc/apache2/sites-available/* (例如default)文件中。

可以单独针对某个单独的域名来配置规则,在其中找到目录配置:

复制代码代码示例:
 <Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>

修改Options项,去掉“Indexes”,或改成“-Indexes”即可(索引)。

修改完配置,重新载入apache2配置或重启apache2:

复制代码代码示例:
#sudo servcie apache2 reload 或
#sudo /etc/init.d/apache2 restart

重启

service apache2 restart重启Apache服务才会生效