編譯cm11

前言

在手機(jī)上玩kali時(shí),發(fā)現(xiàn)一個(gè)問題,內(nèi)置的網(wǎng)卡無法開啟混雜模式,而外接網(wǎng)卡(rt5370)無法驅(qū)動(dòng)起來,經(jīng)過研究應(yīng)該是驅(qū)動(dòng)沒有,對此最好的方式就是自己編譯內(nèi)核,然后進(jìn)行替換,考慮到工作的完整性,索性直接制作一個(gè)rom,并且它的內(nèi)核是開啟rt5370驅(qū)動(dòng)的。

準(zhǔn)備工作

  • 紅米1s
  • Ubuntu 14.04
  • 網(wǎng)絡(luò)

安裝宿主系統(tǒng)

這一部分就不涉及了,不管你是雙系統(tǒng)還是虛擬機(jī)都可以。但要注意分配大概150G左右的空間。我算了一下,下載的代碼大概就有20G,實(shí)際占用了大概40G的空間,要知道此時(shí)還沒有開始編譯。因此最好分配的空間大一些。

編譯環(huán)境配置

  • JDK配置(CM12已經(jīng)可以直接使用openjdk了,不需要更換)
sudo add-apt-repository ppa:webupd8team/java
sudo apt-get update
sudo apt-get install oracle-java7-installer
  • 安裝其它必須得軟件
sudo apt-get update && sudo apt-get install git-core gnupg flex bison gperf libsdl1.2-dev libesd0-dev libwxgtk2.8-dev squashfs-tools build-essential zip curl libncurses5-dev zlib1g-dev openjdk-6-jre openjdk-6-jdk pngcrush schedtool libxml2 libxml2-utils xsltproc lzop libc6-dev schedtool g++-multilib lib32z1-dev lib32ncurses5-dev lib32readline-gplv2-dev gcc-multilib
  • 安裝repo
    很多人這一步就卡住了,沒辦法,GFW。推薦掛代理,因?yàn)橄旅嫱酱a也需要。
mkdir -p ~/bin
curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo > ~/bin/repo
chmod a+x ~/bin/repo

臨時(shí)的解決方案:

mkdir -p ~/bin
curl "http://php.webtutor.pl/en/wp-content/uploads/2011/09/repo" > ~/bin/repo
chmod a+x ~/bin/repo
  • 添加到環(huán)境變量
PATH=~/bin:$PATH ;這個(gè)最好是加入到~/.bashrc 中,然后重新開一個(gè)終端

說明:網(wǎng)上很多教程都說repo是支持?jǐn)帱c(diǎn)續(xù)傳的,但其實(shí)我使用下來發(fā)現(xiàn),它的斷點(diǎn)續(xù)傳功能很有限。在國內(nèi)的網(wǎng)絡(luò)條件下,很容易失敗,導(dǎo)致垃圾占用空間。但沒辦法,有條件還是掛代理吧。

下載源碼

經(jīng)過上面的步驟,基本的環(huán)境就好了,接下來就是同步代碼。
鑒于國內(nèi)的政策以及源碼的體積,這一步估計(jì)要很久,慢慢熬吧。

  • 設(shè)置git郵箱和用戶名
git config --global user.email "your@email.address" 
git config --global user.name "Your Name"
  • 初始化倉庫
cd ~/cm11   切換到你希望存放代碼的目錄
repo init -u git://github.com/CyanogenMod/android.git -b cm-11.0

這一步成功后,就可以開始同步代碼。

  • 如果你掛了VPN,那么可以直接開始了
repo sync 或者repo sync -j8 加快下載
  • 如果沒有掛代理,那就看命了
可能需要修改一下hosts文件等
repo sync 或者repo sync -j8 加快下載

相關(guān)教材參考其它的文章,比如:
[Android]下載CM11.0 Android 源碼過程與錯(cuò)誤解決

編譯準(zhǔn)備工作

如果要編譯的設(shè)備是CM官方支持的,那么比較簡單,如果是第三方支持的,那么需要做一些額外的處理。

  • 官方支持
