Manjaro下 Lineage OS(17.1) 編譯環(huán)境搭建

脫離Android系統(tǒng)開發(fā)已經(jīng)數(shù)以年計(jì)了,新的公司職位上已經(jīng)沒有太多關(guān)于Android系統(tǒng)開發(fā)刽脖,更多的是一些涉密的項(xiàng)目以及逆向相關(guān)的工作鳞上。由于業(yè)務(wù)需要怯伊,需要脫一個(gè)帶有愛加密企業(yè)版殼的App借嗽,幾經(jīng)周折态鳖,常規(guī)的方式并不容易脫,正巧用于脫殼的虛擬機(jī)也罷工了恶导,最后是通過真機(jī)脫掉的浆竭,至此就想說重新?lián)炱餉ndroid系統(tǒng)開發(fā),搭一個(gè)開發(fā)環(huán)境惨寿,編一份源碼以備不時(shí)之需(真機(jī)脫殼還是方便不少邦泄,虛擬機(jī)一方面大多殼都有反虛擬機(jī),需要修改相應(yīng)的源碼規(guī)避裂垦,另一方面就是真的ZJB卡)顺囊。
在網(wǎng)上搜了搜,本想再下個(gè)好用點(diǎn)的Ubuntu蕉拢,突然發(fā)現(xiàn)Manjaro被吹上天了特碳,我瞬間就把電腦上的Ubuntu虛擬機(jī)鏡像Shift+Del了,高高興興的搞起來了Manjaro晕换。Android系統(tǒng)就選用了支持市面手機(jī)較多的Lineage午乓。
在此也給廣大關(guān)注我OpenGL文集的朋友道個(gè)歉,斷更兩年多至今未續(xù)更闸准,每次看到有新的粉絲(雖然都是一個(gè)兩個(gè)益愈,但我知道你們都是為了這個(gè))我都有一種愧疚感,真對(duì)不住大家了夷家。

Manjaro的安裝

安裝環(huán)境

  • Windows7 x64
  • VMware 15.0.4 build-12990004 x64
    神秘代碼:AZ312-2FE41-M81LP-R6WEZ-NA2Z4
  • manjaro-kde-20.0.3
    如果下載鏈接失效的話自行到Manjaro官網(wǎng)下載
    打開官網(wǎng)->Try Manjaro->選擇KDE版本(針對(duì)開發(fā)者腕唧,有集成較多開發(fā)工具--當(dāng)然也可以使用其他版本)->Download
  • LineageOS-17.1
    后面在虛擬機(jī)中下載

