[教程]自己编译N1 openwrt(docker版)固件

注意:

  1. 要用 root 用户 git 和编译!!!
  2. 国内用户编译前最好准备好)梯-子
  3. 默认登陆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 To­ken ,权限为Zone(区域)-DNSEdit(编辑)即可。感兴趣的小伙伴可以自行探索,这里点到为止。(Lean 大佬的源码博主提交了相关功能的 PR ,2020 年 10 月 13 日后编译的固件才能支持 Cloud­flare API To­ken )

域名中要用@来分割,用户名填Bearer

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

具体设置看:[教程]在斐讯N1上刷Armbian,安装Docker+OpenWrt