如何从零开始编译OpenWRT(LEDE)固件【Lean大源码】

1.编译环境,我是使用了深度Deepin 15.7系统(64位版),也可以使用Ubuntu16.04 LTS 64位版

2.按CTRL+ALT+T进入终端,更新软件列表,下载安装更新。
(注意:仅使用非root账户操作,用root用户编译会出错。)

sudo apt-get update
sudo apt-get upgrade

3.安装基础环境:

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

4.下载源代码,建立工作目录,进入工作目录。
使用

git clone https://github.com/coolsnowwolf/lede

 命令下载好源代码,
然后输入 cd lede 进入工作目录lede

 

5.更新软件包 (feeds都是一些插件)

./scripts/feeds update -a
./scripts/feeds install -a

6.测试编译环境:

make defconfig

7.配置固件菜单:

make menuconfig

选择Soc、机型,<*>,表示将软件包编译进固件,,表示软件包会被编译,但不会编译进固件。

添选择选择CPU型号、路由器型号,<*>,表示将软件包编译进固件,,表示软件包会被编译,但不会编译进固件。
此处以斐讯K2 PSG1218为例:
Target System --> MediaTek Ralik MIPS
Subtarget --> MT7620 based boards
Target Images --> Phicomm PSG1218

添加luci网页界面
LuCI --> Collections -->luci

添加简体中文
LuCI --> Modules --> Translations -->Chinese(zh-cn)

添加网页界面主题
LuCI --> Themes -->luci-theme-openwrt (喜欢哪个主题就选择那个主题)

设置完毕,保存,最后选择Exit。

8.预先下载dl库,可以避免下载造成的编译失败。

make download V=s

9.文件下载完毕,开始编译固件。

make V=99 -j2

# -j参数设定全速编译 (-j参数可能会导致系统卡死,不建议老爷机使用)
----编译进行----
再次等待很长时间,第一次时间较长。

10.生成的bin文件路径:bin/targets/系列名/

11.编译好的固件名格式为 lede-xxxx-generic-xxx-squashfs-sysupgrade.bin 将bin文件复制到U盘或者电脑桌面,在breed下刷入固件,浏览器登录192.168.1.1,LEDE的管理界面。

12. 如果再次编译,需要先删除 build_dir 目录下的设置文件。或者执行命令 make clean

 


以下是个性化设置:

x86编译要点
1. 编译所有文件系统支持,包括ext2/ext3/ext4,还有NTFS,甚至是LVM;
2. 加入一个文本编辑器,例如vim或者nano,因为日常使用中需要用文本编辑器修改各种配置文件;
3. 加入所有关于无线网卡的驱动,模块,各种支持程序;
4. 一些其他常见应用--蓝牙、加密、PGP、SSL、SSH、virtual**、USB支持、3G上网卡;
5. 编译时要到网上下载相关源码,所以可以日后下载的包尽量不选择编译;
6. 编译好的文件在当前目录的bin文件夹下,如果是brcm-2.4,则 ls bin/brcm-2.4/ 就可以看到很多熟悉的文件了。
以上设置组件时只精简了此机型用不到的usb模块和IPv6支持,以腾出空间装中文和Material主题,其它未修改,所以第一次登录还是英文界面,需要手动选择中文。为了使用方便,可以在源码里修改默认的语言、主题、时区、主机名、IP地址、wifi等等。
         
修改默认语言主题:
修改 vim feeds/luci/modules/luci-base/root/etc/config/luci 文件

config core main
        option lang "zh_cn"
        option mediaurlbase /luci-static/material
        option resourcebase /luci-static/resources
               
config internal languages
        option zh_cn "普通话 (Chinese)"
               
config internal themes
        option Bootstrap "/luci-static/bootstrap"
        option Material "/luci-static/material"

修改主机名,设定时区,IP地址
修改位置:

vim package/base-files/files/bin/config_generate

generate_static_system() {
uci -q batch <<-EOF
delete system.@system[0]
add system system
set system.@system[-1].hostname='LEDE'
set system.@system[-1].timezone='CST-8'                      #东八区
set system.@system[-1].zonename='Asia/Shanghai'       #这句话要加上,不然还是UTC

lan) ipad=${ipaddr:-"192.168.1.1"} ;;       #修改默认IP