安裝Manjaro

  • 安裝 VMware
    (略) - 這個(gè)不用教程吧!!!
  • 安裝Manjaro系統(tǒng)
    虛擬機(jī)的配置
    打開VMware->文件->新建虛擬機(jī)->典型安裝->選擇下載的Manjaro鏡像->選擇 其他Linux 4.x或更高版本內(nèi)核 64 位-> ...
    最終配置如下(200G硬盤、4G內(nèi)存瘾英、網(wǎng)絡(luò)為NAT模式)
    虛擬機(jī)配置
  • 啟動(dòng)安裝
    選擇創(chuàng)建好的虛擬機(jī)枣接,啟動(dòng)他
    lang選擇中文,driver選擇nonfree缺谴,Boot選項(xiàng)上回車
    (其實(shí)我測(cè)試似乎選擇free更流暢一點(diǎn))
    系統(tǒng)安裝配置(不重要)
  • 插播一條題外話

    當(dāng)啟動(dòng)到這個(gè)界面的時(shí)候但惶,我特么被驚訝到了,我以為特么已經(jīng)安裝完了湿蛔,系統(tǒng)操作起來賊流暢膀曾,大部分的工具也都能用,我特么就開始裝環(huán)境阳啥,下源碼添谊,為了快速啟動(dòng)每次都是掛起虛擬機(jī),可是特么每次源碼下一部分就死機(jī)黑屏察迟,心中一萬只草泥馬斩狱,差點(diǎn)就干他三代了耳高。后來才發(fā)現(xiàn)這只是用于安裝系統(tǒng)用了,跟裝win7的pe一個(gè)意思所踊,我內(nèi)存設(shè)置4G泌枪,當(dāng)下載文件填滿4G后就宕機(jī)了,這很正常秕岛。只能說這安裝環(huán)境太完善了碌燕!
  • 啟動(dòng)安裝
    點(diǎn)擊左上角的 Install Manjaro Linux 就正式開始安裝了
    啟動(dòng)安裝

    這時(shí)候如果發(fā)現(xiàn)虛擬機(jī)不能連接網(wǎng)絡(luò),也確認(rèn)虛擬機(jī)網(wǎng)絡(luò)配置成NAT模式继薛,但是屏幕右下角的網(wǎng)絡(luò)圖標(biāo)被打叉了修壕,那你首先要確認(rèn)一下VMware的DHCP服務(wù)是不是被禁了(如果你裝了火絨那就恭喜你了)
    計(jì)算機(jī)(右鍵)->管理->服務(wù)和應(yīng)用程序->服務(wù)->把VMware開頭的那幾個(gè)服務(wù)手動(dòng)啟動(dòng)起來,此時(shí)你就會(huì)發(fā)現(xiàn)你的虛擬機(jī)有網(wǎng)了(記得到你的殺毒軟件中解禁這幾個(gè)服務(wù))
    服務(wù)
  • 安裝配置
    這部分也簡單遏考,磁盤選擇抹除磁盤就好了叠殷,都是傻瓜式的安裝
    磁盤

    帳號(hào)

    安裝完重啟之后,點(diǎn)擊屏幕左下角就能看到終端了
    桌面

優(yōu)化你的Manjaro

此時(shí)你的Manjaro已經(jīng)安裝完成了诈皿,為了讓你的Manjaro更好用可以先做下優(yōu)化:

  • 修改源
// 獲取國內(nèi)源
# sudo  pacman-mirrors -i -c China -m rank

然后會(huì)彈出一個(gè)窗口林束,把三個(gè)都勾上

中國鏡像

其實(shí)也就是添加三個(gè)地址到 /etc/pacman.d/mirrorlist(在 /etc/pacman.conf 中引用) 而已,也可以自己手動(dòng)用 vim 添加 (默認(rèn)沒有裝 vim稽亏,自己裝一下)
鏡像地址

// 添加完國內(nèi)源后記得同步更新一下軟件源
# sudo  pacman -Syy
  • 安裝 open-vm-tools
    (如果已經(jīng)可以自動(dòng)切換鼠標(biāo)壶冒,拖拽文件正常就不需要重新裝了)
    這里要裝 open-vm-tools,千萬不能裝VMware自帶的(兼容性問題截歉,窗口不能適應(yīng)客戶機(jī)胖腾,分辨率永遠(yuǎn)只有600x800)。
// gtkmm gtkmm3也是必要的 (不然在VMware下會(huì)有窗口無法適配客戶機(jī)的問題)
# sudo pacman -S open-vm-tools gtkmm gtkmm3
// 重啟生效
# reboot
  • 安裝AUR
// 安裝AUR主要是為了安裝一些野包(沒有認(rèn)證的)瘪松。
// 跟 pacman 用法基本一致(yay -S xxx)咸作,不需要 root 權(quán)限,需要root權(quán)限時(shí)會(huì)提示輸入root密碼
# sudo pacman -S yay
  • 添加archlinuxcn軟件源
# sudo vim /etc/pacman.conf // 編輯

在最下方添加如下內(nèi)容(主要是導(dǎo)入key用)

[archlinuxcn]
SigLevel = Optional TrustedOnly
Server =https://mirrors.ustc.edu.cn/archlinuxcn/$arch

導(dǎo)入key

// 安裝key (安裝國內(nèi)的軟件源需要的key宵睦,沒有的話安裝軟件會(huì)被拒絕或者卡在導(dǎo)入key過程)
# sudo pacman -Sy archlinuxcn-keyring
  • 重命名Home目錄下的目錄名 (非必須)
    如果你安裝的是中文版的记罚,用于開發(fā)的話 home 目錄下都是中文目錄很不方便,可以修改一下映射改成英文壳嚎,然后又保留其它界面的中文環(huán)境(這部分修改后會(huì)導(dǎo)致虛擬桌面出問題桐智,需要重新添加一下)
