最近在捣鼓一台旧的路由器,由于一直靠在论坛用别人自己编译的固件,且各个固件都有所好处,所以决定自己编译一个最合适自己的固件
首先是准备工作
sudo apt-get update
sudo apt-get install -y git-core build-essential libssl-dev libncurses5-dev unzip
sudo apt-get install -y subversion mercurial
sudo apt-get install -y gcc g++ binutils patch bzip2 flex bison make autoconf gettext texinfo unzip sharutils subversion libncurses5-dev ncurses-term zlib1g-dev
sudo apt-get install -y gawk asciidoc libz-dev libssl-dev time
Debian的vps可能需要新建一下用户
引用一下zouyongjin的教程
文中的humou均改成自己想要的用户名
在root权限下操作
useradd -g echo echo
passwd echo
visudo
在这里找到root ALL=(ALL:ALL) ALL 下面添加一行
echo ALL=(ALL:ALL) ALL
这是接下来操作的注意事项:
1. 请使用一个非root用户来完成这些工作!
2. 这里的所有命令都在OpenWrt编译系统的根目录下运行(例如~/openwrt/trunk/)
3. 编译系统的绝对路径中不能含有空格!
4. 如果你使用root用户下载了源码,请把你下载来的源码的所有者更改为一个非root用户。(sudo chown -R user:user /openwrt/)
1.接下来是获取Openwrt源码
git clone https://git.openwrt.org/openwrt/openwrt.git
或者https://github.com/openwrt/openwrt.git
等待代码下载。结束后,目录下会出现openwrt文件夹
2.进入openwrt目录,执行
./scripts/feeds update -a
./scripts/feeds install -a
3.配置编译选项:
make menuconfig
用方向键、空格(选择,出现M代表编译但不编译到固件,*号(按y也有)表示编译进固件)、按两下esc返回等操作来配置选项,本人的路由器是newifi mini,配置如下(大部分为针对我需求的选项):
Target System --> MediaTek Ralink MIPS
Subtarget --> MT7620 based boards
Target Profile --> Lenovo Y1
Package the OpenWrt-based Toolchain
Base system --> block-mount
libstdcpp
Kernel moudules --> Filesytems --> kmod-fs-ext4
kmod-fs-ntfs
kmod-fs-vfat(可要可不要)
Native Language Support ---> kmod-nls-utf8
USB Support ---> kmod-usb-ohci ##默认已选 old usb1.0
kmod-usb-storage
kmod-usb-storage-extras
kmod-usb-uhci ## usb1.1
kmod-usb2
Libraries --> SSL --> libopenssl
libffmpeg-mini(这是FFmpeg,不需要的可以不安装)
libxml2
LuCI --> Collections --> luci
Modules --> Translations -->Chinese
Applications --> luci-app-adblock (这里都是自己需要的插件的luci,自己选择需要哪些)
luci-app-hd-idle
luci-app-ntpc
luci-app-samba4
luci-app-transmission
luci-app-uhttpd
luci-app-upnp
Theme --> luci-theme-material
Network --> BitTorrent --> transmission-daemon-openssl
transmission-remote-openssl
transmission-web
Downloas Manager --> ariang
webui-aria2
yaaw
File Transfer --> curl
vsftpd
Time Synchronization --> ntpclient
Utilities —> Filesystem —> <*> badblocks
ntfs-3g
Utilities ---> disc ---> <*> fdisk
Utilities ---> <*> usbutils
最后save并按两次esc
4.编译
make V=s -j8
输出为
Signing package index...
make[2]: Leaving directory '/home/echo/openwrt'
export MAKEFLAGS= ;make -w -r checksum
make[2]: Entering directory '/home/echo/openwrt'
make[2]: Leaving directory '/home/echo/openwrt'
make[1]: Leaving directory '/home/echo/openwrt'
这时可在~/openwrt/bin/targets/ramips/mt7620中找到固件openwrt-ramips-mt7620-y1-squashfs-sysupgrade.bin
错误总结:
在编译过程中会碰到各种奇怪的错误,不过通常都是因为没有安装好编译所需的工具,例如gawk等等,希望这篇文章能帮各位解决一小部分问题
感谢GoldMoon所写的教程,帮我解决初期的大部分问题,他的文章地址点击打开链接