OpenWrt X86 编译教程

准备编译环境

这里我使用的KANSUNG工控电脑K4200UP6(Ubuntu编译openwrt镜像)和K500G6(安装openwrt)

ubuntu18.04.1.png

安装编译依赖库,重复包不会安装

sudo apt-get install build-essential asciidoc binutils bzip2 gawk gettext git subversion libssl-dev libncurses5-dev  patch unzip zlib1g-dev

如果是64位系统的话还需要安装32位兼容包(否则编译报错)

sudo apt-get install libc6:i386 libgcc1:i386 libstdc++5:i386 libstdc++6:i386

编译源代码

wopenwrt源:git clone https://github.com/openwrt/openwrt.git
下载后更新最新的包定义

./scripts/feeds update -a 
openwrt

安装所有的包

./scripts/feeds install -a
openwrt

feeds命令将安装扩展代码包编译选项,如果不运行该命令,在menuconfig配置将没有选择这些扩展包的选项

安装更新之后,输入 make defconfig ,这个命令会检查所需的编译工具是否齐全,并生成默认的编译配置文件".config"


openwrt

开始配置编译固件, 输入

make menuconfig

targetsystem选择x86,target img我保持默认,

添加LuCI web配置

LuCI > 1. Collections>luci

LuCI > 2. Modules > Translations-----------------------(zh-cn)

LuCI > 3. Applications>luci-app-uhttpd

其他功能看自己需要


openwrt

openwrt

添加EXT4硬盘格式支持,Kernel modules > Filesystem > kmod-fs-ext4

添加USB支持,如不添加可能会不响应键盘,Kernel modules > USB Support


x86 openwrt

下载所有已选择的软件代码压缩包(dl库),openwrt仅有编译及配置指令,各种依赖的代码包在上游网站及代码仓库里,编译会下载大量源代码

make download V=s 

根据下载速度和选择的软件包数量,大约要3小时以上,有条件的还是架个梯子比较好...

注意使用root编译会报错,可以在/etc/profile 最后添加export FORCE_UNSAFE_CONFIGURE=1,然后执行

source /etc/profile

V=s 可以输出编译过程中每一步的执行动作,出错后显示详细错误信息,-j2使用两个线程并行编译,第一次不要用多线程编译,不好排错

make V=s -j2

编译产生的中间文件会占用十几G,可以用make dirclean清除(会删除编译目录和编译工具目录)

ulimit -s 10240 这个命令是防止爆栈
make V=s -j线程数 速度比单线程快N倍

生成的文件在bin/x86/ 下


openwert

准备安装

接下来将镜像写入硬盘,我使用USB转MSATA,非常方便

找到要写入的盘,我的磁盘是/dev/sdb 然后使用dd命令将写好的硬盘安装到PC,启动电脑

dd if=openwrt-x86-generic-combined-ext4.img of=/dev/sdb
OPENWRT

问题解决

安装后,无法识别到网卡,这种情况应该是没有网卡驱动,只能找到对应的网卡驱动编译进内核了


ifconfig

make clean, 重新配置make menuconfig

经查找网卡使用的是Intel IG211-AT,走的是PCIE通道,这里要选用e1000e

Kernel modules > Network Devices将kmod-e1000e,kmod-igb驱动选中


kernel.png

在内核中添加无线网卡驱动

内核中的无线驱动找到RTL8821AE的驱动,正好有一块

Kernel modules > Wireless Drivers


rRTL8821AE

保存配置文件 因为之前已经编译过了,这次可以使用多线程,编译时间会快很多

make clean
make V=s -j4

重新编译OK,写入镜像后有线,无线网卡(RTL8821AE)均正常使用


i211at

rtl8821ae wifi

你可能感兴趣的:(OpenWrt X86 编译教程)