openwrt编译学习记录

openwrt是一个开源路由管理系统,基于linux,功能非常强大。这阵子利用闲暇时间学习,写下本文做个记录,方便自己后续查找,也方便他人学习。
本文不定时更新。
《1》 编译环境搭建
本来是找算在本地使用虚拟机编译的,但弄了几次都编译失败,查找原因是某些包的下载地址被墙,下载失败导致,这个问题可以通过连接VPN解决,但我的VPN实在太慢,我又是急性子,最终是直接在Vultr上新建个VPS,在上面编译的。
使用的系统为ubuntu14.04 64位
使用如下命令搭建环境

apt-get update
apt-get install git-core build-essential libssl-dev libncurses5-dev unzip -y
apt-get install subversion mercurial -y
apt-get install zlib1g-dev gawk gcc-multilib flex gettext -y

编译时最好先安装screen,新建一个screen进行编译,因为编译时间很长,直接ssh连接可能会因为网络不稳断掉导致编译进程被杀死。挂起screen方法为 ctrl+a再+d 。恢复的命令为 screen -r 。

apt-get install screen -y
screen -S openwrt

编译时不能使用root进行编译,我们新建一个普通用户

useradd glorystar -m
su glorystar
cd ~

通过git来下载OpenWrt bleeding edge(trunk版本)

git clone git://git.openwrt.org/openwrt.git

这将会创建’openwrt’这个目录。这个目录将会是OpenWrt的编译主目录。
下载并安装所有可用的”feeds”

cd openwrt
./scripts/feeds update -a
./scripts/feeds install -a

运行下面的命令让OpenWrt编译系统检查你的编译环境中缺失的软件包

make defconfig
make prereq

使用如下命令打开编译菜单选择要编译的软件包

make menuconfig

make menuconfig.png
必须设置项为 Target System (我选择Broadcom BCM47xx/53xx (MIPS)) Subtarget (我选择MIPS 74K) 这个是根据你的路由器来选择的,选择完成后就可以开始编译了。
默认编译是不包含luCI管理界面的,如果你需要它,可以选择它编译进固件,路径为 LuCI —> Collections —> < * > luci
<>表示不会被编译,< M >表示会编译但不包含进固件,生成ipk以便后来安装, < * >表示会被编译进固件,使用空格键切换选择。

选择好后一点选exit退出,最后选yes保存。使用如下命令进行编译

make V=99

使用多核CPU进行编译用如下命令(会加快速度)

make V=99 -j

之后就是漫长的等待,编译好的固件会放在bin文件夹里。
注意点:新建虚拟机硬盘至少要30G以上,我使用20G的硬盘导致空间被占完,编译失败。
《一》到此结束,参考 OpenWrt编译系统 – 安装

买了个Sandisk闪迪酷铄64G闪存盘

用了好几年的忆捷(EAGET)16G U盘丢了,全金属挺好用的,丢了挺可惜的。但丢了也就丢了,只能安慰自己旧的不去新的不来!
EAGET-CM981.png
买这个应该是在四五年前吧,京东买的,再去京东看了下,这货居然还在售!价格降了一半左右,记得我当时是五六十块买的。
这货虽然好用,但再买的话我不会再买这个,毕竟是好多年前的产品了,性能有点跟不上了。
一番查看,相中闪迪酷铄,在一众64G USB3的U盘中,性能更优而价格相差无几。
前天下午下单,当天京东就发出来了,昨天晚上送到公司,今天上班拿到手。
sandisk1.jpg
sandisk2.jpg
sandisk3.jpg
这个U盘比想象中更小巧一点,做工看起来比较粗糙,甚至感觉不如好几年前的EAGET,下载了CDM测试了下,基本达到了其标识的性能,总体还可以吧。
CMD.png
等有时间,再量产此U盘吧,就先到这吧。

VPS自动备份网站数据脚本 自动备份到FTP和Dropbox