// 沒有 vim 的自己裝一下(yay -S vim)
# vim ~/.config/user-dirs.dirs

將文件修改為如下內(nèi)容(中文部分重命名)

XDG_DESKTOP_DIR="$HOME/Desktop"
XDG_DOWNLOAD_DIR="$HOME/Download"
XDG_TEMPLATES_DIR="$HOME/Templates"
XDG_PUBLICSHARE_DIR="$HOME/Public"
XDG_DOCUMENTS_DIR="$HOME/Documents"
XDG_MUSIC_DIR="$HOME/Music"
XDG_PICTURES_DIR="$HOME/Pictures"
XDG_VIDEOS_DIR="$HOME/Videos"

重命名文件夾

// 重命名
# mv ~/桌面 ~/Desktop
# mv ~/下載 ~/Download
# mv ~/模板 ~/Templates
# mv ~/公共 ~/Public
# mv ~/文檔 ~/Documents
# mv ~/音樂 ~/Music
# mv ~/圖片 ~/Pictures
# mv ~/視頻 ~/Videos

確認(rèn)無誤后重啟,其它有需要的軟件就自己安裝
如果重啟后出現(xiàn)不能適應(yīng)客戶機(jī)了烟馅,那就重裝一下 gtkmm 和 gtkmm3 就可以了(重啟生效)说庭,如果還不行你可能需要重裝了。

安裝 Lineage OS(17.1) 編譯環(huán)境

可能這一步很多人句直接打開官方網(wǎng)站教程就開始擼了郑趁,包括我也是刊驴,但是走了不少彎路,話費(fèi)了不少時(shí)間。

  • 安裝 platform-tools (manjaro系統(tǒng)自帶了)
    這個(gè)主要是要使用 adb 和 fastboot 工具捆憎,如果你不打算在 linux 上用這兩個(gè)是可以不用安裝的舅柜。
// 下載
# wget https://dl.google.com/android/repository/platform-tools_r29.0.5-linux.zip
// 解壓
# unzip platform-tools-latest-linux.zip -d ~

添加環(huán)境變量
打開~/.profile,在文件末尾添加如下內(nèi)容攻礼。這里添加的路徑($HOME/)是剛剛解壓的路徑,如果你解壓到別的地方栗柒,這里路徑跟著相應(yīng)修改就可以了礁扮,正常的 linux 工具安裝方法,沒什么特別的瞬沦。

# add Android SDK platform tools to path
if [ -d "$HOME/platform-tools" ] ; then
    PATH="$HOME/platform-tools:$PATH"
fi

source 一下文件,讓配置立刻生效

# source ~/.profile // 使配置立即生效
  • 安裝工具鏈
    這里大家可能就直接按官方教程那樣,直接安裝這些工具鏈:

    然后你就會(huì)驚奇的發(fā)現(xiàn)搁痛,有一大堆包裝不上了雨女,即使你用 yay 也是如此,然后你可能會(huì)去尋找那些裝不上的包在 manjaro 上的替換包曙痘,從此踏上一條不歸路芳悲。。边坤。
    原因是這些工具鏈?zhǔn)?Ubuntu 上的名扛,并不是 manjaro 上的(有些時(shí)候我在想,manjaro 吹上天茧痒,怎么這么多包不兼容或者換名字肮韧?),所以我們換個(gè)方向想問題可能會(huì)有不同的收獲旺订。我們反向去找 manjaro 上怎么安裝 Android 編譯工具鏈弄企,很幸運(yùn),我這 archlinux 的 wiki 上找到了 Lineage OS 的工具鏈教程
    工具鏈

    我們可以看到有一部分包是需要用 AUR 包的区拳,有一部分是要替換掉的拘领,看到最后發(fā)現(xiàn)人家還打包好了,經(jīng)過漫長折磨的我看到這個(gè)心里是多么的五味雜陳樱调。院究。。