修改WIFI名称
修改位置:

vim package/kernel/mac80211/files/lib/wifi/mac80211.sh

set wireless.radio${devidx}.disabled=0          #改为0显示wifi

set wireless.default_radio${devidx}=wifi-iface
set wireless.default_radio${devidx}.device=radio${devidx}
set wireless.default_radio${devidx}.network=lan
set wireless.default_radio${devidx}.mode=ap
set wireless.default_radio${devidx}.ssid=LEDE               #wifi名称
set wireless.default_radio${devidx}.encryption=psk2   #wifi加密方式,没有是none
set wireless.default_radio${devidx}.key=password       #wifi密码

其它还有很多可以修改的地方,有兴趣可以自行研究。
如果之前编译过固件,build_dir里可能会有之前的设置,需要一起修改或者删除,新编译的固件才会更新设置。
如果make menuconfig的时候瞎搞,导致编译冲突,可以使用命令rm -f .config && rm -f .config.old 把配置还原到初始状态。

修改后的固件,登录界面已经是中文了,地区、WiFi等默认设置已经变成自定的。

SSH/TELNET显示信息修改方式:
修改文件

vim package/base-files/files/etc/banner

 

修改路由连接数

vim package/base-files/files/etc/sysctl.conf


net.netfilter.nf_conntrack_max=65535

Base system
取消选中dnsmasq
选中dnsmasq-full
因为dnsmasq-full支持ipset功能,对于基于域名的xx很有用。

Network->File Transfer中选中
curl
wget
【两个下载工具】

Network->IP Addresses and Names中选中
bind-dig
ddns-scripts_No-IP_com。(用来支持no-ip.com的ddns服务)
一个是测试工具;另一个是某个ddns支持,还有其他ddns支持,也可以酌情选中。

Network->Routing and Rediction中选中
ip-full
这个很关键。
Network中选中
iperf3
ipset
一个是测试工具;
另一个是ipset,用于支持基于域名的xx。

Network->Web Servers/Proxies选中那些SS,如果您需要使用SS的话。
Utilities->Editors中选
nano (也可以选vim)
Utilities->Shells中选中
bash
点击Save,保存为.config。
一路Exit退出。在输入make开始编译。

原文地址:https://www.right.com.cn/forum/thread-340269-1-1.html

点赞
  1. 众神之泪说道:
    Google Chrome Windows 10
    博主您好,我使用的是您编译的openwrt固件,固件版本OpenWrt_x64_旁路由版 by GXNAS build 2024.03.08 @ OpenWrt R24.2.2 / Lede - 18.06,我在更新软件包列表时,提示: Failed to download https://mirrors.cloud.tencent.com/lede/snapshots/packages/x86_64/qb/Packages.gz, wget returned 8.我查了一下https://mirrors.cloud.tencent.com/lede/snapshots/packages/x86_64/路径下确实没有qb目录,请问应该如何修改这个地址啊?谢谢您,另外,如果我想更新passwall版本,应该在github上下载哪个版本的ipk呢?小白一枚,麻烦您拨冗回复,谢谢!
    1. 博主说道:
      Google Chrome Windows 10
      1、去我网盘下载2024.03.22更新固件,或者等明天下载2024.03.29的固件更新,pass的版本就会变成最新版本。2、很明显,你写的https://mirrors.cloud.tencent.com/lede/snapshots/packages/x86_64/qb/Packages.gz这个路径是错的,直接在浏览器打开这个链接,显示404错误。
      1. 众神之泪说道:
        Google Chrome Android 10
        关于paswall了解了,谢谢您的解答。关于您说的404问题确实如此,那段地址是没有修改过的,也就是说刷入openwrt后,默认设置就是提供的这个地址,我现在想通过手动更改,但是我不知道这个openwrt_qb应该更换成什么地址,腾讯云里并没有关于qb的路径,很感谢您如此及时的反馈

发表回复