记自编译openwrt镜像用在N1盒子-小钢炮中的docker

搭建环境:

  • 1.在虚拟机中搭建好ubuntu 20.04系统也可以其它版本的linux,确保可以ping通外网。

  • 2.安装docker(生成docker镜像必备)终端中输入:curl -fsSL https://get.docker.com | sudo bash 和 apt-get install pigz(运行后面build.sh所需的工具)

  • 3.搭建openwrt所需的编译环境:

    打开终端输入:
    sudo apt-get update # 更新软件
    sudo apt-get -y install build-essential asciidoc binutils bzip2 gawk gettext git libncurses5-dev libz-dev patch python3.5 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

  • 4.克隆openwrt源码这里使用的是大雕Lean的openwrt源码(这一步需要需要一些时间)

    openwrt源码地址:Lean-github

    在终端输入git clone https://github.com/coolsnowwolf/lede.git /home/admi/openwrt && cd /home/admi/openwrt # 这句表示克隆lede.git包到路径为/home/admi/下的openwrt目录中并进入到/home/admi/openwrt目录中。

注意:不要无脑复制因为你的这个/home/admi/openwrt路径跟我的路径并不一样,请根据自己的路径来适当修改,其次克隆时确保该路径下没有同名的openwrt文件夹。

  • 5.更新及安装openwrt所有的包
    https://www.cnblogs.com/mhq-martin/p/11523260.html
    在openwrt根目录中输入./scripts/feeds update -a # 更新openwrt包
    在openwrt根目录中输入./scripts/feeds install -a # 安装openwrt包

    说明:这里./ # 表示当前目录; ./scripts/feeds update -a # 表示在当前目录下执行scripts/feeds bash脚本程序 update -a是参数含义是更新所有feeds.conf.options文件中的源。

准备编译阶段

  • 在openwrt根目录下输入make menuconfig # 打开openwrt菜单

    这里给N1-小钢炮中的docker用所以架构按下面选择:

    Target System ---> 选 QEMU ARM Virtual
    Subtarget ---> 选 QEMU ARMv8 Virtual Machine (cortex-a53)
    Target Profile ---> 选 (Default)
    Target Images ---> 选 [*] tar.gz 格式用于docker

    接下来选插件:

    LuCI ---> 3. Applications(应用) ---> 按Y选中编译进固件里面,按N取消选中,按M生成IPK安装包,选择完后左右键选到save保存config配置文件,一路退出到终端。

    后面给出LUCI 应用列表的各自对应的名字

    LuCI ---> 4.Themes (主题包)

    注意:如果选中编译进固件后续在openwrt软件包栏中想删除插件那么内存并不会减少,有可能会增加因为要在内存中标记所删除的插件包。

这里给出openwrt官网的详细编译说明openwrt编译解释

下载dl包

在openwrt根目录下 输入 make -j8 download V=s # 以8线程下载dl包

开始编译

在openwrt根目录下输入:

make -j8 V=s # 用8线程编译并输出所有调试信息V表(Verbose)。

有报错就用make -j1 V=s # 以单线程编译如果同样有报错则根据输出信息来百度搜索来解决。

如果需要重新配置:

rm -rf ./tmp && rm -rf .config # 删除临时文件和配置文件之后按 准备编译阶段节内容操作。

编译成功

编译成功后会在/home/admi/openwrt/bin/targets/架构名文件夹(这里是armvirt)/64/下的openwrt-armvirt-64-default-rootfs.tar.gz 此压缩包就是编译出来的docker镜像包。

将tar.gz转为docker镜像

  • 使用的是恩山flippy(大佬)制作的一键脚本便于生成docker镜像点这下载make_opwrt_docker_img.tar.gz

    下载脚本后解压到指定文件夹,将前面编译出来的openwrt-armvirt-64-default-rootfs.tar.gz复制到放到脚本的同一文件夹内。

  • (此步可跳过但要知道创建默认的路径)右键选中build.sh用文本编辑器打开或vim修改生成docker镜像的build.sh脚本:

    TAG=latest # 版本号,默认是latest 根据喜好修改
    OUTDIR=/home/admi/docker_image # 本地docker镜像保存的目录可根据喜好修改路径,目录需提前创建 默认为/opt/imgs/docker。
    IMG_NAME=mymake/openwrt-aarch64 # 镜像名,可根据喜好修改,默认unifreq/openwrt-aarch64。

  • 生成docker镜像

    进入脚本根目录 输入:sudo bash build.sh tag # tag可空如空则为默认值latest,也可修改为其它如openwrt版本号R22.01

命令执行结束后会在前面指定的目录中/home/admi/docker_image生成一个.gz后缀的压缩包

  • 拷贝.gz压缩包至N1盒子

