引
脫離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模式)
-
啟動(dòng)安裝
選擇創(chuàng)建好的虛擬機(jī)枣接,啟動(dòng)他
lang選擇中文,driver選擇nonfree缺谴,Boot選項(xiàng)上回車
(其實(shí)我測(cè)試似乎選擇free更流暢一點(diǎn))
-
插播一條題外話
當(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 就正式開始安裝了
這時(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ù))
-
安裝配置
這部分也簡單遏考,磁盤選擇抹除磁盤就好了叠殷,都是傻瓜式的安裝
安裝完重啟之后,點(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:
-
下載twrp
點(diǎn)雞下崽 - 刷入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