官方openwrt固件wsl编译踩坑

编译

在使用wsl之前,都建议先将所有安全卫士例如火绒退出,因为wsl在运行的过程中产生的文件会被其扫描而占用大量算力,亦或导致一些奇怪的错误。以火绒为例,需要临时关闭病毒防护中的文件实时监控和恶意行为监控以及系统防护中的应用加固。

需要使用支持彩色化显示的SSH工具,例如mobaxterm、xshell

以Ubuntu/Debian为例,不建议使用centos

wsl的$PATH环境变量中与windows关联的部分可能会导致find报错。所以以/mnt开头的部分需要全部剔除。

find: The relative path 'Files/WindowsApps/TheDebianProject.DebianGNULinux_1.3.0.0_x64__76v4gfsz19hv4' is included in the PATH environment variable, which is insecure in combination with the -execdir action of find.  Please remove that entry from $PATH

先echo出来,然后把手动剔除过的重新export就好了。注意export只是临时变更,每次登录都要重新配置。永久化方法自行百度,且不建议这么做。

echo $PATH
export PATH=xxxxxx

安装依赖之前需要先更新列表和现有软件,一些旧的软件会使编译卡在奇怪的地方。

sudo apt-get update
sudo apt-get upgrade

安装依赖:

sudo apt-get install build-essential asciidoc binutils bzip2 gawk gettext git libncurses5-dev libz-dev patch unzip zlib1g-dev lib32gcc1 libc6-dev-i386 subversion flex uglifyjs git-core gcc-multilib p7zip p7zip-full msmtp libssl-dev texinfo libglib2.0-dev xmlto qemu-utils gcc python3 python perl libc-dev

确保网络ok(注意uwp的特殊代理机制)直到编译结束或者时间充足,

git clone https://github.com/openwrt/openwrt
cd openwrt
./scripts/feeds update  -a
./scripts/feeds install  -a

上述操作一定不要在/mnt/下进行,建议在/home/中进行。在mnt的windows文件系统下会因为大小写不敏感无法编译,虽然有解决方法但是操作繁琐易失败。

确保上述过程没有任何报错和警告,有的话建议解决完重新从clone开始

然后开始选配置和预装luci-app

make menuconfig

自行编译的好处就是,有很多后期无法使用opkg安装的luci-app也能安上。

如果使用的是root账户

export FORCE_UNSAFE_CONFIGURE=1

然后编译

make -j8 download
make -j1

其中-jx是使用x个线程进行编译(推荐设为核心数+1,比如一个八核16线程的CPU就-j9),只有加参数V=sV=sc(没有-)的时候,报错才会显示详细信息,否则只有个error。make和文档提示说看报错还要限制使用单核心编译,但是实际上我用多核心编的时候也一样看得到报错,而且单核心实在太慢了……

我八核心十六线程4Ghz吃满,首次编译耗时超过一小时,加了一些插件之后第二次编译耗时十分钟。首次编译时间长与编译工具链有关,固件架构不同耗时差异很大。

生成的固件在openwrt/bin/targets中。

第三方插件

一般把插件clone进openwrt/package文件夹后,重新make menuconfig就会在luci->application里出现,注意报错。

①smartDNS

②openwrtAPPfilter

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注