Difference between revisions of "How to Build OpenWrt/zh"
(updated by API) |
(updated by API) |
||
Line 3: | Line 3: | ||
==简介== | ==简介== | ||
− | + | OpenWrt是适合于嵌入式设备的一个Linux发行版,它不是一个单一、静态的固件,而是提供了一个可添加软件包的可写的文件系统。 | |
− | + | 这使用户可以自由的选择应用程序和配置,而不必受设备提供商的限制,并且可以使用一些适合某方面应用的软件包来定制你的设备。 | |
− | https://openwrt.org/ | + | 对于开发者来说,OpenWrt是一个框架,开发者不必麻烦地构建整个固件就能得到想要的应用程序;对于用户来说,这意味着完全定制的能力,与以往不同的方式使用设备,OPKG包含超过3500个软件。 |
− | + | 更详细的介绍请参考[https://openwrt.org/ OpenWrt官网]。 | |
本Wiki页面的主要用于介绍如何为FriendlyElec发行的开发板编译OpenWrt,并不涉及太多对OpenWrt的定制和研究。<br> | 本Wiki页面的主要用于介绍如何为FriendlyElec发行的开发板编译OpenWrt,并不涉及太多对OpenWrt的定制和研究。<br> | ||
− | OpenWrt是由开源组织维护的开源项目,其官网上已经有丰富的用户文档和开发者文档,如果您需要对OpenWrt进行定制开发,请自行查看OpenWrt官方提供的文档 | + | OpenWrt是由开源组织维护的开源项目,其官网上已经有丰富的用户文档和开发者文档,如果您需要对OpenWrt进行定制开发,请自行查看OpenWrt官方提供的文档[https://openwrt.org/docs/start openwrt doc]。 |
− | + | ||
− | https://openwrt.org/docs/start | + | |
− | + | ||
− | == | + | ==H3 平台== |
FriendlyElec编译的OpenWrt基于OpenWrt-18.06.1版本,使用的仓库和分支如下: | FriendlyElec编译的OpenWrt基于OpenWrt-18.06.1版本,使用的仓库和分支如下: | ||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
$ git clone https://github.com/friendlyarm/openwrt -b master-v18.06.1 | $ git clone https://github.com/friendlyarm/openwrt -b master-v18.06.1 | ||
</syntaxhighlight> | </syntaxhighlight> | ||
− | 虽然该版本的OpenWrt目前仅支持为两款FriendlyElec H3开发板(NanoPi NEO / NanoPi M1 Plus)制作系统映像,但是由于FriendlyElec H3开发板都比较兼容和类似,所以我们完全可以基于NanoPi M1 Plus的config,为其他FriendlyElec | + | 虽然该版本的OpenWrt目前仅支持为两款FriendlyElec H3开发板(NanoPi NEO / NanoPi M1 Plus)制作系统映像,但是由于FriendlyElec H3开发板都比较兼容和类似,所以我们完全可以基于NanoPi M1 Plus的config,为其他FriendlyElec H3开发板制作OpenWrt系统映像。 |
+ | 下面将以NanoPi M1 Plus为例,描述如何编译制作OpenWrt系统映像。<br> | ||
− | + | 在开始编译制作OpenWrt系统映像前,请务必先阅读OpenWrt官方编写的编译文档[https://openwrt.org/docs/guide-developer/build-system/use-buildsystem openwrt buildsystem],下面将不再赘述每一步编译操作的作用。<br> | |
− | + | ||
− | https://openwrt.org/docs/guide-developer/build-system/use-buildsystem | + | |
− | < | + | |
首先,OpenWrt必须切换到普通用户才能正常编译,假设你的PC机的普通用户为fa,执行下列命令切换为该普通用户: | 首先,OpenWrt必须切换到普通用户才能正常编译,假设你的PC机的普通用户为fa,执行下列命令切换为该普通用户: | ||
Line 32: | Line 27: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
− | + | 由于OpenWrt编译前需要下载大量的软件包,为了避免网络不稳定的问题,可以使用FriendlyElec预先下载好软件包目录: | |
+ | [https://pan.baidu.com/s/1dKiZ-E2LSpFIMf7kUsuGXw OpenWrt prebuilt] | ||
+ | |||
+ | 在普通用户的环境下,执行下列命令为FriendlyElec H3开发板(NanoPi NEO / NanoPi M1 Plus)编译并制作OpenWrt系统映像: | ||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
$ cd /home/fa/openwrt/friendlyelec | $ cd /home/fa/openwrt/friendlyelec | ||
− | $ ./build.sh | + | $ ./build.sh nanopi-h3 |
</syntaxhighlight> | </syntaxhighlight> | ||
编译完成后,会生成下列文件: | 编译完成后,会生成下列文件: | ||
Line 52: | Line 50: | ||
1 directory, 7 files | 1 directory, 7 files | ||
</syntaxhighlight> | </syntaxhighlight> | ||
− | 其中,openwrt-18.06.1-sunxi-cortexa7-sun8i-h3-nanopi-m1-plus-ext4-sdcard.img. | + | 其中,openwrt-18.06.1-sunxi-cortexa7-sun8i-h3-nanopi-m1-plus-ext4-sdcard.img.gz就可以用于烧写到SD卡中运行。<br><br> |
需要注意的是,OpenWrt作为一个一体化的嵌入式系统制作方案,它集成了编译U-boot、Linux Kernel、rootfs制作、软件包管理的功能。<br> | 需要注意的是,OpenWrt作为一个一体化的嵌入式系统制作方案,它集成了编译U-boot、Linux Kernel、rootfs制作、软件包管理的功能。<br> |
Revision as of 07:18, 10 January 2019
English
此页面目前仍处于编辑状态中,请稍后查看...
1 简介
OpenWrt是适合于嵌入式设备的一个Linux发行版,它不是一个单一、静态的固件,而是提供了一个可添加软件包的可写的文件系统。 这使用户可以自由的选择应用程序和配置,而不必受设备提供商的限制,并且可以使用一些适合某方面应用的软件包来定制你的设备。 对于开发者来说,OpenWrt是一个框架,开发者不必麻烦地构建整个固件就能得到想要的应用程序;对于用户来说,这意味着完全定制的能力,与以往不同的方式使用设备,OPKG包含超过3500个软件。 更详细的介绍请参考OpenWrt官网。
本Wiki页面的主要用于介绍如何为FriendlyElec发行的开发板编译OpenWrt,并不涉及太多对OpenWrt的定制和研究。
OpenWrt是由开源组织维护的开源项目,其官网上已经有丰富的用户文档和开发者文档,如果您需要对OpenWrt进行定制开发,请自行查看OpenWrt官方提供的文档openwrt doc。
2 H3 平台
FriendlyElec编译的OpenWrt基于OpenWrt-18.06.1版本,使用的仓库和分支如下:
$ git clone https://github.com/friendlyarm/openwrt -b master-v18.06.1
虽然该版本的OpenWrt目前仅支持为两款FriendlyElec H3开发板(NanoPi NEO / NanoPi M1 Plus)制作系统映像,但是由于FriendlyElec H3开发板都比较兼容和类似,所以我们完全可以基于NanoPi M1 Plus的config,为其他FriendlyElec H3开发板制作OpenWrt系统映像。
下面将以NanoPi M1 Plus为例,描述如何编译制作OpenWrt系统映像。
在开始编译制作OpenWrt系统映像前,请务必先阅读OpenWrt官方编写的编译文档openwrt buildsystem,下面将不再赘述每一步编译操作的作用。
首先,OpenWrt必须切换到普通用户才能正常编译,假设你的PC机的普通用户为fa,执行下列命令切换为该普通用户:
$ su fa
由于OpenWrt编译前需要下载大量的软件包,为了避免网络不稳定的问题,可以使用FriendlyElec预先下载好软件包目录: OpenWrt prebuilt
在普通用户的环境下,执行下列命令为FriendlyElec H3开发板(NanoPi NEO / NanoPi M1 Plus)编译并制作OpenWrt系统映像:
$ cd /home/fa/openwrt/friendlyelec $ ./build.sh nanopi-h3
编译完成后,会生成下列文件:
$ tree bin/targets/sunxi/cortexa7/ -L 1 bin/targets/sunxi/cortexa7/ ├── config.seed ├── openwrt-18.06.1-sunxi-cortexa7-device-sun8i-h3-nanopi-m1-plus.manifest ├── openwrt-18.06.1-sunxi-cortexa7-sun8i-h3-nanopi-m1-plus-ext4-sdcard.img.gz ├── openwrt-18.06.1-sunxi-cortexa7-sun8i-h3-nanopi-m1-plus-squashfs-sdcard.img.gz ├── openwrt-imagebuilder-18.06.1-sunxi-cortexa7.Linux-x86_64.tar.xz ├── openwrt-sdk-18.06.1-sunxi-cortexa7_gcc-7.3.0_musl_eabi.Linux-x86_64.tar.xz ├── packages └── sha256sums 1 directory, 7 files
其中,openwrt-18.06.1-sunxi-cortexa7-sun8i-h3-nanopi-m1-plus-ext4-sdcard.img.gz就可以用于烧写到SD卡中运行。
需要注意的是,OpenWrt作为一个一体化的嵌入式系统制作方案,它集成了编译U-boot、Linux Kernel、rootfs制作、软件包管理的功能。
本WiKi编写时,对于FriendlyElec H3系列的开发板,OpenWrt官方目前使用的U-boot和Linux源码均为开源社区维护的u-boot-2018.03和Linux-主线版本,而非FriendlyElec维护的版本。
具体地,Uboot源码的下载地址和解压路径如下:
/home/fa/openwrt/build_dir/host/u-boot-2018.03
而Linux源码的的下载地址和解压路径如下:
./build_dir/target-arm_cortex-a7+neon-vfpv4_musl_eabi/linux-sunxi_cortexa7/linux-4.14.90/
如果您想改用FriendlyElec官方维护的Uboot和Linux内核, 可以参考Building U-boot and Linux for H5/H3/H2+自行编译FriendlyElec的Uboot和和Linux内核, 然后参考How to make your own SD-bootable ROM制作出新的系统映像, FriendlyElec提供的nanopi-r1_sd_openwrt_4.14_armhf_YYYYMMDD.img.zip就是通过这种方法制作出来的。