// 安裝工具鏈
# yay -S lineageos-devel

// 如果安裝過程出現(xiàn)錯(cuò)誤可能是因?yàn)槿鄙匍_發(fā)包或者版本太舊本涕,可以更新一下基礎(chǔ)開發(fā)包
# sudo pacman -S base-devel // 可以安裝指定的也可以全部安裝

安裝工具鏈?zhǔn)墙换ナ降囊堤谝徊綍?huì)讓你選擇安裝的 jdk 版本,我們要編譯 Lineage OS 17.1 選擇默認(rèn)(open-jdk14)菩颖,如果編譯老版本則要選擇對(duì)應(yīng)的jdk版本(cm-14.1=>openjdk8 )样漆,這里我們直接回車,接下來的都按默認(rèn)晦闰,有提示是否安裝的就輸入 y 回車就行放祟,只要你主機(jī)有聯(lián)網(wǎng)很快就能裝好了鳍怨。



注:如果安裝工具鏈出現(xiàn)有些包找不到之類的,你可以嘗試換一下軟件源跪妥。要自己裝 jdk 的話使用 pacman -S jdkX-openjdk (X替換成要安裝的版本)

  • 切換 Python 版本
    manjaro 系統(tǒng)已經(jīng)自帶了 Python 鞋喇,默認(rèn)是 Python3 ,然而 Lineage OS 14.1 編譯則需要使用 Python2 否則會(huì)報(bào)一些莫名其妙的問題眉撵。
    如果上面工具鏈安裝沒問題的話你系統(tǒng)中就已經(jīng)安裝了 Python2 侦香,此時(shí)你只要把鏈接文件指向 Python2 就行了:
// 查看 python 安裝位置
// # which python
// 切換到 python 安裝位置 (/usr/bin/)
// # cd /usr/bin/
// 修改鏈接文件 (ln -snf [新鏈接目標(biāo)] [軟鏈接地址])
# sudo ln -snf python2-config /usr/bin/python-config
# sudo ln -snf python2 /usr/bin/python

此時(shí)你可以在終端上輸入 python 驗(yàn)證一下 Python 版本是否正常。

  • 添加虛擬內(nèi)存
    編譯 Lineage OS 需要大量的內(nèi)存(經(jīng)測(cè)試需要8G以上的內(nèi)存纽疟,使用10G時(shí)能編譯通過)罐韩,一般使用虛擬機(jī)的不會(huì)分配到這么多內(nèi)存,所以我們就需要添加一個(gè)虛擬內(nèi)存污朽。
    添加之前先查看本機(jī)有沒有已經(jīng)有了散吵,如果有就先刪掉以前的再添加。
// 查看內(nèi)存狀態(tài)蟆肆,swap(交換) 為 0 表示沒有虛擬內(nèi)存
# free
// 查看虛擬內(nèi)存路徑(也可以查看 /etc/fstab 文件)
# swapon -s 
# swapoff /var/swap // 關(guān)閉當(dāng)前的虛擬內(nèi)存
# sudo rm -rf /var/swap  // 刪除當(dāng)前的虛擬內(nèi)存文件

// 添加新的虛擬內(nèi)存
# su  // 切換到 root 用戶
// if 表示 input_file 輸入文件矾睦;of 表示 output_file 輸出文件;bs 表示 block_size 塊大醒坠Α顷锰;count 表示計(jì)數(shù)
# dd if=/dev/zero of=/var/swap bs=1M count=8192 // 新建虛擬內(nèi)存文件 -- 8G (8192*1M=8G)
# mkswap /var/swap      // 格式化文件
# swapon /var/swap // 啟用虛擬內(nèi)存

開機(jī)自動(dòng)加載虛擬內(nèi)存
在 /etc/fstab 文件中添加如下內(nèi)容(如果之前已經(jīng)添加過虛擬內(nèi)存記得替換掉)

/var/swap swap swap defaults 0 0
  • 配置samba (非必須)
    創(chuàng)建共享目錄 (目錄可自行定義,這里為根目錄下的workspace文件夾)
