嵌入式技术分享

Embedded Technology Sharing

制作支持2.4G和5G无线的N1 OpenWRT镜像

《制作支持2.4G和5G无线的N1 OpenWRT镜像》

配套视频教程
【视频教程】制作支持无线的N1 OpenWRT镜像

支持无线的固件下载
链接:https://www.maxlicheng.com/openwrt/216.html

天线安装过程视频
给斐讯N1盒子加装外置天线

【以下教程笔记】
编译支持斐讯N1盒子的OpenWRT固件
Target System (Broadcom BCM27xx) —>
Subtarget (BCM2710 64 bit based boards) —>
Target Profile (Raspberry Pi 3B/3B+) —>

新建一个文件夹
mkdir works

通过文件传输软件(FileZilla)上传 Armbian和博主本人的355M镜像到新建的works文件夹
Armbian_5.60_Aml-s9xxx_Debian_stretch_default_4.18.7_20180922.img (1.33G)
2019.05.26-openwrt-on-phicomm-n1-bycheng.img (355M)

进入新建的文件夹,并再建一个openwrt文件夹
cd works
mkdir openwrt

拷贝树莓派镜像到works目录
cp /home/cheng/openwrt/lede/bin/targets/brcm2708/bcm2710/openwrt-brcm2708-bcm2710-rpi-3-ext4-factory.img.gz openwrt-brcm2708-bcm2710-rpi-3-ext4-factory.img.gz

解压树莓派镜像
gunzip openwrt-brcm2708-bcm2710-rpi-3-ext4-factory.img.gz

挂载树莓派镜像到系统,提示输入密码,完成后出现/dev/loop0,则挂载成功
(注意:show前面是两条英文的一杠)
sudo losetup -P -f –show openwrt-brcm2708-bcm2710-rpi-3-ext4-factory.img

挂载镜像分区到文件夹
sudo mount /dev/loop0p2 /media

