[教程]自己编译N1 openwrt(docker版)固件
注意:
- 不要用 root 用户 git 和编译!!!
- 国内用户编译前最好准备好)梯-子
- 默认登陆IP 192.168.1.1, 密码 password
如何给ubuntu系统做全1局1代-理
在用非root账户登录后
一般在/home/你的用户名/.bashrc
nano .bashrc
export http_proxy=http://你的可用局域网代-理-IP:端口/
export https_proxy=http://你的可用局域网代-理=IP :端口/
export ftp_proxy=http://你的可用局域网代-理)IP :端口/
保存,再开一个ssh窗口,试试或者重启系统
编译命令如下:
1/首先装好 Ubuntu 64bit,推荐 Ubuntu 18 LTS x64
2/更新系统
sudo apt-get update #更新系统
3/安装依赖
sudo apt-get -y install build-essential asciidoc binutils bzip2 gawk gettext git libncurses5-dev libz-dev patch python3.5 python2.7 unzip zlib1g-dev lib32gcc1 libc6-dev-i386 subversion flex uglifyjs git-core gcc-multilib p7zip p7zip-full msmtp libssl-dev texinfo libglib2.0-dev xmlto qemu-utils upx libelf-dev autoconf automake libtool autopoint device-tree-compiler g++-multilib antlr3 gperf wget #安装需要的依赖
4/新建目录
mkdir lede #新建目录
cd lede #进入目录
5/使用git clone下载源码
git clone https://github.com/coolsnowwolf/lede
6/更新并安装
./scripts/feeds update -a
./scripts/feeds install -a
7/配置openwrt
make menuconfig #(这一步详细设置在下面,仔细看) ,具体配置见下方截图
8/下载dl库
make -j8 download V=s
#下载dl库(国内请尽量全8局9科-学9上网)
9/编译固件
make -j1 V=s
#(-j1 后面是线程数。第一次编译推荐用单线程)即可开始编译你要的固件了。
整个编译过程很漫长2-4小时,也许更长
本套代码保证肯定可以编译成功。里面包括了 R20 所有源代码,包括 IPK 的。
配置前,安装s-s=r plus代码和openclash
1/作者把s+s-r-plus个注释掉了,拉到你本地机器后,把注释去掉,就好
进入lede目录,并运行
nano feeds.conf.default
去掉src-git helloworld前面的#
2/手动Clone vernesong的OpenC1ash项目
mkdir package/luci-app-openclash
cd package/luci-app-openclash
git init
git remote add -f origin https://github.com/vernesong/OpenClash.git
git config core.sparsecheckout true
echo "luci-app-openclash" >> .git/info/sparse-checkout
git pull origin master
git branch --set-upstream-to=origin/master master
./scripts/feeds update -a
./scripts/feeds install -a
make menuconfig
使用github actions进行编译的话,可以使用这组配置
src-git packages https://github.com/coolsnowwolf/packages
src-git luci https://github.com/coolsnowwolf/luci
src-git routing https://git.openwrt.org/feed/routing.git
src-git telephony https://git.openwrt.org/feed/telephony.git
#src-git freifunk https://github.com/freifunk/openwrt-packages.git
src-git kenzo https://github.com/kenzok8/openwrt-packages
src-git small https://github.com/kenzok8/small
#src-git video https://github.com/openwrt/video.git
#src-git targets https://github.com/openwrt/targets.git
#src-git management https://github.com/openwrt-management/packages.git
#src-git oldpackages http://git.openwrt.org/packages.git
#src-link custom /usr/src/openwrt/custom-feed
src-git helloworld https://github.com/fw876/helloworld
编译后,会有passw11\$$r plus\openc1ash
make menuconfig,N1的设置
要启用cloudflare ddns的话,需要做如下操作
后期登录openwrt后
API Key 可以控制整个账号,为了提升安全性可以选择创建一个 API Token ,权限为Zone(区域)-DNS- Edit(编辑)即可。感兴趣的小伙伴可以自行探索,这里点到为止。(Lean 大佬的源码博主提交了相关功能的 PR ,2020 年 10 月 13 日后编译的固件才能支持 Cloudflare API Token )
DDNS 服务提供商选择cloudflare.com-v4
,然后填入前面设置的域名和获取到的 API Key 以及 Cloudflare 用户名(如果使用的是 API Token ,则用户名是Bearer
)。这里需要注意的是二级域名要使用@
来分隔。其它设置可以自由发挥,不过一般没什么需要改的。
退出配置界面,并保存.config配置文件
执行第8、9步骤进行编译
漫长等待后,完成编译后的压缩包在下图位置
制作docker版n1固件
需要使用一键生成工具
一键脚本说明
感谢恩山的@flippy,他制作了一键脚本方便生成docker镜像
在你这台编译用ubuntu上
非root用户,ssh上去
/home/用户名/新建一个目录
mkdir make_docker
cd make_docker
wget http://soft.zhujitips.com/n1/7.docker/make_opwrt_docker_img.tar.gz
解压tar.gz文件
tar -zxvf make_opwrt_docker_img.tar.gz
拷贝编译openwrt生成的文件到/home/你的用户名/ make_docker目录下
/home/你的用户名/lede/bin/targets/armvirt/64/openwrt-armvirt-64-default-rootfs.tar.gz
#编译生成的文件在如上位置
生成docker版
outdir生成目录,可以更改,但是需要提前建好!
img_name为hub.docker上的用户名和镜像名,如果没有可以申请或别不想上传到hub.docker.com,用本地加载镜像的办法
脚本用到了pigz
如果没有这个工具,需要安装
apt-get install pigz
sudo bash build.sh tag #tag换成你要的版本号,比如2020.06.27
如上图,成功完成
可以在/opt/imgs/docker
目录查看生成好的镜像文件
导入镜像
将生成好的镜像文件传输到N1,运行以下命令导入
docker load --input 镜像文件
上传到hub.docker.com
登录docker
sudo docker login
根据提示,输入用户名和密码
sudo docker push 用户名/镜像名:tag
在n1,armbian上pull拉取这个镜像
docker pull 用户名/镜像名:tag