# sudo mkdir /workspace
# sudo chmod 777 /workspace // 記得帶執(zhí)行權(quán)限亡问,否則會(huì)提示沒有訪問權(quán)限

在/etc/samba/下添加smb.conf文件官紫,文件內(nèi)容如下

[global]      
# 所要加入的工作組或者域
workgroup = WORKGROUP 
# 用于在 Windows 網(wǎng)上鄰居上顯示的主機(jī)名
netbios name = Manjaro    
server string = Samba Server      
# 定義安全級(jí)別   
# security = user  
server role = standalone server    
# 將所有samba系統(tǒng)主機(jī)所不能正確識(shí)別的用戶都映射成guest用戶
# map to guest = bad user       
# 是否開啟dns代理服務(wù)    
dns proxy = no    
# 來賓賬戶(默認(rèn)為nobody)    
# guest account = huayu
# log
log file = /var/log/samba/%m.log
# 單位為kb
max log size = 50
                 
# [homes]
# comment = Home Directories
# browseable = no
# writable = yes                 
                 
# 共享目標(biāo)(名字為顯示的共享目錄名--可任意)
[workspace]    
# 共享路徑 
path = /workspace 
# 有效用戶(可訪問的用戶)
valid users = huayu  
# 共享的目錄是否讓所有人可見
browsable = yes              
# 是否可寫       
writable = yes  
available = yes
browseable = yes 
  
# 是否允許匿名(guest)訪問
# guest ok = yes      
# 客戶端上傳文件的默認(rèn)權(quán)限         
create mask = 0777     
# 客戶端創(chuàng)建目錄的默認(rèn)權(quán)限      
directory mask = 0777     

#注意共享文件在系統(tǒng)本地的權(quán)限不能低于以上設(shè)置的共享權(quán)限

添加samba帳號(hào) (這里和系統(tǒng)帳號(hào)是分開的,可以同名但需要再配置一次)

// gpasswd [用戶組] -a [用戶名] (groups可以查看所有的用戶組)
# sudo gpasswd huayu -a huayu
// smbpasswd -a [用戶名] 稍后提示配置密碼
# sudo smbpasswd -a huayu

啟用smaba 服務(wù)

# systemctl enable smb nmb
# systemctl start smb nmb

編譯 Lineage OS

  • 初始化倉庫
    看官方教程點(diǎn)擊這里
// 安裝源碼下載工具 repo
# sudo pacman -S repo
// 創(chuàng)建源碼目錄
# mkdir -p Desktop/android/lineage
# cd Desktop/android/lineage

// 切換 repo 的源為清華源州藕,因?yàn)?repo init 會(huì)從遠(yuǎn)端同步 repo-project 然而因?yàn)閴Φ脑驎?huì)導(dǎo)致失敗(fatal: error [Errno 101] Network is unreachable)
// 所以要修改源
# export REPO_URL='https://mirrors.tuna.tsinghua.edu.cn/git/git-repo/' 
// 添加 git 帳號(hào) (第一次使用需要配置)
# git config --global user.email "you@example.com"
# git config --global user.name "Your Name"
// 初始化倉庫 (從清華大學(xué)的鏡像站同步)
# repo init -u https://mirrors.tuna.tsinghua.edu.cn/git/lineageOS/LineageOS/android.git -b lineage-17.1
  • 下載 Lineage OS
    在同步之前我們需要先修改一下代碼工程是源(原來的源有時(shí)也很快束世,可以先嘗試直接同步,如果不行再修改源)
    打開.repo/manifest/default.xml床玻,將
  <remote  name="github"
           fetch=".."
           review="review.lineageos.org" />

改成

  <remote  name="github"
           fetch="https://github.com/" />

  <remote  name="lineage"
           fetch="https://mirrors.tuna.tsinghua.edu.cn/git/lineageOS/"
           review="review.lineageos.org" />

  <remote  name="aosp"
           fetch="https://android.googlesource.com"

改成

  <remote  name="aosp"
           fetch="https://aosp.tuna.tsinghua.edu.cn"

  <default revision="..."
           remote="github"

改成

  <default revision="..."
           remote="lineage"

同步源碼樹(以后只需執(zhí)行這條命令來同步):

