1 準(zhǔn)備主機(jī)
內(nèi)核編譯是一個(gè)耗時(shí)耗力的大工程彻况,而且不少人都沒有專門的Linux電腦白胀,為了編譯內(nèi)核往往需要安裝虛擬機(jī)箱沦,虛擬機(jī)的性能可想而知陈醒。在云計(jì)算的時(shí)代栖茉,我們只要花5毛錢就可以輕輕松松編譯內(nèi)核。
Nano PI M1的Wiki上介紹了編譯環(huán)境是基于Ubuntu-14.04 LTS-64bit孵延,那我們就到阿里云上買一臺(tái)Ubuntu-14.04 LTS-64bit的服務(wù)器吕漂,考慮到M1的內(nèi)核代碼放在github上,所以需要選擇位于美國(guó)西部的主機(jī)尘应。
登錄阿里云惶凝,進(jìn)入控制臺(tái)選擇云服務(wù)器ECS,進(jìn)入實(shí)例犬钢,點(diǎn)擊右上角的創(chuàng)建實(shí)例苍鲜,選擇按量付費(fèi)。下面幾個(gè)選項(xiàng)特別注意:
- 地域->選美國(guó)西部
- 帶寬峰值->選擇最高的100M(因?yàn)槭前戳扛顿M(fèi)玷犹,只按流出實(shí)際流量付費(fèi))
- 公共鏡像->選擇Ubuntu 14.04 64位
- 設(shè)置root密碼
其他都按默認(rèn)配置混滔,整個(gè)配置和價(jià)格如下
需要注意流量這里的說明:
流量是單向收費(fèi),只收取流出流量,所以坯屿,我們基本可以忽略這個(gè)流量費(fèi)用油湖。
點(diǎn)擊購(gòu)買后,就可以在控制臺(tái)看到購(gòu)買的主機(jī)和IP了领跛,通過ssh使用root和之前創(chuàng)建的密碼登錄即可乏德。
2 準(zhǔn)備軟件環(huán)境
先說點(diǎn)題外話,由于這個(gè)是實(shí)打?qū)嵉幕ㄥX吠昭,雖然不到5毛錢喊括,但是該提高效率還是要提高效率,這里推薦大家先安裝tmux或者screen矢棚。
tmux是一個(gè)終端復(fù)用軟件郑什,簡(jiǎn)單的理解你相當(dāng)于你開多個(gè)ssh登錄到遠(yuǎn)程主機(jī),如果不太習(xí)慣tmux蒲肋,你也可以開多個(gè)putty或者終端來登錄主機(jī)蘑拯,方便同時(shí)進(jìn)行多個(gè)任務(wù)。
使用tmux只要記住ctrl+b 然后按c創(chuàng)建一個(gè)新窗口肉津,ctr+b,然后按0或者1舱沧,2妹沙,3等在窗口間切換。然后如果當(dāng)前輸出較多需要往前翻的時(shí)候熟吏,需要ctrl+b距糖,然后按“[“,這時(shí)候就可以用滾輪翻看了牵寺『芬看完以后用esc或q退出。
可以現(xiàn)在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 運(yùn)行tmux然后clone代碼
tmux
git clone https://github.com/friendlyarm/h3_lichee.git lichee
2.5 安裝基本編譯軟件
按ctrl+b浓领,然后按c新建一個(gè)終端,安裝基本編譯環(huán)境
apt-get install build-essential
apt-get install g++-multilib
2.6 安裝其他必備庫(kù)
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的安裝操作一起執(zhí)行的時(shí)候出錯(cuò)了势腮。另外還遇到過gcc沒有被安裝的情況联贩,因此在上述命令執(zhí)行完之后,在終端中輸入
gcc
檢查一下gcc裝好沒有捎拯。如果沒有裝好泪幌,則需要重新執(zhí)行一遍apt-get install build-essential
來安裝。
3 編譯內(nèi)核
上面的安裝包都安裝完了之后,git也差不多clone完代碼了祸泪,此時(shí)我們需要按ctrl+b吗浩,然后按0切換到git執(zhí)行的窗口,如果代碼下完了浴滴,就可以開始編譯內(nèi)核了拓萌。
cd lichee
./build.sh -p sun8iw7p1 -b nanopi-h3
./build.sh pack
整個(gè)過程大概需要20分鐘。內(nèi)核具體的編譯步驟可以參考M1的wiki升略。
后面該咋辦微王,看各位的目的了。雖然服務(wù)器在美國(guó)品嚣,但是在我的網(wǎng)絡(luò)環(huán)境下訪問還是挺快的炕倘,編好的內(nèi)核包可以通過scp下載下來,算上之前的準(zhǔn)備工作翰撑,加內(nèi)核取回本地一個(gè)小時(shí)時(shí)間綽綽有余罩旋。
這是我最終的消費(fèi)記錄,用了兩個(gè)小時(shí)眶诈,期間反復(fù)編譯了幾次涨醋。
總體來說還是比較劃算的,而且可以選擇更高的配置加快編譯速度逝撬,特別是很多代碼都放在Github上浴骂,國(guó)內(nèi)clone的速度跟蝸牛一樣,用阿里云的美國(guó)服務(wù)器宪潮,幾乎是十幾M的clone速度溯警,完全可以每次編譯新clone就行。
4 總結(jié)
最后狡相,關(guān)于自己編譯內(nèi)核是因?yàn)镸1的內(nèi)核沒有集成ipset梯轻,所以想定制內(nèi)核,其中太曲折尽棕。關(guān)于內(nèi)核編譯有特別需要注意的兩點(diǎn):
1喳挑,當(dāng)前系統(tǒng)內(nèi)核的版本;
2滔悉,clone下來的內(nèi)核代碼的版本蟀悦。
我第一次編譯的時(shí)候兩個(gè)沒有對(duì)上號(hào),目前M1最新的debian系統(tǒng)是9月7號(hào)的nanopi-m1-debian-sd4g-20160907.img.zip氧敢,在github上的代碼也是9月7號(hào)最終提交的日戈。
最最后,我還順帶編譯了小度Wi-Fi的驅(qū)動(dòng)孙乖,最終還是失敗了浙炼,內(nèi)核編譯是個(gè)技術(shù)+體力活份氧,不明白原理基本白搭,大家如果不是特別需要弯屈,或者緊緊為了和我一樣嘗鮮就不必浪費(fèi)這5毛錢了蜗帜。
另外我發(fā)現(xiàn)M1自帶的mt7601是支持小度Wi-Fi,但是插上小度沒動(dòng)靜资厉,不知道怎么查看問題厅缺。