用winscp登录到N1盒子中将此压缩包拷贝至指定文件夹并进入此文件夹输入:
docker load --input 镜像文件名.gz
登录docker后台会查看到一个如下图的镜像:

  • 打开网卡混合模式并创建一个docker网络

    1.ssh 远程到N1 输入下面命令:

    ip link set eth0 promisc on # 打开网卡的混合模式

    docker network create -d macvlan --subnet=192.168.2.0/24 --gateway=192.168.2.1 -o parent=eth0 macnet # 网段根据自己主路由网段修改、macnet是网络名称可根据喜好修改。
    运行结束后会发现后台network栏中出现名为macnet的网络

    2.创建openwrt容器:

    输入:docker run --name openwrt --restart always -d --network macnet --privileged unifreq/openwrt-aarch64:R22 /sbin/init # openwrt 是名字可根据喜好修改、unifreq/openwrt-aarch64:R22 是所导入的镜像名一定要也要一致。

    3.修改openwr的网络地址(默认是192.168.1.1):

    输入:docker exec -it openwrt sh # 进入交互终端 再输入 vi /etc/config/network 按i开始编辑,编辑完成后按ESC退出编辑模式,然后输入:wq(别忘记冒号)回车保存,使得openwrt与主路由在同一网段。
    exit # 退出交互终端。
    docker restart openwrt # 重启openwrt容器

    重启结束之后就可在浏览器中输入修改后的IP地址即可。

    登录openwrt 账号 root 密码 password

LUCI 应用列表解释