cd ~/cm11/vendor/cm/
./get-prebuilts   獲取預(yù)編譯的一些東西,在CM12已經(jīng)不需要執(zhí)行
cd ~/cm11
source build/envsetup.sh
breakfast bacon

bacon是一加手機(jī)的機(jī)型代號,breakfast bacon執(zhí)行的是從開源Rom的服務(wù)器下載bacon所需的機(jī)型代碼

  • 非官方支持
    如果不是官方支持的,那么一些機(jī)型相關(guān)的代碼就需要我們自己提供。我們需要上網(wǎng)去尋找大神提供的代碼。
cd ~/cm11/.repo
mkdir local_manifests && cd local_manifests
nano device.xml
粘貼以下內(nèi)容并保存
<?xml version="1.0" encoding="UTF-8"?>
<manifest>
<!-- armani Specific -->
<project path="device/qcom/common" name="CyanogenMod/android_device_qcom_common" remote="github" revision="cm-11.0" />
<project path="hardware/qcom/fm" name="CyanogenMod/android_hardware_qcom_fm" revision="cm-11.0" />
<!-- armani kernel-->
<project path="kernel/xiaomi/armani" name="armani-dev/android_kernel_xiaomi_armani" remote="github" revision="cm-11.0" />
<!-- armani device-->
<project path="device/xiaomi/armani" name="armani-dev/android_device_xiaomi_armani" remote="github" revision="cm-11.0" />
<!-- armani vender-->
<project path="vendor/xiaomi" name="armani-dev/proprietary_vendor_xiaomi" remote="github" revision="cm-11.0" />
</manifest>

上面的步驟相當(dāng)于添加了紅米1s(代號:armani)的設(shè)備相關(guān)代碼的依賴。然后再次同步代碼,或者也可以將涉及的包單獨(dú)下載好,然后放在cm11目錄中相應(yīng)位置。
比如:我們可以直接在github中找到name對應(yīng)的倉庫
armani-dev/android_kernel_xiaomi_armani,然后下載需要的版本。然后解壓到path對應(yīng)的目錄中。

編譯

一切準(zhǔn)備工作都好了,那么就可以開始編譯了

brunch armani

編譯的過程也很難是一帆風(fēng)順的,遇到問題,請善用搜索引擎。

編譯成功

package complete: /home/<username>/cm11/out/target/product/bacon/
cm-11-2014xxxx-UNOFFICIAL-bacon.zip

當(dāng)看到如上輸出時(shí),就說明編譯成功了。
~/cm11/out/target/product/bacon/
這個(gè)目錄里,你可以找到cm-11-2014xxxx-UNOFFICIAL-bacon.zip,這就是成型的卡刷Rom,使用第三方recovery刷入即可

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 前言 一直是在source insight上直接看android源碼,可是一直沒有調(diào)試過,而調(diào)試才能對代碼了解的更...
    zhaodsh閱讀 4,513評論 0 9
  • 1,從本篇文章/音頻/視頻中我學(xué)到的最重要的概念 對于自己想做的事,興趣只其一,更重要的是堅(jiān)持去鉆研 2,我在本片...
    張瑩_1703閱讀 268評論 0 0
  • 今日任務(wù)清單:1.將進(jìn)水的mac送檢測,并取回2.復(fù)習(xí)C++函數(shù)、初始類3.完成今日作業(yè) 1.今日同桌不小心摔倒、...
    愛學(xué)習(xí)的栗子君閱讀 118評論 0 0
  • 青青子衿,悠悠我心。但為君故,沉吟至今。沅有芷兮澧有蘭,思公子兮未敢言。山有木兮木有枝,心悅君兮君不知。
    雪蓮瀅月閱讀 318評論 0 0
  • 成都今天 的天氣陰沉沉的,受到昨天黃庭波動(dòng)的影響。心情不是那么美妙。結(jié)果就導(dǎo)致了今天的心情也不美妙 。呃........
    帶貓行走的羊閱讀 285評論 0 0

友情鏈接更多精彩內(nèi)容