// 部分倉庫如 Lineage_framework_base 同步的時(shí)候會(huì)出現(xiàn) bundle 錯(cuò)誤毁涉,可以使用命令 repo sync --no-clone-bundle 進(jìn)行同步
# repo sync // 加 -c 可以只同步當(dāng)前分支

漫長的等待,何時(shí)完成就隨緣吧锈死!

  • 指定平臺(tái)
    Lineage OS 是可以適配多個(gè)平臺(tái)的贫堰,所以需要將工程先配置到我們需要的平臺(tái),我這里目標(biāo)手機(jī)是用小米Note2待牵,所以是 scorpio其屏,其它平臺(tái)對(duì)應(yīng)不同的名字
// 同樣需要一段時(shí)間的下載
# source build/envsetup.sh
// 這里還會(huì)從倉庫下載一些文件(可能會(huì)提示錯(cuò)誤,多試幾下缨该,可能需要FQ)
# breakfast scorpio 
  • 添加設(shè)備驅(qū)動(dòng)
    Android 本身是開源的偎行,但為了保護(hù)廠商的利益,在驅(qū)動(dòng)層是不開源的(這也是 Android 被踢出 Linux 的一大原因),這里也是一樣蛤袒,設(shè)備相關(guān)的驅(qū)動(dòng)也是沒有源碼的熄云,但可以從別的地方獲取編譯好的驅(qū)動(dòng)程序。官方就提供了兩種辦法妙真,一是從手機(jī)上直接提取缴允,二是從官方或第三方的ROM中提取。
    手機(jī)上提取
    1珍德、連接手機(jī)到電腦练般,連上adb
    2、然后在 android/lineage/device/xiaomi/cancro 目錄下執(zhí)行 extract-files.sh 腳本即可
    ROM 中提取
    1菱阵、從官方或者其他渠道下載到可用的 ROM 包踢俄,提取出 system.img (可能會(huì)涉及到鏡像格式轉(zhuǎn)換: br->dat->img)
    2缩功、將 system.img 鏡像掛載到一個(gè)目錄上 sudo mount system.img android/system_dump/system/
    3晴及、同樣,執(zhí)行 extract-files.sh 腳本提取驅(qū)動(dòng) ./extract-files.sh xxx/android/system_dump/
    點(diǎn)我獲得官方詳細(xì)的導(dǎo)出教程
    不過不知道什么原因嫡锌,用這兩個(gè)方法提取文件后虑稼,在編譯的時(shí)候總是會(huì)有幾個(gè)文件找不到。通過導(dǎo)出腳本势木,知道需要導(dǎo)出哪些文件蛛倦,手動(dòng)?xùn)|拼西湊湊夠了(其實(shí)有些是目錄變了,不同的包也正好文件能有所互補(bǔ))
    鏈接:https://pan.baidu.com/s/1_NcoAWSzUmvPoD0KJiyZVg
    提取碼:feh5
  • 編譯
    這最后一步有一些坑還是需要注意一下啦桌,不過最最最主要的還是內(nèi)存一定要大溯壶、內(nèi)存一定要大、內(nèi)存一定要大甫男,否則總會(huì)有一些莫名其妙的問題(原本以為沒有使用JACK 編譯器了應(yīng)該內(nèi)存使用上會(huì)比較好且改,事實(shí)呵呵噠),本人測(cè)試發(fā)現(xiàn)在編譯過程中系統(tǒng)消耗的總內(nèi)存達(dá)到 10G 以上(無其他操作)板驳,編譯過程大多在6G左右又跛,但是在編譯一些模塊時(shí)(doc)內(nèi)存會(huì)急劇升高,在內(nèi)存耗盡時(shí)不會(huì)立刻out of memory而是會(huì)一直在等待內(nèi)存若治,如果一直沒有其他地方釋放內(nèi)存大概在一兩個(gè)小時(shí)候溢出(坑B慨蓝,我特么以為一直在編譯)。本菜雞是在 12G 內(nèi)存(物理12G+虛擬8G)下才成功編譯過的端幼。
