1.简介
OpenWrt是一个基于Linux的开源嵌入式操作系统,专门用于路由器和其他嵌入式设备。它提供了一个灵活的平台,允许用户自定义和控制他们的网络设备。具有以下的特性:
- 开放源代码: OpenWrt是一个完全开源的项目,由全球各地的开发者社区维护和支持。这意味着用户可以自由查看、修改和分发OpenWrt的源代码,以满足自己的需求。
- 灵活的配置: OpenWrt提供了一个强大的配置界面,允许用户对路由器进行高度个性化的定制。用户可以选择安装和配置各种软件包和功能,如网络代理、VPN服务、防火墙规则等。
- 轻量级和高效性能: OpenWrt被设计为轻量级和高效的操作系统,适用于资源有限的嵌入式设备。它采用了精简的内核和最小化的系统组件,以提供更快的启动时间和更高的性能。
- 软件包管理: OpenWrt使用自己的软件包管理系统,称为Opkg。用户可以使用Opkg来浏览、安装和升级各种软件包,从而扩展和增强他们的路由器功能。
2.代码下载编译
1,环境配置
安装相应依赖工具
sudo apt-get update
sudo apt-get install build-essential libncurses5-dev gawk git subversion gettext unzip file python
2,代码下载
#下载代码
git clone https://git.openwrt.org/openwrt/openwrt.git
cd openwrt
#添加第三方feeds源
#找到文件 lede/feeds.conf.default
vim lede/feeds.conf.default
src-git kenzok https://github.com/kenzok8/openwrt-packages
src-git small https://github.com/kenzok8/small
#把上面的两段复制进去保存,然后执行下面
./scripts/feeds update -a
./scripts/feeds install -a
下载完成之后,源码在openwrt目录。
3,代码编译
1,配置menuconfig
配置需要编译的架构,选择对应开发板的架构ARM/MIPS。
cd openwrt
make menuconfig
以下x86为例:
第一步,如下图第1步,进入选项,选择x86架构;
第二步,在qemu运行中会用到,这可以一起设置一下,如上图,进入箭头2选项,去掉GZip images,如下图,该步骤会将生成内核的img文件单独显示出来。
如果出现如下报错,按照下面执行,否则忽略,跳转到第二步(该部分用于升级gcc/g++,Python的版本)
Build dependency: Please install the GNU C Compiler (gcc) 8 or later
Build dependency: Please reinstall the GNU C Compiler (8 or later) - it appears to be broken
Build dependency: Please install the GNU C++ Compiler (g++) 8 or later
Build dependency: Please reinstall the GNU C++ Compiler (8 or later) - it appears to be broken
Build dependency: Please install Python >= 3.7
Build dependency: Please install Python >= 3.7
Build dependency: Please install the Python3 distutils module
Build dependency: Please install the Python3 stdlib module
创建一个脚本
vim install_dependencies.sh
复制以下代码到install_dependencies.sh中。
#!/bin/bash
# 安装依赖包
sudo apt update
sudo apt install build-essential -y
sudo apt install python3 python3-distutils python3-stdlib -y
# 检查gcc版本
gcc_version=$(gcc -dumpversion)
if [[ $(bc <<< "$gcc_version >= 8") -eq 0 ]]; then
sudo apt install gcc-8 g++-8 -y
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-8 100
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-8 100
fi
# 检查Python版本
python_version=$(python3 -c 'import sys; print(sys.version_info[0]*10+sys.version_info[1])')
if [[ $python_version -lt 37 ]]; then
sudo apt install python3.7 -y
sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.7 1
fi
echo "依赖安装完成。"
chmod +x install_dependencies.sh
./install_dependencies.sh
2,整体编译make
make -jn V=s # n需要修改为数字,实际值为编译时使用内核数,以ubuntu实际内核数为准,V=s显示编译日志
3,重新编译
重新配置新架构或其他设置
rm -rf ./tmp && rm -rf .config
make menuconfig
make -jn # n需要修改为数字,实际值为编译时使用内核数,以ubuntu实际内核数为准
3.总结
记录代码下载和编译方法。