一、使用Ubuntu编译OpenWRT源码
第一步:安装基础软件
sudo apt-get install subversion g++ zlib1g-dev build-essential git python rsync man-db sudo apt-get install libncurses5-dev gawk gettext unzip file libssl-dev wget zip time
第二步:克隆代码
git clone https://git.openwrt.org/openwrt/openwrt.git/或者分支 https://github.com/lede-project/source.git cd openwrt ./scripts/feeds update -a // 更新最新的包 ./scripts/feeds install -a // 下载所有安装所有包 目录 package/feeds/# 使用feeds.conf.default 默认配置进行软件包的更新与安装 make defconfig // 检查编译工具是否全,生成.config文件 make menuconfig // 打开编译菜单
参考文档: https://openwrt.org/docs/guide-developer/feeds
在Openwrt系统中,“feed”是一系列的软件包,这些软件包需要通过一个统一的接口地址进行访问。
“feed”软件包中的软件包可能分布在远程服务器上、在svn上、在本地文件系统中或者其他的地方,
用户可以通过一种支持feed机制的协议,通过同一个地址进行访问。
第三步:配置
第四步:编译
make V=99 // V = verbose 全部都显示
对于特定组件进行clean
make target/linux/clean V=s
make package/luci/clean
makefile来定义需要下载哪些文件与打上补丁。
代码结构如下
scripts - Perl脚本管理OpenWRT包的安装与卸载
简言之,编译过程如下:
手动编译过程如下
1. make tools/install
2. make toolchain/install
3. make target/compile
4. make package/cleanup
7. make package/preconfig
8. make target/install
9. make package/index
单独编译软件包
make menuconfig
Subtarget - Little Endian
Target Profile - Default
ubuntu:~/openwrt/bin/targets/malta/le$ ls -l total 272708 -rw-r--r-- 1 ubuntu ubuntu 329 Sep 10 13:39 config.seed -rw-r--r-- 1 ubuntu ubuntu 1959 Sep 10 13:59 openwrt-malta-le-default.manifest -rw-r--r-- 1 ubuntu ubuntu 268435456 Sep 10 13:59 openwrt-malta-le-root.ext4 -rw-r--r-- 1 ubuntu ubuntu 2727322 Sep 10 13:59 openwrt-malta-le-uImage-gzip -rw-r--r-- 1 ubuntu ubuntu 1940771 Sep 10 13:59 openwrt-malta-le-uImage-lzma -rwxr-xr-x 1 ubuntu ubuntu 6125260 Sep 10 13:59 openwrt-malta-le-vmlinux.elf drwxr-xr-x 2 ubuntu ubuntu 4096 Sep 10 13:59 packages -rw-r--r-- 1 ubuntu ubuntu 556 Sep 10 14:00 sha256sums ubuntu:~/openwrt/bin/targets/malta/le$
sudo apt-get install qemu-kvm qemu virt-manager virt-viewer libvirt-bin
sudo qemu-system-mipsel -M malta -hda openwrt-malta-le-root.ext4 -kernel openwrt-malta-le-vmlinux.elf -nographic -append "root=/dev/sda console=tty50"