// 基本配置礼烈,可以放在.bashrc文件里面,這樣內(nèi)存啟動(dòng)終端就會(huì)自動(dòng)設(shè)置
# export USE_CCACHE=1
# export CCACHE_EXEC=/usr/bin/ccache
# ccache -M 50G
# export CCACHE_COMPRESS=1
// 編譯婆跑,進(jìn)入源碼根目錄
# source build/envsetup.sh
// # export LC_ALL=C // 清除本地化配置(中文可能會(huì)不顯示济丘,字符集問題)
// 限定內(nèi)存,不然很容易崩,測(cè)試 10G 是可以的摹迷,8G 以下全部狗帶 (當(dāng)然疟赊,你實(shí)際可用內(nèi)存要大于這個(gè),不然就 Out of memory 了)
// # export ANDROID_JACK_VM_ARGS="-Dfile.encoding=UTF-8 -XX:+TieredCompilation -Xmx10G" 
// 漫長的編譯峡碉,等吧近哟。我好像編了 6 小時(shí)
# brunch scorpio

Lineage OS 目前編譯后只有卡刷包,你可以先刷一個(gè)第三方的 Recovery (twrp)鲫寄〖矗或者像我一樣,下一個(gè)小米官方的線刷包地来,將編譯后的 img 文件替換掉小米官方線刷包中的同名文件(并沒有一一匹配戳玫,替換重名的就行),我目前是這么刷的使用上并沒有發(fā)現(xiàn)有問題未斑,當(dāng)然最好還是先刷一個(gè) Recovery 再用 Recovery 刷卡刷包了咕宿,后續(xù)更新就可以用 adb 刷有更新的鏡像了(一般也就內(nèi)核和 system.img 了)

刷機(jī)

刷入recovery

因?yàn)楣俜降膔ecovery會(huì)校驗(yàn)ROM包,非官方包是刷不了的蜡秽,所以需要先將recovery替換掉府阀。這里可以替換成LineageOS的recovery(在編譯后的out目錄中有),也可以刷成其他第三方的芽突,如twrp:

// 重啟到fastboot
# adb reboot bootloader // 獲取按住開機(jī)鍵和音量下鍵開機(jī)
# fastboot flash recovery twrp-3.4.0-0-scorpio.img
// 重啟到recovery(注意试浙,刷完recovery不能直接重啟開機(jī),否則刷入的recovery會(huì)被還原)
# fastboot boot twrp-3.4.0-0-scorpio.img

在recovery進(jìn)行雙清寞蚌,并且刷入新系統(tǒng)的ROM(zip包)

root

  • 下載root框架
    原先的SuperSu框架慢慢的被magisk框架(面具)替換了田巴,所以這里刷magisk吧 magisk官網(wǎng)
    這里需要下載兩個(gè)文件,一個(gè)是框架的zip包和權(quán)限管理的apk挟秤,zip包用twrp刷進(jìn)系統(tǒng)壹哺,apk直接裝系統(tǒng)上就行。

其他linux命令

  • linux間文件拷貝
// 目錄拷貝 scp -r [目標(biāo)主機(jī)用戶]@[目標(biāo)主機(jī)]:[源目錄] [目的目錄]
# scp -r huayu@172.16.18.2:/home/ /home/

各種問題集結(jié)

  • ninja 未安裝
    編譯的時(shí)候可能會(huì)提示 ninja 沒有安裝煞聪,原則上會(huì)自己編譯安裝斗躏,也可以手動(dòng)自己安裝,不過即使不安裝編譯也能正常通過昔脯,似乎不是必須的
