花了一天,终于编译好了小米路由器的openwrt,过程真是一波三折。。。值得一讲。

硬件准备

老高之前很天真的想用搬瓦工的VPS编译,没想到真是的图样图森破。

当时想的是搬瓦工vps的下载速度很快,能够缩短编译时间,事实证明,确实下载很快。

第一个坑

但遇到的第一个坑当然是内存不足,无法编译。

无奈,于是打开virtualbox,创建了一个centos6.6系统。

内存1G,硬盘8G,快速安装

软件准备

既然是centos,那么安装软件的工具当然是yum,如果对速度不满意,可以参考Centos源设置将源服务器设为国内的阿里或者163,这样速度能快一些。

其他系统可以参考官方的文档

# 国内网速你懂的
yum update -y
yum groupinstall "development tools" -y
yum install zlib zlib-devel bzip2-devel pcre-devel openssl openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel -y

下载源代码

git clone git://git.openwrt.org/openwrt.git

编译

cd openwrt/

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

make menuconfig

# 穿墙你懂的
pushd package
git clone https://github.com/aa65535/openwrt-dist-luci.git
popd

make menuconfig

# 由于是mac没敢开多线程,如果是台式机,推荐使用-j参数
make V=99

# 编译期间可能会遇到某些源代码无法下载,这个不算是坑,可以自己手动下载,并复制到`openwrt/dl`文件夹里,然后继续编译即可。
# 接下来就是等待编译过程完毕了!

教程貌似结束了?


不过问题来了

当然不会完,期间老高遇到的问题无数,考验人的耐力和体力啊!

第二个坑

当程序运行到某处报错

i686-linux-gnu-g++: internal compiler error: Killed (program cc1plus)

通过重现发现此时MEM占用99%,瞬间懂了,原来是内存给少了,1G+500SWAP都不够。。。

解决办法:

# 关机
init 0
#然后在虚拟机设置处将内存调整至2G

第三个坑

空间不足,8G也不够。。。真是小看openwrt了。

我的解决办法是在上一块虚拟硬盘,通过扩展LVM容量解决的。

盗一个图先

LVM关系图

# 第一步,关机,上一个新的同规格硬盘,容量8G,开机
# 查看是否安装成功
ll /dev/sd*
# 此时应该多一个/dev/sdb
fdisk /dev/sdb
# 现在进入交互模式,输入m可以打开帮助
# 输入n,然后一路回车,就把sdb创建了一整个分区sdb1
# 输入q退出

# 下面开始增加容量

# 在sdb1上创建新的物理卷(Physical Volume,PV)
pvcreate /dev/sdb1

# 如果需要把整个磁盘直接创建为物理卷可以使用 pvcreate /dev/sdb
# 查看物理卷
pvdisplay
--- Physical volume ---
PV Name /dev/sda2
VG Name VolGroup
PV Size 7.51 GiB / not usable 3.00 MiB
Allocatable yes (but full)
PE Size 4.00 MiB
Total PE 1922
Free PE 0
Allocated PE 1922
PV UUID 6QpO6a-Xg0D-bbnu-znPR-EyLf-J4AD-PFna1y

--- Physical volume ---
PV Name /dev/sdb1
VG Name VolGroup
PV Size 8.00 GiB / not usable 4.38 MiB
Allocatable yes (but full)
PE Size 4.00 MiB
Total PE 2046
Free PE 0
Allocated PE 2046
PV UUID q0uMIR-Sqy6-0djq-wJ2g-V1zN-TdoV-Nk9wAY

# 查看卷组(Volume Group,VG)
vgdisplay
--- Volume group ---
VG Name VolGroup
System ID
Format lvm2
Metadata Areas 2
Metadata Sequence No 5
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 2
Open LV 2
Max PV 0
Cur PV 2
Act PV 2
VG Size 7.4 GiB
PE Size 4.00 MiB
Total PE 3968
Alloc PE / Size 3968 / 15.50 GiB
Free PE / Size 0 / 0
VG UUID PlIpGQ-gBtF-RpQp-fzFh-9jao-JyDY-hfxVDl
# 现在将VG扩容,注意VG Name
vgextend VolGroup /dev/sdb1

# get
# Volume group "VolGroup" successfully extended

