1 准备主机
内核编译是一个耗时耗力的大工程,而且不少人都没有专门的Linux电脑,为了编译内核往往需要安装虚拟机,虚拟机的性能可想而知。在云计算的时代,我们只要花5毛钱就可以轻轻松松编译内核。
Nano PI M1的Wiki上介绍了编译环境是基于Ubuntu-14.04 LTS-64bit,那我们就到阿里云上买一台Ubuntu-14.04 LTS-64bit的服务器,考虑到M1的内核代码放在github上,所以需要选择位于美国西部的主机。
登录阿里云,进入控制台选择云服务器ECS,进入实例,点击右上角的创建实例,选择按量付费。下面几个选项特别注意:
- 地域->选美国西部
- 带宽峰值->选择最高的100M(因为是按量付费,只按流出实际流量付费)
- 公共镜像->选择Ubuntu 14.04 64位
- 设置root密码
其他都按默认配置,整个配置和价格如下
需要注意流量这里的说明:
流量是单向收费,只收取流出流量,所以,我们基本可以忽略这个流量费用。
点击购买后,就可以在控制台看到购买的主机和IP了,通过ssh使用root和之前创建的密码登录即可。
2 准备软件环境
先说点题外话,由于这个是实打实的花钱,虽然不到5毛钱,但是该提高效率还是要提高效率,这里推荐大家先安装tmux或者screen。
tmux是一个终端复用软件,简单的理解你相当于你开多个ssh登录到远程主机,如果不太习惯tmux,你也可以开多个putty或者终端来登录主机,方便同时进行多个任务。
使用tmux只要记住ctrl+b 然后按c创建一个新窗口,ctr+b,然后按0或者1,2,3等在窗口间切换。然后如果当前输出较多需要往前翻的时候,需要ctrl+b,然后按“[“,这时候就可以用滚轮翻看了。看完以后用esc或q退出。
可以现在M1上使用一下tmux,熟悉了之后来提高效率。
2.1 更新软件源
apt-get update
注意我们是root登录,所以不需要使用sodu。
2.2 安装tmux【可选】
apt-get install tmux
2.3 安装git
apt-get install git
2.4 运行tmux然后clone代码
tmux
git clone https://github.com/friendlyarm/h3_lichee.git lichee
2.5 安装基本编译软件
按ctrl+b,然后按c新建一个终端,安装基本编译环境
apt-get install build-essential
apt-get install g++-multilib
2.6 安装其他必备库
apt-get install gawk git gnupg flex bison gperf \
zip curl libc6-dev libncurses5-dev:i386 x11proto-core-dev \
libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-glx:i386 \
libgl1-mesa-dev mingw32 tofrodos \
python-markdown libxml2-utils xsltproc zlib1g-dev:i386 libncurses-dev u-boot-tools
注意不知道为什么我在阿里云上把2.5和2.6的安装操作一起执行的时候出错了。另外还遇到过gcc没有被安装的情况,因此在上述命令执行完之后,在终端中输入
gcc
检查一下gcc装好没有。如果没有装好,则需要重新执行一遍apt-get install build-essential
来安装。
3 编译内核
上面的安装包都安装完了之后,git也差不多clone完代码了,此时我们需要按ctrl+b,然后按0切换到git执行的窗口,如果代码下完了,就可以开始编译内核了。
cd lichee
./build.sh -p sun8iw7p1 -b nanopi-h3
./build.sh pack
整个过程大概需要20分钟。内核具体的编译步骤可以参考M1的wiki。
后面该咋办,看各位的目的了。虽然服务器在美国,但是在我的网络环境下访问还是挺快的,编好的内核包可以通过scp下载下来,算上之前的准备工作,加内核取回本地一个小时时间绰绰有余。
这是我最终的消费记录,用了两个小时,期间反复编译了几次。
总体来说还是比较划算的,而且可以选择更高的配置加快编译速度,特别是很多代码都放在Github上,国内clone的速度跟蜗牛一样,用阿里云的美国服务器,几乎是十几M的clone速度,完全可以每次编译新clone就行。
4 总结
最后,关于自己编译内核是因为M1的内核没有集成ipset,所以想定制内核,其中太曲折。关于内核编译有特别需要注意的两点:
1,当前系统内核的版本;
2,clone下来的内核代码的版本。
我第一次编译的时候两个没有对上号,目前M1最新的debian系统是9月7号的nanopi-m1-debian-sd4g-20160907.img.zip,在github上的代码也是9月7号最终提交的。
最最后,我还顺带编译了小度Wi-Fi的驱动,最终还是失败了,内核编译是个技术+体力活,不明白原理基本白搭,大家如果不是特别需要,或者紧紧为了和我一样尝鲜就不必浪费这5毛钱了。
另外我发现M1自带的mt7601是支持小度Wi-Fi,但是插上小度没动静,不知道怎么查看问题。