关于如何编译openwrt 固件,网上会有很多教程,本文存在的意义就是为使用谷歌云的朋友提供一个简明参考流程。

使用谷歌云编译openwrt 固件的意义:

  1. 机器配置高,网速快,没有网络环境的限制;
  2. 若是初次接触,本地安装虚拟机本身就有不低的硬件门槛和一定的经验,实践过程中需要解决的问题会更多,花费时间则更长,而谷歌云则可以在两分钟内配置好环境。

在谷歌云中开一台虚拟机实例,试用服务最高选8核,系统选择Ubuntu 14.04 LTS。(在这里我偏向于选择英国地区的机器)

我对所有机器都会选上允许HTTP/HTTPS 流量

SSH 连接虚拟机

命令行输入 sudo apt-get update 后回车,然后输入
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 python python2.7 perl imagemagick subversion git gcc g++ binutils autoconf automake libtool-bin make bzip2 libncurses5-dev libreadline-dev zlib1g-dev flex bison patch texinfo tofrodos gettext pkg-config realpath libstring-crc32-perl gawk libusb-dev unzip intltool libacl1-dev libcap-dev libc6-dev libglib2.0-dev unzip wget curl zip libssl-dev

后回车。

输入

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

回车

然后

cd lede

./scripts/feeds update -a

./scripts/feeds install -a

make menuconfig

在Target System 中选择你的设备,如我的设备是K3。默认开局就是X64
如果你是为路由器编译固件,建议选上automount 和autosamba, 如K3 便可自动挂载USB硬盘,如果需要IPv6,则选上ipv6helper
这里选择预装的应用,图示为最重要的一个(如果已经选择autosamba, 那么这一步请不要选择samba4, 会有冲突)
最后记得保存配置,不需要更改名称

最后选好你要的路由,输入

make -j1 V=s

(我会直接使用make -j8 V=s, 因为这样使用到了八线程,对我来说最快,暂时没碰到问题)

不到半个小时即可编译成功,编译过程中不要断开SSH。若断开,请清除整个lede 文件夹重新开始
谷歌云SSH自带下载文件工具,善用”ls”和”cd”命令即可找到目标固件的绝对路径

cd ~/lede/bin/targets

利用ls 命令显示文件夹,利用cd 命令进入文件夹,使用pwd 命令显示当前文件夹的绝对路径

默认用户名:root 密码:password

奉上两行神秘代码,用途及用法请自行谷歌:

git checkout 2915c44a11ca0ee40b51ff5d9c18a0da1951e170

echo 0xDEADBEEF > /etc/config/google_fu_mode

如有其他问题,请留言,我会帮助你。

参考:

  • https://github.com/coolsnowwolf/lede
  • OpenWrt 编译 LuCI -> Applications 添加插件应用说明-L大 https://www.right.com.cn/forum/thread-344825-1-1.html

10 Comments

  1. 你好,我编译完到最后一步下载文件时一直提示“没有此文件”,是因为我的“完全限定文件路径:”没填对吗?希望能得到你的指导。

    Lymann
    1. 你好👋
      如果你在目录里可以看到那个文件的话,就几乎可以确定是因为你的“完全限定文件路径”没有填对啦。你可以cd 到“/home” 然后自己一步一步去寻找那个文件,输入路径的时候可以在记事本里多确认几次再copy 过去~
      其实也可以用xshell 和xftp 直接ssh 连接,我习惯这样连接谷歌云VM 的CentOS 系统,Ubuntu 应该也不难实现。

      adamdad
    2. 用root 和密码ssh 连接的方法:
      sudo -i
      vim /etc/ssh/sshd_config
      如果不会使用vim, 可以搜索一下,很简单
      将”PermitRootLogin” 后面改为yes
      将”PasswordAuthentication” 后面改为yes
      保存
      sudo service ssh restart
      sudo passwd root
      改成你想要的密码,然后就可以用IP 和root 密码登录了!xftp 应该可以很方便地传输文件~

      adamdad
  2. 你好,按照教程,每次都报这个错。能否帮看看?

    rc/base/bits.o.d.raw -c
    In file included from ../deps/v8/src/base/bits.h:9:0,
    from ../deps/v8/src/base/bits.cc:5:
    /usr/include/c++/5/type_traits:38:28: fatal error: bits/c++config.h: No such file or directory
    compilation terminated.
    tools/v8_gypfiles/v8_libbase.host.mk:148: recipe for target ‘/home/yaoli064/lede/build_dir/target-mipsel_24kc_musl/node-v12.15.0/out/Release/obj.host/v8_libbase/deps/v8/src/base/bits.o’ failed
    make[5]: *** [/home/yaoli064/lede/build_dir/target-mipsel_24kc_musl/node-v12.15.0/out/Release/obj.host/v8_libbase/deps/v8/src/base/bits.o] Error 1
    Makefile:101: recipe for target ‘node’ failed
    make[4]: *** [node] Error 2
    make[4]: Leaving directory ‘/home/yaoli064/lede/build_dir/target-mipsel_24kc_musl/node-v12.15.0’
    Makefile:150: recipe for target ‘/home/yaoli064/lede/build_dir/target-mipsel_24kc_musl/node-v12.15.0/.built’ failed
    make[3]: *** [/home/yaoli064/lede/build_dir/target-mipsel_24kc_musl/node-v12.15.0/.built] Error 2
    make[3]: Leaving directory ‘/home/yaoli064/lede/feeds/packages/lang/node’
    time: package/feeds/packages/node/compile#3.62#1.58#6.67
    package/Makefile:111: recipe for target ‘package/feeds/packages/node/compile’ failed
    make[2]: *** [package/feeds/packages/node/compile] Error 2
    make[2]: Leaving directory ‘/home/yaoli064/lede’
    package/Makefile:107: recipe for target ‘/home/yaoli064/lede/staging_dir/target-mipsel_24kc_musl/stamp/.package_compile’ failed
    make[1]: *** [/home/yaoli064/lede/staging_dir/target-mipsel_24kc_musl/stamp/.package_compile] Error 2
    make[1]: Leaving directory ‘/home/yaoli064/lede’
    /home/yaoli064/lede/include/toplevel.mk:225: recipe for target ‘world’ failed

    santu
    1. 首先要确保以下几点:
      1. 机器为Ubuntu 64X;
      2. 编译过程使用普通用户,不要使用root 用户;
      3. 重新编译要把lede 文件夹删掉,重新git;
      4. 虽然我说我自己常用make -j8 V=s, 但实际上我自己也经常碰到问题不得不重新单线程来一遍…
      其次,我的一些经验:
      1. 有的时候出错可能仅仅是由于选的插件太多,它们之间也有存在冲突的可能性;
      2. 单线程编译时间很长,ssh 断线就会失败,建议使用Screen.
      安装
      sudo apt-get -y install screen
      创建窗口
      screen -S yourname
      断线重连后恢复窗口
      screen -ls
      screen -r yourname
      我的建议:
      1. 使用谷歌云网页ssh 工具;
      2. 重新来一次,这次先不动配置,按照lean 默认配置文件来,并且make -j1 V=s;
      3. 再不行,就发邮件给我康康全过程,哈哈

      icecoland

Leave a Reply

Your email address will not be published. Required fields are marked *