記自編譯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內網穿透


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM