基于ubuntu 18.04(实际测试在14.04也可以),本文在原作者上稍作修改,更容易看懂。
原作者URL:https://www.haiyun.me/archives/1287.html
1、安装依赖:
apt install build-essential libncurses5-dev zlib1g-dev gawk git libssl-dev wget unzip python ocaml-nox help2man texinfo yui-compressor
2、下载最新版本18.10的ImageBuilder:
地址:https://downloads.pangubox.com/pandorabox/18.10/targets/ralink/mt7621/PandoraBox-ImageBuilder-ralink-mt7621.Linux-x86_64.tar.xz
解压:
tar Jxf PandoraBox-ImageBuilder-ralink-mt7621.Linux-x86_64.tar.xz
cd PandoraBox-ImageBuilder-ralink-mt7621.Linux-x86_64
3、查看可编译的固件型号及其包含的软件包:
make info
4、制作固件命令:
命令:make image
#仅制作k2p固件
命令:make image PROFILE="k2p"
#安装额外的软件包,自编译软件先把软件放到packages/目录下
命令:make image PROFILE="k2p" PACKAGES="wget"
#添加files目录内文件到固件内,如files/etc/config/network网络配置文件
命令:make image PROFILE="k2p" FILES="files"
#查看更多选项
make help
默认的软件包在以下两个文件内:
include/target.mk
.profiles.mk
5、开始填坑:
make
image PROFILE=``"k2p"
遇到以下错误:
regexp could be something like 'pkgname*' '*file*' or similar
e.g. opkg info 'libstd*' or opkg search '*libop*' or opkg remove 'libncur*'
Makefile:140: recipe for target 'package_install' failed
make[2]: *** [package_install] Error 1
make[2]: Leaving directory '/tmp/PandoraBox-ImageBuilder-ralink-mt7621.Linux-x86_64'
Makefile:110: recipe for target '_call_image' failed
make[1]: *** [_call_image] Error 2
make[1]: Leaving directory '/tmp/PandoraBox-ImageBuilder-ralink-mt7621.Linux-x86_64'
Makefile:196: recipe for target 'image' failed
make: *** [image] Error 2
因为在Makerfile 144行要预先安装kernel文件,而package没kernel软件包,下载kernel:
wget https:``//downloads``.pangubox.com``/pandorabox/18``.10``/targets/ralink/mt7621/packages/kernel_3``.14.79-1_mipsel_1004kc_dsp.ipk -P packages/
再次执行又出现错误:
Collected errors:
* opkg_install_cmd: Cannot install package dosfsck.
* opkg_install_cmd: Cannot install package fkmod-leds-gpio.
* opkg_install_cmd: Cannot install package kmod-ipt-nathelper.
* opkg_install_cmd: Cannot install package mkdosfs.
* satisfy_dependencies_for: Cannot satisfy the following dependencies for ralink-utils:
* kmod-ipt-nathelper-extra *
Makefile:140: recipe for target 'package_install' failed
make[2]: *** [package_install] Error 255
make[2]: Leaving directory '/tmp/PandoraBox-ImageBuilder-ralink-mt7621.Linux-x86_64'
Makefile:110: recipe for target '_call_image' failed
make[1]: *** [_call_image] Error 2
make[1]: Leaving directory '/tmp/PandoraBox-ImageBuilder-ralink-mt7621.Linux-x86_64'
Makefile:196: recipe for target 'image' failed
make: *** [image] Error 2
因为新版的openwrt将kmod-ipt-nathelper-extra 更改为kmod-nf-nathelper-extra,而潘多拉的源package没修改依赖,使用以下脚本在制作时更新源后修改软件依赖项kmod-ipt-nathelper-extra为kmod-nf-nathelper-extra:
#!/bin/bash
for
file
in
````lsdl
/18
.10*;``do
echo
$``file``;
mv
$``file
$``file``.gz
gunzip $``file``.gz
sed
-i
's/kmod-ipt-nathelper-extra/kmod-nf-nathelper-extra/g'
$``file
gzip
-9 $``file
mv
$``file``.gz $``file
done
sed
-i
's/kmod-ipt-nathelper/kmod-nf-nathelper/g'
include``/target``.mk
将以上保存为fix.sh到编译目录加可执行权限,并修改Makefile文件在122行$(MAKE) package_install前插入:
$(TOPDIR)/fix.sh
再次执行又遇到以下错误:
Collected errors:
* opkg_install_cmd: Cannot install package dosfsck.
* opkg_install_cmd: Cannot install package fkmod-leds-gpio.
* opkg_install_cmd: Cannot install package mkdosfs.
因为上面这3个软件有的改名,有的名字写错,修复下:
sed
-i
's/fkmod-leds-gpio/kmod-leds-gpio/g'
.profiles.mk
sed
-i
's/mkdosfs dosfsck/dosfstools/g'
.profiles.mk
再次执行终于制作完成k2p固件,将制作的固件scp到路由/tmp/目录开始刷机:
scp
bin``/targets/ralink/mt7621/PandoraBox-ralink-mt7621-k2p-2018-10-26-git-85c67caa2-squashfs-sysupgrade``.bin 192.168.168.1:``/tmp/
k2p路由内使用sysupgrade命令刷机:
sysupgrade -n -v /tmp/PandoraBox-ralink-mt7621-k2p-2018-10-26-git-85c67caa2-squashfs-sysupgrade.bin
网友评论