LuCI ---> Applications ---> luci-app-accesscontrol  #访问时间控制
LuCI ---> Applications ---> luci-app-adblock   #ADB广告过滤
LuCI ---> Applications ---> luci-app-adbyby-plus  #广告屏蔽大师Plus +
LuCI ---> Applications ---> luci-app-adbyby   #广告过滤大师(已弃)
LuCI ---> Applications ---> luci-app-adkill   #广告过滤(已弃)
LuCI ---> Applications ---> luci-app-advanced-reboot  #Linksys高级重启
LuCI ---> Applications ---> luci-app-ahcp  #支持AHCPd
LuCI ---> Applications ---> luci-app-aliddns   #阿里DDNS客户端(已弃,集成至ddns)
LuCI ---> Applications ---> luci-app-amule  #aMule下载工具
LuCI ---> Applications ---> luci-app-aria2 # Aria2下载工具
LuCI ---> Applications ---> luci-app-arpbind  #IP/MAC绑定
LuCI ---> Applications ---> luci-app-asterisk  #支持Asterisk电话服务器
LuCI ---> Applications ---> luci-app-attendedsysupgrade  #固件更新升级相关
LuCI ---> Applications ---> luci-app-autoreboot  #支持计划重启
LuCI ---> Applications ---> luci-app-baidupcs-web  #百度网盘管理   *
LuCI ---> Applications ---> luci-app-bcp38  #BCP38网络入口过滤(不确定)
LuCI ---> Applications ---> luci-app-bird4   #Bird 4(未知)
LuCI ---> Applications ---> luci-app-bird6   #Bird 6(未知)
LuCI ---> Applications ---> luci-app-bmx6  #BMX6路由协议
LuCI ---> Applications ---> luci-app-bmx7  #BMX7路由协议
LuCI ---> Applications ---> luci-app-caldav  #联系人
LuCI ---> Applications ---> luci-app-cjdns  #加密IPV6网络相关
LuCI ---> Applications ---> luci-app-clamav  #ClamAV杀毒软件
LuCI ---> Applications ---> luci-app-commands   #Shell命令模块
LuCI ---> Applications ---> luci-app-cshark   #CloudShark捕获工具
LuCI ---> Applications ---> luci-app-ddns   #动态域名 DNS(集成阿里DDNS客户端)
LuCI ---> Applications ---> luci-app-diag-core   #core诊断工具
LuCI ---> Applications ---> luci-app-dnscrypt-proxy  #DNSCrypt解决DNS污染
LuCI ---> Applications ---> luci-app-dnsforwarder  #DNSForwarder防DNS污染
LuCI ---> Applications ---> luci-app-dnspod  #DNSPod
LuCI ---> Applications ---> luci-app-docker  #Docker容器    *
LuCI ---> Applications ---> luci-app-dump1090  #民航无线频率(不确定)
LuCI ---> Applications ---> luci-app-dynapoint  #DynaPoint(未知)
LuCI ---> Applications ---> luci-app-e2guardian   #Web内容过滤器
LuCI ---> Applications ---> luci-app-familycloud   #家庭云盘
LuCI ---> Applications ---> luci-app-filetransfer  #文件传输(可web安装ipk包)
LuCI ---> Applications ---> luci-app-firewall   #添加防火墙
LuCI ---> Applications ---> luci-app-flowoffload  #Turbo ACC网络加速(已弃,移至下面SFE)
LuCI ---> Applications ---> luci-app-freifunk-diagnostics   #freifunk组件 诊断(未知)
LuCI ---> Applications ---> luci-app-freifunk-policyrouting  #freifunk组件 策略路由(未知)
LuCI ---> Applications ---> luci-app-freifunk-widgets  #freifunk组件 索引(未知)
LuCI ---> Applications ---> luci-app-frpc   #内网穿透 Frp
LuCI ---> Applications ---> luci-app-fwknopd  #Firewall Knock Operator服务器
LuCI ---> Applications ---> luci-app-guest-wifi   #WiFi访客网络
LuCI ---> Applications ---> luci-app-gfwlist   #GFW域名列表(已弃)
LuCI ---> Applications ---> luci-app-haproxy-tcp   #HAProxy负载均衡-TCP
LuCI ---> Applications ---> luci-app-hd-idle  #硬盘休眠
LuCI ---> Applications ---> luci-app-hnet  #Homenet Status家庭网络控制协议
LuCI ---> Applications ---> luci-app-kodexplorer  #KOD可道云私人网盘
LuCI ---> Applications ---> luci-app-kooldns  #virtual**服务器 ddns替代方案(已弃)
LuCI ---> Applications ---> luci-app-koolproxy  #KP去广告(已弃)
LuCI ---> Applications ---> luci-app-lxc   #LXC容器管理
LuCI ---> Applications ---> luci-app-meshwizard #网络设置向导
LuCI ---> Applications ---> luci-app-minidlna   #完全兼容DLNA / UPnP-AV客户端的服务器软件
LuCI ---> Applications ---> luci-app-mjpg-streamer   #兼容Linux-UVC的摄像头程序
LuCI ---> Applications ---> luci-app-mmc-over-gpio   #添加SD卡操作界面(已弃)
LuCI ---> Applications ---> luci-app-multiwan   #多拨虚拟网卡(已弃)
LuCI ---> Applications ---> luci-app-mwan   #MWAN负载均衡
LuCI ---> Applications ---> luci-app-mwan3   #MWAN3分流助手
LuCI ---> Applications ---> luci-app-n2n_v2   #N2N内网穿透 N2N v2 virtual**服务
LuCI ---> Applications ---> luci-app-nft-qos  #QOS流控 Nftables版(已弃)
LuCI ---> Applications ---> luci-app-ngrokc  #Ngrok 内网穿透(已弃)
LuCI ---> Applications ---> luci-app-nlbwmon   #网络带宽监视器
LuCI ---> Applications ---> luci-app-noddos  #NodDOS Clients 阻止DDoS攻击
LuCI ---> Applications ---> luci-app-ntpc   #NTP时间同步服务器
LuCI ---> Applications ---> luci-app-ocserv  #OpenConnect virtual**服务
LuCI ---> Applications ---> luci-app-olsr  #OLSR配置和状态模块
LuCI ---> Applications ---> luci-app-olsr-services  #OLSR服务器
LuCI ---> Applications ---> luci-app-olsr-viz   #OLSR可视化
LuCI ---> Applications ---> luci-app-ocserv   #OpenConnect virtual**服务(已弃)
LuCI ---> Applications ---> luci-app-openvirtual**  #Openvirtual**客户端
LuCI ---> Applications ---> luci-app-openvirtual**-server  #易于使用的Openvirtual**服务器 Web-UI
LuCI ---> Applications ---> luci-app-oscam   #OSCAM服务器(已弃)
LuCI ---> Applications ---> luci-app-p910nd   #打印服务器模块
LuCI ---> Applications ---> luci-app-pagekitee   #Pagekite内网穿透客户端
LuCI ---> Applications ---> luci-app-polipo  #Polipo代理(是一个小型且快速的网页缓存代理)
LuCI ---> Applications ---> luci-app-pppoe-relay  #PPPoE NAT穿透 点对点协议(PPP)
LuCI ---> Applications ---> luci-app-p p t p-server  #virtual**服务器 p p t p 
LuCI ---> Applications ---> luci-app-privoxy  #Privoxy网络代理(带过滤无缓存)
LuCI ---> Applications ---> luci-app-qbittorrent  #BT下载工具(qBittorrent)
LuCI ---> Applications ---> luci-app-qos   #流量服务质量(QoS)流控
LuCI ---> Applications ---> luci-app-radicale   #CalDAV/CardDAV同步工具
LuCI ---> Applications ---> luci-app-ramfree  #释放内存
LuCI ---> Applications ---> luci-app-rp-pppoe-server  #Roaring Penguin PPPoE Server 服务器
LuCI ---> Applications ---> luci-app-samba   #网络共享(Samba)
LuCI ---> Applications ---> luci-app-samba4   #网络共享(Samba4)
LuCI ---> Applications ---> luci-app-sfe  #Turbo ACC网络加速(集成FLOW,BBR,NAT,DNS...   *
LuCI ---> Applications ---> luci-app-s-s   #SS兲朝上网(已弃)
LuCI ---> Applications ---> luci-app-s-s-libes  #SS-libev服务端
LuCI ---> Applications ---> luci-app-shairplay  #支持AirPlay功能
LuCI ---> Applications ---> luci-app-siitwizard  #SIIT配置向导  SIIT-Wizzard
LuCI ---> Applications ---> luci-app-simple-adblock  #简单的广告拦截
LuCI ---> Applications ---> luci-app-simple-softethervirtual**  #SoftEther virtual**服务器  NAT穿透(已弃)
LuCI ---> Applications ---> luci-app-splash  #Client-Splash是无线MESH网络的一个热点认证系统
LuCI ---> Applications ---> luci-app-sqm  #流量智能队列管理(QOS)
LuCI ---> Applications ---> luci-app-squid   #Squid代理服务器
-------------------------------------------------------------------------------------------
LuCI ---> Applications ---> luci-app-S-S R-plus   #S-S R兲朝上网Plus+
LuCI ---> Applications ---> luci-app-S-S R-plus ---> Include s-s New Versiong  #新SS代理
LuCI ---> Applications ---> luci-app-S-S R-plus ---> Include  微2瑞
LuCI ---> Applications ---> luci-app-S-S R-plus ---> Include Kcptun  #Kcptun代理
LuCI ---> Applications ---> luci-app-S-S R-plus ---> Include s-sR Server  #S-S R服务器
LuCI ---> Applications ---> luci-app-S-S R-plus ---> Include s-sR Socks and Tunnel  #S-S R代理
-------------------------------------------------------------------------------------------
LuCI ---> Applications ---> luci-app-S-S R-pro  #S-S R-Pro
LuCI ---> Applications ---> luci-app-S-S Rserver-python  #s-sR Python服务器
LuCI ---> Applications ---> luci-app-statistics  #流量监控工具
LuCI ---> Applications ---> luci-app-syncdial  #多拨虚拟网卡(原macvlan)
LuCI ---> Applications ---> luci-app-tinyproxy  #Tinyproxy是 HTTP(S)代理服务器
LuCI ---> Applications ---> luci-app-transmission   #BT下载工具
LuCI ---> Applications ---> luci-app-travelmate  #旅行路由器
LuCI ---> Applications ---> luci-app-ttyd   #网页终端命令行
LuCI ---> Applications ---> luci-app-udpxy  #udpxy做组播服务器
LuCI ---> Applications ---> luci-app-uhttpd  #uHTTPd Web服务器
LuCI ---> Applications ---> luci-app-unblockmusic  #解锁网易云灰色歌曲
LuCI ---> Applications ---> luci-app-unbound  #Unbound DNS解析器
LuCI ---> Applications ---> luci-app-upnp   #通用即插即用UPnP(端口自动转发)
LuCI ---> Applications ---> luci-app-usb-printer   #USB 打印服务器
LuCI ---> Applications ---> luci-app-微2瑞-server   #微2瑞 服务器
LuCI ---> Applications ---> luci-app-微2瑞-pro  #微2瑞透明代理(已弃,集成S-S R)
LuCI ---> Applications ---> luci-app-vlmcsd  #KMS服务器设置
LuCI ---> Applications ---> luci-app-vnstat   #vnStat网络监控(图表)
LuCI ---> Applications ---> luci-app-virtual**bypass  #virtual** BypassWebUI  绕过virtual**设置
LuCI ---> Applications ---> luci-app-vsftpd  #FTP服务器
LuCI ---> Applications ---> luci-app-watchcat  #断网检测功能与定时重启
LuCI ---> Applications ---> luci-app-webadmin  #Web管理页面设置
LuCI ---> Applications ---> luci-app-webshell  #网页命令行终端(已弃)
LuCI ---> Applications ---> luci-app-wifischedule  #WiFi 计划
LuCI ---> Applications ---> luci-app-wireguard  #virtual**服务器 WireGuard状态
LuCI ---> Applications ---> luci-app-wireless-regdb  #WiFi无线
LuCI ---> Applications ---> luci-app-wol   #WOL网络唤醒
LuCI ---> Applications ---> luci-app-wrtbwmon  #实时流量监测
LuCI ---> Applications ---> luci-app-xlnetacc  #迅雷快鸟
LuCI ---> Applications ---> luci-app-zerotier  #ZeroTier内网穿透

posted @ 2022-02-21 16:46  坚持的心态  阅读(4130)  评论(0编辑  收藏  举报