数据是网站的命根子,必须妥善保管!勤做备份,做到有备无患。
借助liunx的任务计划crontab,我写了一个自动备份脚本让其在固定时间执行备份操作–打包网站数据备份到FTP空间和dropbox上。
备份到FTP需要系统有安装ftp,现在一般的VPS都默认安装,如发现没有此命令,可以使用如下尝试安装

yum install ftp #centos等redhat系的发行版
apt-get install ftp #debian系的发行版

上传到dropbox首先要建立一个dropbox APP,建立链接在此,如下图 注意不要选择business的app,也不需要full dropbox。
dropbox-1.jpg
dropbox-2.jpg
上传还需要用到一个第三方上传脚本Dropbox Uploader,使用如下命令把它下载到备份目录/home/backup并给予执行权限

curl "https://raw.githubusercontent.com/andreafabrizi/Dropbox-Uploader/master/dropbox_uploader.sh" -o dropbox_uploader.sh
chmod +x dropbox_uploader.sh

使用此脚本要先进行验证才能上传文件到dropbox,验证步骤如下

./dropbox_uploader.sh

1 输入上面的命令运行它,填入App keyApp secret
2 选择a
3 按y确认
4 复制生成的验证链接到浏览器访问
5 浏览器确认后终端按任意键验证完成

 ./dropbox_uploader.sh
 This is the first time you run this script.
 1) Open the following URL in your Browser, and log in using your account: https://www.dropbox.com/developers/apps
 2) Click on "Create App", then select "Dropbox API app"
 3) Now go on with the configuration, choosing the app permissions and access restrictions to your DropBox folder
 4) Enter the "App Name" that you prefer (e.g. MyUploader255431153919283)
 Now, click on the "Create App" button.
 When your new App is successfully created, please type the
 App Key, App Secret and the Permission type shown in the confirmation page:
 # App key: xxxxxxxxxxxx
 # App secret: xxxxxxxxxxxx
Permission type:
 App folder [a]: If you choose that the app only needs access to files it creates
 Full Dropbox [f]: If you choose that the app needs access to files already on Dropbox
 # Permission type [a/f]: a
 > App key is xxxxxxxxxxxx, App secret is xxxxxxxxxxxx and Access level is App Folder. Looks ok? [y/n]: y
 > Token request... OK
 Please open the following URL in your browser, and allow Dropbox Uploader
 to access your DropBox folder:
 --> https://www.dropbox.com/1/oauth/authorize?oauth_token=xxxxxxxxxxxx
Press enter when done...
 > Access Token request... OK
 Setup completed!

dropbox-3.png
dropbox-4.png

继续阅读

Vultr新用户注册可免费获赠20美元或50美元

之前博客对vultr有过介绍,详见vultr剁手星期一活动:新用户注册送30美元 最低款套餐够用半年~
错过那个机会的朋友现在机会又来了,其又推出了新用户优惠活动,新用户注册时使用优惠码<input
onclick=”window.open(‘https://glorystar.me/go/vultr‘);
prompt(‘请手动复制码/券使用:’,’NGINX20′);” type=”button” value=”vultr20美元优惠码”>可获赠有效期为1年的20美元信用点,其最低款的VPS为5美元每月,可免费使用4个月。
另外其一直有针对新用户的优惠活动,通过此专用链接注册可获赠50美元信用点数!不过此信用点有效期就只有2个月了,2个月内要用完,到期没用完也会被清空,我们可以开一个月20美元套餐和一个月30美元套餐将其用完。
之前这两个活动是可叠加的,不过最近vultr已经加了限制,二个优惠只有二选一,朋友你会怎么选择呢?
要享受此优惠需要在注册时绑定一个付款方式(信用卡或Paypal),绑定信用卡时会有一笔2.5美元的预授权,此笔交易只为验证信用卡是否有效,不会实际扣款,请不用担心。vultr现在和linode、digitalocean为世界最大的三个云主机商,大公司,信誉方面完全没有问题。
下面简单说下怎么注册获得这个优惠

  1. 点击这里进入vultr
  2. 输入邮箱和密码注册

vultr1.png

  1. 输入优惠码NGINX20并使用

vultr4.png vultr5.png

  1. 绑定至少一个付款方式(信用卡、PAYPAL、比特币,注意至少要先绑定前两个付款方式至少一个后才能绑定比特币,因为比特币无法确定你的身份)

vultr2.pngvultr3.png

  1. 绑定完成后进入账户,你就可以看到信用卡已经充值到你的账户了。

通过新用户优惠链接注册不需要输入任何优惠码,不过也需要绑定至少一个付款方式!
vultr6.png

KVMLA旗下PZEA年付便宜VPS

PZEAKVMLA旗下的一家新主机商,KVMLA是一家国人主机商,成立于2011年。其提供的服务几年来口碑还算良好,其老总–“K总”常活跃于全球主机交流论坛,是个技术牛人,也正是这份技术功底,使其撑过了国人IDC成立初期的残酷竞争期(DDOS攻击和CC攻击轮番上阵,能撑过来的都是运维水平过硬的),保障了其服务稳定性。
PZEA现提供亚洲KVM美国KVM便宜VPS三种VPS主机,KVM能提供更好的性能,更大的系统自主性,其相应价格也更高,真正做网站的朋友可选择KVM架购的VPS。
我们主要说的是其便宜VPS(shadowsocks不需要太强大的性能),目前其提供了最低款年付12美元的套餐,套餐详情如下
1核 CPU
256 RAM(内存)
15GB RAID10 Disk(硬盘)
1 IPv4(IP地址)
100Mbit Up/Down(百兆网口)
500G Monthly Traffic(500G月流量)
有三个数据中心可选,分别为洛杉矶、凤凰城、弗里蒙特,都是美国西部的城市,对大陆连接速度相对较快,如对一个数据中心不满意,还可发服务单申请迁移到另外的数据中心。
另外其更高级别的便宜VPS套餐(level2以上)目前正在做一个优惠活动,年付款可选10个IP的套餐包,价格不变,有多IP需求的朋友一定不要错过这个机会了!
其结算周期为自然月结算,付款时会自动扣除当月已过天数的款项。
Level1
CPU:1 core RAM:256M HDD:15G IPV4:1 Bandwidth:500G 年付$12.00 USD

继续阅读

使用路由器搭建VPN服务器方便在外时远程访问家里的网络

家里有台小型服务器–HP ProLiant MicroServer Gen8,安装了WINDOWS SERVER 2012,使用自带的hyper-v搭建虚拟机环境,上面跑了一个黑群、一个DEBAIN、一个XP。
为方便在外时访问家里的服务器,我使用路由器搭建了VPN服务器,在外时远程连接到此VPN,就跟在家里一样管理了。
外网访问首选要解决的就是ADSL拨号获得的IP不固定的问题,每次猫重启下,IP就变了,你在外时不知道家里的IP地址,什么都不用谈了。
我使用的办法是DDNS动态DNS域名解析的办法(还有另一种办法就是使用一台有固定IP的服务器进行转发,因为我的服务器都是国外的,转发到国内速度太慢,还容易断线,所以无法使用此方法),搭建VPN服务器的是二级路由,一级路由是一个TP-LINK的猫+路由一体机,在TP上设置花生壳DDNS之后在端口转发功能里把PPTP VPN的1723端口转发的二路路由的IP上。
二级路由器为网件WNR-3500L V1版,BCM47XX 64M内存 8M FALASH,刷了DD-WRT,可以很方便得搭建VPN服务器。
简单说下DD-WRT环境下VPN服务器的设置方法
DDWRT VPN1.png
照着上图那个设置就行了。最下面的CHAP-Secrets是用户名和密码的输入框,输入格式为

用户名 * 密码 *

密码前后的*要用空格隔开

说明:我家里的子网为192.168.0.1,DHCP分配本地IP范围192.168.0.100-150,我把VPN分配IP设为192.168.0.151-200,试过设置为和家里网络不同网段的,服务器IP设为192.168.10.1,分配IP设为192.168.10.100-200,也可以正常连接,不过就不能通过VPN连接上Internet了,目前还没找到把VPN分配IP设为不同子网而又能正常上网的办法,如果你知道怎么解决,望不吝回复赐教!
设置完了之后不要忘了应用设置!接着说下客户端的连接(以WINDOWS7为例)
CLIENT VPN1.png

继续阅读

本博客搬离Hosthatch

三天前,香港softlayer机房不再提供直连大陆的线路,导致从大陆访问其服务器的流量要绕太平洋两回,延迟很高。
本博客之前托于Hosthatch香港节点,其就是位于Softlayer机房,所以本博客也悲剧了,访问慢了很多。
我手上的服务器还是很多的,一处不行就迁移到另一处吧。
今天花了点时间把博客搬到了DigitalOcean的旧金山节点,速度快了很多,虽然还是得跨越太平洋,但起码不用绕路两趟了!
说下步骤,很久没弄这个了感觉都有点生疏了
1、ssh登陆hosthatch的VPS,备份网站数据

tar zcvf web.tar.gz /home/wwwroot

2、登陆phpmyadmin备份数据库,把数据库备份下载到本地
3、备份服务器https证书,用的是letsencrypt的证书,我直接把git的整个文件夹打包
4、备份网站的nginx配置文件(因为我做地一些自定义修改,直接把配置文件复制过去省掉手工输入的麻烦)。
5、ssh登陆新服务器,把上面打包好的网站数据,证书,配置文件等一一weget过来,解压放到对应的位置。
6、登陆新服务器的phpmyadmin,导入上面下载到本地的数据库备份文件。
7、修改域名解析记录,等其生效就OK了!
有个小插曲 我直接复制nginx的配置文件到nginx的vhost文件夹,忘了重启nginx使其生效了,最终导致解析生效后访问不正常,重启后OK。

德国海淘最恶心的商家-WINDELN

在中国想当好一个称职的奶爸奶妈真是不容易,给宝宝吃的、用的、穿的商品各种不放心,这种不放心也催生的轰轰烈烈的海淘奶爸奶妈党。
之前我一直在德亚购买aptimal奶粉,发货迅速,价格适中(PS:各国的AMAZON真是海淘党购物首选),这次要购买2段的奶粉,无奈看到德亚上都断货了。
宝宝口粮可不能因断货就不买了,辗转搜索看到了WINDELN.DE,说是德淘购物首选,货物齐全,很少断货,上去看了下,果然有这个奶粉卖,价格也跟德亚一样,没说的,购买吧。
没想到的是,等到我注册好,填入转运地址后,购物车被清空了,账号也被退出了,这是什么情况?
再登陆上去,看到的奶粉价格变了,涨了28%。。。
然后退出登陆,启用浏览器隐身模式再去看,价格还是原来的价格。
总算明白了,WINDELN有两种价格,一种针对中国人,一种针对外国人,中国人价格贵28%!
我家路由有自动切换线路功能,检测到访问国外网站,自动走美国代理(显示美国IP),所以最开始WINDELN以为我是美国人,所以显示的是外国的的价格,之后我注册登陆了,输入了转运的地址,这下WINDELN就确定我是中国人(外国人一般不使用转运地址),就把我退出登陆,再登陆上去就显示中国人“专属”价格
这个是外国人的价格price 1.jpg
这个是中国人的价格price 2.png
如此赤粿粿的歧视,再在他家买东西那是脑袋被门夹了!
海淘到现在,转战美国、英国、法国、德国等多家电商,WINDELN可算是最恶心、最没节操的,给大家提个醒,不要去这家买任何东西,一家节操掉了的电商,东西用着也不放心的。
再过几天看看德亚有没有上货,有就在那买,没有就找香港的朋友从香港买了。

国行手机三星samsung galaxy note3 N9002联通订制版刷入GMS

前阵机缘巧合入手了一台国行手机–Samsung Galaxy Note 3 N9002联通双卡版,使用起来还不错,免掉了一直要携带两个手机的烦恼,但有一点让我非常不习惯的就是:三星国行手机把GMS清除得非常彻底!我工作离不开GMAIL,我所有联系人都在google上面,没有GMS手机简直没法使用!
借助互联网,虽然经历了一些曲折(大部分GMS包都是适配4.4版本,而N9002到手之后我第一时间就升级到5.0了,功能多了又流畅),最终还是让我找到了N9002能用的GMS包,分享出来!

简单说下步骤
1、OTG升级系统到最新版本,版本号:LRX21.N9002ZNUGOH4 考虑到有些朋友可能刷机了,没可能再行OTG升级,再提供此版本官方原版固件下载方便大家。
2、使用Odin_v3.09刷入TWRP Recovery如已刷机,请先刷入原版固件再刷入Recovery。我在刷入TWRP时出现刷入成功但重启后还是系统自带recovery的情况,如你也出现这种情况,请把odin的自动重启(auto reboot)选项勾掉,刷入完成后手动重启。
3、进入TWRP Recovery使用其自带的功能root手机(进入后退出选择重启“reboot”时会检测手机是否已root,如未root就会提示是否root,滑动滑动即可,进入系统后会看到SuperSu已经装好但root装没有完成,会提示下载root文件后再进入TWRP安装,下载root文件有两个源play和TWRP,我们的手机还没有play商店,所以必须选择TWRP的下载源,下载较慢请耐心等待。)
4、精简掉system文件夹里至少65MB的程序,如不精简,刷入GMS包时会因为空间不足而只安装一半,因为这个我折腾了很久。。。
system free space.png
上图是我安装好GMS后查看的分区情况,可以看到system分区只分了2.2G,装完后只剩下12M剩余空间!如不想精简系统自带程序也可以,精简GMS包吧,GMS包里的/system/app里的程序都是可以在play上下载的,可以不放在system分区。把这个文件夹删除,GMS就可以正常刷入了。之后需要什么APP再去play上下载吧。
5、把GMS刷机包(适配CyanogenMod的GMS包,5.0系统用的,好不容易才找到的)放到手机存储空间或存储卡。
6、再次进入TWRP Recovery把刚才的GMS刷机包刷入。
7、刷好重启,OK Enjoy your new Galaxy Note3!

我已正常使用超过2个月,如果你刷入之后发现GMS有问题,欢迎留言反馈,看我能否帮上忙!
在我看来,android手机得有GMS才能算得上完整的!鄙视SAMSUNG在国行手机上阉割GMS的行为!

本博客今日起开启SSL加密连接访问

因写了一些翻墙的文章,被google收录后相关关键字搜索排行靠前,导致博客于两个月前被GFW屏蔽,表现为访问直接被重置链接。
这段时间比较忙,虽然知道博客被墙了,但也没时间管它。
今天有时间查看,一番测试后发现被墙模式为http混淆,在国际出口检测此域名,匹配则重置阻断连接。理论上可以通过加密SSL访问进行规避。
一番折腾,成功开启SSL,同时监听80 443端口,http和https都能正常访问。
强制访问80端口http301跳转443端口https,在本站的虚拟主机配置文件加入如下代码

server {
        listen 80;
        server_name glorystar.me www.glorystar.me;
        return 301 https://glorystar.me$request_uri;
        }

重启nginx

/etc/init.d/nginx restart

测试访问正常,访问80端口被会强制跳转到443加密端口。
继续测试,发现主页和部分文章没有显示绿锁,因为文章和评论中有图片是非https加密链接的,一篇文章一篇文章更改那太蛋痛了,直接使用数据库命令搞定,命令如下

UPDATE typecho_contents SET text = REPLACE(text, 'http://glorystar.me', 'https://glorystar.me');
UPDATE typecho_comments SET text = REPLACE(text, 'http://glorystar.me', 'https://glorystar.me');

不过域名被墙是无法解封的,开启SSL也是蛋痛,因为没有翻墙的话,你直接访问本网站是无法访问的,还没连接到网站就被阻断了,也就没法进行跳转加密链接了。
现在如果你没有翻墙,要访问本博客有个折中的办法,在网址前面加入 https:// 进行访问。