# 下面开始'分区'
查看逻辑卷(Logical Volume,LV)
lvdisplay
--- Logical volume ---
LV Path /dev/VolGroup/lv_root
LV Name lv_root
VG Name VolGroup
LV UUID FbWpkT-WAz3-bmXI-3j06-kdYh-1dvt-ZbwKmH
LV Write Access read/write
LV Creation host, time localhost.localdomain, 2015-04-28 09:48:44 +0800
LV Status available
open 1
LV Size 7.4 GiB
Current LE 3764
Segments 2
Allocation inherit
Read ahead sectors auto
/- currently set to 256
Block device 253:0

--- Logical volume ---
LV Path /dev/VolGroup/lv_swap
LV Name lv_swap
VG Name VolGroup
LV UUID 0o4wmo-lj1r-xRTe-zSvd-Bpo7-wLI7-9kX1gf
LV Write Access read/write
LV Creation host, time localhost.localdomain, 2015-04-28 09:48:45 +0800
LV Status available
open 1
LV Size 816.00 MiB
Current LE 204
Segments 1
Allocation inherit
Read ahead sectors auto
/- currently set to 256
Block device 253:1

# 继续查看挂载,可以发现 /dev/mapper/VolGroup-lv_root 被挂载到根目录
df -h

#/dev/mapper/VolGroup-lv_root 7.4G   7.4G  0G  100% /

# 开始扩充
lvextend /dev/VolGroup/lv_root /dev/sdb1

# Logical volume lv_root successfully resized

# 增加了逻辑卷的容量以后,就需要修改文件系统大小以实现利用扩充的空间
resize2fs /dev/VolGroup/lv_root

至此扩容完成,可以继续愉快的编译了。

编译成果

总结

硬件:虚拟机2G内存 >=16G硬盘(编译完还有3.4G剩余)
系统:centos6.6
其他:耐心

第一次运行会下载很多软件在dl目录,下次编译的时候就快了

标签: router, xiaomi, openwrt

已有 19 条评论

  1. ppip ppip

    路过。

  2. earth.diqiu earth.diqiu

    怎样刷进去呢,我用广泛传播的潘多拉版刷机方法刷进去就红

  3. lc lc

    刚入手小米mini一台,你的怎么样,openwrt在小米上稳定不

    1. 求稳定请勿刷openwrt,那就是折腾用的。

  4. 比尔 比尔

    我也是在VPS上编译的,不过是1G内存和20G硬盘,不过现在的openwrt没有Pandora稳定,速度也没Pandora快。

    1. 恩,官方的稳定

    2. 好久不刷了,尽量不要挑新的

    3. 土豆 土豆

      刷了最新的稳定版openwrt 没有5g 找教程装上了也能用 但还是嫌太纯净了 东西好少 自己又不会折腾 比小米的少了些组件 就刷回小米自带的了

    4. 土豆 土豆

      现在刷什么固件最稳定 又好用啊

    5. 恩,貌似人家的驱动比较厉害

  5. Jerry Jerry

    http://downloads.openwrt.org/snapshots/trunk/ramips/mt7620/ 请问这里的是还需要编译还是直接可以刷?为什么只有3M呢?

    1. Jerry Jerry

      那么刷这个然后自己装SS和ChinaDNS也可以吧?Pandorabox翻墙我怎么每次用一段时间就不稳定了,也不是服务器的问题,就是连不上!

    2. 这个是最新的,潘多拉是基于14.xx的

    3. Jerry Jerry

      Breed里面刷的,目前还比较稳定

    4. Jerry Jerry

      https://downloads.openwrt.org/chaos_calmer/15.05/ramips/mt7620/ 还有这里也有个小米的OpenWRT,请问两个的区别是什么呢?

    5. leejon leejon

      15.05的我刷上以后无线重启,你的不会这样?是mtd刷的还是在beed里面刷?

    6. 那就是机器的问题了,你懂的

    7. Jerry Jerry

      昨晚花了几个小时终于把原版15.05折腾好了,没有自带应用,反正用得上的也不多。目前稳定运行,但wifi信号很差,有没有办法解决?

    8. 是编译后的bin,可以刷,但是功能很少。pandorabox帮你整合了一堆软件,所以比较大

  6. leejon leejon

    怎么搜遍网络都没有介绍说配置界面那里该怎么设置的啊?

添加新评论