x86 openwrt编译备忘录

无需自己同步官方openwrt源码,采用Lean的openwrt源码是极好的,感谢Lean长久的坚持。
https://github.com/coolsnowwolf/lede
准备工作
注意
不要用 root 用户 git 和编译!!!
国内用户编译前最好准备好梯子
默认登陆IP 192.168.1.1, 密码 password
Ubuntu新建账户
需要准备一个干净的Ubuntu,不能用root账户,最好在国外。我用的是阿里云的香港轻量,ubuntu 18.04。
创建用户:vagrant为用户名
sudo useradd -m vagrant -d /home/vagrant -s /bin/bash
2、为创建的用户设置密码
sudo passwd vagrant
3、修改用户的权限:( /etc/sudoers文件只有r权限,在改动前需要增加w权限,改动后,再去掉w权限 )
(1)为sudoers增加写入权限
sudo chmod +w /etc/sudoers
sudo vim /etc/sudoers
(2)为用户XXX添加读写权限
# User privilege specification
root ALL=(ALL:ALL) ALL
vagrant ALL=(ALL:ALL) ALL // 这一行为新添加的代码
(3)将sudoers文件的操作权限改为只读模式
4、搞一台linux VPS最好是ubuntu系统的,你可以用自己的机器,但是第一次编译花费时间较长,不如注册个Linode,新用户会送一定的预存金额,可以借此开一台VPS,Linode是按时间付费,编译完就删掉VPS,下次想编译了就再开一台。强烈建议!
5、安装screen,这个软件可以让你的VPS在脱离SSH连接的情况下依旧可以后台运行,配合Linode的VPS,完全解放双手!
sudo apt-get install screen //安装screen
screen -S buildopenwrt //创建screen会话buildopenwrt
screen -r buildopenwrt //切换到buildopenwrt会话
screen -ls //列出存在的会话列表
在会话中exit表示退出并删除该会话
screen可以理解成一个虚拟的终端,在你关闭SSH时可以接替你的会话,不至于中断当前任务。
6、安装编译组件:
sudo apt-get -y 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 upx libelf-dev autoconf automake libtool autopoint device-tree-compiler
7、拉取源码:
git clone https://github.com/coolsnowwolf/lede 命令下载好源代码,然后 cd lede 进入目录
8、配置编译
./scripts/feeds update -a
./scripts/feeds install -a
make menuconfig
之后进入如下界面,这实际上是一个图形化的配置界面,用来控制编译,并不是编译的过程。

进入Target System和Subtarget勾选你需要编译的平台,我用的是X86,并且是64位的,所以你需要选择自助选择。

进入Target Images勾选你需要的固件格式等(img、vmdk等这里我保持默认,默认也够用了吧?)

进入LuCI–>Applications内选中你需要的插件


