编译lede版openwrt
注意,【不要】用【root用户】编译。
你需要创建一个其他账户,然后创建一个目录,给这个账户权限,进入这个目录后,开始按照教程编译。
创建新用户,看这里
https://www.jianshu.com/p/f5a2f7a08a76
如果编译?进入lede大佬的仓库,里面有简单教程,
https://github.com/coolsnowwolf/lede
下面我写了更详细的教程。
首次编译
更新源和包
sudo apt update -y
sudo apt full-upgrade -y
安装依赖项
sudo apt install -y ack antlr3 asciidoc autoconf automake autopoint binutils bison build-essential \
bzip2 ccache cmake cpio curl device-tree-compiler fastjar flex gawk gettext gcc-multilib g++-multilib \
git gperf haveged help2man intltool libc6-dev-i386 libelf-dev libglib2.0-dev libgmp3-dev libltdl-dev \
libmpc-dev libmpfr-dev libncurses5-dev libncursesw5-dev libreadline-dev libssl-dev libtool lrzsz \
mkisofs msmtp nano ninja-build p7zip p7zip-full patch pkgconf python2.7 python3 python3-pip qemu-utils \
rsync scons squashfs-tools subversion swig texinfo uglifyjs upx-ucl unzip vim wget xmlto xxd zlib1g-dev
下载源代码
git clone https://github.com/coolsnowwolf/lede
cd lede
开启 $科学世界
vim ./feeds.conf.default
#找到helloworld这行注释掉,如果没有则自己添加
src-git helloworld https://github.com/fw876/helloworld
更新 feeds 并选择配置
./scripts/feeds update -a
./scripts/feeds install -a
#开始配置
make menuconfig
我是R6100,根据硬件选好target system / subtarget / target profile。
image.png
后面就是选好要编译进去的包,不要选太多,超过路由flash大小就不好了。
Luci里面选好Applications包和主题
image.png
注意:=r plus会增大2-4m
Extra packages选择自动挂载硬盘
image.png
Network里面选好transmission的包
image.png
其他的一般支持一般都默认配置好的,不用特别配置,想要扩展更多,具体看下图
ps:不要选太多,超过路由flash大小就不好了。
image.png
下载 dl 库,编译固件 (-j 后面是线程数,第一次编译推荐用单线程)
make download -j8
#这条命令编译要耗时几小时
make V=s -j1
#可以用这条命令后台编译,不用担心中断
nohup make V=s -j1 > make.log & tail -f make.log
小知识:nohup可以让命令在后台运行,即使退出 shell 后也能保持进程运行。它通过阻止进程接收SIGHUP(信号挂起)信号来实现这一点,该信号通常在进程退出终端时发送到进程
编译完成后在
/lede/bin/targets/ath79/nand/ 下面生成有编译好的固件包
factory.img适用于从原厂系统刷到openwrt,
sysupgrade.tar则是从openwrt刷到另一个版本openwrt
这这里编译生成的具体包名是:
#升级包(openwrt升级用)
openwrt-ath79-nand-netgear_r6100-squashfs-sysupgrade.tar
#刷机包(原厂固件刷机用)
openwrt-ath79-nand-netgear_r6100-squashfs-factory.img
ps:openwrt v21版本,不能在低于v20的老版本直接升级,需要刷到原厂固件,然后用刷factory.img
错误1:如果生成的是initramfs-kernel或rootfs,没有sysupgrade/factory ,
因为你编译出来的固件大小超过了设定的大小。设定的大小一般为设备出厂默认的闪存flash大小,r6100是25m
二次编译
二次编译就很快了,只需要修改
a.同版本openwrt
变更配置(有两种方式:重新配置/修改配置),然后直接编译,
【完全清空配置再编译】先删除.config文件和tmp,因为如果直接menuconfig,你减去的包他不会删除,只会新增包。
rm -rf ./tmp && rm -rf .config
make menuconfig
make V=s -j$(nproc)
【修改上次配置再编译】你也可以不删除.config文件,menuconfig完成后,手动编辑config文件,删除不要的包,再删除tmp
rm -rf ./tmp
vim .config
make menuconfig
make V=s -j$(nproc)
b.不同版本openwrt
拉取新版本代码,然后使用之前的配置,直接编译
cd lede
git pull
./scripts/feeds update -a
./scripts/feeds install -a
make defconfig
make download -j8
make V=s -j$(nproc)
脚底按摩:砭石按摩刺激脚底反射区|c#中的PictureBox如何显示图片?