拷贝所有文件到新建的openwrt文件夹
sudo mv /media/* openwrt

取消文件夹及镜像挂载
sudo umount /media
sudo losetup -d /dev/loop0

删除树莓派镜像
sudo rm openwrt-brcm2708-bcm2710-rpi-3-ext4-factory.img

挂载Armbian镜像,提示输入密码,完成后出现/dev/loop0,则挂载成功
为了避免每次制作都要上传Armbian,我们复制一份再挂载
cp Armbian_5.60_Aml-s9xxx_Debian_stretch_default_4.18.7_20180922.img Armbian_test.img
(注意:show前面是两条英文的一杠)
sudo losetup -P -f –show Armbian_test.img

挂载到 /media 文件夹
sudo mount /dev/loop0p2 /media

删除openwrt文件夹中的相关文件夹及文件
sudo rm -rf openwrt/lib/firmware/
sudo rm -rf openwrt/lib/modules/

复制Armbian的文件到openwrt文件夹
sudo mv /media/lib/modules/ openwrt/lib/
sudo mv /media/lib/firmware/ openwrt/lib/
sudo mv /media/etc/modprobe.d/ openwrt/etc/
sudo mv /media/etc/fstab openwrt/etc/

进入到openwrt的4.18.7-aml-s9xxx文件夹
cd openwrt/lib/modules/4.18.7-aml-s9xxx

建立一个.ko后缀驱动文件拷贝脚本
sudo vi link-ko.sh

文本内容

for x in `find -name *.ko`
do
    ln -s $x .
done

设置脚本权限
sudo chmod +x link-ko.sh

执行脚本
sudo ./link-ko.sh

返回works目录
cd /home/cheng/works

设置boot进程所占资源大小
sudo vi openwrt/etc/init.d/boot

在第38行插入(:set nu)
ulimit -n 51200

添加开启wifi的文件
将制作好的启动文件放到OpenWRT对应的文件夹
(注,启动文件千万不要转存到windows系统,否则文件的格式和权限会被windows修改,而导致无线开启失败,别问我为什么知道,问就爆炸,心累)
git clone https://github.com/maxlicheng/phicomm-n1-wireless.git
sudo mv phicomm-n1-wireless/wireless_enable openwrt/etc/modules.d/wireless_enable
sudo rm -rf phicomm-n1-wireless

取消Armbian的挂载
sudo umount /media
sudo losetup -d /dev/loop0

删除使用后的Armbian镜像
sudo rm Armbian_test.img

挂载355M openwrt镜像及分区
(注意:show前面是两条英文的一杠)
sudo losetup -P -f 2019.05.26-openwrt-on-phicomm-n1-bycheng.img
sudo mount /dev/loop0p2 /media

删除openwrt镜像的所有文件
sudo rm -rf /media/*

将openwrt中的所有文件移动到media文件夹
sudo mv openwrt/* /media/

同步刷新一下
sync

卸载挂载的镜像
sudo umount /media
sudo losetup -d /dev/loop0

此时的openwrt镜像文件即为我们制作好的OpenWRT镜像
2019.05.26-openwrt-on-phicomm-n1-bycheng.img

通过文件传输软件,下载到我们的宿主机即可

如果你觉得教程不错的话,可以通过点击下方的打赏按钮来支持博主。

 

 

如果文章对您有帮助,欢迎移至上方按钮打赏博主;

点赞
  1. 雨魅说道:

    博主,用你制作好的img,把firmware,modules,modprobe.d,fstab复制到新编译的rootfs下相对应的文件夹下,然后再挂载复制回你的img,这样就制作成新的img了吧?

    1. cheng说道:

      是的,按教程来就可以了。

      1. 雨魅说道:

        博主,用你制作好的N1 img合成,.ko后缀驱动文件脚本那几步是不是能不用操作?

        1. cheng说道:

          你自己研究哦,我怕我自己弄糊涂,所以我是重新来的。

  2. Alams说道:

    sudo losetup -P -f --show openwrt-brcm2708-bcm2710-rpi-3-ext4-factory.img
    losetup: invalid option -- 'P'

    ubuntu 1404和1606都报了找不到这个参数,这个要怎么解决呢。我是在PVE下安装的虚拟机。

    1. cheng说道:

      是show,前面的两条杠,你换成英文的没?- - show,没有空格,你手动输试试。

      1. Alams说道:

        Ubuntu 里没有 -P 这个参数,我在debian里找到了这个参数。

        我把 -P 这个参数去掉就能正常挂载,我试下后面的会不会出问题。

          1. Alams说道:

            没有加 -P 这个参数,没有出现/dev/loop0p2这个设备,你用的是什么系统呢。ubuntu 16.04 server吗?

          2. cheng说道:

            ubuntu 16.04,设备是/dev/loop0, /dev/loop0p2是镜像的其中一个分区来的。

          3. Alams说道:

            2019.05.26-openwrt-on-phicomm-n1-bycheng.img 这个文件是怎么来的呢,是可以自己编译出来的吗。那个分区的问题我在1604上已经挂载成功了。

          4. cheng说道:

            Armbian修改而成的,你看一下视频教程吧。

        1. kent说道:

          ubuntu 14是没有这个P参数,到16版本才能用

  3. wdcew说道:

    很不错的文章,谢谢楼主

  4. kent说道:

    将openwrt中的所有文件移动到media文件夹
    sudo mv openwrt/* /media/
    在这一步提示设备没有空间了,我看了下openwrt有500多兆呢,要如何可以解决?

    1. cheng说道:

      那就只能用armbian ,别用355m的镜像

  5. kent说道:

    可否提供一份你使用的.config给我,我不清楚选了些什么导致镜像那么大,用armbian的镜像,启动有问题,日志里面一堆问题,看不懂。armbian是否只能用你提到的版本,我使用的是5.77,谢谢

      1. kent说道:

        可以给个Armbian_5.60_Aml-s9xxx_Debian_stretch_default_4.18.7_20180922.img的下载链接吗?作者网站没有这个了

        1. cheng说道:

          看6月6号的文章

  6. kent说道:

    另外,FLOW 加速状态 未运行,FULLCONE NAT加速 未运行,刷了你的5.26的固件,这2个启动不起来呢?你的n1可以吗?

    1. cheng说道:

      硬件关系,这个N1不能正常使用的。

  7. kent说道:

    抱歉,您没有权限在该版块回帖. :persevering: 我不能在恩山回帖。

    1. cheng说道:

      需要就注册一个呗。不过我觉得没必要,问题不在openwrt,而在你的Armbian。

  8. 湍清说道:

    楼主你好,我使用armvirt编译,勾选3455,按照你的方法开启wifi,ifconfig可以看到wlan0,luci显示”无线未开启或未关联“,但是能扫描到wifi,请问这种情况如何解决??

    1. cheng说道:

      你对比一下正常的和不正常的两个wireless文件(/etc/config),或者直接将正常的wireless文件上传到/etc/config文件夹试试。

  9. Brian说道:

    为什么V2ray 不能运行

    1. cheng说道:

      嗯,不能用的,可能是这v2ray在windows上转存过,文件权限被windows修改了,导致运行不起来。你到/etc/init.d/中,给v2ray一个可执行权限,看看能不能跑起来。目前只能这样,等我有空再编译新版本。

      1. brian说道:

        请问命令怎么写 :lol:

        1. cheng说道:

          不好用啊,我花了好长一段时间才发现v2ray会影响其他功能,我的固件以后都不会加这个了。权限的命令就chmod +x v2ray_pro,名称要自己核对一下。

  10. summer说道:

    感谢楼主,固件链接挂了,求补发

    1. cheng说道:

      看新的博客文章。

      1. sias说道:

        楼主你好,我也遇到楼上的问题,照着你的视频编译的n1固件,只要重启n1就会出现无线不可用的情况,显示未启用或未关联,需要手动改信道才可用。。我对比了你的固件和我自己编译固件的wireless文件,两者是一样的,同时把你固件的wireless上传到我的固件里面,还是同样的问题,麻烦分析下问题在哪里。感谢楼主的付出

        1. cheng说道:

          评论发一下就好了,首次发评论要审核。通过了就直接可以显示了。

          1. sias说道:

            收到,我以为没评论上。不好意思

  11. sias说道:

    楼主你好,我也遇到楼上的问题,照着你的视频编译的n1固件,只要重启n1就会出现无线不可用的情况,显示未启用或未关联,需要手动改信道才可用。。我对比了你的固件和我自己编译固件的wireless文件,两者是一样的,同时把你固件的wireless上传到我的固件里面,还是同样的问题,麻烦分析下问题在哪里。感谢楼主的付出

    1. cheng说道:

      自己制作固件的话尽量少加入其他插件,我遇到过插件问题引起的一些功能异常。wireless就尽量不要转存到Windows系统。你可以去我恩山帖子上下载我的配置文件编译试试。具体什么原因导致无线重启无法正常启动这个也没有结论,大家一起排查一下。

      1. sias说道:

        我之前是用debian编译的,现在我用ubuntu编译,走到sudo mount /dev/loop0p2 /media,提示mount: special device /dev/loop0p2 does not exist,这个是什么问题,谷歌不到。。

        1. cheng说道:

          镜像没挂载,重新挂载镜像试试。

          1. sias说道:

            又挂载了一次,已经显示
            /dev/loop1,走下一步还是提示mount: special device /dev/loop0p2 does not exist

          2. cheng说道:

            。。。这时候就应该换成 loop1p2 了。

          3. sias说道:

            还是那个提示,一样的

          4. cheng说道:

            挂的是哪个镜像?先把之前的镜像都卸载掉。
            sudo umount /media
            sudo losetup -d /dev/loop0
            sudo losetup -d /dev/loop1
            在执行挂载
            sudo losetup -P -f --show openwrt-brcm2708-bcm2710-rpi-3-ext4-factory.img
            完成后查看一下这个镜像有多少个分区。
            sudo fdisk -l /dev/loop0

  12. sias说道:

    这是完整提示
    Disk /dev/loop0: 119 MB, 119537664 bytes
    255 heads, 63 sectors/track, 14 cylinders, total 233472 sectors
    Units = sectors of 1 * 512 = 512 bytes
    Sector size (logical/physical): 512 bytes / 512 bytes
    I/O size (minimum/optimal): 512 bytes / 512 bytes
    Disk identifier: 0x5452574f

    Device Boot Start End Blocks Id System
    /dev/loop0p1 * 8192 40959 16384 c W95 FAT32 (LBA)
    /dev/loop0p2 49152 233471 92160 83 Linux

    1. cheng说道:

      sudo mount /dev/loop0p2 /media

  13. sias说道:

    执行sudo losetup -P -f --show openwrt-brcm2708-bcm2710-rpi-3-ext4-factory.img报错,提示没有-p ,去掉-p就可以执行挂载了。。提示/dev/loop0

    1. cheng说道:


      sudo mount /dev/loop0p2 /media

      1. sias说道:

        执行sudo mount /dev/loop0p2 /media 报错,提示不存在

        1. cheng说道:

          那就不清楚了,正常都是可以挂载的。

          1. sias说道:

            好的,多谢。。

          2. sias说道:

            昨晚问题已找到所在,无法挂载和无法执行-p是因为ubuntu版本的问题,14极其以下的会有这个问题,我用的就是14.04.6,换了16没问题了,但是无线断电重启就不管用的问题还存在,只能通过手动更改信道解决,已放弃治疗。看看其他大神吧

  14. N1的问题说道:

    编译出来的固件都.img.gz的,是不是一定要按你的方法处理才能用?我不需要WIFI

    1. cheng说道:

      需不需wifi都是这样子制作,只是少了git clone wireless_enable这个步骤。需要就git clone,不需要就不用git。

      1. N1的问题说道:

        好的,明白了,明天继续弄 :rolleyes:

  15. 想自己编译个n1固件说道:

    想问下,怎么制作自己定制的n1固件呢,想自己编译一个,但是貌似并没有在openwrt找到相关的信息。

    1. cheng说道:

      看本文说的视频教程,根据笔记步骤来就可以了。

  16. N1的问题说道:

    大佬,我重新编译了9.61的源码,但是制作成N1固件后,还是9.51的,请问这是什么问题?

    1. cheng说道:

      制作的固件运行后显示的是armbian 的版本号?或者新的没运行起来?你检查一下。

      1. N1的问题说道:

        armbian是4.18,L大不是更新了源码吗,修复了一个漏洞,我重新编译了,然后制作成N1固件,别的地方的改动都生效了,就是这个版本号没变

        1. cheng说道:

          。。。git pull了嘛?

          1. N1的问题说道:

            做了的,不知道是什么原因

          2. N1的问题说道:

            我制作固件的时候,原始的IMG文件是用上次生成好的,没有重新导入你提供的,这个应该是没有影响的吧

          3. cheng说道:

            不确定,反正我没这样操作过,我都是重新来的。

          4. N1的问题说道:

            我试试重新导入你的固件来制作

          5. N1的问题说道:

            还是不行,版本号还是9.51,大佬有时间的话看看怎么解决,谢谢了

          6. N1的问题说道:

            我试试重新导入你的固件来制作,还是不行,版本号还是9.51,大佬有时间的话看看怎么解决,谢谢了

  17. 蒋曦说道:

    按照博主的方法编译了N1的openwrt固件,刷好以后,作为旁路由的时候,有线连接可以科学上网,但是连接N1 wifi的时候不能科学上网,求解,谢谢了!

    1. cheng说道:

      在防火墙规则中加这语句试试:ptables -t nat -I POSTROUTING -j MASQUERADE

  18. joh说道:

    树莓派镜像openwrt-brcm2708-bcm2710-rpi-3-ext4-factory.img.gz 这个没有放出来。我自己在网上找了一个 openwrt-18.06.4-brcm2708-bcm2710-rpi-3-ext4-factory.img.gz 。按教程整出来了。但2019.05.26-openwrt-on-phicomm-n1-bycheng.img里边的主题、软件都不见了~~能不能将05.28的镜像上传到onedrive?直接提供下载吧~!~ 谢谢了~~ 支持up主~~

    1. cheng说道:

      用5.26版本就可以了。目前OneDrive上的就是。

  19. Kang说道:

    最新的L大的openwrt源码,Target Profile 里面只有 Default 一个选项,没有 Raspberry Pi 3B/3B+。请问怎么配置呢?

    1. cheng说道:

      用qemu也可以,不一定要树莓派。

  20. xiaobai_tutu说道:

    你好楼主,我使用armvirt编译,勾选了43455,编译好后按你的方法制作固件移植进了wireless_enable文件,openwrt里ifconfig可以看到wlan0,luci面板了找不到无线的选项,请问是编译前漏了勾选什么选项吗,还是需要什么额外的操作?

  21. yz50505说道:

    您好,楼主。问一下如何usb的剩余空间。
    找不到fdisk,使用opkg update && opkg install fdisk安装,提示But that file is already provided by package * libuuid。
    谢谢。

发表评论

电子邮件地址不会被公开。 必填项已用*标注