# yay -S ninja   // 手動(dòng)安裝
  • multiple definition of 'yylloc'
    /usr/bin/ld: scripts/dtc/dtc-parser.tab.o:(.bss+0x50): multiple definition of `yylloc'; scripts/dtc/dtc-lexer.lex.o:(.bss+0x0): first defined here
    collect2: 錯(cuò)誤:ld 返回 1
    ...
    gcc版本問題啄糙,從gcc-9.3升級(jí)到gcc-10.1出現(xiàn)編譯內(nèi)核出錯(cuò),需要降級(jí)gcc
// 安裝降級(jí)工具 downgrade 
# sudo pacman downgrade
// 降級(jí)gcc(選擇要降級(jí)的版本云稚,gcc-9.3.0),這里降級(jí)可能失敗隧饼,不過先把軟件包下載下來
# sudo downgrade gcc
// 強(qiáng)制降級(jí)(選擇downgrade下載的緩存,也可以自己其他渠道下載軟件包)
# sudo pacman -Udd /var/cache/pacman/pkg/gcc-9.3.0-1-x86_64.pkg.tar.zst

// 強(qiáng)制降級(jí)方法2
// 先刪除原軟件包再降級(jí)安裝
# sudo manpac -R gcc
# sudo pacman downgrade
  • VMware中添加了共享文件夾静陈,但manjaro中不顯示
// 創(chuàng)建掛載點(diǎn)
# sudo mkdir /mnt/hgfs
// 掛載(重啟后需要重新掛載)
# sudo /usr/bin/vmhgfs-fuse -o allow_other -o auto_unmount /mnt/hgfs
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末燕雁,一起剝皮案震驚了整個(gè)濱河市诞丽,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌拐格,老刑警劉巖僧免,帶你破解...
    沈念sama閱讀 206,214評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異捏浊,居然都是意外死亡懂衩,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,307評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門金踪,熙熙樓的掌柜王于貴愁眉苦臉地迎上來浊洞,“玉大人,你說我怎么就攤上這事胡岔》ㄏ#” “怎么了?”我有些...
    開封第一講書人閱讀 152,543評(píng)論 0 341
  • 文/不壞的土叔 我叫張陵靶瘸,是天一觀的道長苫亦。 經(jīng)常有香客問我,道長奕锌,這世上最難降的妖魔是什么著觉? 我笑而不...
    開封第一講書人閱讀 55,221評(píng)論 1 279
  • 正文 為了忘掉前任村生,我火速辦了婚禮惊暴,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘趁桃。我一直安慰自己辽话,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,224評(píng)論 5 371
  • 文/花漫 我一把揭開白布卫病。 她就那樣靜靜地躺著油啤,像睡著了一般。 火紅的嫁衣襯著肌膚如雪蟀苛。 梳的紋絲不亂的頭發(fā)上益咬,一...
    開封第一講書人閱讀 49,007評(píng)論 1 284
  • 那天,我揣著相機(jī)與錄音帜平,去河邊找鬼幽告。 笑死,一個(gè)胖子當(dāng)著我的面吹牛裆甩,可吹牛的內(nèi)容都是我干的冗锁。 我是一名探鬼主播,決...
    沈念sama閱讀 38,313評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼嗤栓,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼冻河!你這毒婦竟也來了箍邮?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,956評(píng)論 0 259
  • 序言:老撾萬榮一對(duì)情侶失蹤叨叙,失蹤者是張志新(化名)和其女友劉穎锭弊,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體擂错,經(jīng)...
    沈念sama閱讀 43,441評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡廷蓉,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,925評(píng)論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了马昙。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片桃犬。...
    茶點(diǎn)故事閱讀 38,018評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖行楞,靈堂內(nèi)的尸體忽然破棺而出攒暇,到底是詐尸還是另有隱情,我是刑警寧澤子房,帶...
    沈念sama閱讀 33,685評(píng)論 4 322
  • 正文 年R本政府宣布形用,位于F島的核電站,受9級(jí)特大地震影響证杭,放射性物質(zhì)發(fā)生泄漏田度。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,234評(píng)論 3 307
  • 文/蒙蒙 一解愤、第九天 我趴在偏房一處隱蔽的房頂上張望镇饺。 院中可真熱鬧,春花似錦送讲、人聲如沸奸笤。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,240評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽监右。三九已至,卻和暖如春异希,著一層夾襖步出監(jiān)牢的瞬間健盒,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,464評(píng)論 1 261
  • 我被黑心中介騙來泰國打工称簿, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留扣癣,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,467評(píng)論 2 352
  • 正文 我出身青樓予跌,卻偏偏與公主長得像搏色,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子券册,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,762評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容