在这里有一些别的选项,比如一些VPN、aria2的web管理等等,根据需要自己进去研究。
勾选完需要的东西就可以退回第一个界面保存退出,保存按默认的文件名称(.config)保存即可,不需要修改。编译会根据.config的内容编译,想要恢复到初始配置删掉.config文件即可。
在编译的过程中,要下载一些组件什么的,如果你不翻墙,下载速度会非常慢,甚至下载不下来。也正因为这一点,更推荐国外的VPS,但是自己编译也不用太担心,Lean的源码实际已经替换掉下载链接,我在编译过程中没有发现因为无法下载源码导致编译失败的情况。
9、编译
保存后执行以下命令
make -j1 V=s //第一次编译非常的慢,要花上一两个小时
编译成功后在bin/targets/目录下面会有你要的目标平台的固件
10、二次编译
(二次编译是指下一次你编译别的固件的时候)
cd lede 进入LEDE目录
git pull 同步更新大雕源码
./scripts/feeds update -a && ./scripts/feeds install -a 更新FEEDS
rm -rf ./tmp && rm -rf .config 清除编译配置和缓存
make menuconfig 进入编译配置菜单
make -j1 V=s n=线程数+1,例如4线程的I5填-j5,开始编译
编译完成后固件输出在/lede/bin/targets
11、特别说明:
https://www.right.com.cn/forum/thread-344825-1-1.html
该链接比较详细的说明了Luci包含的各个插件详情!与Lean同步更新,值得研读一下!
即使编译了ssr-plus之后,你发现在菜单里依然没有选项。因为作者又一次调皮了,居然给隐藏了。
输入以下代码后可以看到
echo 0xDEADBEEF > /etc/config/google_fu_mode
Lean大大已经默认整合了Luci中文包
12、鸣谢:
本文是在 爱墨迹 小站基础上修改而成,引用了他的部分文字与图片,非常感谢!
https://imgki.com/archives/openwrt-lean.html
x86 openwrt编译备忘录的更多相关文章
- 【笔记】搭建OpenWrt编译环境
参考书目<B智能路由开发指南> 目标:搭建一个OpenWrt编译环境,可以同时在家里和公司使用. [2018-09-13] 刚开始想用自己的电脑共享远程桌面,但不知道什么原因搞不定,所以干 ...
- openwrt编译环境搭建
1,首先安装ubuntu系统,这里安装的是虚拟机 2,安装openwrt编译所需环境 apt-get install build-essential libncures5-dev gawk libs ...
- OpenWRT 编译 error GNU libiconv not in use but included iconv.h is from...
OpenWRT 编译 error GNU libiconv not in use but included iconv.h is from... 编译的时候碰到一个常见的错误,但是却在一个陌生的地方爆 ...
- < IOS > X-code 5.1 x86 - 64 编译问题
关于xcode 5.1 x86 - 64 编译问题 坐等了N久,终于IOS 7.1 发布了,作为一个果粉,忍不住第一时间升级了.结果用设备测试的时候,出问题了,一直检测不到设备,哈哈,纠结了半 ...
- OpenWrt编译
OpenWrt编译简单过程1,OpenWrt编译环境准备sudo apt-get install gcc g++ binutils patch bzip2 flex bison make autoco ...
- 轻松制作X86 OPENWRT USB启动盘
本文介绍了一个x86 live USBi启动盘的制作方法. 该方法有如下特点: 1. 可在winXP/win 7/win vista上制作, U盘采用fat格式, 即使对于linux经验较少者, 也 ...
- OpenWrt编译后生成的bin文件:jffs2与squashfs、factory与sysupgrade
OpenWrt编译后会生成多个bin文件,比如 openwrt-ar71xx-generic-tl-wr841nd-jffs2-factory.bin 8126464 openwrt-ar71xx-g ...
- OpenWrt编译到底脚本
在办公室编译OpenWrt,费时很久,原因有两个. 一是办公室网络环境比较糟糕,经常断线不说,很多技术网站间歇性的连不上,不是撞到404就是DNS解析失败等. 二是初次编译OpenWrt时需要从网上下 ...
- OpenWRT编译记录--TPLINK_WR841ND_V7
之前自己编译OpenWRT的一些记录,现在搬上来.简单介绍了编译环境的准备,编译过程,以及一些注意事项. 准备工作 本人是在Ubuntu环境下编辑的,首先安装编译所需要的组件包: sudo apt-g ...
随机推荐
- php面试笔记(5)-php基础知识-自定义函数及内部函数考点
本文是根据慕课网Jason老师的课程进行的PHP面试知识点总结和升华,如有侵权请联系我进行删除,email:guoyugygy@163.com 在面试中,考官往往喜欢基础扎实的面试者,而函数相关的考点 ...
- typeof和类型转换
编程形式 ① 面向过程 ② 面向对象 ③ Js既面向过程又面向对象 typeof(数据) 1)typeof(数据)返回该数据是什么类型的 2)写法: ① typeof(数据) ② typeof 数据 ...
- ElasticSearch集群-Windows
概述 ES集群是一个P2类型的分布式系统,除了集群状态管理以外,其他所有的请求都可以发送到集群内任意一台节点上,这个节点可以自己找到需要转发给哪些节点,并且直接跟这些节点通信.所以,从网络架构及服务配 ...
- Verilog HDL学习_1:分频器/PWM的实现
(一)参考学习资料 (二)实际操作 1. 相关变量计算: First Initial Second Initial Upper case H X ASCII (Dec) 72 88 Lengths ...
- clr via c# 泛型
1,类型对象,对于应用程序的各种类型创建的对象叫做类型对象:Type object:对于泛型类型参数的类型,CLR同样也会创建内部类型对象,适用于 引用类型 值类型 接口类型 委托类型 具有泛型类型参 ...
- udp socket 10054
udp socket 10054 在接收端没有启动的情况下 1.直接ReceiveFrom没问题. 2.如果先SendTo再ReceiveFrom,SendTo可以正常过,但是RecieveFrom会 ...
- PERC H310 配置详细步骤【阵列RAID创建】【阵列恢复】【阵列池创建】
机器配置: HP PRO6300 二手淘的201912,HP的主板芯片Intel Q75芯片组,集成显卡(集成显卡与H310阵列卡冲突),CPU Intel I5 3450 [raid5阵列创建] 1 ...
- 剑指offer-面试题59_2-队列的最大值-队列
/* 题目: 定义一个含max函数的队列类,并实现pop_front().push_back().max()函数. */ #include<iostream> #include<cs ...
- C# 如何获取日期时间各种方法
我们可以通过使用DataTime这个类来获取当前的时间.通过调用类中的各种方法我们可以获取不同的时间:如:日期(2019-01-09).时间(16:02:12).日期+时间(2019-01-09 16 ...
- Python之一、#!/usr/bin/python到底是什么意思
引用https://www.cnblogs.com/furuihua/p/11213486.html 关于脚本第一行的 #!/usr/bin/python 的解释,相信很多不熟悉 Linux 系统的同 ...