<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="zh-Hans-CN">
	<id>https://wiki.uotan.cn/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Snnbyyds</id>
	<title>Uotan Wiki · 刷机百科 - 用户贡献 [zh-cn]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.uotan.cn/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Snnbyyds"/>
	<link rel="alternate" type="text/html" href="https://wiki.uotan.cn/index.php?title=%E7%89%B9%E6%AE%8A:%E7%94%A8%E6%88%B7%E8%B4%A1%E7%8C%AE/Snnbyyds"/>
	<updated>2026-06-21T23:59:13Z</updated>
	<subtitle>用户贡献</subtitle>
	<generator>MediaWiki 1.41.0</generator>
	<entry>
		<id>https://wiki.uotan.cn/index.php?title=Hellobbn&amp;diff=422</id>
		<title>Hellobbn</title>
		<link rel="alternate" type="text/html" href="https://wiki.uotan.cn/index.php?title=Hellobbn&amp;diff=422"/>
		<updated>2024-02-16T01:10:48Z</updated>

		<summary type="html">&lt;p&gt;Snnbyyds：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;hellobbn是一位实力强大的开发者，擅长为许多索尼设备维护LineageOS。他具备卓越的技术能力和丰富的经验，为LineageOS的开发和维护做出了重大贡献，例如，在LineageOS中由Lineage Health HAL实现的充电控制功能就是由他贡献的&amp;lt;ref&amp;gt;https://review.lineageos.org/q/topic:%22charging-control-hal-20%22&amp;lt;/ref&amp;gt;。他参与维护的设备包括但不限于Sony Xperia 5 III，Sony Xperia 1 III，Sony Xperia 1 II 等等。&lt;br /&gt;
&lt;br /&gt;
同时，他也是一位善良且乐于助人的人。他总是愿意分享自己的知识和经验，为新手开发者们指明前进的方向！&lt;br /&gt;
&lt;br /&gt;
总体而言，hellobbn是一位值得称赞的安卓开发者。我们期待他在该领域继续取得更大的成就，并为整个社区带来更多的创新和进步。&lt;br /&gt;
&lt;br /&gt;
GitHub主页：[https://github.com/hellobbn]&lt;br /&gt;
&lt;br /&gt;
个人bilibili主页：[https://space.bilibili.com/9030051]&lt;/div&gt;</summary>
		<author><name>Snnbyyds</name></author>
	</entry>
	<entry>
		<id>https://wiki.uotan.cn/index.php?title=%E6%9A%AE%E9%97%B4%E9%9B%BE&amp;diff=421</id>
		<title>暮间雾</title>
		<link rel="alternate" type="text/html" href="https://wiki.uotan.cn/index.php?title=%E6%9A%AE%E9%97%B4%E9%9B%BE&amp;diff=421"/>
		<updated>2024-02-16T01:09:14Z</updated>

		<summary type="html">&lt;p&gt;Snnbyyds：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;暮间雾/Mujianwu是一位广受好评的开发者和博主，他是柚坛社区的创作者和管理员，也同样是本Wiki平台的创建者。他擅长使用C#语言和类原生开发，具备卓越的技术能力和丰富的经验。他的优秀作品柚坛搞机工具箱&amp;lt;ref&amp;gt;https://github.com/Uotan-Dev/UotanToolBox&amp;lt;/ref&amp;gt;曾在2023年海峡两岸暨港澳地区大学生计算机创新作品赛总决赛中荣获三等奖和优秀展示奖。&lt;br /&gt;
&lt;br /&gt;
身为一名良心开发者，他也是一个乐于助人、和蔼可亲的人。他总是愿意尽己所能，帮助人们解决各式各样的难题。例如，他自费搭建高性能服务器，在GitHub上开办CI服务，间接催生了不少优秀的类原生作品，支持一众开发者继续追逐梦想！&lt;br /&gt;
&lt;br /&gt;
总体而言，暮间雾是一位值得称赞的开发者。我们期待他在多个领域继续追求卓越，精益求精，为社区注入新鲜活力！&lt;br /&gt;
&lt;br /&gt;
暮间雾个人bilibili主页：[https://space.bilibili.com/620165086]&lt;br /&gt;
&lt;br /&gt;
微博主页：[https://weibo.com/u/6594732995]&lt;br /&gt;
&lt;br /&gt;
酷安：[http://www.coolapk.com/u/3242606]&lt;br /&gt;
&lt;br /&gt;
个人搭建的官网：[https://mjwsjq.top]&lt;br /&gt;
&lt;br /&gt;
米游社：[https://www.miyoushe.com/ys/accountCenter/postList?id=72321239]&lt;br /&gt;
&lt;br /&gt;
GitHub主页：[https://github.com/mujianwu]&lt;/div&gt;</summary>
		<author><name>Snnbyyds</name></author>
	</entry>
	<entry>
		<id>https://wiki.uotan.cn/index.php?title=%E6%9A%AE%E9%97%B4%E9%9B%BE&amp;diff=420</id>
		<title>暮间雾</title>
		<link rel="alternate" type="text/html" href="https://wiki.uotan.cn/index.php?title=%E6%9A%AE%E9%97%B4%E9%9B%BE&amp;diff=420"/>
		<updated>2024-02-16T01:05:15Z</updated>

		<summary type="html">&lt;p&gt;Snnbyyds：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;暮间雾/Mujianwu是一位广受好评的开发者和博主，他是柚坛社区的创作者和管理员，也同样是本Wiki平台的创建者。他擅长使用C#语言和类原生开发，具备卓越的技术能力和丰富的经验。他的优秀作品柚坛搞机工具箱&amp;lt;ref&amp;gt;https://github.com/Uotan-Dev/UotanToolBox&amp;lt;/ref&amp;gt;曾在2023年海峡两岸暨港澳地区大学生计算机创新作品赛总决赛中荣获三等奖和优秀展示奖。&lt;br /&gt;
&lt;br /&gt;
身为一名良心开发者，他也是一个乐于助人、和蔼可亲的人。他总是愿意分享自己的知识和经验，帮助新手解决各式各样的难题。他待人和善，广受大家的喜爱与支持。&lt;br /&gt;
&lt;br /&gt;
总体而言，暮间雾是一位值得称赞的开发者。我们期待他在多个领域继续追求卓越，精益求精，为社区注入新鲜活力！&lt;br /&gt;
&lt;br /&gt;
暮间雾个人bilibili主页：[https://space.bilibili.com/620165086]&lt;br /&gt;
&lt;br /&gt;
微博主页：[https://weibo.com/u/6594732995]&lt;br /&gt;
&lt;br /&gt;
酷安：[http://www.coolapk.com/u/3242606]&lt;br /&gt;
&lt;br /&gt;
个人搭建的官网：[https://mjwsjq.top]&lt;br /&gt;
&lt;br /&gt;
米游社：[https://www.miyoushe.com/ys/accountCenter/postList?id=72321239]&lt;br /&gt;
&lt;br /&gt;
GitHub主页：[https://github.com/mujianwu]&lt;/div&gt;</summary>
		<author><name>Snnbyyds</name></author>
	</entry>
	<entry>
		<id>https://wiki.uotan.cn/index.php?title=Hellobbn&amp;diff=419</id>
		<title>Hellobbn</title>
		<link rel="alternate" type="text/html" href="https://wiki.uotan.cn/index.php?title=Hellobbn&amp;diff=419"/>
		<updated>2024-02-16T00:47:24Z</updated>

		<summary type="html">&lt;p&gt;Snnbyyds：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;hellobbn是一位实力强大的开发者，擅长为许多索尼设备维护LineageOS。他具备卓越的技术能力和丰富的经验，为LineageOS的开发和维护做出了重大贡献，例如，在LineageOS中由Lineage Health HAL实现的充电控制功能就是由他贡献的&amp;lt;ref&amp;gt;https://review.lineageos.org/q/topic:%22charging-control-hal-20%22&amp;lt;/ref&amp;gt;。他参与维护的设备包括但不限于Sony Xperia 5 III，Sony Xperia 1 III，Sony Xperia 1 II，qti Lahaina for arm64等等。&lt;br /&gt;
&lt;br /&gt;
同时，他也是一位善良且乐于助人的人。他总是愿意分享自己的知识和经验，为新手开发者们指明前进的方向！&lt;br /&gt;
&lt;br /&gt;
总体而言，hellobbn是一位值得称赞的安卓开发者。我们期待他在该领域继续取得更大的成就，并为整个社区带来更多的创新和进步。&lt;br /&gt;
&lt;br /&gt;
GitHub主页：[https://github.com/hellobbn]&lt;br /&gt;
&lt;br /&gt;
个人bilibili主页：[https://space.bilibili.com/9030051]&lt;/div&gt;</summary>
		<author><name>Snnbyyds</name></author>
	</entry>
	<entry>
		<id>https://wiki.uotan.cn/index.php?title=Hellobbn&amp;diff=418</id>
		<title>Hellobbn</title>
		<link rel="alternate" type="text/html" href="https://wiki.uotan.cn/index.php?title=Hellobbn&amp;diff=418"/>
		<updated>2024-02-16T00:45:22Z</updated>

		<summary type="html">&lt;p&gt;Snnbyyds：​创建页面，内容为“hellobbn是一位实力强大的开发者，擅长为许多索尼设备维护LineageOS。他具备卓越的技术能力和丰富的经验，为LineageOS的开发和维护做出了重大贡献，例如，在LineageOS中由Lineage Health HAL实现的充电控制功能就是由他贡献的&amp;lt;ref&amp;gt;https://review.lineageos.org/q/topic:%22charging-control-hal-20%22&amp;lt;/ref&amp;gt;。他参与维护的设备包括但不限于Sony Xperia 5 III，Sony Xperia 1 III，Sony Xperia 1 II…”&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;hellobbn是一位实力强大的开发者，擅长为许多索尼设备维护LineageOS。他具备卓越的技术能力和丰富的经验，为LineageOS的开发和维护做出了重大贡献，例如，在LineageOS中由Lineage Health HAL实现的充电控制功能就是由他贡献的&amp;lt;ref&amp;gt;https://review.lineageos.org/q/topic:%22charging-control-hal-20%22&amp;lt;/ref&amp;gt;。他参与维护的设备包括但不限于Sony Xperia 5 III，Sony Xperia 1 III，Sony Xperia 1 II，qti Lahaina for arm64等等。&lt;br /&gt;
&lt;br /&gt;
同时，他也是一位善良且乐于助人的人。他总是愿意分享自己的知识和经验，为新手开发者们指明前进的方向！&lt;br /&gt;
&lt;br /&gt;
总体而言，hellobbn是一位值得称赞的安卓开发者。我们期待他在该领域继续取得更大的成就，并为整个社区带来更多的创新和进步。&lt;/div&gt;</summary>
		<author><name>Snnbyyds</name></author>
	</entry>
	<entry>
		<id>https://wiki.uotan.cn/index.php?title=%E7%94%A8%E6%88%B7:Snnbyyds&amp;diff=351</id>
		<title>用户:Snnbyyds</title>
		<link rel="alternate" type="text/html" href="https://wiki.uotan.cn/index.php?title=%E7%94%A8%E6%88%B7:Snnbyyds&amp;diff=351"/>
		<updated>2024-02-15T11:46:25Z</updated>

		<summary type="html">&lt;p&gt;Snnbyyds：​创建页面，内容为“田所浩二爱好者”&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;田所浩二爱好者&lt;/div&gt;</summary>
		<author><name>Snnbyyds</name></author>
	</entry>
	<entry>
		<id>https://wiki.uotan.cn/index.php?title=%E5%B0%8F%E5%A4%AA%E9%98%B3ACA&amp;diff=288</id>
		<title>小太阳ACA</title>
		<link rel="alternate" type="text/html" href="https://wiki.uotan.cn/index.php?title=%E5%B0%8F%E5%A4%AA%E9%98%B3ACA&amp;diff=288"/>
		<updated>2024-02-15T07:08:13Z</updated>

		<summary type="html">&lt;p&gt;Snnbyyds：​创建页面，内容为“小太阳ACA/BigfootACA是一名优秀的开发者，是Renegade Project项目组的成员和主要贡献者之一，对于Linux等方面的开发也有着深入的研究。他技术高超，拥有精益求精的匠心精神。同时，他待人和善，乐于助人，在社区中受到人们的广泛认同。  他的作品有但不限于simple-init，qc-devcfg-parser，linux-simple-mass-storage，BigfootBot, 你能在他的GitHub主页找到他的多个优秀…”&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;小太阳ACA/BigfootACA是一名优秀的开发者，是Renegade Project项目组的成员和主要贡献者之一，对于Linux等方面的开发也有着深入的研究。他技术高超，拥有精益求精的匠心精神。同时，他待人和善，乐于助人，在社区中受到人们的广泛认同。&lt;br /&gt;
&lt;br /&gt;
他的作品有但不限于simple-init，qc-devcfg-parser，linux-simple-mass-storage，BigfootBot, 你能在他的GitHub主页找到他的多个优秀项目！&lt;br /&gt;
&lt;br /&gt;
GitHub主页：[https://github.com/BigfootACA]&lt;br /&gt;
&lt;br /&gt;
个人bilibili主页：[https://space.bilibili.com/238352216]&lt;/div&gt;</summary>
		<author><name>Snnbyyds</name></author>
	</entry>
	<entry>
		<id>https://wiki.uotan.cn/index.php?title=%E4%B8%BA%E6%89%8B%E6%9C%BA%E5%AE%89%E8%A3%85Linux&amp;diff=263</id>
		<title>为手机安装Linux</title>
		<link rel="alternate" type="text/html" href="https://wiki.uotan.cn/index.php?title=%E4%B8%BA%E6%89%8B%E6%9C%BA%E5%AE%89%E8%A3%85Linux&amp;diff=263"/>
		<updated>2024-02-15T02:31:41Z</updated>

		<summary type="html">&lt;p&gt;Snnbyyds：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== 该章节将引导你为一些手机安装主线Linux操作系统 ==&lt;br /&gt;
注意：本教程中，操作环境为64位Ubuntu，目标机器为OnePlus6T，我们将尝试利用UEFI在OnePlus6T上启动Archlinux&lt;br /&gt;
* 不同于Windows, Linux的安装过程可能具有一定的复杂性，步骤繁杂，方案多样，如果你使用不同的机型，请先仔细阅读本文和搜索资料；此外，主线Linux的开发（内核驱动移植，制作dts等）不在本文讨论范畴内。&lt;br /&gt;
[[文件:Archlinux-neofetch-op6t.png|缩略图|无|349x349像素]]&lt;br /&gt;
=== 1 编译内核 ===&lt;br /&gt;
sdm845成品：&lt;br /&gt;
[Releases · silime/kernel-builder (github.com)](https://github.com/silime/kernel-builder)&lt;br /&gt;
==== 1.1 安装相关依赖 ====&lt;br /&gt;
对于Ubuntu 22.04 LTS:&lt;br /&gt;
&lt;br /&gt;
 sudo apt install build-essential openssl pkg-config libssl-dev libncurses5-dev pkg-config minizip libelf-dev flex bison  libc6-dev libidn11-dev rsync bc liblz4-tool  &lt;br /&gt;
 sudo apt install gcc-aarch64-linux-gnu dpkg-dev git&lt;br /&gt;
&lt;br /&gt;
==== 1.2 克隆内核源码 ====&lt;br /&gt;
你可以在“-b”参数后选择其他分支&lt;br /&gt;
&lt;br /&gt;
 mkdir ~/workspace&lt;br /&gt;
 cd ~/workspace&lt;br /&gt;
 git clone --depth=1 https://gitlab.com/sdm845-mainline/linux.git -b sdm845/6.8-dev&lt;br /&gt;
&lt;br /&gt;
可用分支可在gitlab网页查看&lt;br /&gt;
&lt;br /&gt;
==== 1.3  生成 .config ====&lt;br /&gt;
 make ARCH=arm64 defconfig sdm845.config&lt;br /&gt;
 # generate .config&lt;br /&gt;
&lt;br /&gt;
==== 1.4 进行编译 ====&lt;br /&gt;
&lt;br /&gt;
 make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- -j$(nproc)&lt;br /&gt;
&lt;br /&gt;
生成deb包供Debian系得GNU/Linux使用&lt;br /&gt;
&lt;br /&gt;
 make -j$(nproc) ARCH=arm64 KBUILD_DEBARCH=arm64 KDEB_CHANGELOG_DIST=mobile CROSS_COMPILE=aarch64-linux-gnu- deb-pkg&lt;br /&gt;
 # This will generate several deb files in ../&lt;br /&gt;
&lt;br /&gt;
=== 2 制作rootfs ===&lt;br /&gt;
==== 2.1 下载 ====&lt;br /&gt;
对于Archlinux，从http://os.archlinuxarm.org/os/ArchLinuxARM-aarch64-latest.tar.gz下载&lt;br /&gt;
&lt;br /&gt;
 cd ~/workspace&lt;br /&gt;
 wget http://os.archlinuxarm.org/os/ArchLinuxARM-aarch64-latest.tar.gz&lt;br /&gt;
&lt;br /&gt;
对于Ubuntu，从 [Index of /ubuntu-base](https://cdimage.ubuntu.com/ubuntu-base/)选择自己想要的版本&lt;br /&gt;
==== 2.2 制作 ====&lt;br /&gt;
===== 2.2.1 进入chroot =====&lt;br /&gt;
由于rootfs为ARM64，所以安装qemu-user-static&lt;br /&gt;
 sudo apt install qemu-user-static &lt;br /&gt;
&lt;br /&gt;
创建img并挂载&lt;br /&gt;
&lt;br /&gt;
 dd if=/dev/zero of=archlinux.img bs=1G count=6&lt;br /&gt;
 mkfs.ext4 archlinux.img&lt;br /&gt;
 mkdir arch&lt;br /&gt;
 sudo mount archlinux.img arch&lt;br /&gt;
&lt;br /&gt;
解压&lt;br /&gt;
&lt;br /&gt;
 cd arch&lt;br /&gt;
 sudo tar -xpvf ../ArchLinuxARM-aarch64-latest.tar.gz&lt;br /&gt;
&lt;br /&gt;
进入chroot环境&lt;br /&gt;
&lt;br /&gt;
 cd ..&lt;br /&gt;
 sudo mount --bind /dev arch/dev&lt;br /&gt;
 sudo mount -t devpts devpts arch/dev/pts -o gid=5,mode=620&lt;br /&gt;
 sudo mount -t proc proc arch/proc&lt;br /&gt;
 sudo mount -t sysfs sysfs arch/sys&lt;br /&gt;
 sudo mount -t tmpfs tmpfs arch/run&lt;br /&gt;
 &lt;br /&gt;
 sudo rm -rf arch/etc/resolv.conf &amp;amp;&amp;amp; sudo cp /etc/resolv.conf arch/etc/&lt;br /&gt;
 &lt;br /&gt;
 sudo chroot arch&lt;br /&gt;
===== 2.2.2 初始化pacman keyring =====&lt;br /&gt;
 pacman-key --init&lt;br /&gt;
 pacman-key --populate archlinuxarm&lt;br /&gt;
===== 2.2.3 换源 （可选） =====&lt;br /&gt;
详见 https://mirrors.tuna.tsinghua.edu.cn/help/archlinuxarm/&lt;br /&gt;
&lt;br /&gt;
 pacman -Syyu&lt;br /&gt;
 # upgrade&lt;br /&gt;
&lt;br /&gt;
===== 2.2.4 卸载旧的内核和firmware =====&lt;br /&gt;
 pacman -Q | grep -i linux&lt;br /&gt;
 pacman -R linux-aarch64 linux-firmware linux-firmware-whence&lt;br /&gt;
 &lt;br /&gt;
 exit&lt;br /&gt;
 # exit chroot environment&lt;br /&gt;
&lt;br /&gt;
===== 2.2.5 安装新的内核 =====&lt;br /&gt;
* 确保已经退出`chroot`环境&lt;br /&gt;
然后：&lt;br /&gt;
 cd ~/workspace/linux&lt;br /&gt;
 sudo make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu-  INSTALL_MOD_PATH=~/workspace/arch modules_install&lt;br /&gt;
 sudo make ARCH=arm64 INSTALL_PATH=~/workspace/arch/boot install&lt;br /&gt;
如果是`debian`系也可以直接chroot环境中用dpkg安装deb：&amp;lt;code&amp;gt;dpkg -i *.deb&amp;lt;/code&amp;gt;&lt;br /&gt;
===== 2.2.6 安装新的firmware =====&lt;br /&gt;
* 可以尝试从PostmarketOS&amp;lt;ref&amp;gt;https://wiki.postmarketos.org/wiki/OnePlus_6T_(oneplus-fajita)&amp;lt;/ref&amp;gt;中提取&lt;br /&gt;
进入chroot环境&lt;br /&gt;
 sudo chroot ~/workspace/arch&lt;br /&gt;
移动解压得到的文件&lt;br /&gt;
 mv * /usr/lib/firmware/&lt;br /&gt;
 ldconfig&lt;br /&gt;
修改/etc/mkinitcpio.conf&lt;br /&gt;
 nano /etc/mkinitcpio.conf&lt;br /&gt;
找到&lt;br /&gt;
 # BINARIES&lt;br /&gt;
 # This setting includes any additional binaries a given user may&lt;br /&gt;
 # wish into the CPIO image.  This is run last, so it may be used to&lt;br /&gt;
 # override the actual binaries included by a given hook&lt;br /&gt;
 # BINARIES are dependency parsed, so you may safely ignore libraries&lt;br /&gt;
 BINARIES=()&lt;br /&gt;
在`BINARIES=()`填入`xxxx_zap.mbn/ipa_fws.mbn`的路径&lt;br /&gt;
这两个固件的来源一般是手机提取并放在特殊的位置加载（具体由`dts/dtsi`指定）&lt;br /&gt;
对于fajita，改为：&lt;br /&gt;
  BINARIES=(/usr/lib/firmware/qcom/sdm845/oneplus6/a630_zap.mbn /usr/lib/firmware/qcom/sdm845/oneplus6/ipa_fws.mbn)&lt;br /&gt;
生成initrd.img&lt;br /&gt;
 ls /usr/lib/modules&lt;br /&gt;
 # get kernel version&lt;br /&gt;
 mkinitcpio --generate /boot/initrd.img-5.18.0-sdm845-00109-gf7ad1e5036bb-dirty --kernel 5.18.0-sdm845-00109-gf7ad1e5036bb-dirty&lt;br /&gt;
===== 2.2.7 安装软件包和基本配置&amp;lt;ref&amp;gt;https://archlinuxstudio.github.io/ArchLinuxTutorial/#/&amp;lt;/ref&amp;gt; =====&lt;br /&gt;
====== 2.2.7.1 设置时区 ======&lt;br /&gt;
 ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime&lt;br /&gt;
 # Shanghai&lt;br /&gt;
====== 2.2.7.2 设置locale ======&lt;br /&gt;
参考：https://wiki.archlinux.org/title/Locale&lt;br /&gt;
&lt;br /&gt;
 nano /etc/locale.gen&lt;br /&gt;
 # uncomment en_US.UTF-8 UTF-8&lt;br /&gt;
 # uncomment zh_CN.UTF-8 UTF-8&lt;br /&gt;
 &lt;br /&gt;
 locale-gen&lt;br /&gt;
&lt;br /&gt;
====== 2.2.7.3 自定义主机名 ======&lt;br /&gt;
 # For example&lt;br /&gt;
 echo 'OnePlus6T' &amp;gt; /etc/hostname&lt;br /&gt;
&lt;br /&gt;
====== 2.2.7.4 alarm（Archlinuxarm内置非root用户）配置 ======&lt;br /&gt;
&lt;br /&gt;
更改alarm密码，并添加到wheel用户组&lt;br /&gt;
&lt;br /&gt;
 passwd alarm&lt;br /&gt;
 # Change its password. Default is &amp;quot;alarm&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 usermod -aG wheel alarm&lt;br /&gt;
&lt;br /&gt;
添加sudo，设置sudo权限&lt;br /&gt;
&lt;br /&gt;
 pacman -S sudo&lt;br /&gt;
 EDITOR=nano visudo&lt;br /&gt;
&lt;br /&gt;
 找到下面这样的一行，把前面的注释符号 `#` 去掉&lt;br /&gt;
&lt;br /&gt;
 #%wheel ALL=(ALL:ALL) ALL&lt;br /&gt;
&lt;br /&gt;
====== 2.2.7.5 必要软件包 ======&lt;br /&gt;
 pacman -S base base-devel dhcpcd iwd&lt;br /&gt;
 pacman -S grub efibootmgr&lt;br /&gt;
 &lt;br /&gt;
 pacman -S networkmanager modemmanager&lt;br /&gt;
 pacman -S bluez bluez-utils pulseaudio-bluetooth&lt;br /&gt;
 pacman -S qrtr rmtfs&lt;br /&gt;
 systemctl enable NetworkManager bluetooth qrtr-ns rmtfs &lt;br /&gt;
 systemctl enable ModemManager&lt;br /&gt;
&lt;br /&gt;
 pacman -S git wget&lt;br /&gt;
 pacman -S ntfs-3g usbutils&lt;br /&gt;
&lt;br /&gt;
再安装 pd-mapper 和 tqftpserv&lt;br /&gt;
* 可以此处下载成品：https://github.com/silime/ArchLinux-Packages&lt;br /&gt;
* 也可以在步骤2.2.7.6后直接用pacman安装！&lt;br /&gt;
* 注：默认的PKGBUILD有问题，需要手动修复，在这里不详细描述，如果嫌麻烦，也可以直接编译安装&lt;br /&gt;
a. 直接编译安装（不推荐）：&lt;br /&gt;
 git clone https://github.com/andersson/pd-mapper.git&lt;br /&gt;
 git clone https://github.com/andersson/tqftpserv.git&lt;br /&gt;
 cd pd-mapper &amp;amp;&amp;amp; make &amp;amp;&amp;amp; make install &amp;amp;&amp;amp; cd ..&lt;br /&gt;
 cd tqftpserv &amp;amp;&amp;amp; make &amp;amp;&amp;amp; make install &amp;amp;&amp;amp; cd ..&lt;br /&gt;
 &lt;br /&gt;
 # clean&lt;br /&gt;
 rm -rf tqftpserv pd-mapper&lt;br /&gt;
&lt;br /&gt;
b. 使用pkgbuild&lt;br /&gt;
 # Switch to alarm first&lt;br /&gt;
 su alarm&lt;br /&gt;
&lt;br /&gt;
 cd ~&lt;br /&gt;
 # Compile and Install pd-mapper&lt;br /&gt;
 git clone https://aur.archlinux.org/pd-mapper-git.git ~/pd-mapper-git&lt;br /&gt;
 cd ~/pd-mapper-git&lt;br /&gt;
 &lt;br /&gt;
 nano PKGBUILD&lt;br /&gt;
 # fix some errors&lt;br /&gt;
 makepkg -si&lt;br /&gt;
 &lt;br /&gt;
 #Compile and Install tqftpserv&lt;br /&gt;
 git clone https://aur.archlinux.org/tqftpserv-git.git ~/tqftpserv-git&lt;br /&gt;
 cd ~/tqftpserv-git&lt;br /&gt;
 &lt;br /&gt;
 nano PKGBUILD&lt;br /&gt;
 # fix some errors&lt;br /&gt;
 makepkg -si&lt;br /&gt;
&lt;br /&gt;
启用 pd-mapper 和 tqftpserv&lt;br /&gt;
 sudo systemctl enable tqftpserv pd-mapper&lt;br /&gt;
回到root用户&lt;br /&gt;
 exit&lt;br /&gt;
&lt;br /&gt;
====== 2.2.7.6 添加Renegade Project源&amp;lt;ref&amp;gt;https://mirror.renegade-project.tech/index.html#/&amp;lt;/ref&amp;gt;（可选） ======&lt;br /&gt;
导入 GPG key:&lt;br /&gt;
 pacman-key --recv-keys 5E29D8F17064598A7A2223E2C735F8DF5B624511&lt;br /&gt;
 pacman-key --lsign-key 5E29D8F17064598A7A2223E2C735F8DF5B624511&lt;br /&gt;
在 /etc/pacman.conf 文件末尾添加以下内容：&lt;br /&gt;
 [renegade-project]&lt;br /&gt;
 Server = https://mirror.renegade-project.tech/arch/$arch&lt;br /&gt;
安装 renegade-project-keyring：&lt;br /&gt;
 pacman -S renegade-project-keyring&lt;br /&gt;
刷新&lt;br /&gt;
 pacman -Syy&lt;br /&gt;
&lt;br /&gt;
====== 2.2.7.7 安装用于切换slot的qbootctl（推荐） ======&lt;br /&gt;
* 确保已经完成了步骤2.2.7.6&lt;br /&gt;
 pacman -Sy qbootctl&lt;br /&gt;
&lt;br /&gt;
====== 2.2.7.8 安装更多package使一些硬件工作 ======&lt;br /&gt;
* 来自：https://github.com/silime/ArchLinux-Packages/releases&lt;br /&gt;
** 请用pacman安装[https://github.com/silime/ArchLinux-Packages/releases/tag/sensors sensors package]，[https://github.com/silime/ArchLinux-Packages/releases/tag/alsa-ucm-oneplus-0.5.10 alsa-ucm-oneplus-0.5.10]，[https://github.com/silime/ArchLinux-Packages/releases/tag/q6voice q6voice]&lt;br /&gt;
&lt;br /&gt;
====== 2.2.7.9 修改Modemmanager ======&lt;br /&gt;
* 重新编译ModemManager，开启`plugin_qcom_soc`,并安装&lt;br /&gt;
 su alarm&lt;br /&gt;
 mkdir ~/modemmanager&lt;br /&gt;
 cd ~/modemmanager&lt;br /&gt;
 nano PKGBUILD&lt;br /&gt;
* 将 [PKGBUILD - modemmanager (aarch64) | Package Files | Arch Linux ARM](https://archlinuxarm.org/packages/aarch64/modemmanager/files/PKGBUILD) 中的内容复制进PKGBUILD，然后进行以下修改&lt;br /&gt;
** 将`arch=(x86_64)`改为`arch=(x86_64 aarch64)`&lt;br /&gt;
** 将`-D plugin_qcom_soc=disabled`一行删除&lt;br /&gt;
 10c10&lt;br /&gt;
 &amp;lt; arch=(x86_64)&lt;br /&gt;
 ---&lt;br /&gt;
 &amp;gt; arch=(x86_64 aarch64)&lt;br /&gt;
 35d34&lt;br /&gt;
 &amp;lt;     -D plugin_qcom_soc=disabled&lt;br /&gt;
* 编译和安装&lt;br /&gt;
 makepkg -rsi&lt;br /&gt;
 # compile and install&lt;br /&gt;
 &lt;br /&gt;
 cd ..&lt;br /&gt;
 sudo rm -rf ~/modemmanager&lt;br /&gt;
 exit&lt;br /&gt;
&lt;br /&gt;
 systemctl enable ModemManager&lt;br /&gt;
&lt;br /&gt;
====== 2.2.7.10 其他软件 ======&lt;br /&gt;
中文字体&lt;br /&gt;
&lt;br /&gt;
 pacman -S noto-fonts-cjk&lt;br /&gt;
 # Chinese fonts&lt;br /&gt;
&lt;br /&gt;
yay&lt;br /&gt;
&lt;br /&gt;
 su alarm&lt;br /&gt;
 cd ~&lt;br /&gt;
 git clone https://aur.archlinux.org/yay-bin.git&lt;br /&gt;
 cd yay-bin &amp;amp;&amp;amp; makepkg -si&lt;br /&gt;
 exit&lt;br /&gt;
&lt;br /&gt;
桌面环境&lt;br /&gt;
&lt;br /&gt;
* 自选，建议gnome或phosh&lt;br /&gt;
** 如`gnome`&lt;br /&gt;
&lt;br /&gt;
 pacman -S gnome&lt;br /&gt;
 systemctl enable gdm&lt;br /&gt;
&lt;br /&gt;
* 如安装phosh，建议添加danctnix源 [danctnix (arikawa-hi.me)](https://p64.arikawa-hi.me/danctnix/)，然后安装&lt;br /&gt;
&lt;br /&gt;
网络浏览器&lt;br /&gt;
&lt;br /&gt;
 # for example, chromium&lt;br /&gt;
 pacman -S chromium&lt;br /&gt;
&lt;br /&gt;
===== 2.2.8 tfa98xx音频修复 =====&lt;br /&gt;
 echo 'snd-soc-tfa98xx' &amp;gt; /etc/modules-load.d/snd-soc-tfa98xx.conf&lt;br /&gt;
&lt;br /&gt;
===== 2.2.9 打包 =====&lt;br /&gt;
先清理，在chroot环境中&lt;br /&gt;
&lt;br /&gt;
 pacman -Scc&lt;br /&gt;
 # pacman&lt;br /&gt;
&lt;br /&gt;
进alarm用户&lt;br /&gt;
 su alarm # switch to alarm&lt;br /&gt;
 # clean bash history for alarm&lt;br /&gt;
 cat /dev/null &amp;gt; ~/.bash_history &amp;amp;&amp;amp; history -c &amp;amp;&amp;amp; exit&lt;br /&gt;
&lt;br /&gt;
在root用户&lt;br /&gt;
 # clean bash history for root&lt;br /&gt;
 cat /dev/null &amp;gt; ~/.bash_history &amp;amp;&amp;amp; history -c&lt;br /&gt;
&lt;br /&gt;
退出chroot环境&lt;br /&gt;
&lt;br /&gt;
 exit&lt;br /&gt;
&lt;br /&gt;
解除挂载&lt;br /&gt;
&lt;br /&gt;
 cd ~/workspace&lt;br /&gt;
 sudo umount ~/workspace/arch/run&lt;br /&gt;
 sudo umount ~/workspace/arch/sys&lt;br /&gt;
 sudo umount ~/workspace/arch/proc&lt;br /&gt;
 sudo umount ~/workspace/arch/dev/pts&lt;br /&gt;
 sudo umount ~/workspace/arch/dev&lt;br /&gt;
&lt;br /&gt;
用tar打包&lt;br /&gt;
&lt;br /&gt;
 cd ~/workspace/arch&lt;br /&gt;
 sudo tar -czvf ~/workspace/arch.tar.gz *&lt;br /&gt;
 # This will generate arch.tar.gz&lt;br /&gt;
&lt;br /&gt;
=== 3 安装到手机 ===&lt;br /&gt;
==== 3.1 刷入twrp和Magisk ====&lt;br /&gt;
* 你也可以使用KernelSU或其它方式获取root权限&lt;br /&gt;
==== 3.2 分区、格式化分区 ====&lt;br /&gt;
连接手机、电脑，手机进twrp&lt;br /&gt;
&lt;br /&gt;
将`parted`复制到手机储存&lt;br /&gt;
&lt;br /&gt;
电脑输入：&lt;br /&gt;
 adb shell&lt;br /&gt;
然后输入：&lt;br /&gt;
 cp /sdcard/parted /sbin/ &amp;amp;&amp;amp; chmod 755 /sbin/parted&lt;br /&gt;
 umount /data &amp;amp;&amp;amp; umount /sdcard&lt;br /&gt;
 parted /dev/block/sda&lt;br /&gt;
输入`p`查看当前分区情况&lt;br /&gt;
 p&lt;br /&gt;
对于一加6T，可这样分区：&lt;br /&gt;
* 压缩分区17&lt;br /&gt;
 resizepart 17&lt;br /&gt;
 # input 61GB &lt;br /&gt;
* 创建新分区&lt;br /&gt;
 mkpart esp fat32 61GB 62GB&lt;br /&gt;
 mkpart arch ext4 62GB 125GB&lt;br /&gt;
 set 18 esp on&lt;br /&gt;
随后退出parted&lt;br /&gt;
 q&lt;br /&gt;
再次重启到twrp，格式化各分区&lt;br /&gt;
&lt;br /&gt;
电脑输入：&lt;br /&gt;
 adb shell&lt;br /&gt;
然后输入：&lt;br /&gt;
 mkfs.fat -F32 -s1 /dev/block/by-name/esp&lt;br /&gt;
 mke2fs -t ext4 /dev/block/by-name/arch&lt;br /&gt;
 mke2fs -t ext4 /dev/block/by-name/userdata&lt;br /&gt;
&lt;br /&gt;
==== 3.3 获取UUID ====&lt;br /&gt;
重启到Android，在termux或adb shell输入&lt;br /&gt;
 su&lt;br /&gt;
 blkid /dev/block/by-name/arch&lt;br /&gt;
记下UUID值&lt;br /&gt;
&lt;br /&gt;
==== 3.4 准备grub配置文件 ====&lt;br /&gt;
*下载：&lt;br /&gt;
** https://forum.renegade-project.tech/uploads/short-url/hlr2fHanyoSkM1pOPy1eywhLiSm.zip&lt;br /&gt;
** https://forum.renegade-project.tech/uploads/short-url/hlr2fHanyoSkM1pOPy1eywhLiSm.zip&lt;br /&gt;
&lt;br /&gt;
将boot.tar.gz中grub.cfg的uuid全部改为步骤3.3中得到的&lt;br /&gt;
替换所有这种字符&lt;br /&gt;
[[文件:3a12afa8f91aef1d2d2fb693b93d0e13eae37729.png|缩略图]]&lt;br /&gt;
==== 3.5 解压rootfs ====&lt;br /&gt;
将arch.tar.gz复制到手机内部存储&lt;br /&gt;
* 建议使用termux操作&lt;br /&gt;
 pkg update&lt;br /&gt;
 pkg install tsu&lt;br /&gt;
提权&lt;br /&gt;
 tsu&lt;br /&gt;
 # root permission needed&lt;br /&gt;
挂载&amp;amp;解压&lt;br /&gt;
 cd ~&lt;br /&gt;
 mkdir arch&lt;br /&gt;
 mount /dev/block/by-name/arch ~/arch&lt;br /&gt;
 &lt;br /&gt;
 cd ~/arch&lt;br /&gt;
 tar -xpvf /sdcard/arch.tar.gz&lt;br /&gt;
 # extract&lt;br /&gt;
&lt;br /&gt;
==== 3.6 安装grub ====&lt;br /&gt;
 tsu&lt;br /&gt;
&lt;br /&gt;
 cd ~&lt;br /&gt;
 mkdir esp&lt;br /&gt;
&lt;br /&gt;
 mount /dev/block/by-name/esp esp&lt;br /&gt;
 mkdir esp/EFI&lt;br /&gt;
&lt;br /&gt;
将esp.zip中这两个文件夹复制到~/esp/EFI/&lt;br /&gt;
&lt;br /&gt;
将boot.tar.gz内两个文件夹复制进~/arch/boot&lt;br /&gt;
* 检查&lt;br /&gt;
 # /dev/block/by-name/arch has been mounted!&lt;br /&gt;
 cd ~/arch/boot &amp;amp;&amp;amp; ls&lt;br /&gt;
&lt;br /&gt;
==== 3.7 获取、添加dtb ====&lt;br /&gt;
对于一加6T，还需要将这两个dtb复制到~/arch/boot&lt;br /&gt;
* 注：对于一加6（T）不要使用内核编译生成的dtb&lt;br /&gt;
** 见arch/arm64/boot/dts/qcom/sdm845-oneplus-common.dtsi,将不会有显示&lt;br /&gt;
对于其它设备，请获取合适的dtb&lt;br /&gt;
&lt;br /&gt;
 /delete-node/ &amp;amp;rmtfs_mem;&lt;br /&gt;
 &lt;br /&gt;
 / {&lt;br /&gt;
 	aliases {&lt;br /&gt;
 		serial0 = &amp;amp;uart9;&lt;br /&gt;
 		hsuart0 = &amp;amp;uart6;&lt;br /&gt;
 	};&lt;br /&gt;
 &lt;br /&gt;
 	chosen {&lt;br /&gt;
 		stdout-path = &amp;quot;serial0:115200n8&amp;quot;; /*line 30 in dtsi*/&lt;br /&gt;
 	};&lt;br /&gt;
 &lt;br /&gt;
 	volume-keys {&lt;br /&gt;
 		compatible = &amp;quot;gpio-keys&amp;quot;;&lt;br /&gt;
 		label = &amp;quot;Volume keys&amp;quot;;&lt;br /&gt;
 		autorepeat;&lt;br /&gt;
&lt;br /&gt;
=====  3.7.1 dtb的获取 =====&lt;br /&gt;
下载适用自己设备的postmarketOS的boot.img.xz，解压得到img文件&lt;br /&gt;
&lt;br /&gt;
使用 extract-dtb&amp;lt;ref&amp;gt;https://pypi.org/project/extract-dtb/&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple extract-dtb&lt;br /&gt;
 extract-dtb 20220608-1408-postmarketOS-v22.06-phosh-18-oneplus-fajita-boot.img -o .&lt;br /&gt;
 # use your own img&lt;br /&gt;
 # will generate something like 01_dtbdump_,OnePlus_6T.dtb&lt;br /&gt;
 &lt;br /&gt;
 ls&lt;br /&gt;
 mv 01_dtbdump_,OnePlus_6T.dtb sdm845-oneplus-fajita.dtb&lt;br /&gt;
&lt;br /&gt;
===== 3.7.2 修改dtb，使得可能支持USB otg =====&lt;br /&gt;
安装dtc工具&lt;br /&gt;
 sudo apt install device-tree-compiler -y&lt;br /&gt;
&lt;br /&gt;
转换dtb为dts&lt;br /&gt;
 dtc -I dtb -O dts -o temp.dts sdm845-oneplus-fajita.dtb&lt;br /&gt;
&lt;br /&gt;
修改temp.dts&lt;br /&gt;
 nano temp.dts&lt;br /&gt;
&lt;br /&gt;
查找`dr_mode`&lt;br /&gt;
                         dwc3@a600000 {&lt;br /&gt;
                                 compatible = &amp;quot;snps,dwc3&amp;quot;;&lt;br /&gt;
                                 reg = &amp;lt;0x00 0xa600000 0x00 0xcd00&amp;gt;;&lt;br /&gt;
                                 interrupts = &amp;lt;0x00 0x85 0x04&amp;gt;;&lt;br /&gt;
                                 iommus = &amp;lt;0x25 0x740 0x00&amp;gt;;&lt;br /&gt;
                                 snps,dis_u2_susphy_quirk;&lt;br /&gt;
                                 snps,dis_enblslpm_quirk;&lt;br /&gt;
                                 phys = &amp;lt;0xb8&amp;gt;;&lt;br /&gt;
                                 phy-names = &amp;quot;usb2-phy&amp;quot;;&lt;br /&gt;
                                 dr_mode = &amp;quot;peripheral&amp;quot;;&lt;br /&gt;
                                 maximum-speed = &amp;quot;high-speed&amp;quot;;&lt;br /&gt;
                         };&lt;br /&gt;
&lt;br /&gt;
将`peripheral`改为`host` 此时生成的dtb将支持otg，但要外界供电，为了USB主动供电，需要进一步修改,但会导致充电失效&lt;br /&gt;
将charger@1000那段删除&lt;br /&gt;
 &lt;br /&gt;
                         pmic@2 {&lt;br /&gt;
                                 compatible = &amp;quot;qcom,pmi8998\0qcom,spmi-pmic&amp;quot;;&lt;br /&gt;
                                 reg = &amp;lt;0x02 0x00&amp;gt;;&lt;br /&gt;
                                 #address-cells = &amp;lt;0x01&amp;gt;;&lt;br /&gt;
                                 #size-cells = &amp;lt;0x00&amp;gt;;&lt;br /&gt;
 &lt;br /&gt;
                                 charger@1000 {&lt;br /&gt;
                                         compatible = &amp;quot;qcom,pmi8998-charger&amp;quot;;&lt;br /&gt;
                                         reg = &amp;lt;0x1000&amp;gt;;&lt;br /&gt;
                                         interrupts = &amp;lt;0x02 0x13 0x04 0x03 0x02 0x&amp;gt;&lt;br /&gt;
                                         interrupt-names = &amp;quot;usb-plugin\0bat-ov\0wd&amp;gt;&lt;br /&gt;
                                         io-channels = &amp;lt;0xdd 0x03 0xdd 0x04&amp;gt;;&lt;br /&gt;
                                         io-channel-names = &amp;quot;usbin_i\0usbin_v&amp;quot;;&lt;br /&gt;
                                         status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
                                         monitored-battery = &amp;lt;0xde&amp;gt;;&lt;br /&gt;
                                 };&lt;br /&gt;
 &lt;br /&gt;
                                 gpios@c000 {&lt;br /&gt;
                                         compatible = &amp;quot;qcom,pmi8998-gpio\0qcom,spm&amp;gt;&lt;br /&gt;
                                         reg = &amp;lt;0xc000&amp;gt;;&lt;br /&gt;
                                         gpio-controller;&lt;br /&gt;
                                         gpio-ranges = &amp;lt;0xdf 0x00 0x00 0x0e&amp;gt;;&lt;br /&gt;
                                         #gpio-cells = &amp;lt;0x02&amp;gt;;&lt;br /&gt;
                                         interrupt-controller;&lt;br /&gt;
                                         #interrupt-cells = &amp;lt;0x02&amp;gt;;&lt;br /&gt;
                                         phandle = &amp;lt;0xdf&amp;gt;;&lt;br /&gt;
                                 };&lt;br /&gt;
&lt;br /&gt;
生成新的dtb&lt;br /&gt;
 dtc -I dts -O dtb -o sdm845-oneplus-fajita-host.dtb temp.dts&lt;br /&gt;
复制好dtb，你的usb otg应该就**有可能**工作&lt;br /&gt;
&lt;br /&gt;
=== 4 刷入UEFI ===&lt;br /&gt;
进入bootloader&lt;br /&gt;
&lt;br /&gt;
临时启动&lt;br /&gt;
 fastboot boot boot-xxx.img&lt;br /&gt;
&lt;br /&gt;
刷入到当前boot分区&lt;br /&gt;
 fastboot flash boot boot-xxx.img&lt;br /&gt;
&lt;br /&gt;
=== 5 Enjoy！===&lt;br /&gt;
恭喜你！你已经成功在你的手机上安装Archlinux！！希望你能有所收获！！ &lt;br /&gt;
==== 5.1 adbd ====&lt;br /&gt;
* 确保已经添加Renegade Project源&lt;br /&gt;
 sudo pacman -S adbd&lt;br /&gt;
adbd能帮助你用adb调试手机上的Linux&lt;br /&gt;
==== 5.2 coremark跑分 ====&lt;br /&gt;
 yay -S coremark-git&lt;br /&gt;
 coremark&lt;br /&gt;
&lt;br /&gt;
==== 5.3 unixbench 跑分 ====&lt;br /&gt;
 ========================================================================&lt;br /&gt;
    BYTE UNIX Benchmarks (Version 5.1.3)&lt;br /&gt;
 &lt;br /&gt;
    System: : GNU/Linux&lt;br /&gt;
    OS: GNU/Linux -- 5.18.0-sdm845-00109-gf7ad1e5036bb-dirty -- #1 SMP PREEMPT Thu Jun 2 01:12:20 UTC 2022&lt;br /&gt;
    Machine: aarch64 (unknown)&lt;br /&gt;
    Language: en_US.utf8 (charmap=&amp;quot;UTF-8&amp;quot;, collate=&amp;quot;UTF-8&amp;quot;)&lt;br /&gt;
    CPU 0:  (38.4 bogomips)&lt;br /&gt;
 &lt;br /&gt;
    CPU 1:  (38.4 bogomips)&lt;br /&gt;
 &lt;br /&gt;
    CPU 2:  (38.4 bogomips)&lt;br /&gt;
 &lt;br /&gt;
    CPU 3:  (38.4 bogomips)&lt;br /&gt;
 &lt;br /&gt;
    CPU 4:  (38.4 bogomips)&lt;br /&gt;
 &lt;br /&gt;
    CPU 5:  (38.4 bogomips)&lt;br /&gt;
 &lt;br /&gt;
    CPU 6:  (38.4 bogomips)&lt;br /&gt;
 &lt;br /&gt;
    CPU 7:  (38.4 bogomips)&lt;br /&gt;
 &lt;br /&gt;
    08:08:45 up 4 min,  3 users,  load average: 0.23, 0.15, 0.07; runlevel&lt;br /&gt;
 &lt;br /&gt;
 ------------------------------------------------------------------------&lt;br /&gt;
 Benchmark Run: Wed Jun 15 2022 08:08:45 - 08:36:48&lt;br /&gt;
 8 CPUs in system; running 1 parallel copy of tests&lt;br /&gt;
 &lt;br /&gt;
 Dhrystone 2 using register variables       31371686.9 lps   (10.0 s, 7 samples)&lt;br /&gt;
 Double-Precision Whetstone                     6636.9 MWIPS (9.9 s, 7 samples)&lt;br /&gt;
 Execl Throughput                               3464.7 lps   (30.0 s, 2 samples)&lt;br /&gt;
 File Copy 1024 bufsize 2000 maxblocks        431850.5 KBps  (30.0 s, 2 samples)&lt;br /&gt;
 File Copy 256 bufsize 500 maxblocks          212468.6 KBps  (30.0 s, 2 samples)&lt;br /&gt;
 File Copy 4096 bufsize 8000 maxblocks       1100792.9 KBps  (30.0 s, 2 samples)&lt;br /&gt;
 Pipe Throughput                             1189114.2 lps   (10.0 s, 7 samples)&lt;br /&gt;
 Pipe-based Context Switching                  16156.4 lps   (10.0 s, 7 samples)&lt;br /&gt;
 Process Creation                               1880.5 lps   (30.0 s, 2 samples)&lt;br /&gt;
 Shell Scripts (1 concurrent)                   1267.7 lpm   (60.0 s, 2 samples)&lt;br /&gt;
 Shell Scripts (8 concurrent)                    928.5 lpm   (60.0 s, 2 samples)&lt;br /&gt;
 System Call Overhead                         904143.8 lps   (10.0 s, 7 samples)&lt;br /&gt;
 &lt;br /&gt;
 System Benchmarks Index Values               BASELINE       RESULT    INDEX&lt;br /&gt;
 Dhrystone 2 using register variables         116700.0   31371686.9   2688.2&lt;br /&gt;
 Double-Precision Whetstone                       55.0       6636.9   1206.7&lt;br /&gt;
 Execl Throughput                                 43.0       3464.7    805.7&lt;br /&gt;
 File Copy 1024 bufsize 2000 maxblocks          3960.0     431850.5   1090.5&lt;br /&gt;
 File Copy 256 bufsize 500 maxblocks            1655.0     212468.6   1283.8&lt;br /&gt;
 File Copy 4096 bufsize 8000 maxblocks          5800.0    1100792.9   1897.9&lt;br /&gt;
 Pipe Throughput                               12440.0    1189114.2    955.9&lt;br /&gt;
 Pipe-based Context Switching                   4000.0      16156.4     40.4&lt;br /&gt;
 Process Creation                                126.0       1880.5    149.2&lt;br /&gt;
 Shell Scripts (1 concurrent)                     42.4       1267.7    299.0&lt;br /&gt;
 Shell Scripts (8 concurrent)                      6.0        928.5   1547.5&lt;br /&gt;
 System Call Overhead                          15000.0     904143.8    602.8&lt;br /&gt;
                                                                   &lt;br /&gt;
 ========&lt;br /&gt;
 System Benchmarks Index Score                                         &lt;br /&gt;
 687.6&lt;br /&gt;
 &lt;br /&gt;
 ------------------------------------------------------------------------&lt;br /&gt;
 Benchmark Run: Wed Jun 15 2022 08:36:48 - 09:05:10&lt;br /&gt;
 8 CPUs in system; running 8 parallel copies of tests&lt;br /&gt;
 &lt;br /&gt;
 Dhrystone 2 using register variables      157010560.9 lps   (10.0 s, 7 samples)&lt;br /&gt;
 Double-Precision Whetstone                    38380.8 MWIPS (9.5 s, 7 samples)&lt;br /&gt;
 Execl Throughput                              14684.0 lps   (29.9 s, 2 samples)&lt;br /&gt;
 File Copy 1024 bufsize 2000 maxblocks        775566.4 KBps  (30.0 s, 2 samples)&lt;br /&gt;
 File Copy 256 bufsize 500 maxblocks          247697.5 KBps  (30.0 s, 2 samples)&lt;br /&gt;
 File Copy 4096 bufsize 8000 maxblocks       1947686.0 KBps  (30.0 s, 2 samples)&lt;br /&gt;
 Pipe Throughput                             6462292.1 lps   (10.0 s, 7 samples)&lt;br /&gt;
 Pipe-based Context Switching                 535021.4 lps   (10.0 s, 7 samples)&lt;br /&gt;
 Process Creation                              21863.7 lps   (30.0 s, 2 samples)&lt;br /&gt;
 Shell Scripts (1 concurrent)                  12727.2 lpm   (60.0 s, 2 samples)&lt;br /&gt;
 Shell Scripts (8 concurrent)                   1865.6 lpm   (60.1 s, 2 samples)&lt;br /&gt;
 System Call Overhead                        4647127.5 lps   (10.0 s, 7 samples)&lt;br /&gt;
 &lt;br /&gt;
 System Benchmarks Index Values               BASELINE       RESULT    INDEX&lt;br /&gt;
 Dhrystone 2 using register variables         116700.0  157010560.9  13454.2&lt;br /&gt;
 Double-Precision Whetstone                       55.0      38380.8   6978.3&lt;br /&gt;
 Execl Throughput                                 43.0      14684.0   3414.9&lt;br /&gt;
 File Copy 1024 bufsize 2000 maxblocks          3960.0     775566.4   1958.5&lt;br /&gt;
 File Copy 256 bufsize 500 maxblocks            1655.0     247697.5   1496.7&lt;br /&gt;
 File Copy 4096 bufsize 8000 maxblocks          5800.0    1947686.0   3358.1&lt;br /&gt;
 Pipe Throughput                               12440.0    6462292.1   5194.8&lt;br /&gt;
 Pipe-based Context Switching                   4000.0     535021.4   1337.6&lt;br /&gt;
 Process Creation                                126.0      21863.7   1735.2&lt;br /&gt;
 Shell Scripts (1 concurrent)                     42.4      12727.2   3001.7&lt;br /&gt;
 Shell Scripts (8 concurrent)                      6.0       1865.6   3109.4&lt;br /&gt;
 System Call Overhead                          15000.0    4647127.5   3098.1&lt;br /&gt;
                                                                    &lt;br /&gt;
  ========&lt;br /&gt;
  System Benchmarks Index Score                                        &lt;br /&gt;
  3187.6&lt;br /&gt;
&lt;br /&gt;
=== 6 对一些设备的更多调整 ===&lt;br /&gt;
==== 6.1 修复sdm845关机crashdump ====&lt;br /&gt;
 sudo nano /etc/systemd/system/shutdown-modem.service&lt;br /&gt;
填入&lt;br /&gt;
 [Unit]&lt;br /&gt;
 Description=Poweroff modem remoteproc to prevent wlan fw crash&lt;br /&gt;
 DefaultDependencies=no&lt;br /&gt;
 Before=shutdown.target&lt;br /&gt;
 &lt;br /&gt;
 [Service]&lt;br /&gt;
 Type=oneshot&lt;br /&gt;
 # remoteproc2 is always the modem on SDM845&lt;br /&gt;
 ExecStart=echo stop | tee /sys/class/remoteproc/remoteproc*/state&lt;br /&gt;
 &lt;br /&gt;
 [Install]&lt;br /&gt;
 WantedBy=shutdown.target&lt;br /&gt;
&lt;br /&gt;
启用服务&lt;br /&gt;
 sudo systemctl enable shutdown-modem.service&lt;br /&gt;
它会在关机前关闭`modem remoteproc`&lt;/div&gt;</summary>
		<author><name>Snnbyyds</name></author>
	</entry>
	<entry>
		<id>https://wiki.uotan.cn/index.php?title=%E4%B8%BA%E6%89%8B%E6%9C%BA%E5%AE%89%E8%A3%85Linux&amp;diff=260</id>
		<title>为手机安装Linux</title>
		<link rel="alternate" type="text/html" href="https://wiki.uotan.cn/index.php?title=%E4%B8%BA%E6%89%8B%E6%9C%BA%E5%AE%89%E8%A3%85Linux&amp;diff=260"/>
		<updated>2024-02-15T02:29:23Z</updated>

		<summary type="html">&lt;p&gt;Snnbyyds：​/* 5.3 unixbench 跑分 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== 该章节将引导你为一些手机安装主线Linux操作系统 ==&lt;br /&gt;
注意：本教程中，操作环境为64位Ubuntu，目标机器为OnePlus6T，我们将尝试利用UEFI在OnePlus6T上启动Archlinux&lt;br /&gt;
* 不同于Windows, Linux的安装过程可能具有一定的复杂性，步骤繁杂，方案多样，如果你使用不同的机型，请先仔细阅读本文和搜索资料；此外，主线Linux的开发（内核驱动移植，制作dts等）不在本文讨论范畴内。&lt;br /&gt;
[[文件:Archlinux-neofetch-op6t.png|缩略图|无|349x349像素]]&lt;br /&gt;
=== 1 编译内核 ===&lt;br /&gt;
sdm845成品：&lt;br /&gt;
[Releases · silime/kernel-builder (github.com)](https://github.com/silime/kernel-builder)&lt;br /&gt;
==== 1.1 安装相关依赖 ====&lt;br /&gt;
对于Ubuntu 22.04 LTS:&lt;br /&gt;
&lt;br /&gt;
 sudo apt install build-essential openssl pkg-config libssl-dev libncurses5-dev pkg-config minizip libelf-dev flex bison  libc6-dev libidn11-dev rsync bc liblz4-tool  &lt;br /&gt;
 sudo apt install gcc-aarch64-linux-gnu dpkg-dev git&lt;br /&gt;
&lt;br /&gt;
==== 1.2 克隆内核源码 ====&lt;br /&gt;
你可以在“-b”参数后选择其他分支&lt;br /&gt;
&lt;br /&gt;
 mkdir ~/workspace&lt;br /&gt;
 cd ~/workspace&lt;br /&gt;
 git clone --depth=1 https://gitlab.com/sdm845-mainline/linux.git -b sdm845/6.8-dev&lt;br /&gt;
&lt;br /&gt;
可用分支可在gitlab网页查看&lt;br /&gt;
&lt;br /&gt;
==== 1.3  生成 .config ====&lt;br /&gt;
 make ARCH=arm64 defconfig sdm845.config&lt;br /&gt;
 # generate .config&lt;br /&gt;
&lt;br /&gt;
==== 1.4 进行编译 ====&lt;br /&gt;
&lt;br /&gt;
 make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- -j$(nproc)&lt;br /&gt;
&lt;br /&gt;
生成deb包供Debian系得GNU/Linux使用&lt;br /&gt;
&lt;br /&gt;
 make -j$(nproc) ARCH=arm64 KBUILD_DEBARCH=arm64 KDEB_CHANGELOG_DIST=mobile CROSS_COMPILE=aarch64-linux-gnu- deb-pkg&lt;br /&gt;
 # This will generate several deb files in ../&lt;br /&gt;
&lt;br /&gt;
=== 2 制作rootfs ===&lt;br /&gt;
==== 2.1 下载 ====&lt;br /&gt;
对于Archlinux，从http://os.archlinuxarm.org/os/ArchLinuxARM-aarch64-latest.tar.gz下载&lt;br /&gt;
&lt;br /&gt;
 cd ~/workspace&lt;br /&gt;
 wget http://os.archlinuxarm.org/os/ArchLinuxARM-aarch64-latest.tar.gz&lt;br /&gt;
&lt;br /&gt;
对于Ubuntu，从 [Index of /ubuntu-base](https://cdimage.ubuntu.com/ubuntu-base/)选择自己想要的版本&lt;br /&gt;
==== 2.2 制作 ====&lt;br /&gt;
===== 2.2.1 进入chroot =====&lt;br /&gt;
由于rootfs为ARM64，所以安装qemu-user-static&lt;br /&gt;
 sudo apt install qemu-user-static &lt;br /&gt;
&lt;br /&gt;
创建img并挂载&lt;br /&gt;
&lt;br /&gt;
 dd if=/dev/zero of=archlinux.img bs=1G count=6&lt;br /&gt;
 mkfs.ext4 archlinux.img&lt;br /&gt;
 mkdir arch&lt;br /&gt;
 sudo mount archlinux.img arch&lt;br /&gt;
&lt;br /&gt;
解压&lt;br /&gt;
&lt;br /&gt;
 cd arch&lt;br /&gt;
 sudo tar -xpvf ../ArchLinuxARM-aarch64-latest.tar.gz&lt;br /&gt;
&lt;br /&gt;
进入chroot环境&lt;br /&gt;
&lt;br /&gt;
 cd ..&lt;br /&gt;
 sudo mount --bind /dev arch/dev&lt;br /&gt;
 sudo mount -t devpts devpts arch/dev/pts -o gid=5,mode=620&lt;br /&gt;
 sudo mount -t proc proc arch/proc&lt;br /&gt;
 sudo mount -t sysfs sysfs arch/sys&lt;br /&gt;
 sudo mount -t tmpfs tmpfs arch/run&lt;br /&gt;
 &lt;br /&gt;
 sudo rm -rf arch/etc/resolv.conf &amp;amp;&amp;amp; sudo cp /etc/resolv.conf arch/etc/&lt;br /&gt;
 &lt;br /&gt;
 sudo chroot arch&lt;br /&gt;
===== 2.2.2 初始化pacman keyring =====&lt;br /&gt;
 pacman-key --init&lt;br /&gt;
 pacman-key --populate archlinuxarm&lt;br /&gt;
===== 2.2.3 换源 （可选） =====&lt;br /&gt;
详见 https://mirrors.tuna.tsinghua.edu.cn/help/archlinuxarm/&lt;br /&gt;
&lt;br /&gt;
 pacman -Syyu&lt;br /&gt;
 # upgrade&lt;br /&gt;
&lt;br /&gt;
===== 2.2.4 卸载旧的内核和firmware =====&lt;br /&gt;
 pacman -Q | grep -i linux&lt;br /&gt;
 pacman -R linux-aarch64 linux-firmware linux-firmware-whence&lt;br /&gt;
 &lt;br /&gt;
 exit&lt;br /&gt;
 # exit chroot environment&lt;br /&gt;
&lt;br /&gt;
===== 2.2.5 安装新的内核 =====&lt;br /&gt;
* 确保已经退出`chroot`环境&lt;br /&gt;
然后：&lt;br /&gt;
 cd ~/workspace/linux&lt;br /&gt;
 sudo make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu-  INSTALL_MOD_PATH=~/workspace/arch modules_install&lt;br /&gt;
 sudo make ARCH=arm64 INSTALL_PATH=~/workspace/arch/boot install&lt;br /&gt;
如果是`debian`系也可以直接chroot环境中用dpkg安装deb：&amp;lt;code&amp;gt;dpkg -i *.deb&amp;lt;/code&amp;gt;&lt;br /&gt;
===== 2.2.6 安装新的firmware =====&lt;br /&gt;
* 可以尝试从PostmarketOS&amp;lt;ref&amp;gt;https://wiki.postmarketos.org/wiki/OnePlus_6T_(oneplus-fajita)&amp;lt;/ref&amp;gt;中提取&lt;br /&gt;
进入chroot环境&lt;br /&gt;
 sudo chroot ~/workspace/arch&lt;br /&gt;
移动解压得到的文件&lt;br /&gt;
 mv * /usr/lib/firmware/&lt;br /&gt;
 ldconfig&lt;br /&gt;
修改/etc/mkinitcpio.conf&lt;br /&gt;
 nano /etc/mkinitcpio.conf&lt;br /&gt;
找到&lt;br /&gt;
 # BINARIES&lt;br /&gt;
 # This setting includes any additional binaries a given user may&lt;br /&gt;
 # wish into the CPIO image.  This is run last, so it may be used to&lt;br /&gt;
 # override the actual binaries included by a given hook&lt;br /&gt;
 # BINARIES are dependency parsed, so you may safely ignore libraries&lt;br /&gt;
 BINARIES=()&lt;br /&gt;
在`BINARIES=()`填入`xxxx_zap.mbn/ipa_fws.mbn`的路径&lt;br /&gt;
这两个固件的来源一般是手机提取并放在特殊的位置加载（具体由`dts/dtsi`指定）&lt;br /&gt;
对于fajita，改为：&lt;br /&gt;
  BINARIES=(/usr/lib/firmware/qcom/sdm845/oneplus6/a630_zap.mbn /usr/lib/firmware/qcom/sdm845/oneplus6/ipa_fws.mbn)&lt;br /&gt;
生成initrd.img&lt;br /&gt;
 ls /usr/lib/modules&lt;br /&gt;
 # get kernel version&lt;br /&gt;
 mkinitcpio --generate /boot/initrd.img-5.18.0-sdm845-00109-gf7ad1e5036bb-dirty --kernel 5.18.0-sdm845-00109-gf7ad1e5036bb-dirty&lt;br /&gt;
===== 2.2.7 安装软件包和基本配置&amp;lt;ref&amp;gt;https://archlinuxstudio.github.io/ArchLinuxTutorial/#/&amp;lt;/ref&amp;gt; =====&lt;br /&gt;
====== 2.2.7.1 设置时区 ======&lt;br /&gt;
 ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime&lt;br /&gt;
 # Shanghai&lt;br /&gt;
====== 2.2.7.2 设置locale ======&lt;br /&gt;
参考：https://wiki.archlinux.org/title/Locale&lt;br /&gt;
&lt;br /&gt;
 nano /etc/locale.gen&lt;br /&gt;
 # uncomment en_US.UTF-8 UTF-8&lt;br /&gt;
 # uncomment zh_CN.UTF-8 UTF-8&lt;br /&gt;
 &lt;br /&gt;
 locale-gen&lt;br /&gt;
&lt;br /&gt;
====== 2.2.7.3 自定义主机名 ======&lt;br /&gt;
 # For example&lt;br /&gt;
 echo 'OnePlus6T' &amp;gt; /etc/hostname&lt;br /&gt;
&lt;br /&gt;
====== 2.2.7.4 alarm（Archlinuxarm内置非root用户）配置 ======&lt;br /&gt;
&lt;br /&gt;
更改alarm密码，并添加到wheel用户组&lt;br /&gt;
&lt;br /&gt;
 passwd alarm&lt;br /&gt;
 # Change its password. Default is &amp;quot;alarm&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 usermod -aG wheel alarm&lt;br /&gt;
&lt;br /&gt;
添加sudo，设置sudo权限&lt;br /&gt;
&lt;br /&gt;
 pacman -S sudo&lt;br /&gt;
 EDITOR=nano visudo&lt;br /&gt;
&lt;br /&gt;
 找到下面这样的一行，把前面的注释符号 `#` 去掉&lt;br /&gt;
&lt;br /&gt;
 #%wheel ALL=(ALL:ALL) ALL&lt;br /&gt;
&lt;br /&gt;
====== 2.2.7.5 必要软件包 ======&lt;br /&gt;
 pacman -S base base-devel dhcpcd iwd&lt;br /&gt;
 pacman -S grub efibootmgr&lt;br /&gt;
 &lt;br /&gt;
 pacman -S networkmanager modemmanager&lt;br /&gt;
 pacman -S bluez bluez-utils pulseaudio-bluetooth&lt;br /&gt;
 pacman -S qrtr rmtfs&lt;br /&gt;
 systemctl enable NetworkManager bluetooth qrtr-ns rmtfs &lt;br /&gt;
 systemctl enable ModemManager&lt;br /&gt;
&lt;br /&gt;
 pacman -S git wget&lt;br /&gt;
 pacman -S ntfs-3g usbutils&lt;br /&gt;
&lt;br /&gt;
再安装 pd-mapper 和 tqftpserv&lt;br /&gt;
* 可以此处下载成品：https://github.com/silime/ArchLinux-Packages&lt;br /&gt;
* 也可以在步骤2.2.7.6后直接用pacman安装！&lt;br /&gt;
* 注：默认的PKGBUILD有问题，需要手动修复，在这里不详细描述，如果嫌麻烦，也可以直接编译安装&lt;br /&gt;
a. 直接编译安装（不推荐）：&lt;br /&gt;
 git clone https://github.com/andersson/pd-mapper.git&lt;br /&gt;
 git clone https://github.com/andersson/tqftpserv.git&lt;br /&gt;
 cd pd-mapper &amp;amp;&amp;amp; make &amp;amp;&amp;amp; make install &amp;amp;&amp;amp; cd ..&lt;br /&gt;
 cd tqftpserv &amp;amp;&amp;amp; make &amp;amp;&amp;amp; make install &amp;amp;&amp;amp; cd ..&lt;br /&gt;
 &lt;br /&gt;
 # clean&lt;br /&gt;
 rm -rf tqftpserv pd-mapper&lt;br /&gt;
&lt;br /&gt;
b. 使用pkgbuild&lt;br /&gt;
 # Switch to alarm first&lt;br /&gt;
 su alarm&lt;br /&gt;
&lt;br /&gt;
 cd ~&lt;br /&gt;
 # Compile and Install pd-mapper&lt;br /&gt;
 git clone https://aur.archlinux.org/pd-mapper-git.git ~/pd-mapper-git&lt;br /&gt;
 cd ~/pd-mapper-git&lt;br /&gt;
 &lt;br /&gt;
 nano PKGBUILD&lt;br /&gt;
 # fix some errors&lt;br /&gt;
 makepkg -si&lt;br /&gt;
 &lt;br /&gt;
 #Compile and Install tqftpserv&lt;br /&gt;
 git clone https://aur.archlinux.org/tqftpserv-git.git ~/tqftpserv-git&lt;br /&gt;
 cd ~/tqftpserv-git&lt;br /&gt;
 &lt;br /&gt;
 nano PKGBUILD&lt;br /&gt;
 # fix some errors&lt;br /&gt;
 makepkg -si&lt;br /&gt;
&lt;br /&gt;
启用 pd-mapper 和 tqftpserv&lt;br /&gt;
 sudo systemctl enable tqftpserv pd-mapper&lt;br /&gt;
回到root用户&lt;br /&gt;
 exit&lt;br /&gt;
&lt;br /&gt;
====== 2.2.7.6 添加Renegade Project源&amp;lt;ref&amp;gt;https://mirror.renegade-project.tech/index.html#/&amp;lt;/ref&amp;gt;（可选） ======&lt;br /&gt;
导入 GPG key:&lt;br /&gt;
 pacman-key --recv-keys 5E29D8F17064598A7A2223E2C735F8DF5B624511&lt;br /&gt;
 pacman-key --lsign-key 5E29D8F17064598A7A2223E2C735F8DF5B624511&lt;br /&gt;
在 /etc/pacman.conf 文件末尾添加以下内容：&lt;br /&gt;
 [renegade-project]&lt;br /&gt;
 Server = https://mirror.renegade-project.tech/arch/$arch&lt;br /&gt;
安装 renegade-project-keyring：&lt;br /&gt;
 pacman -S renegade-project-keyring&lt;br /&gt;
刷新&lt;br /&gt;
 pacman -Syy&lt;br /&gt;
&lt;br /&gt;
====== 2.2.7.7 安装用于切换slot的qbootctl（推荐） ======&lt;br /&gt;
* 确保已经完成了步骤2.2.7.6&lt;br /&gt;
 pacman -Sy qbootctl&lt;br /&gt;
&lt;br /&gt;
====== 2.2.7.8 安装更多package使一些硬件工作 ======&lt;br /&gt;
* 来自：https://github.com/silime/ArchLinux-Packages/releases&lt;br /&gt;
** 请用pacman安装[https://github.com/silime/ArchLinux-Packages/releases/tag/sensors sensors package]，[https://github.com/silime/ArchLinux-Packages/releases/tag/alsa-ucm-oneplus-0.5.10 alsa-ucm-oneplus-0.5.10]，[https://github.com/silime/ArchLinux-Packages/releases/tag/q6voice q6voice]&lt;br /&gt;
&lt;br /&gt;
====== 2.2.7.9 修改Modemmanager ======&lt;br /&gt;
* 重新编译ModemManager，开启`plugin_qcom_soc`,并安装&lt;br /&gt;
 su alarm&lt;br /&gt;
 mkdir ~/modemmanager&lt;br /&gt;
 cd ~/modemmanager&lt;br /&gt;
 nano PKGBUILD&lt;br /&gt;
* 将 [PKGBUILD - modemmanager (aarch64) | Package Files | Arch Linux ARM](https://archlinuxarm.org/packages/aarch64/modemmanager/files/PKGBUILD) 中的内容复制进PKGBUILD，然后进行以下修改&lt;br /&gt;
** 将`arch=(x86_64)`改为`arch=(x86_64 aarch64)`&lt;br /&gt;
** 将`-D plugin_qcom_soc=disabled`一行删除&lt;br /&gt;
 10c10&lt;br /&gt;
 &amp;lt; arch=(x86_64)&lt;br /&gt;
 ---&lt;br /&gt;
 &amp;gt; arch=(x86_64 aarch64)&lt;br /&gt;
 35d34&lt;br /&gt;
 &amp;lt;     -D plugin_qcom_soc=disabled&lt;br /&gt;
* 编译和安装&lt;br /&gt;
 makepkg -rsi&lt;br /&gt;
 # compile and install&lt;br /&gt;
 &lt;br /&gt;
 cd ..&lt;br /&gt;
 sudo rm -rf ~/modemmanager&lt;br /&gt;
 exit&lt;br /&gt;
&lt;br /&gt;
 systemctl enable ModemManager&lt;br /&gt;
&lt;br /&gt;
====== 2.2.7.10 其他软件 ======&lt;br /&gt;
中文字体&lt;br /&gt;
&lt;br /&gt;
 pacman -S noto-fonts-cjk&lt;br /&gt;
 # Chinese fonts&lt;br /&gt;
&lt;br /&gt;
yay&lt;br /&gt;
&lt;br /&gt;
 su alarm&lt;br /&gt;
 cd ~&lt;br /&gt;
 git clone https://aur.archlinux.org/yay-bin.git&lt;br /&gt;
 cd yay-bin &amp;amp;&amp;amp; makepkg -si&lt;br /&gt;
 exit&lt;br /&gt;
&lt;br /&gt;
桌面环境&lt;br /&gt;
&lt;br /&gt;
* 自选，建议gnome或phosh&lt;br /&gt;
** 如`gnome`&lt;br /&gt;
&lt;br /&gt;
 pacman -S gnome&lt;br /&gt;
 systemctl enable gdm&lt;br /&gt;
&lt;br /&gt;
* 如安装phosh，建议添加danctnix源 [danctnix (arikawa-hi.me)](https://p64.arikawa-hi.me/danctnix/)，然后安装&lt;br /&gt;
&lt;br /&gt;
网络浏览器&lt;br /&gt;
&lt;br /&gt;
 # for example, chromium&lt;br /&gt;
 pacman -S chromium&lt;br /&gt;
&lt;br /&gt;
===== 2.2.8 tfa98xx音频修复 =====&lt;br /&gt;
 echo 'snd-soc-tfa98xx' &amp;gt; /etc/modules-load.d/snd-soc-tfa98xx.conf&lt;br /&gt;
&lt;br /&gt;
===== 2.2.9 打包 =====&lt;br /&gt;
先清理，在chroot环境中&lt;br /&gt;
&lt;br /&gt;
 pacman -Scc&lt;br /&gt;
 # pacman&lt;br /&gt;
&lt;br /&gt;
进alarm用户&lt;br /&gt;
 su alarm # switch to alarm&lt;br /&gt;
 # clean bash history for alarm&lt;br /&gt;
 cat /dev/null &amp;gt; ~/.bash_history &amp;amp;&amp;amp; history -c &amp;amp;&amp;amp; exit&lt;br /&gt;
&lt;br /&gt;
在root用户&lt;br /&gt;
 # clean bash history for root&lt;br /&gt;
 cat /dev/null &amp;gt; ~/.bash_history &amp;amp;&amp;amp; history -c&lt;br /&gt;
&lt;br /&gt;
退出chroot环境&lt;br /&gt;
&lt;br /&gt;
 exit&lt;br /&gt;
&lt;br /&gt;
解除挂载&lt;br /&gt;
&lt;br /&gt;
 cd ~/workspace&lt;br /&gt;
 sudo umount ~/workspace/arch/run&lt;br /&gt;
 sudo umount ~/workspace/arch/sys&lt;br /&gt;
 sudo umount ~/workspace/arch/proc&lt;br /&gt;
 sudo umount ~/workspace/arch/dev/pts&lt;br /&gt;
 sudo umount ~/workspace/arch/dev&lt;br /&gt;
&lt;br /&gt;
用tar打包&lt;br /&gt;
&lt;br /&gt;
 cd ~/workspace/arch&lt;br /&gt;
 sudo tar -czvf ~/workspace/arch.tar.gz *&lt;br /&gt;
 # This will generate arch.tar.gz&lt;br /&gt;
&lt;br /&gt;
=== 3 安装到手机 ===&lt;br /&gt;
==== 3.1 刷入twrp和Magisk ====&lt;br /&gt;
* 你也可以使用KernelSU或其它方式获取root权限&lt;br /&gt;
==== 3.2 分区、格式化分区 ====&lt;br /&gt;
连接手机、电脑，手机进twrp&lt;br /&gt;
&lt;br /&gt;
将`parted`复制到手机储存&lt;br /&gt;
&lt;br /&gt;
电脑输入：&lt;br /&gt;
 adb shell&lt;br /&gt;
然后输入：&lt;br /&gt;
 cp /sdcard/parted /sbin/ &amp;amp;&amp;amp; chmod 755 /sbin/parted&lt;br /&gt;
 umount /data &amp;amp;&amp;amp; umount /sdcard&lt;br /&gt;
 parted /dev/block/sda&lt;br /&gt;
输入`p`查看当前分区情况&lt;br /&gt;
 p&lt;br /&gt;
对于一加6T，可这样分区：&lt;br /&gt;
* 压缩分区17&lt;br /&gt;
 resizepart 17&lt;br /&gt;
 # input 61GB &lt;br /&gt;
* 创建新分区&lt;br /&gt;
 mkpart esp fat32 61GB 62GB&lt;br /&gt;
 mkpart arch ext4 62GB 125GB&lt;br /&gt;
 set 18 esp on&lt;br /&gt;
随后退出parted&lt;br /&gt;
 q&lt;br /&gt;
再次重启到twrp，格式化各分区&lt;br /&gt;
&lt;br /&gt;
电脑输入：&lt;br /&gt;
 adb shell&lt;br /&gt;
然后输入：&lt;br /&gt;
 mkfs.fat -F32 -s1 /dev/block/by-name/esp&lt;br /&gt;
 mke2fs -t ext4 /dev/block/by-name/arch&lt;br /&gt;
 mke2fs -t ext4 /dev/block/by-name/userdata&lt;br /&gt;
&lt;br /&gt;
==== 3.3 获取UUID ====&lt;br /&gt;
重启到Android，在termux或adb shell输入&lt;br /&gt;
 su&lt;br /&gt;
 blkid /dev/block/by-name/arch&lt;br /&gt;
记下UUID值&lt;br /&gt;
&lt;br /&gt;
==== 3.4 准备grub配置文件 ====&lt;br /&gt;
*下载：&lt;br /&gt;
** https://forum.renegade-project.tech/uploads/short-url/hlr2fHanyoSkM1pOPy1eywhLiSm.zip&lt;br /&gt;
** https://forum.renegade-project.tech/uploads/short-url/hlr2fHanyoSkM1pOPy1eywhLiSm.zip&lt;br /&gt;
&lt;br /&gt;
将boot.tar.gz中grub.cfg的uuid全部改为步骤3.3中得到的&lt;br /&gt;
替换所有这种字符&lt;br /&gt;
[[文件:3a12afa8f91aef1d2d2fb693b93d0e13eae37729.png|缩略图]]&lt;br /&gt;
==== 3.5 解压rootfs ====&lt;br /&gt;
将arch.tar.gz复制到手机内部存储&lt;br /&gt;
* 建议使用termux操作&lt;br /&gt;
 pkg update&lt;br /&gt;
 pkg install tsu&lt;br /&gt;
提权&lt;br /&gt;
 tsu&lt;br /&gt;
 # root permission needed&lt;br /&gt;
挂载&amp;amp;解压&lt;br /&gt;
 cd ~&lt;br /&gt;
 mkdir arch&lt;br /&gt;
 mount /dev/block/by-name/arch ~/arch&lt;br /&gt;
 &lt;br /&gt;
 cd ~/arch&lt;br /&gt;
 tar -xpvf /sdcard/arch.tar.gz&lt;br /&gt;
 # extract&lt;br /&gt;
&lt;br /&gt;
==== 3.6 安装grub ====&lt;br /&gt;
 tsu&lt;br /&gt;
&lt;br /&gt;
 cd ~&lt;br /&gt;
 mkdir esp&lt;br /&gt;
&lt;br /&gt;
 mount /dev/block/by-name/esp esp&lt;br /&gt;
 mkdir esp/EFI&lt;br /&gt;
&lt;br /&gt;
将esp.zip中这两个文件夹复制到~/esp/EFI/&lt;br /&gt;
&lt;br /&gt;
将boot.tar.gz内两个文件夹复制进~/arch/boot&lt;br /&gt;
* 检查&lt;br /&gt;
 # /dev/block/by-name/arch has been mounted!&lt;br /&gt;
 cd ~/arch/boot &amp;amp;&amp;amp; ls&lt;br /&gt;
&lt;br /&gt;
==== 3.7 获取、添加dtb ====&lt;br /&gt;
对于一加6T，还需要将这两个dtb复制到~/arch/boot&lt;br /&gt;
* 注：对于一加6（T）不要使用内核编译生成的dtb&lt;br /&gt;
** 见arch/arm64/boot/dts/qcom/sdm845-oneplus-common.dtsi,将不会有显示&lt;br /&gt;
对于其它设备，请获取合适的dtb&lt;br /&gt;
&lt;br /&gt;
 /delete-node/ &amp;amp;rmtfs_mem;&lt;br /&gt;
 &lt;br /&gt;
 / {&lt;br /&gt;
 	aliases {&lt;br /&gt;
 		serial0 = &amp;amp;uart9;&lt;br /&gt;
 		hsuart0 = &amp;amp;uart6;&lt;br /&gt;
 	};&lt;br /&gt;
 &lt;br /&gt;
 	chosen {&lt;br /&gt;
 		stdout-path = &amp;quot;serial0:115200n8&amp;quot;; /*line 30 in dtsi*/&lt;br /&gt;
 	};&lt;br /&gt;
 &lt;br /&gt;
 	volume-keys {&lt;br /&gt;
 		compatible = &amp;quot;gpio-keys&amp;quot;;&lt;br /&gt;
 		label = &amp;quot;Volume keys&amp;quot;;&lt;br /&gt;
 		autorepeat;&lt;br /&gt;
&lt;br /&gt;
=====  3.7.1 dtb的获取 =====&lt;br /&gt;
下载适用自己设备的postmarketOS的boot.img.xz，解压得到img文件&lt;br /&gt;
&lt;br /&gt;
使用 extract-dtb&amp;lt;ref&amp;gt;https://pypi.org/project/extract-dtb/&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple extract-dtb&lt;br /&gt;
 extract-dtb 20220608-1408-postmarketOS-v22.06-phosh-18-oneplus-fajita-boot.img -o .&lt;br /&gt;
 # use your own img&lt;br /&gt;
 # will generate something like 01_dtbdump_,OnePlus_6T.dtb&lt;br /&gt;
 &lt;br /&gt;
 ls&lt;br /&gt;
 mv 01_dtbdump_,OnePlus_6T.dtb sdm845-oneplus-fajita.dtb&lt;br /&gt;
&lt;br /&gt;
===== 3.7.2 修改dtb，使得可能支持USB otg =====&lt;br /&gt;
安装dtc工具&lt;br /&gt;
 sudo apt install device-tree-compiler -y&lt;br /&gt;
&lt;br /&gt;
转换dtb为dts&lt;br /&gt;
 dtc -I dtb -O dts -o temp.dts sdm845-oneplus-fajita.dtb&lt;br /&gt;
&lt;br /&gt;
修改temp.dts&lt;br /&gt;
 nano temp.dts&lt;br /&gt;
&lt;br /&gt;
查找`dr_mode`&lt;br /&gt;
                         dwc3@a600000 {&lt;br /&gt;
                                 compatible = &amp;quot;snps,dwc3&amp;quot;;&lt;br /&gt;
                                 reg = &amp;lt;0x00 0xa600000 0x00 0xcd00&amp;gt;;&lt;br /&gt;
                                 interrupts = &amp;lt;0x00 0x85 0x04&amp;gt;;&lt;br /&gt;
                                 iommus = &amp;lt;0x25 0x740 0x00&amp;gt;;&lt;br /&gt;
                                 snps,dis_u2_susphy_quirk;&lt;br /&gt;
                                 snps,dis_enblslpm_quirk;&lt;br /&gt;
                                 phys = &amp;lt;0xb8&amp;gt;;&lt;br /&gt;
                                 phy-names = &amp;quot;usb2-phy&amp;quot;;&lt;br /&gt;
                                 dr_mode = &amp;quot;peripheral&amp;quot;;&lt;br /&gt;
                                 maximum-speed = &amp;quot;high-speed&amp;quot;;&lt;br /&gt;
                         };&lt;br /&gt;
&lt;br /&gt;
将`peripheral`改为`host` 此时生成的dtb将支持otg，但要外界供电，为了USB主动供电，需要进一步修改,但会导致充电失效&lt;br /&gt;
将charger@1000那段删除&lt;br /&gt;
 &lt;br /&gt;
                         pmic@2 {&lt;br /&gt;
                                 compatible = &amp;quot;qcom,pmi8998\0qcom,spmi-pmic&amp;quot;;&lt;br /&gt;
                                 reg = &amp;lt;0x02 0x00&amp;gt;;&lt;br /&gt;
                                 #address-cells = &amp;lt;0x01&amp;gt;;&lt;br /&gt;
                                 #size-cells = &amp;lt;0x00&amp;gt;;&lt;br /&gt;
 &lt;br /&gt;
                                 charger@1000 {&lt;br /&gt;
                                         compatible = &amp;quot;qcom,pmi8998-charger&amp;quot;;&lt;br /&gt;
                                         reg = &amp;lt;0x1000&amp;gt;;&lt;br /&gt;
                                         interrupts = &amp;lt;0x02 0x13 0x04 0x03 0x02 0x&amp;gt;&lt;br /&gt;
                                         interrupt-names = &amp;quot;usb-plugin\0bat-ov\0wd&amp;gt;&lt;br /&gt;
                                         io-channels = &amp;lt;0xdd 0x03 0xdd 0x04&amp;gt;;&lt;br /&gt;
                                         io-channel-names = &amp;quot;usbin_i\0usbin_v&amp;quot;;&lt;br /&gt;
                                         status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
                                         monitored-battery = &amp;lt;0xde&amp;gt;;&lt;br /&gt;
                                 };&lt;br /&gt;
 &lt;br /&gt;
                                 gpios@c000 {&lt;br /&gt;
                                         compatible = &amp;quot;qcom,pmi8998-gpio\0qcom,spm&amp;gt;&lt;br /&gt;
                                         reg = &amp;lt;0xc000&amp;gt;;&lt;br /&gt;
                                         gpio-controller;&lt;br /&gt;
                                         gpio-ranges = &amp;lt;0xdf 0x00 0x00 0x0e&amp;gt;;&lt;br /&gt;
                                         #gpio-cells = &amp;lt;0x02&amp;gt;;&lt;br /&gt;
                                         interrupt-controller;&lt;br /&gt;
                                         #interrupt-cells = &amp;lt;0x02&amp;gt;;&lt;br /&gt;
                                         phandle = &amp;lt;0xdf&amp;gt;;&lt;br /&gt;
                                 };&lt;br /&gt;
&lt;br /&gt;
生成新的dtb&lt;br /&gt;
 dtc -I dts -O dtb -o sdm845-oneplus-fajita-host.dtb temp.dts&lt;br /&gt;
复制好dtb，你的usb otg应该就**有可能**工作&lt;br /&gt;
&lt;br /&gt;
=== 4 刷入UEFI ===&lt;br /&gt;
进入bootloader&lt;br /&gt;
&lt;br /&gt;
临时启动&lt;br /&gt;
 fastboot boot boot-xxx.img&lt;br /&gt;
&lt;br /&gt;
刷入到当前boot分区&lt;br /&gt;
 fastboot flash boot boot-xxx.img&lt;br /&gt;
&lt;br /&gt;
=== 5 Enjoy！===&lt;br /&gt;
恭喜你！你已经成功在你的手机上安装Archlinux！！希望你能有所收获！！ &lt;br /&gt;
==== 5.1 adbd ====&lt;br /&gt;
* 确保已经添加Renegade Project源&lt;br /&gt;
 sudo pacman -S adbd&lt;br /&gt;
adbd能帮助你用adb调试手机上的Linux&lt;br /&gt;
==== 5.2 coremark跑分 ====&lt;br /&gt;
 yay -S coremark-git&lt;br /&gt;
 coremark&lt;br /&gt;
&lt;br /&gt;
==== 5.3 unixbench 跑分 ====&lt;br /&gt;
 ========================================================================&lt;br /&gt;
    BYTE UNIX Benchmarks (Version 5.1.3)&lt;br /&gt;
 &lt;br /&gt;
    System: : GNU/Linux&lt;br /&gt;
    OS: GNU/Linux -- 5.18.0-sdm845-00109-gf7ad1e5036bb-dirty -- #1 SMP PREEMPT Thu Jun 2 01:12:20 UTC 2022&lt;br /&gt;
    Machine: aarch64 (unknown)&lt;br /&gt;
    Language: en_US.utf8 (charmap=&amp;quot;UTF-8&amp;quot;, collate=&amp;quot;UTF-8&amp;quot;)&lt;br /&gt;
    CPU 0:  (38.4 bogomips)&lt;br /&gt;
 &lt;br /&gt;
    CPU 1:  (38.4 bogomips)&lt;br /&gt;
 &lt;br /&gt;
    CPU 2:  (38.4 bogomips)&lt;br /&gt;
 &lt;br /&gt;
    CPU 3:  (38.4 bogomips)&lt;br /&gt;
 &lt;br /&gt;
    CPU 4:  (38.4 bogomips)&lt;br /&gt;
 &lt;br /&gt;
    CPU 5:  (38.4 bogomips)&lt;br /&gt;
 &lt;br /&gt;
    CPU 6:  (38.4 bogomips)&lt;br /&gt;
 &lt;br /&gt;
    CPU 7:  (38.4 bogomips)&lt;br /&gt;
 &lt;br /&gt;
    08:08:45 up 4 min,  3 users,  load average: 0.23, 0.15, 0.07; runlevel&lt;br /&gt;
 &lt;br /&gt;
 ------------------------------------------------------------------------&lt;br /&gt;
 Benchmark Run: Wed Jun 15 2022 08:08:45 - 08:36:48&lt;br /&gt;
 8 CPUs in system; running 1 parallel copy of tests&lt;br /&gt;
 &lt;br /&gt;
 Dhrystone 2 using register variables       31371686.9 lps   (10.0 s, 7 samples)&lt;br /&gt;
 Double-Precision Whetstone                     6636.9 MWIPS (9.9 s, 7 samples)&lt;br /&gt;
 Execl Throughput                               3464.7 lps   (30.0 s, 2 samples)&lt;br /&gt;
 File Copy 1024 bufsize 2000 maxblocks        431850.5 KBps  (30.0 s, 2 samples)&lt;br /&gt;
 File Copy 256 bufsize 500 maxblocks          212468.6 KBps  (30.0 s, 2 samples)&lt;br /&gt;
 File Copy 4096 bufsize 8000 maxblocks       1100792.9 KBps  (30.0 s, 2 samples)&lt;br /&gt;
 Pipe Throughput                             1189114.2 lps   (10.0 s, 7 samples)&lt;br /&gt;
 Pipe-based Context Switching                  16156.4 lps   (10.0 s, 7 samples)&lt;br /&gt;
 Process Creation                               1880.5 lps   (30.0 s, 2 samples)&lt;br /&gt;
 Shell Scripts (1 concurrent)                   1267.7 lpm   (60.0 s, 2 samples)&lt;br /&gt;
 Shell Scripts (8 concurrent)                    928.5 lpm   (60.0 s, 2 samples)&lt;br /&gt;
 System Call Overhead                         904143.8 lps   (10.0 s, 7 samples)&lt;br /&gt;
 &lt;br /&gt;
 System Benchmarks Index Values               BASELINE       RESULT    INDEX&lt;br /&gt;
 Dhrystone 2 using register variables         116700.0   31371686.9   2688.2&lt;br /&gt;
 Double-Precision Whetstone                       55.0       6636.9   1206.7&lt;br /&gt;
 Execl Throughput                                 43.0       3464.7    805.7&lt;br /&gt;
 File Copy 1024 bufsize 2000 maxblocks          3960.0     431850.5   1090.5&lt;br /&gt;
 File Copy 256 bufsize 500 maxblocks            1655.0     212468.6   1283.8&lt;br /&gt;
 File Copy 4096 bufsize 8000 maxblocks          5800.0    1100792.9   1897.9&lt;br /&gt;
 Pipe Throughput                               12440.0    1189114.2    955.9&lt;br /&gt;
 Pipe-based Context Switching                   4000.0      16156.4     40.4&lt;br /&gt;
 Process Creation                                126.0       1880.5    149.2&lt;br /&gt;
 Shell Scripts (1 concurrent)                     42.4       1267.7    299.0&lt;br /&gt;
 Shell Scripts (8 concurrent)                      6.0        928.5   1547.5&lt;br /&gt;
 System Call Overhead                          15000.0     904143.8    602.8&lt;br /&gt;
                                                                   &lt;br /&gt;
 ========&lt;br /&gt;
 System Benchmarks Index Score                                         &lt;br /&gt;
 687.6&lt;br /&gt;
 &lt;br /&gt;
 ------------------------------------------------------------------------&lt;br /&gt;
 Benchmark Run: Wed Jun 15 2022 08:36:48 - 09:05:10&lt;br /&gt;
 8 CPUs in system; running 8 parallel copies of tests&lt;br /&gt;
 &lt;br /&gt;
 Dhrystone 2 using register variables      157010560.9 lps   (10.0 s, 7 samples)&lt;br /&gt;
 Double-Precision Whetstone                    38380.8 MWIPS (9.5 s, 7 samples)&lt;br /&gt;
 Execl Throughput                              14684.0 lps   (29.9 s, 2 samples)&lt;br /&gt;
 File Copy 1024 bufsize 2000 maxblocks        775566.4 KBps  (30.0 s, 2 samples)&lt;br /&gt;
 File Copy 256 bufsize 500 maxblocks          247697.5 KBps  (30.0 s, 2 samples)&lt;br /&gt;
 File Copy 4096 bufsize 8000 maxblocks       1947686.0 KBps  (30.0 s, 2 samples)&lt;br /&gt;
 Pipe Throughput                             6462292.1 lps   (10.0 s, 7 samples)&lt;br /&gt;
 Pipe-based Context Switching                 535021.4 lps   (10.0 s, 7 samples)&lt;br /&gt;
 Process Creation                              21863.7 lps   (30.0 s, 2 samples)&lt;br /&gt;
 Shell Scripts (1 concurrent)                  12727.2 lpm   (60.0 s, 2 samples)&lt;br /&gt;
 Shell Scripts (8 concurrent)                   1865.6 lpm   (60.1 s, 2 samples)&lt;br /&gt;
 System Call Overhead                        4647127.5 lps   (10.0 s, 7 samples)&lt;br /&gt;
 &lt;br /&gt;
 System Benchmarks Index Values               BASELINE       RESULT    INDEX&lt;br /&gt;
 Dhrystone 2 using register variables         116700.0  157010560.9  13454.2&lt;br /&gt;
 Double-Precision Whetstone                       55.0      38380.8   6978.3&lt;br /&gt;
 Execl Throughput                                 43.0      14684.0   3414.9&lt;br /&gt;
 File Copy 1024 bufsize 2000 maxblocks          3960.0     775566.4   1958.5&lt;br /&gt;
 File Copy 256 bufsize 500 maxblocks            1655.0     247697.5   1496.7&lt;br /&gt;
 File Copy 4096 bufsize 8000 maxblocks          5800.0    1947686.0   3358.1&lt;br /&gt;
 Pipe Throughput                               12440.0    6462292.1   5194.8&lt;br /&gt;
 Pipe-based Context Switching                   4000.0     535021.4   1337.6&lt;br /&gt;
 Process Creation                                126.0      21863.7   1735.2&lt;br /&gt;
 Shell Scripts (1 concurrent)                     42.4      12727.2   3001.7&lt;br /&gt;
 Shell Scripts (8 concurrent)                      6.0       1865.6   3109.4&lt;br /&gt;
 System Call Overhead                          15000.0    4647127.5   3098.1&lt;br /&gt;
                                                                    &lt;br /&gt;
  ========&lt;br /&gt;
  System Benchmarks Index Score                                        &lt;br /&gt;
  3187.6&lt;/div&gt;</summary>
		<author><name>Snnbyyds</name></author>
	</entry>
	<entry>
		<id>https://wiki.uotan.cn/index.php?title=%E4%B8%BA%E6%89%8B%E6%9C%BA%E5%AE%89%E8%A3%85Linux&amp;diff=258</id>
		<title>为手机安装Linux</title>
		<link rel="alternate" type="text/html" href="https://wiki.uotan.cn/index.php?title=%E4%B8%BA%E6%89%8B%E6%9C%BA%E5%AE%89%E8%A3%85Linux&amp;diff=258"/>
		<updated>2024-02-15T02:29:01Z</updated>

		<summary type="html">&lt;p&gt;Snnbyyds：​/* 5.2 coremark跑分 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== 该章节将引导你为一些手机安装主线Linux操作系统 ==&lt;br /&gt;
注意：本教程中，操作环境为64位Ubuntu，目标机器为OnePlus6T，我们将尝试利用UEFI在OnePlus6T上启动Archlinux&lt;br /&gt;
* 不同于Windows, Linux的安装过程可能具有一定的复杂性，步骤繁杂，方案多样，如果你使用不同的机型，请先仔细阅读本文和搜索资料；此外，主线Linux的开发（内核驱动移植，制作dts等）不在本文讨论范畴内。&lt;br /&gt;
[[文件:Archlinux-neofetch-op6t.png|缩略图|无|349x349像素]]&lt;br /&gt;
=== 1 编译内核 ===&lt;br /&gt;
sdm845成品：&lt;br /&gt;
[Releases · silime/kernel-builder (github.com)](https://github.com/silime/kernel-builder)&lt;br /&gt;
==== 1.1 安装相关依赖 ====&lt;br /&gt;
对于Ubuntu 22.04 LTS:&lt;br /&gt;
&lt;br /&gt;
 sudo apt install build-essential openssl pkg-config libssl-dev libncurses5-dev pkg-config minizip libelf-dev flex bison  libc6-dev libidn11-dev rsync bc liblz4-tool  &lt;br /&gt;
 sudo apt install gcc-aarch64-linux-gnu dpkg-dev git&lt;br /&gt;
&lt;br /&gt;
==== 1.2 克隆内核源码 ====&lt;br /&gt;
你可以在“-b”参数后选择其他分支&lt;br /&gt;
&lt;br /&gt;
 mkdir ~/workspace&lt;br /&gt;
 cd ~/workspace&lt;br /&gt;
 git clone --depth=1 https://gitlab.com/sdm845-mainline/linux.git -b sdm845/6.8-dev&lt;br /&gt;
&lt;br /&gt;
可用分支可在gitlab网页查看&lt;br /&gt;
&lt;br /&gt;
==== 1.3  生成 .config ====&lt;br /&gt;
 make ARCH=arm64 defconfig sdm845.config&lt;br /&gt;
 # generate .config&lt;br /&gt;
&lt;br /&gt;
==== 1.4 进行编译 ====&lt;br /&gt;
&lt;br /&gt;
 make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- -j$(nproc)&lt;br /&gt;
&lt;br /&gt;
生成deb包供Debian系得GNU/Linux使用&lt;br /&gt;
&lt;br /&gt;
 make -j$(nproc) ARCH=arm64 KBUILD_DEBARCH=arm64 KDEB_CHANGELOG_DIST=mobile CROSS_COMPILE=aarch64-linux-gnu- deb-pkg&lt;br /&gt;
 # This will generate several deb files in ../&lt;br /&gt;
&lt;br /&gt;
=== 2 制作rootfs ===&lt;br /&gt;
==== 2.1 下载 ====&lt;br /&gt;
对于Archlinux，从http://os.archlinuxarm.org/os/ArchLinuxARM-aarch64-latest.tar.gz下载&lt;br /&gt;
&lt;br /&gt;
 cd ~/workspace&lt;br /&gt;
 wget http://os.archlinuxarm.org/os/ArchLinuxARM-aarch64-latest.tar.gz&lt;br /&gt;
&lt;br /&gt;
对于Ubuntu，从 [Index of /ubuntu-base](https://cdimage.ubuntu.com/ubuntu-base/)选择自己想要的版本&lt;br /&gt;
==== 2.2 制作 ====&lt;br /&gt;
===== 2.2.1 进入chroot =====&lt;br /&gt;
由于rootfs为ARM64，所以安装qemu-user-static&lt;br /&gt;
 sudo apt install qemu-user-static &lt;br /&gt;
&lt;br /&gt;
创建img并挂载&lt;br /&gt;
&lt;br /&gt;
 dd if=/dev/zero of=archlinux.img bs=1G count=6&lt;br /&gt;
 mkfs.ext4 archlinux.img&lt;br /&gt;
 mkdir arch&lt;br /&gt;
 sudo mount archlinux.img arch&lt;br /&gt;
&lt;br /&gt;
解压&lt;br /&gt;
&lt;br /&gt;
 cd arch&lt;br /&gt;
 sudo tar -xpvf ../ArchLinuxARM-aarch64-latest.tar.gz&lt;br /&gt;
&lt;br /&gt;
进入chroot环境&lt;br /&gt;
&lt;br /&gt;
 cd ..&lt;br /&gt;
 sudo mount --bind /dev arch/dev&lt;br /&gt;
 sudo mount -t devpts devpts arch/dev/pts -o gid=5,mode=620&lt;br /&gt;
 sudo mount -t proc proc arch/proc&lt;br /&gt;
 sudo mount -t sysfs sysfs arch/sys&lt;br /&gt;
 sudo mount -t tmpfs tmpfs arch/run&lt;br /&gt;
 &lt;br /&gt;
 sudo rm -rf arch/etc/resolv.conf &amp;amp;&amp;amp; sudo cp /etc/resolv.conf arch/etc/&lt;br /&gt;
 &lt;br /&gt;
 sudo chroot arch&lt;br /&gt;
===== 2.2.2 初始化pacman keyring =====&lt;br /&gt;
 pacman-key --init&lt;br /&gt;
 pacman-key --populate archlinuxarm&lt;br /&gt;
===== 2.2.3 换源 （可选） =====&lt;br /&gt;
详见 https://mirrors.tuna.tsinghua.edu.cn/help/archlinuxarm/&lt;br /&gt;
&lt;br /&gt;
 pacman -Syyu&lt;br /&gt;
 # upgrade&lt;br /&gt;
&lt;br /&gt;
===== 2.2.4 卸载旧的内核和firmware =====&lt;br /&gt;
 pacman -Q | grep -i linux&lt;br /&gt;
 pacman -R linux-aarch64 linux-firmware linux-firmware-whence&lt;br /&gt;
 &lt;br /&gt;
 exit&lt;br /&gt;
 # exit chroot environment&lt;br /&gt;
&lt;br /&gt;
===== 2.2.5 安装新的内核 =====&lt;br /&gt;
* 确保已经退出`chroot`环境&lt;br /&gt;
然后：&lt;br /&gt;
 cd ~/workspace/linux&lt;br /&gt;
 sudo make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu-  INSTALL_MOD_PATH=~/workspace/arch modules_install&lt;br /&gt;
 sudo make ARCH=arm64 INSTALL_PATH=~/workspace/arch/boot install&lt;br /&gt;
如果是`debian`系也可以直接chroot环境中用dpkg安装deb：&amp;lt;code&amp;gt;dpkg -i *.deb&amp;lt;/code&amp;gt;&lt;br /&gt;
===== 2.2.6 安装新的firmware =====&lt;br /&gt;
* 可以尝试从PostmarketOS&amp;lt;ref&amp;gt;https://wiki.postmarketos.org/wiki/OnePlus_6T_(oneplus-fajita)&amp;lt;/ref&amp;gt;中提取&lt;br /&gt;
进入chroot环境&lt;br /&gt;
 sudo chroot ~/workspace/arch&lt;br /&gt;
移动解压得到的文件&lt;br /&gt;
 mv * /usr/lib/firmware/&lt;br /&gt;
 ldconfig&lt;br /&gt;
修改/etc/mkinitcpio.conf&lt;br /&gt;
 nano /etc/mkinitcpio.conf&lt;br /&gt;
找到&lt;br /&gt;
 # BINARIES&lt;br /&gt;
 # This setting includes any additional binaries a given user may&lt;br /&gt;
 # wish into the CPIO image.  This is run last, so it may be used to&lt;br /&gt;
 # override the actual binaries included by a given hook&lt;br /&gt;
 # BINARIES are dependency parsed, so you may safely ignore libraries&lt;br /&gt;
 BINARIES=()&lt;br /&gt;
在`BINARIES=()`填入`xxxx_zap.mbn/ipa_fws.mbn`的路径&lt;br /&gt;
这两个固件的来源一般是手机提取并放在特殊的位置加载（具体由`dts/dtsi`指定）&lt;br /&gt;
对于fajita，改为：&lt;br /&gt;
  BINARIES=(/usr/lib/firmware/qcom/sdm845/oneplus6/a630_zap.mbn /usr/lib/firmware/qcom/sdm845/oneplus6/ipa_fws.mbn)&lt;br /&gt;
生成initrd.img&lt;br /&gt;
 ls /usr/lib/modules&lt;br /&gt;
 # get kernel version&lt;br /&gt;
 mkinitcpio --generate /boot/initrd.img-5.18.0-sdm845-00109-gf7ad1e5036bb-dirty --kernel 5.18.0-sdm845-00109-gf7ad1e5036bb-dirty&lt;br /&gt;
===== 2.2.7 安装软件包和基本配置&amp;lt;ref&amp;gt;https://archlinuxstudio.github.io/ArchLinuxTutorial/#/&amp;lt;/ref&amp;gt; =====&lt;br /&gt;
====== 2.2.7.1 设置时区 ======&lt;br /&gt;
 ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime&lt;br /&gt;
 # Shanghai&lt;br /&gt;
====== 2.2.7.2 设置locale ======&lt;br /&gt;
参考：https://wiki.archlinux.org/title/Locale&lt;br /&gt;
&lt;br /&gt;
 nano /etc/locale.gen&lt;br /&gt;
 # uncomment en_US.UTF-8 UTF-8&lt;br /&gt;
 # uncomment zh_CN.UTF-8 UTF-8&lt;br /&gt;
 &lt;br /&gt;
 locale-gen&lt;br /&gt;
&lt;br /&gt;
====== 2.2.7.3 自定义主机名 ======&lt;br /&gt;
 # For example&lt;br /&gt;
 echo 'OnePlus6T' &amp;gt; /etc/hostname&lt;br /&gt;
&lt;br /&gt;
====== 2.2.7.4 alarm（Archlinuxarm内置非root用户）配置 ======&lt;br /&gt;
&lt;br /&gt;
更改alarm密码，并添加到wheel用户组&lt;br /&gt;
&lt;br /&gt;
 passwd alarm&lt;br /&gt;
 # Change its password. Default is &amp;quot;alarm&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 usermod -aG wheel alarm&lt;br /&gt;
&lt;br /&gt;
添加sudo，设置sudo权限&lt;br /&gt;
&lt;br /&gt;
 pacman -S sudo&lt;br /&gt;
 EDITOR=nano visudo&lt;br /&gt;
&lt;br /&gt;
 找到下面这样的一行，把前面的注释符号 `#` 去掉&lt;br /&gt;
&lt;br /&gt;
 #%wheel ALL=(ALL:ALL) ALL&lt;br /&gt;
&lt;br /&gt;
====== 2.2.7.5 必要软件包 ======&lt;br /&gt;
 pacman -S base base-devel dhcpcd iwd&lt;br /&gt;
 pacman -S grub efibootmgr&lt;br /&gt;
 &lt;br /&gt;
 pacman -S networkmanager modemmanager&lt;br /&gt;
 pacman -S bluez bluez-utils pulseaudio-bluetooth&lt;br /&gt;
 pacman -S qrtr rmtfs&lt;br /&gt;
 systemctl enable NetworkManager bluetooth qrtr-ns rmtfs &lt;br /&gt;
 systemctl enable ModemManager&lt;br /&gt;
&lt;br /&gt;
 pacman -S git wget&lt;br /&gt;
 pacman -S ntfs-3g usbutils&lt;br /&gt;
&lt;br /&gt;
再安装 pd-mapper 和 tqftpserv&lt;br /&gt;
* 可以此处下载成品：https://github.com/silime/ArchLinux-Packages&lt;br /&gt;
* 也可以在步骤2.2.7.6后直接用pacman安装！&lt;br /&gt;
* 注：默认的PKGBUILD有问题，需要手动修复，在这里不详细描述，如果嫌麻烦，也可以直接编译安装&lt;br /&gt;
a. 直接编译安装（不推荐）：&lt;br /&gt;
 git clone https://github.com/andersson/pd-mapper.git&lt;br /&gt;
 git clone https://github.com/andersson/tqftpserv.git&lt;br /&gt;
 cd pd-mapper &amp;amp;&amp;amp; make &amp;amp;&amp;amp; make install &amp;amp;&amp;amp; cd ..&lt;br /&gt;
 cd tqftpserv &amp;amp;&amp;amp; make &amp;amp;&amp;amp; make install &amp;amp;&amp;amp; cd ..&lt;br /&gt;
 &lt;br /&gt;
 # clean&lt;br /&gt;
 rm -rf tqftpserv pd-mapper&lt;br /&gt;
&lt;br /&gt;
b. 使用pkgbuild&lt;br /&gt;
 # Switch to alarm first&lt;br /&gt;
 su alarm&lt;br /&gt;
&lt;br /&gt;
 cd ~&lt;br /&gt;
 # Compile and Install pd-mapper&lt;br /&gt;
 git clone https://aur.archlinux.org/pd-mapper-git.git ~/pd-mapper-git&lt;br /&gt;
 cd ~/pd-mapper-git&lt;br /&gt;
 &lt;br /&gt;
 nano PKGBUILD&lt;br /&gt;
 # fix some errors&lt;br /&gt;
 makepkg -si&lt;br /&gt;
 &lt;br /&gt;
 #Compile and Install tqftpserv&lt;br /&gt;
 git clone https://aur.archlinux.org/tqftpserv-git.git ~/tqftpserv-git&lt;br /&gt;
 cd ~/tqftpserv-git&lt;br /&gt;
 &lt;br /&gt;
 nano PKGBUILD&lt;br /&gt;
 # fix some errors&lt;br /&gt;
 makepkg -si&lt;br /&gt;
&lt;br /&gt;
启用 pd-mapper 和 tqftpserv&lt;br /&gt;
 sudo systemctl enable tqftpserv pd-mapper&lt;br /&gt;
回到root用户&lt;br /&gt;
 exit&lt;br /&gt;
&lt;br /&gt;
====== 2.2.7.6 添加Renegade Project源&amp;lt;ref&amp;gt;https://mirror.renegade-project.tech/index.html#/&amp;lt;/ref&amp;gt;（可选） ======&lt;br /&gt;
导入 GPG key:&lt;br /&gt;
 pacman-key --recv-keys 5E29D8F17064598A7A2223E2C735F8DF5B624511&lt;br /&gt;
 pacman-key --lsign-key 5E29D8F17064598A7A2223E2C735F8DF5B624511&lt;br /&gt;
在 /etc/pacman.conf 文件末尾添加以下内容：&lt;br /&gt;
 [renegade-project]&lt;br /&gt;
 Server = https://mirror.renegade-project.tech/arch/$arch&lt;br /&gt;
安装 renegade-project-keyring：&lt;br /&gt;
 pacman -S renegade-project-keyring&lt;br /&gt;
刷新&lt;br /&gt;
 pacman -Syy&lt;br /&gt;
&lt;br /&gt;
====== 2.2.7.7 安装用于切换slot的qbootctl（推荐） ======&lt;br /&gt;
* 确保已经完成了步骤2.2.7.6&lt;br /&gt;
 pacman -Sy qbootctl&lt;br /&gt;
&lt;br /&gt;
====== 2.2.7.8 安装更多package使一些硬件工作 ======&lt;br /&gt;
* 来自：https://github.com/silime/ArchLinux-Packages/releases&lt;br /&gt;
** 请用pacman安装[https://github.com/silime/ArchLinux-Packages/releases/tag/sensors sensors package]，[https://github.com/silime/ArchLinux-Packages/releases/tag/alsa-ucm-oneplus-0.5.10 alsa-ucm-oneplus-0.5.10]，[https://github.com/silime/ArchLinux-Packages/releases/tag/q6voice q6voice]&lt;br /&gt;
&lt;br /&gt;
====== 2.2.7.9 修改Modemmanager ======&lt;br /&gt;
* 重新编译ModemManager，开启`plugin_qcom_soc`,并安装&lt;br /&gt;
 su alarm&lt;br /&gt;
 mkdir ~/modemmanager&lt;br /&gt;
 cd ~/modemmanager&lt;br /&gt;
 nano PKGBUILD&lt;br /&gt;
* 将 [PKGBUILD - modemmanager (aarch64) | Package Files | Arch Linux ARM](https://archlinuxarm.org/packages/aarch64/modemmanager/files/PKGBUILD) 中的内容复制进PKGBUILD，然后进行以下修改&lt;br /&gt;
** 将`arch=(x86_64)`改为`arch=(x86_64 aarch64)`&lt;br /&gt;
** 将`-D plugin_qcom_soc=disabled`一行删除&lt;br /&gt;
 10c10&lt;br /&gt;
 &amp;lt; arch=(x86_64)&lt;br /&gt;
 ---&lt;br /&gt;
 &amp;gt; arch=(x86_64 aarch64)&lt;br /&gt;
 35d34&lt;br /&gt;
 &amp;lt;     -D plugin_qcom_soc=disabled&lt;br /&gt;
* 编译和安装&lt;br /&gt;
 makepkg -rsi&lt;br /&gt;
 # compile and install&lt;br /&gt;
 &lt;br /&gt;
 cd ..&lt;br /&gt;
 sudo rm -rf ~/modemmanager&lt;br /&gt;
 exit&lt;br /&gt;
&lt;br /&gt;
 systemctl enable ModemManager&lt;br /&gt;
&lt;br /&gt;
====== 2.2.7.10 其他软件 ======&lt;br /&gt;
中文字体&lt;br /&gt;
&lt;br /&gt;
 pacman -S noto-fonts-cjk&lt;br /&gt;
 # Chinese fonts&lt;br /&gt;
&lt;br /&gt;
yay&lt;br /&gt;
&lt;br /&gt;
 su alarm&lt;br /&gt;
 cd ~&lt;br /&gt;
 git clone https://aur.archlinux.org/yay-bin.git&lt;br /&gt;
 cd yay-bin &amp;amp;&amp;amp; makepkg -si&lt;br /&gt;
 exit&lt;br /&gt;
&lt;br /&gt;
桌面环境&lt;br /&gt;
&lt;br /&gt;
* 自选，建议gnome或phosh&lt;br /&gt;
** 如`gnome`&lt;br /&gt;
&lt;br /&gt;
 pacman -S gnome&lt;br /&gt;
 systemctl enable gdm&lt;br /&gt;
&lt;br /&gt;
* 如安装phosh，建议添加danctnix源 [danctnix (arikawa-hi.me)](https://p64.arikawa-hi.me/danctnix/)，然后安装&lt;br /&gt;
&lt;br /&gt;
网络浏览器&lt;br /&gt;
&lt;br /&gt;
 # for example, chromium&lt;br /&gt;
 pacman -S chromium&lt;br /&gt;
&lt;br /&gt;
===== 2.2.8 tfa98xx音频修复 =====&lt;br /&gt;
 echo 'snd-soc-tfa98xx' &amp;gt; /etc/modules-load.d/snd-soc-tfa98xx.conf&lt;br /&gt;
&lt;br /&gt;
===== 2.2.9 打包 =====&lt;br /&gt;
先清理，在chroot环境中&lt;br /&gt;
&lt;br /&gt;
 pacman -Scc&lt;br /&gt;
 # pacman&lt;br /&gt;
&lt;br /&gt;
进alarm用户&lt;br /&gt;
 su alarm # switch to alarm&lt;br /&gt;
 # clean bash history for alarm&lt;br /&gt;
 cat /dev/null &amp;gt; ~/.bash_history &amp;amp;&amp;amp; history -c &amp;amp;&amp;amp; exit&lt;br /&gt;
&lt;br /&gt;
在root用户&lt;br /&gt;
 # clean bash history for root&lt;br /&gt;
 cat /dev/null &amp;gt; ~/.bash_history &amp;amp;&amp;amp; history -c&lt;br /&gt;
&lt;br /&gt;
退出chroot环境&lt;br /&gt;
&lt;br /&gt;
 exit&lt;br /&gt;
&lt;br /&gt;
解除挂载&lt;br /&gt;
&lt;br /&gt;
 cd ~/workspace&lt;br /&gt;
 sudo umount ~/workspace/arch/run&lt;br /&gt;
 sudo umount ~/workspace/arch/sys&lt;br /&gt;
 sudo umount ~/workspace/arch/proc&lt;br /&gt;
 sudo umount ~/workspace/arch/dev/pts&lt;br /&gt;
 sudo umount ~/workspace/arch/dev&lt;br /&gt;
&lt;br /&gt;
用tar打包&lt;br /&gt;
&lt;br /&gt;
 cd ~/workspace/arch&lt;br /&gt;
 sudo tar -czvf ~/workspace/arch.tar.gz *&lt;br /&gt;
 # This will generate arch.tar.gz&lt;br /&gt;
&lt;br /&gt;
=== 3 安装到手机 ===&lt;br /&gt;
==== 3.1 刷入twrp和Magisk ====&lt;br /&gt;
* 你也可以使用KernelSU或其它方式获取root权限&lt;br /&gt;
==== 3.2 分区、格式化分区 ====&lt;br /&gt;
连接手机、电脑，手机进twrp&lt;br /&gt;
&lt;br /&gt;
将`parted`复制到手机储存&lt;br /&gt;
&lt;br /&gt;
电脑输入：&lt;br /&gt;
 adb shell&lt;br /&gt;
然后输入：&lt;br /&gt;
 cp /sdcard/parted /sbin/ &amp;amp;&amp;amp; chmod 755 /sbin/parted&lt;br /&gt;
 umount /data &amp;amp;&amp;amp; umount /sdcard&lt;br /&gt;
 parted /dev/block/sda&lt;br /&gt;
输入`p`查看当前分区情况&lt;br /&gt;
 p&lt;br /&gt;
对于一加6T，可这样分区：&lt;br /&gt;
* 压缩分区17&lt;br /&gt;
 resizepart 17&lt;br /&gt;
 # input 61GB &lt;br /&gt;
* 创建新分区&lt;br /&gt;
 mkpart esp fat32 61GB 62GB&lt;br /&gt;
 mkpart arch ext4 62GB 125GB&lt;br /&gt;
 set 18 esp on&lt;br /&gt;
随后退出parted&lt;br /&gt;
 q&lt;br /&gt;
再次重启到twrp，格式化各分区&lt;br /&gt;
&lt;br /&gt;
电脑输入：&lt;br /&gt;
 adb shell&lt;br /&gt;
然后输入：&lt;br /&gt;
 mkfs.fat -F32 -s1 /dev/block/by-name/esp&lt;br /&gt;
 mke2fs -t ext4 /dev/block/by-name/arch&lt;br /&gt;
 mke2fs -t ext4 /dev/block/by-name/userdata&lt;br /&gt;
&lt;br /&gt;
==== 3.3 获取UUID ====&lt;br /&gt;
重启到Android，在termux或adb shell输入&lt;br /&gt;
 su&lt;br /&gt;
 blkid /dev/block/by-name/arch&lt;br /&gt;
记下UUID值&lt;br /&gt;
&lt;br /&gt;
==== 3.4 准备grub配置文件 ====&lt;br /&gt;
*下载：&lt;br /&gt;
** https://forum.renegade-project.tech/uploads/short-url/hlr2fHanyoSkM1pOPy1eywhLiSm.zip&lt;br /&gt;
** https://forum.renegade-project.tech/uploads/short-url/hlr2fHanyoSkM1pOPy1eywhLiSm.zip&lt;br /&gt;
&lt;br /&gt;
将boot.tar.gz中grub.cfg的uuid全部改为步骤3.3中得到的&lt;br /&gt;
替换所有这种字符&lt;br /&gt;
[[文件:3a12afa8f91aef1d2d2fb693b93d0e13eae37729.png|缩略图]]&lt;br /&gt;
==== 3.5 解压rootfs ====&lt;br /&gt;
将arch.tar.gz复制到手机内部存储&lt;br /&gt;
* 建议使用termux操作&lt;br /&gt;
 pkg update&lt;br /&gt;
 pkg install tsu&lt;br /&gt;
提权&lt;br /&gt;
 tsu&lt;br /&gt;
 # root permission needed&lt;br /&gt;
挂载&amp;amp;解压&lt;br /&gt;
 cd ~&lt;br /&gt;
 mkdir arch&lt;br /&gt;
 mount /dev/block/by-name/arch ~/arch&lt;br /&gt;
 &lt;br /&gt;
 cd ~/arch&lt;br /&gt;
 tar -xpvf /sdcard/arch.tar.gz&lt;br /&gt;
 # extract&lt;br /&gt;
&lt;br /&gt;
==== 3.6 安装grub ====&lt;br /&gt;
 tsu&lt;br /&gt;
&lt;br /&gt;
 cd ~&lt;br /&gt;
 mkdir esp&lt;br /&gt;
&lt;br /&gt;
 mount /dev/block/by-name/esp esp&lt;br /&gt;
 mkdir esp/EFI&lt;br /&gt;
&lt;br /&gt;
将esp.zip中这两个文件夹复制到~/esp/EFI/&lt;br /&gt;
&lt;br /&gt;
将boot.tar.gz内两个文件夹复制进~/arch/boot&lt;br /&gt;
* 检查&lt;br /&gt;
 # /dev/block/by-name/arch has been mounted!&lt;br /&gt;
 cd ~/arch/boot &amp;amp;&amp;amp; ls&lt;br /&gt;
&lt;br /&gt;
==== 3.7 获取、添加dtb ====&lt;br /&gt;
对于一加6T，还需要将这两个dtb复制到~/arch/boot&lt;br /&gt;
* 注：对于一加6（T）不要使用内核编译生成的dtb&lt;br /&gt;
** 见arch/arm64/boot/dts/qcom/sdm845-oneplus-common.dtsi,将不会有显示&lt;br /&gt;
对于其它设备，请获取合适的dtb&lt;br /&gt;
&lt;br /&gt;
 /delete-node/ &amp;amp;rmtfs_mem;&lt;br /&gt;
 &lt;br /&gt;
 / {&lt;br /&gt;
 	aliases {&lt;br /&gt;
 		serial0 = &amp;amp;uart9;&lt;br /&gt;
 		hsuart0 = &amp;amp;uart6;&lt;br /&gt;
 	};&lt;br /&gt;
 &lt;br /&gt;
 	chosen {&lt;br /&gt;
 		stdout-path = &amp;quot;serial0:115200n8&amp;quot;; /*line 30 in dtsi*/&lt;br /&gt;
 	};&lt;br /&gt;
 &lt;br /&gt;
 	volume-keys {&lt;br /&gt;
 		compatible = &amp;quot;gpio-keys&amp;quot;;&lt;br /&gt;
 		label = &amp;quot;Volume keys&amp;quot;;&lt;br /&gt;
 		autorepeat;&lt;br /&gt;
&lt;br /&gt;
=====  3.7.1 dtb的获取 =====&lt;br /&gt;
下载适用自己设备的postmarketOS的boot.img.xz，解压得到img文件&lt;br /&gt;
&lt;br /&gt;
使用 extract-dtb&amp;lt;ref&amp;gt;https://pypi.org/project/extract-dtb/&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple extract-dtb&lt;br /&gt;
 extract-dtb 20220608-1408-postmarketOS-v22.06-phosh-18-oneplus-fajita-boot.img -o .&lt;br /&gt;
 # use your own img&lt;br /&gt;
 # will generate something like 01_dtbdump_,OnePlus_6T.dtb&lt;br /&gt;
 &lt;br /&gt;
 ls&lt;br /&gt;
 mv 01_dtbdump_,OnePlus_6T.dtb sdm845-oneplus-fajita.dtb&lt;br /&gt;
&lt;br /&gt;
===== 3.7.2 修改dtb，使得可能支持USB otg =====&lt;br /&gt;
安装dtc工具&lt;br /&gt;
 sudo apt install device-tree-compiler -y&lt;br /&gt;
&lt;br /&gt;
转换dtb为dts&lt;br /&gt;
 dtc -I dtb -O dts -o temp.dts sdm845-oneplus-fajita.dtb&lt;br /&gt;
&lt;br /&gt;
修改temp.dts&lt;br /&gt;
 nano temp.dts&lt;br /&gt;
&lt;br /&gt;
查找`dr_mode`&lt;br /&gt;
                         dwc3@a600000 {&lt;br /&gt;
                                 compatible = &amp;quot;snps,dwc3&amp;quot;;&lt;br /&gt;
                                 reg = &amp;lt;0x00 0xa600000 0x00 0xcd00&amp;gt;;&lt;br /&gt;
                                 interrupts = &amp;lt;0x00 0x85 0x04&amp;gt;;&lt;br /&gt;
                                 iommus = &amp;lt;0x25 0x740 0x00&amp;gt;;&lt;br /&gt;
                                 snps,dis_u2_susphy_quirk;&lt;br /&gt;
                                 snps,dis_enblslpm_quirk;&lt;br /&gt;
                                 phys = &amp;lt;0xb8&amp;gt;;&lt;br /&gt;
                                 phy-names = &amp;quot;usb2-phy&amp;quot;;&lt;br /&gt;
                                 dr_mode = &amp;quot;peripheral&amp;quot;;&lt;br /&gt;
                                 maximum-speed = &amp;quot;high-speed&amp;quot;;&lt;br /&gt;
                         };&lt;br /&gt;
&lt;br /&gt;
将`peripheral`改为`host` 此时生成的dtb将支持otg，但要外界供电，为了USB主动供电，需要进一步修改,但会导致充电失效&lt;br /&gt;
将charger@1000那段删除&lt;br /&gt;
 &lt;br /&gt;
                         pmic@2 {&lt;br /&gt;
                                 compatible = &amp;quot;qcom,pmi8998\0qcom,spmi-pmic&amp;quot;;&lt;br /&gt;
                                 reg = &amp;lt;0x02 0x00&amp;gt;;&lt;br /&gt;
                                 #address-cells = &amp;lt;0x01&amp;gt;;&lt;br /&gt;
                                 #size-cells = &amp;lt;0x00&amp;gt;;&lt;br /&gt;
 &lt;br /&gt;
                                 charger@1000 {&lt;br /&gt;
                                         compatible = &amp;quot;qcom,pmi8998-charger&amp;quot;;&lt;br /&gt;
                                         reg = &amp;lt;0x1000&amp;gt;;&lt;br /&gt;
                                         interrupts = &amp;lt;0x02 0x13 0x04 0x03 0x02 0x&amp;gt;&lt;br /&gt;
                                         interrupt-names = &amp;quot;usb-plugin\0bat-ov\0wd&amp;gt;&lt;br /&gt;
                                         io-channels = &amp;lt;0xdd 0x03 0xdd 0x04&amp;gt;;&lt;br /&gt;
                                         io-channel-names = &amp;quot;usbin_i\0usbin_v&amp;quot;;&lt;br /&gt;
                                         status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
                                         monitored-battery = &amp;lt;0xde&amp;gt;;&lt;br /&gt;
                                 };&lt;br /&gt;
 &lt;br /&gt;
                                 gpios@c000 {&lt;br /&gt;
                                         compatible = &amp;quot;qcom,pmi8998-gpio\0qcom,spm&amp;gt;&lt;br /&gt;
                                         reg = &amp;lt;0xc000&amp;gt;;&lt;br /&gt;
                                         gpio-controller;&lt;br /&gt;
                                         gpio-ranges = &amp;lt;0xdf 0x00 0x00 0x0e&amp;gt;;&lt;br /&gt;
                                         #gpio-cells = &amp;lt;0x02&amp;gt;;&lt;br /&gt;
                                         interrupt-controller;&lt;br /&gt;
                                         #interrupt-cells = &amp;lt;0x02&amp;gt;;&lt;br /&gt;
                                         phandle = &amp;lt;0xdf&amp;gt;;&lt;br /&gt;
                                 };&lt;br /&gt;
&lt;br /&gt;
生成新的dtb&lt;br /&gt;
 dtc -I dts -O dtb -o sdm845-oneplus-fajita-host.dtb temp.dts&lt;br /&gt;
复制好dtb，你的usb otg应该就**有可能**工作&lt;br /&gt;
&lt;br /&gt;
=== 4 刷入UEFI ===&lt;br /&gt;
进入bootloader&lt;br /&gt;
&lt;br /&gt;
临时启动&lt;br /&gt;
 fastboot boot boot-xxx.img&lt;br /&gt;
&lt;br /&gt;
刷入到当前boot分区&lt;br /&gt;
 fastboot flash boot boot-xxx.img&lt;br /&gt;
&lt;br /&gt;
=== 5 Enjoy！===&lt;br /&gt;
恭喜你！你已经成功在你的手机上安装Archlinux！！希望你能有所收获！！ &lt;br /&gt;
==== 5.1 adbd ====&lt;br /&gt;
* 确保已经添加Renegade Project源&lt;br /&gt;
 sudo pacman -S adbd&lt;br /&gt;
adbd能帮助你用adb调试手机上的Linux&lt;br /&gt;
==== 5.2 coremark跑分 ====&lt;br /&gt;
 yay -S coremark-git&lt;br /&gt;
 coremark&lt;br /&gt;
&lt;br /&gt;
==== 5.3 unixbench 跑分 ====&lt;br /&gt;
 ========================================================================&lt;br /&gt;
    BYTE UNIX Benchmarks (Version 5.1.3)&lt;br /&gt;
 &lt;br /&gt;
    System: : GNU/Linux&lt;br /&gt;
    OS: GNU/Linux -- 5.18.0-sdm845-00109-gf7ad1e5036bb-dirty -- #1 SMP PREEMPT Thu Jun 2 01:12:20 UTC 2022&lt;br /&gt;
    Machine: aarch64 (unknown)&lt;br /&gt;
    Language: en_US.utf8 (charmap=&amp;quot;UTF-8&amp;quot;, collate=&amp;quot;UTF-8&amp;quot;)&lt;br /&gt;
    CPU 0:  (38.4 bogomips)&lt;br /&gt;
 &lt;br /&gt;
    CPU 1:  (38.4 bogomips)&lt;br /&gt;
 &lt;br /&gt;
    CPU 2:  (38.4 bogomips)&lt;br /&gt;
 &lt;br /&gt;
    CPU 3:  (38.4 bogomips)&lt;br /&gt;
 &lt;br /&gt;
    CPU 4:  (38.4 bogomips)&lt;br /&gt;
 &lt;br /&gt;
    CPU 5:  (38.4 bogomips)&lt;br /&gt;
 &lt;br /&gt;
    CPU 6:  (38.4 bogomips)&lt;br /&gt;
 &lt;br /&gt;
    CPU 7:  (38.4 bogomips)&lt;br /&gt;
 &lt;br /&gt;
    08:08:45 up 4 min,  3 users,  load average: 0.23, 0.15, 0.07; runlevel&lt;br /&gt;
 &lt;br /&gt;
 ------------------------------------------------------------------------&lt;br /&gt;
 Benchmark Run: Wed Jun 15 2022 08:08:45 - 08:36:48&lt;br /&gt;
 8 CPUs in system; running 1 parallel copy of tests&lt;br /&gt;
 &lt;br /&gt;
 Dhrystone 2 using register variables       31371686.9 lps   (10.0 s, 7 samples)&lt;br /&gt;
 Double-Precision Whetstone                     6636.9 MWIPS (9.9 s, 7 samples)&lt;br /&gt;
 Execl Throughput                               3464.7 lps   (30.0 s, 2 samples)&lt;br /&gt;
 File Copy 1024 bufsize 2000 maxblocks        431850.5 KBps  (30.0 s, 2 samples)&lt;br /&gt;
 File Copy 256 bufsize 500 maxblocks          212468.6 KBps  (30.0 s, 2 samples)&lt;br /&gt;
 File Copy 4096 bufsize 8000 maxblocks       1100792.9 KBps  (30.0 s, 2 samples)&lt;br /&gt;
 Pipe Throughput                             1189114.2 lps   (10.0 s, 7 samples)&lt;br /&gt;
 Pipe-based Context Switching                  16156.4 lps   (10.0 s, 7 samples)&lt;br /&gt;
 Process Creation                               1880.5 lps   (30.0 s, 2 samples)&lt;br /&gt;
 Shell Scripts (1 concurrent)                   1267.7 lpm   (60.0 s, 2 samples)&lt;br /&gt;
 Shell Scripts (8 concurrent)                    928.5 lpm   (60.0 s, 2 samples)&lt;br /&gt;
 System Call Overhead                         904143.8 lps   (10.0 s, 7 samples)&lt;br /&gt;
&lt;br /&gt;
 System Benchmarks Index Values               BASELINE       RESULT    INDEX&lt;br /&gt;
 Dhrystone 2 using register variables         116700.0   31371686.9   2688.2&lt;br /&gt;
 Double-Precision Whetstone                       55.0       6636.9   1206.7&lt;br /&gt;
 Execl Throughput                                 43.0       3464.7    805.7&lt;br /&gt;
 File Copy 1024 bufsize 2000 maxblocks          3960.0     431850.5   1090.5&lt;br /&gt;
 File Copy 256 bufsize 500 maxblocks            1655.0     212468.6   1283.8&lt;br /&gt;
 File Copy 4096 bufsize 8000 maxblocks          5800.0    1100792.9   1897.9&lt;br /&gt;
 Pipe Throughput                               12440.0    1189114.2    955.9&lt;br /&gt;
 Pipe-based Context Switching                   4000.0      16156.4     40.4&lt;br /&gt;
 Process Creation                                126.0       1880.5    149.2&lt;br /&gt;
 Shell Scripts (1 concurrent)                     42.4       1267.7    299.0&lt;br /&gt;
 Shell Scripts (8 concurrent)                      6.0        928.5   1547.5&lt;br /&gt;
 System Call Overhead                          15000.0     904143.8    602.8&lt;br /&gt;
                                                                   &lt;br /&gt;
 ========&lt;br /&gt;
 System Benchmarks Index Score                                         &lt;br /&gt;
 687.6&lt;br /&gt;
 &lt;br /&gt;
 ------------------------------------------------------------------------&lt;br /&gt;
 Benchmark Run: Wed Jun 15 2022 08:36:48 - 09:05:10&lt;br /&gt;
 8 CPUs in system; running 8 parallel copies of tests&lt;br /&gt;
 &lt;br /&gt;
 Dhrystone 2 using register variables      157010560.9 lps   (10.0 s, 7 samples)&lt;br /&gt;
 Double-Precision Whetstone                    38380.8 MWIPS (9.5 s, 7 samples)&lt;br /&gt;
 Execl Throughput                              14684.0 lps   (29.9 s, 2 samples)&lt;br /&gt;
 File Copy 1024 bufsize 2000 maxblocks        775566.4 KBps  (30.0 s, 2 samples)&lt;br /&gt;
 File Copy 256 bufsize 500 maxblocks          247697.5 KBps  (30.0 s, 2 samples)&lt;br /&gt;
 File Copy 4096 bufsize 8000 maxblocks       1947686.0 KBps  (30.0 s, 2 samples)&lt;br /&gt;
 Pipe Throughput                             6462292.1 lps   (10.0 s, 7 samples)&lt;br /&gt;
 Pipe-based Context Switching                 535021.4 lps   (10.0 s, 7 samples)&lt;br /&gt;
 Process Creation                              21863.7 lps   (30.0 s, 2 samples)&lt;br /&gt;
 Shell Scripts (1 concurrent)                  12727.2 lpm   (60.0 s, 2 samples)&lt;br /&gt;
 Shell Scripts (8 concurrent)                   1865.6 lpm   (60.1 s, 2 samples)&lt;br /&gt;
 System Call Overhead                        4647127.5 lps   (10.0 s, 7 samples)&lt;br /&gt;
 &lt;br /&gt;
 System Benchmarks Index Values               BASELINE       RESULT    INDEX&lt;br /&gt;
 Dhrystone 2 using register variables         116700.0  157010560.9  13454.2&lt;br /&gt;
 Double-Precision Whetstone                       55.0      38380.8   6978.3&lt;br /&gt;
 Execl Throughput                                 43.0      14684.0   3414.9&lt;br /&gt;
 File Copy 1024 bufsize 2000 maxblocks          3960.0     775566.4   1958.5&lt;br /&gt;
 File Copy 256 bufsize 500 maxblocks            1655.0     247697.5   1496.7&lt;br /&gt;
 File Copy 4096 bufsize 8000 maxblocks          5800.0    1947686.0   3358.1&lt;br /&gt;
 Pipe Throughput                               12440.0    6462292.1   5194.8&lt;br /&gt;
 Pipe-based Context Switching                   4000.0     535021.4   1337.6&lt;br /&gt;
 Process Creation                                126.0      21863.7   1735.2&lt;br /&gt;
 Shell Scripts (1 concurrent)                     42.4      12727.2   3001.7&lt;br /&gt;
 Shell Scripts (8 concurrent)                      6.0       1865.6   3109.4&lt;br /&gt;
 System Call Overhead                          15000.0    4647127.5   3098.1&lt;br /&gt;
                                                                    &lt;br /&gt;
  ========&lt;br /&gt;
  System Benchmarks Index Score                                        &lt;br /&gt;
  3187.6&lt;/div&gt;</summary>
		<author><name>Snnbyyds</name></author>
	</entry>
	<entry>
		<id>https://wiki.uotan.cn/index.php?title=%E4%B8%BA%E6%89%8B%E6%9C%BA%E5%AE%89%E8%A3%85Linux&amp;diff=256</id>
		<title>为手机安装Linux</title>
		<link rel="alternate" type="text/html" href="https://wiki.uotan.cn/index.php?title=%E4%B8%BA%E6%89%8B%E6%9C%BA%E5%AE%89%E8%A3%85Linux&amp;diff=256"/>
		<updated>2024-02-15T02:28:04Z</updated>

		<summary type="html">&lt;p&gt;Snnbyyds：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== 该章节将引导你为一些手机安装主线Linux操作系统 ==&lt;br /&gt;
注意：本教程中，操作环境为64位Ubuntu，目标机器为OnePlus6T，我们将尝试利用UEFI在OnePlus6T上启动Archlinux&lt;br /&gt;
* 不同于Windows, Linux的安装过程可能具有一定的复杂性，步骤繁杂，方案多样，如果你使用不同的机型，请先仔细阅读本文和搜索资料；此外，主线Linux的开发（内核驱动移植，制作dts等）不在本文讨论范畴内。&lt;br /&gt;
[[文件:Archlinux-neofetch-op6t.png|缩略图|无|349x349像素]]&lt;br /&gt;
=== 1 编译内核 ===&lt;br /&gt;
sdm845成品：&lt;br /&gt;
[Releases · silime/kernel-builder (github.com)](https://github.com/silime/kernel-builder)&lt;br /&gt;
==== 1.1 安装相关依赖 ====&lt;br /&gt;
对于Ubuntu 22.04 LTS:&lt;br /&gt;
&lt;br /&gt;
 sudo apt install build-essential openssl pkg-config libssl-dev libncurses5-dev pkg-config minizip libelf-dev flex bison  libc6-dev libidn11-dev rsync bc liblz4-tool  &lt;br /&gt;
 sudo apt install gcc-aarch64-linux-gnu dpkg-dev git&lt;br /&gt;
&lt;br /&gt;
==== 1.2 克隆内核源码 ====&lt;br /&gt;
你可以在“-b”参数后选择其他分支&lt;br /&gt;
&lt;br /&gt;
 mkdir ~/workspace&lt;br /&gt;
 cd ~/workspace&lt;br /&gt;
 git clone --depth=1 https://gitlab.com/sdm845-mainline/linux.git -b sdm845/6.8-dev&lt;br /&gt;
&lt;br /&gt;
可用分支可在gitlab网页查看&lt;br /&gt;
&lt;br /&gt;
==== 1.3  生成 .config ====&lt;br /&gt;
 make ARCH=arm64 defconfig sdm845.config&lt;br /&gt;
 # generate .config&lt;br /&gt;
&lt;br /&gt;
==== 1.4 进行编译 ====&lt;br /&gt;
&lt;br /&gt;
 make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- -j$(nproc)&lt;br /&gt;
&lt;br /&gt;
生成deb包供Debian系得GNU/Linux使用&lt;br /&gt;
&lt;br /&gt;
 make -j$(nproc) ARCH=arm64 KBUILD_DEBARCH=arm64 KDEB_CHANGELOG_DIST=mobile CROSS_COMPILE=aarch64-linux-gnu- deb-pkg&lt;br /&gt;
 # This will generate several deb files in ../&lt;br /&gt;
&lt;br /&gt;
=== 2 制作rootfs ===&lt;br /&gt;
==== 2.1 下载 ====&lt;br /&gt;
对于Archlinux，从http://os.archlinuxarm.org/os/ArchLinuxARM-aarch64-latest.tar.gz下载&lt;br /&gt;
&lt;br /&gt;
 cd ~/workspace&lt;br /&gt;
 wget http://os.archlinuxarm.org/os/ArchLinuxARM-aarch64-latest.tar.gz&lt;br /&gt;
&lt;br /&gt;
对于Ubuntu，从 [Index of /ubuntu-base](https://cdimage.ubuntu.com/ubuntu-base/)选择自己想要的版本&lt;br /&gt;
==== 2.2 制作 ====&lt;br /&gt;
===== 2.2.1 进入chroot =====&lt;br /&gt;
由于rootfs为ARM64，所以安装qemu-user-static&lt;br /&gt;
 sudo apt install qemu-user-static &lt;br /&gt;
&lt;br /&gt;
创建img并挂载&lt;br /&gt;
&lt;br /&gt;
 dd if=/dev/zero of=archlinux.img bs=1G count=6&lt;br /&gt;
 mkfs.ext4 archlinux.img&lt;br /&gt;
 mkdir arch&lt;br /&gt;
 sudo mount archlinux.img arch&lt;br /&gt;
&lt;br /&gt;
解压&lt;br /&gt;
&lt;br /&gt;
 cd arch&lt;br /&gt;
 sudo tar -xpvf ../ArchLinuxARM-aarch64-latest.tar.gz&lt;br /&gt;
&lt;br /&gt;
进入chroot环境&lt;br /&gt;
&lt;br /&gt;
 cd ..&lt;br /&gt;
 sudo mount --bind /dev arch/dev&lt;br /&gt;
 sudo mount -t devpts devpts arch/dev/pts -o gid=5,mode=620&lt;br /&gt;
 sudo mount -t proc proc arch/proc&lt;br /&gt;
 sudo mount -t sysfs sysfs arch/sys&lt;br /&gt;
 sudo mount -t tmpfs tmpfs arch/run&lt;br /&gt;
 &lt;br /&gt;
 sudo rm -rf arch/etc/resolv.conf &amp;amp;&amp;amp; sudo cp /etc/resolv.conf arch/etc/&lt;br /&gt;
 &lt;br /&gt;
 sudo chroot arch&lt;br /&gt;
===== 2.2.2 初始化pacman keyring =====&lt;br /&gt;
 pacman-key --init&lt;br /&gt;
 pacman-key --populate archlinuxarm&lt;br /&gt;
===== 2.2.3 换源 （可选） =====&lt;br /&gt;
详见 https://mirrors.tuna.tsinghua.edu.cn/help/archlinuxarm/&lt;br /&gt;
&lt;br /&gt;
 pacman -Syyu&lt;br /&gt;
 # upgrade&lt;br /&gt;
&lt;br /&gt;
===== 2.2.4 卸载旧的内核和firmware =====&lt;br /&gt;
 pacman -Q | grep -i linux&lt;br /&gt;
 pacman -R linux-aarch64 linux-firmware linux-firmware-whence&lt;br /&gt;
 &lt;br /&gt;
 exit&lt;br /&gt;
 # exit chroot environment&lt;br /&gt;
&lt;br /&gt;
===== 2.2.5 安装新的内核 =====&lt;br /&gt;
* 确保已经退出`chroot`环境&lt;br /&gt;
然后：&lt;br /&gt;
 cd ~/workspace/linux&lt;br /&gt;
 sudo make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu-  INSTALL_MOD_PATH=~/workspace/arch modules_install&lt;br /&gt;
 sudo make ARCH=arm64 INSTALL_PATH=~/workspace/arch/boot install&lt;br /&gt;
如果是`debian`系也可以直接chroot环境中用dpkg安装deb：&amp;lt;code&amp;gt;dpkg -i *.deb&amp;lt;/code&amp;gt;&lt;br /&gt;
===== 2.2.6 安装新的firmware =====&lt;br /&gt;
* 可以尝试从PostmarketOS&amp;lt;ref&amp;gt;https://wiki.postmarketos.org/wiki/OnePlus_6T_(oneplus-fajita)&amp;lt;/ref&amp;gt;中提取&lt;br /&gt;
进入chroot环境&lt;br /&gt;
 sudo chroot ~/workspace/arch&lt;br /&gt;
移动解压得到的文件&lt;br /&gt;
 mv * /usr/lib/firmware/&lt;br /&gt;
 ldconfig&lt;br /&gt;
修改/etc/mkinitcpio.conf&lt;br /&gt;
 nano /etc/mkinitcpio.conf&lt;br /&gt;
找到&lt;br /&gt;
 # BINARIES&lt;br /&gt;
 # This setting includes any additional binaries a given user may&lt;br /&gt;
 # wish into the CPIO image.  This is run last, so it may be used to&lt;br /&gt;
 # override the actual binaries included by a given hook&lt;br /&gt;
 # BINARIES are dependency parsed, so you may safely ignore libraries&lt;br /&gt;
 BINARIES=()&lt;br /&gt;
在`BINARIES=()`填入`xxxx_zap.mbn/ipa_fws.mbn`的路径&lt;br /&gt;
这两个固件的来源一般是手机提取并放在特殊的位置加载（具体由`dts/dtsi`指定）&lt;br /&gt;
对于fajita，改为：&lt;br /&gt;
  BINARIES=(/usr/lib/firmware/qcom/sdm845/oneplus6/a630_zap.mbn /usr/lib/firmware/qcom/sdm845/oneplus6/ipa_fws.mbn)&lt;br /&gt;
生成initrd.img&lt;br /&gt;
 ls /usr/lib/modules&lt;br /&gt;
 # get kernel version&lt;br /&gt;
 mkinitcpio --generate /boot/initrd.img-5.18.0-sdm845-00109-gf7ad1e5036bb-dirty --kernel 5.18.0-sdm845-00109-gf7ad1e5036bb-dirty&lt;br /&gt;
===== 2.2.7 安装软件包和基本配置&amp;lt;ref&amp;gt;https://archlinuxstudio.github.io/ArchLinuxTutorial/#/&amp;lt;/ref&amp;gt; =====&lt;br /&gt;
====== 2.2.7.1 设置时区 ======&lt;br /&gt;
 ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime&lt;br /&gt;
 # Shanghai&lt;br /&gt;
====== 2.2.7.2 设置locale ======&lt;br /&gt;
参考：https://wiki.archlinux.org/title/Locale&lt;br /&gt;
&lt;br /&gt;
 nano /etc/locale.gen&lt;br /&gt;
 # uncomment en_US.UTF-8 UTF-8&lt;br /&gt;
 # uncomment zh_CN.UTF-8 UTF-8&lt;br /&gt;
 &lt;br /&gt;
 locale-gen&lt;br /&gt;
&lt;br /&gt;
====== 2.2.7.3 自定义主机名 ======&lt;br /&gt;
 # For example&lt;br /&gt;
 echo 'OnePlus6T' &amp;gt; /etc/hostname&lt;br /&gt;
&lt;br /&gt;
====== 2.2.7.4 alarm（Archlinuxarm内置非root用户）配置 ======&lt;br /&gt;
&lt;br /&gt;
更改alarm密码，并添加到wheel用户组&lt;br /&gt;
&lt;br /&gt;
 passwd alarm&lt;br /&gt;
 # Change its password. Default is &amp;quot;alarm&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 usermod -aG wheel alarm&lt;br /&gt;
&lt;br /&gt;
添加sudo，设置sudo权限&lt;br /&gt;
&lt;br /&gt;
 pacman -S sudo&lt;br /&gt;
 EDITOR=nano visudo&lt;br /&gt;
&lt;br /&gt;
 找到下面这样的一行，把前面的注释符号 `#` 去掉&lt;br /&gt;
&lt;br /&gt;
 #%wheel ALL=(ALL:ALL) ALL&lt;br /&gt;
&lt;br /&gt;
====== 2.2.7.5 必要软件包 ======&lt;br /&gt;
 pacman -S base base-devel dhcpcd iwd&lt;br /&gt;
 pacman -S grub efibootmgr&lt;br /&gt;
 &lt;br /&gt;
 pacman -S networkmanager modemmanager&lt;br /&gt;
 pacman -S bluez bluez-utils pulseaudio-bluetooth&lt;br /&gt;
 pacman -S qrtr rmtfs&lt;br /&gt;
 systemctl enable NetworkManager bluetooth qrtr-ns rmtfs &lt;br /&gt;
 systemctl enable ModemManager&lt;br /&gt;
&lt;br /&gt;
 pacman -S git wget&lt;br /&gt;
 pacman -S ntfs-3g usbutils&lt;br /&gt;
&lt;br /&gt;
再安装 pd-mapper 和 tqftpserv&lt;br /&gt;
* 可以此处下载成品：https://github.com/silime/ArchLinux-Packages&lt;br /&gt;
* 也可以在步骤2.2.7.6后直接用pacman安装！&lt;br /&gt;
* 注：默认的PKGBUILD有问题，需要手动修复，在这里不详细描述，如果嫌麻烦，也可以直接编译安装&lt;br /&gt;
a. 直接编译安装（不推荐）：&lt;br /&gt;
 git clone https://github.com/andersson/pd-mapper.git&lt;br /&gt;
 git clone https://github.com/andersson/tqftpserv.git&lt;br /&gt;
 cd pd-mapper &amp;amp;&amp;amp; make &amp;amp;&amp;amp; make install &amp;amp;&amp;amp; cd ..&lt;br /&gt;
 cd tqftpserv &amp;amp;&amp;amp; make &amp;amp;&amp;amp; make install &amp;amp;&amp;amp; cd ..&lt;br /&gt;
 &lt;br /&gt;
 # clean&lt;br /&gt;
 rm -rf tqftpserv pd-mapper&lt;br /&gt;
&lt;br /&gt;
b. 使用pkgbuild&lt;br /&gt;
 # Switch to alarm first&lt;br /&gt;
 su alarm&lt;br /&gt;
&lt;br /&gt;
 cd ~&lt;br /&gt;
 # Compile and Install pd-mapper&lt;br /&gt;
 git clone https://aur.archlinux.org/pd-mapper-git.git ~/pd-mapper-git&lt;br /&gt;
 cd ~/pd-mapper-git&lt;br /&gt;
 &lt;br /&gt;
 nano PKGBUILD&lt;br /&gt;
 # fix some errors&lt;br /&gt;
 makepkg -si&lt;br /&gt;
 &lt;br /&gt;
 #Compile and Install tqftpserv&lt;br /&gt;
 git clone https://aur.archlinux.org/tqftpserv-git.git ~/tqftpserv-git&lt;br /&gt;
 cd ~/tqftpserv-git&lt;br /&gt;
 &lt;br /&gt;
 nano PKGBUILD&lt;br /&gt;
 # fix some errors&lt;br /&gt;
 makepkg -si&lt;br /&gt;
&lt;br /&gt;
启用 pd-mapper 和 tqftpserv&lt;br /&gt;
 sudo systemctl enable tqftpserv pd-mapper&lt;br /&gt;
回到root用户&lt;br /&gt;
 exit&lt;br /&gt;
&lt;br /&gt;
====== 2.2.7.6 添加Renegade Project源&amp;lt;ref&amp;gt;https://mirror.renegade-project.tech/index.html#/&amp;lt;/ref&amp;gt;（可选） ======&lt;br /&gt;
导入 GPG key:&lt;br /&gt;
 pacman-key --recv-keys 5E29D8F17064598A7A2223E2C735F8DF5B624511&lt;br /&gt;
 pacman-key --lsign-key 5E29D8F17064598A7A2223E2C735F8DF5B624511&lt;br /&gt;
在 /etc/pacman.conf 文件末尾添加以下内容：&lt;br /&gt;
 [renegade-project]&lt;br /&gt;
 Server = https://mirror.renegade-project.tech/arch/$arch&lt;br /&gt;
安装 renegade-project-keyring：&lt;br /&gt;
 pacman -S renegade-project-keyring&lt;br /&gt;
刷新&lt;br /&gt;
 pacman -Syy&lt;br /&gt;
&lt;br /&gt;
====== 2.2.7.7 安装用于切换slot的qbootctl（推荐） ======&lt;br /&gt;
* 确保已经完成了步骤2.2.7.6&lt;br /&gt;
 pacman -Sy qbootctl&lt;br /&gt;
&lt;br /&gt;
====== 2.2.7.8 安装更多package使一些硬件工作 ======&lt;br /&gt;
* 来自：https://github.com/silime/ArchLinux-Packages/releases&lt;br /&gt;
** 请用pacman安装[https://github.com/silime/ArchLinux-Packages/releases/tag/sensors sensors package]，[https://github.com/silime/ArchLinux-Packages/releases/tag/alsa-ucm-oneplus-0.5.10 alsa-ucm-oneplus-0.5.10]，[https://github.com/silime/ArchLinux-Packages/releases/tag/q6voice q6voice]&lt;br /&gt;
&lt;br /&gt;
====== 2.2.7.9 修改Modemmanager ======&lt;br /&gt;
* 重新编译ModemManager，开启`plugin_qcom_soc`,并安装&lt;br /&gt;
 su alarm&lt;br /&gt;
 mkdir ~/modemmanager&lt;br /&gt;
 cd ~/modemmanager&lt;br /&gt;
 nano PKGBUILD&lt;br /&gt;
* 将 [PKGBUILD - modemmanager (aarch64) | Package Files | Arch Linux ARM](https://archlinuxarm.org/packages/aarch64/modemmanager/files/PKGBUILD) 中的内容复制进PKGBUILD，然后进行以下修改&lt;br /&gt;
** 将`arch=(x86_64)`改为`arch=(x86_64 aarch64)`&lt;br /&gt;
** 将`-D plugin_qcom_soc=disabled`一行删除&lt;br /&gt;
 10c10&lt;br /&gt;
 &amp;lt; arch=(x86_64)&lt;br /&gt;
 ---&lt;br /&gt;
 &amp;gt; arch=(x86_64 aarch64)&lt;br /&gt;
 35d34&lt;br /&gt;
 &amp;lt;     -D plugin_qcom_soc=disabled&lt;br /&gt;
* 编译和安装&lt;br /&gt;
 makepkg -rsi&lt;br /&gt;
 # compile and install&lt;br /&gt;
 &lt;br /&gt;
 cd ..&lt;br /&gt;
 sudo rm -rf ~/modemmanager&lt;br /&gt;
 exit&lt;br /&gt;
&lt;br /&gt;
 systemctl enable ModemManager&lt;br /&gt;
&lt;br /&gt;
====== 2.2.7.10 其他软件 ======&lt;br /&gt;
中文字体&lt;br /&gt;
&lt;br /&gt;
 pacman -S noto-fonts-cjk&lt;br /&gt;
 # Chinese fonts&lt;br /&gt;
&lt;br /&gt;
yay&lt;br /&gt;
&lt;br /&gt;
 su alarm&lt;br /&gt;
 cd ~&lt;br /&gt;
 git clone https://aur.archlinux.org/yay-bin.git&lt;br /&gt;
 cd yay-bin &amp;amp;&amp;amp; makepkg -si&lt;br /&gt;
 exit&lt;br /&gt;
&lt;br /&gt;
桌面环境&lt;br /&gt;
&lt;br /&gt;
* 自选，建议gnome或phosh&lt;br /&gt;
** 如`gnome`&lt;br /&gt;
&lt;br /&gt;
 pacman -S gnome&lt;br /&gt;
 systemctl enable gdm&lt;br /&gt;
&lt;br /&gt;
* 如安装phosh，建议添加danctnix源 [danctnix (arikawa-hi.me)](https://p64.arikawa-hi.me/danctnix/)，然后安装&lt;br /&gt;
&lt;br /&gt;
网络浏览器&lt;br /&gt;
&lt;br /&gt;
 # for example, chromium&lt;br /&gt;
 pacman -S chromium&lt;br /&gt;
&lt;br /&gt;
===== 2.2.8 tfa98xx音频修复 =====&lt;br /&gt;
 echo 'snd-soc-tfa98xx' &amp;gt; /etc/modules-load.d/snd-soc-tfa98xx.conf&lt;br /&gt;
&lt;br /&gt;
===== 2.2.9 打包 =====&lt;br /&gt;
先清理，在chroot环境中&lt;br /&gt;
&lt;br /&gt;
 pacman -Scc&lt;br /&gt;
 # pacman&lt;br /&gt;
&lt;br /&gt;
进alarm用户&lt;br /&gt;
 su alarm # switch to alarm&lt;br /&gt;
 # clean bash history for alarm&lt;br /&gt;
 cat /dev/null &amp;gt; ~/.bash_history &amp;amp;&amp;amp; history -c &amp;amp;&amp;amp; exit&lt;br /&gt;
&lt;br /&gt;
在root用户&lt;br /&gt;
 # clean bash history for root&lt;br /&gt;
 cat /dev/null &amp;gt; ~/.bash_history &amp;amp;&amp;amp; history -c&lt;br /&gt;
&lt;br /&gt;
退出chroot环境&lt;br /&gt;
&lt;br /&gt;
 exit&lt;br /&gt;
&lt;br /&gt;
解除挂载&lt;br /&gt;
&lt;br /&gt;
 cd ~/workspace&lt;br /&gt;
 sudo umount ~/workspace/arch/run&lt;br /&gt;
 sudo umount ~/workspace/arch/sys&lt;br /&gt;
 sudo umount ~/workspace/arch/proc&lt;br /&gt;
 sudo umount ~/workspace/arch/dev/pts&lt;br /&gt;
 sudo umount ~/workspace/arch/dev&lt;br /&gt;
&lt;br /&gt;
用tar打包&lt;br /&gt;
&lt;br /&gt;
 cd ~/workspace/arch&lt;br /&gt;
 sudo tar -czvf ~/workspace/arch.tar.gz *&lt;br /&gt;
 # This will generate arch.tar.gz&lt;br /&gt;
&lt;br /&gt;
=== 3 安装到手机 ===&lt;br /&gt;
==== 3.1 刷入twrp和Magisk ====&lt;br /&gt;
* 你也可以使用KernelSU或其它方式获取root权限&lt;br /&gt;
==== 3.2 分区、格式化分区 ====&lt;br /&gt;
连接手机、电脑，手机进twrp&lt;br /&gt;
&lt;br /&gt;
将`parted`复制到手机储存&lt;br /&gt;
&lt;br /&gt;
电脑输入：&lt;br /&gt;
 adb shell&lt;br /&gt;
然后输入：&lt;br /&gt;
 cp /sdcard/parted /sbin/ &amp;amp;&amp;amp; chmod 755 /sbin/parted&lt;br /&gt;
 umount /data &amp;amp;&amp;amp; umount /sdcard&lt;br /&gt;
 parted /dev/block/sda&lt;br /&gt;
输入`p`查看当前分区情况&lt;br /&gt;
 p&lt;br /&gt;
对于一加6T，可这样分区：&lt;br /&gt;
* 压缩分区17&lt;br /&gt;
 resizepart 17&lt;br /&gt;
 # input 61GB &lt;br /&gt;
* 创建新分区&lt;br /&gt;
 mkpart esp fat32 61GB 62GB&lt;br /&gt;
 mkpart arch ext4 62GB 125GB&lt;br /&gt;
 set 18 esp on&lt;br /&gt;
随后退出parted&lt;br /&gt;
 q&lt;br /&gt;
再次重启到twrp，格式化各分区&lt;br /&gt;
&lt;br /&gt;
电脑输入：&lt;br /&gt;
 adb shell&lt;br /&gt;
然后输入：&lt;br /&gt;
 mkfs.fat -F32 -s1 /dev/block/by-name/esp&lt;br /&gt;
 mke2fs -t ext4 /dev/block/by-name/arch&lt;br /&gt;
 mke2fs -t ext4 /dev/block/by-name/userdata&lt;br /&gt;
&lt;br /&gt;
==== 3.3 获取UUID ====&lt;br /&gt;
重启到Android，在termux或adb shell输入&lt;br /&gt;
 su&lt;br /&gt;
 blkid /dev/block/by-name/arch&lt;br /&gt;
记下UUID值&lt;br /&gt;
&lt;br /&gt;
==== 3.4 准备grub配置文件 ====&lt;br /&gt;
*下载：&lt;br /&gt;
** https://forum.renegade-project.tech/uploads/short-url/hlr2fHanyoSkM1pOPy1eywhLiSm.zip&lt;br /&gt;
** https://forum.renegade-project.tech/uploads/short-url/hlr2fHanyoSkM1pOPy1eywhLiSm.zip&lt;br /&gt;
&lt;br /&gt;
将boot.tar.gz中grub.cfg的uuid全部改为步骤3.3中得到的&lt;br /&gt;
替换所有这种字符&lt;br /&gt;
[[文件:3a12afa8f91aef1d2d2fb693b93d0e13eae37729.png|缩略图]]&lt;br /&gt;
==== 3.5 解压rootfs ====&lt;br /&gt;
将arch.tar.gz复制到手机内部存储&lt;br /&gt;
* 建议使用termux操作&lt;br /&gt;
 pkg update&lt;br /&gt;
 pkg install tsu&lt;br /&gt;
提权&lt;br /&gt;
 tsu&lt;br /&gt;
 # root permission needed&lt;br /&gt;
挂载&amp;amp;解压&lt;br /&gt;
 cd ~&lt;br /&gt;
 mkdir arch&lt;br /&gt;
 mount /dev/block/by-name/arch ~/arch&lt;br /&gt;
 &lt;br /&gt;
 cd ~/arch&lt;br /&gt;
 tar -xpvf /sdcard/arch.tar.gz&lt;br /&gt;
 # extract&lt;br /&gt;
&lt;br /&gt;
==== 3.6 安装grub ====&lt;br /&gt;
 tsu&lt;br /&gt;
&lt;br /&gt;
 cd ~&lt;br /&gt;
 mkdir esp&lt;br /&gt;
&lt;br /&gt;
 mount /dev/block/by-name/esp esp&lt;br /&gt;
 mkdir esp/EFI&lt;br /&gt;
&lt;br /&gt;
将esp.zip中这两个文件夹复制到~/esp/EFI/&lt;br /&gt;
&lt;br /&gt;
将boot.tar.gz内两个文件夹复制进~/arch/boot&lt;br /&gt;
* 检查&lt;br /&gt;
 # /dev/block/by-name/arch has been mounted!&lt;br /&gt;
 cd ~/arch/boot &amp;amp;&amp;amp; ls&lt;br /&gt;
&lt;br /&gt;
==== 3.7 获取、添加dtb ====&lt;br /&gt;
对于一加6T，还需要将这两个dtb复制到~/arch/boot&lt;br /&gt;
* 注：对于一加6（T）不要使用内核编译生成的dtb&lt;br /&gt;
** 见arch/arm64/boot/dts/qcom/sdm845-oneplus-common.dtsi,将不会有显示&lt;br /&gt;
对于其它设备，请获取合适的dtb&lt;br /&gt;
&lt;br /&gt;
 /delete-node/ &amp;amp;rmtfs_mem;&lt;br /&gt;
 &lt;br /&gt;
 / {&lt;br /&gt;
 	aliases {&lt;br /&gt;
 		serial0 = &amp;amp;uart9;&lt;br /&gt;
 		hsuart0 = &amp;amp;uart6;&lt;br /&gt;
 	};&lt;br /&gt;
 &lt;br /&gt;
 	chosen {&lt;br /&gt;
 		stdout-path = &amp;quot;serial0:115200n8&amp;quot;; /*line 30 in dtsi*/&lt;br /&gt;
 	};&lt;br /&gt;
 &lt;br /&gt;
 	volume-keys {&lt;br /&gt;
 		compatible = &amp;quot;gpio-keys&amp;quot;;&lt;br /&gt;
 		label = &amp;quot;Volume keys&amp;quot;;&lt;br /&gt;
 		autorepeat;&lt;br /&gt;
&lt;br /&gt;
=====  3.7.1 dtb的获取 =====&lt;br /&gt;
下载适用自己设备的postmarketOS的boot.img.xz，解压得到img文件&lt;br /&gt;
&lt;br /&gt;
使用 extract-dtb&amp;lt;ref&amp;gt;https://pypi.org/project/extract-dtb/&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple extract-dtb&lt;br /&gt;
 extract-dtb 20220608-1408-postmarketOS-v22.06-phosh-18-oneplus-fajita-boot.img -o .&lt;br /&gt;
 # use your own img&lt;br /&gt;
 # will generate something like 01_dtbdump_,OnePlus_6T.dtb&lt;br /&gt;
 &lt;br /&gt;
 ls&lt;br /&gt;
 mv 01_dtbdump_,OnePlus_6T.dtb sdm845-oneplus-fajita.dtb&lt;br /&gt;
&lt;br /&gt;
===== 3.7.2 修改dtb，使得可能支持USB otg =====&lt;br /&gt;
安装dtc工具&lt;br /&gt;
 sudo apt install device-tree-compiler -y&lt;br /&gt;
&lt;br /&gt;
转换dtb为dts&lt;br /&gt;
 dtc -I dtb -O dts -o temp.dts sdm845-oneplus-fajita.dtb&lt;br /&gt;
&lt;br /&gt;
修改temp.dts&lt;br /&gt;
 nano temp.dts&lt;br /&gt;
&lt;br /&gt;
查找`dr_mode`&lt;br /&gt;
                         dwc3@a600000 {&lt;br /&gt;
                                 compatible = &amp;quot;snps,dwc3&amp;quot;;&lt;br /&gt;
                                 reg = &amp;lt;0x00 0xa600000 0x00 0xcd00&amp;gt;;&lt;br /&gt;
                                 interrupts = &amp;lt;0x00 0x85 0x04&amp;gt;;&lt;br /&gt;
                                 iommus = &amp;lt;0x25 0x740 0x00&amp;gt;;&lt;br /&gt;
                                 snps,dis_u2_susphy_quirk;&lt;br /&gt;
                                 snps,dis_enblslpm_quirk;&lt;br /&gt;
                                 phys = &amp;lt;0xb8&amp;gt;;&lt;br /&gt;
                                 phy-names = &amp;quot;usb2-phy&amp;quot;;&lt;br /&gt;
                                 dr_mode = &amp;quot;peripheral&amp;quot;;&lt;br /&gt;
                                 maximum-speed = &amp;quot;high-speed&amp;quot;;&lt;br /&gt;
                         };&lt;br /&gt;
&lt;br /&gt;
将`peripheral`改为`host` 此时生成的dtb将支持otg，但要外界供电，为了USB主动供电，需要进一步修改,但会导致充电失效&lt;br /&gt;
将charger@1000那段删除&lt;br /&gt;
 &lt;br /&gt;
                         pmic@2 {&lt;br /&gt;
                                 compatible = &amp;quot;qcom,pmi8998\0qcom,spmi-pmic&amp;quot;;&lt;br /&gt;
                                 reg = &amp;lt;0x02 0x00&amp;gt;;&lt;br /&gt;
                                 #address-cells = &amp;lt;0x01&amp;gt;;&lt;br /&gt;
                                 #size-cells = &amp;lt;0x00&amp;gt;;&lt;br /&gt;
 &lt;br /&gt;
                                 charger@1000 {&lt;br /&gt;
                                         compatible = &amp;quot;qcom,pmi8998-charger&amp;quot;;&lt;br /&gt;
                                         reg = &amp;lt;0x1000&amp;gt;;&lt;br /&gt;
                                         interrupts = &amp;lt;0x02 0x13 0x04 0x03 0x02 0x&amp;gt;&lt;br /&gt;
                                         interrupt-names = &amp;quot;usb-plugin\0bat-ov\0wd&amp;gt;&lt;br /&gt;
                                         io-channels = &amp;lt;0xdd 0x03 0xdd 0x04&amp;gt;;&lt;br /&gt;
                                         io-channel-names = &amp;quot;usbin_i\0usbin_v&amp;quot;;&lt;br /&gt;
                                         status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
                                         monitored-battery = &amp;lt;0xde&amp;gt;;&lt;br /&gt;
                                 };&lt;br /&gt;
 &lt;br /&gt;
                                 gpios@c000 {&lt;br /&gt;
                                         compatible = &amp;quot;qcom,pmi8998-gpio\0qcom,spm&amp;gt;&lt;br /&gt;
                                         reg = &amp;lt;0xc000&amp;gt;;&lt;br /&gt;
                                         gpio-controller;&lt;br /&gt;
                                         gpio-ranges = &amp;lt;0xdf 0x00 0x00 0x0e&amp;gt;;&lt;br /&gt;
                                         #gpio-cells = &amp;lt;0x02&amp;gt;;&lt;br /&gt;
                                         interrupt-controller;&lt;br /&gt;
                                         #interrupt-cells = &amp;lt;0x02&amp;gt;;&lt;br /&gt;
                                         phandle = &amp;lt;0xdf&amp;gt;;&lt;br /&gt;
                                 };&lt;br /&gt;
&lt;br /&gt;
生成新的dtb&lt;br /&gt;
 dtc -I dts -O dtb -o sdm845-oneplus-fajita-host.dtb temp.dts&lt;br /&gt;
复制好dtb，你的usb otg应该就**有可能**工作&lt;br /&gt;
&lt;br /&gt;
=== 4 刷入UEFI ===&lt;br /&gt;
进入bootloader&lt;br /&gt;
&lt;br /&gt;
临时启动&lt;br /&gt;
 fastboot boot boot-xxx.img&lt;br /&gt;
&lt;br /&gt;
刷入到当前boot分区&lt;br /&gt;
 fastboot flash boot boot-xxx.img&lt;br /&gt;
&lt;br /&gt;
=== 5 Enjoy！===&lt;br /&gt;
恭喜你！你已经成功在你的手机上安装Archlinux！！希望你能有所收获！！ &lt;br /&gt;
==== 5.1 adbd ====&lt;br /&gt;
* 确保已经添加Renegade Project源&lt;br /&gt;
 sudo pacman -S adbd&lt;br /&gt;
adbd能帮助你用adb调试手机上的Linux&lt;br /&gt;
==== 5.2 coremark跑分 ====&lt;br /&gt;
 yay -S coremark-git&lt;br /&gt;
 coremark&lt;br /&gt;
[[文件:6d52df4afa01bebdad9cc0a73299b746c235e2f5.png|缩略图]]&lt;br /&gt;
==== 5.3 unixbench 跑分 ====&lt;br /&gt;
 ========================================================================&lt;br /&gt;
    BYTE UNIX Benchmarks (Version 5.1.3)&lt;br /&gt;
 &lt;br /&gt;
    System: : GNU/Linux&lt;br /&gt;
    OS: GNU/Linux -- 5.18.0-sdm845-00109-gf7ad1e5036bb-dirty -- #1 SMP PREEMPT Thu Jun 2 01:12:20 UTC 2022&lt;br /&gt;
    Machine: aarch64 (unknown)&lt;br /&gt;
    Language: en_US.utf8 (charmap=&amp;quot;UTF-8&amp;quot;, collate=&amp;quot;UTF-8&amp;quot;)&lt;br /&gt;
    CPU 0:  (38.4 bogomips)&lt;br /&gt;
 &lt;br /&gt;
    CPU 1:  (38.4 bogomips)&lt;br /&gt;
 &lt;br /&gt;
    CPU 2:  (38.4 bogomips)&lt;br /&gt;
 &lt;br /&gt;
    CPU 3:  (38.4 bogomips)&lt;br /&gt;
 &lt;br /&gt;
    CPU 4:  (38.4 bogomips)&lt;br /&gt;
 &lt;br /&gt;
    CPU 5:  (38.4 bogomips)&lt;br /&gt;
 &lt;br /&gt;
    CPU 6:  (38.4 bogomips)&lt;br /&gt;
 &lt;br /&gt;
    CPU 7:  (38.4 bogomips)&lt;br /&gt;
 &lt;br /&gt;
    08:08:45 up 4 min,  3 users,  load average: 0.23, 0.15, 0.07; runlevel&lt;br /&gt;
 &lt;br /&gt;
 ------------------------------------------------------------------------&lt;br /&gt;
 Benchmark Run: Wed Jun 15 2022 08:08:45 - 08:36:48&lt;br /&gt;
 8 CPUs in system; running 1 parallel copy of tests&lt;br /&gt;
 &lt;br /&gt;
 Dhrystone 2 using register variables       31371686.9 lps   (10.0 s, 7 samples)&lt;br /&gt;
 Double-Precision Whetstone                     6636.9 MWIPS (9.9 s, 7 samples)&lt;br /&gt;
 Execl Throughput                               3464.7 lps   (30.0 s, 2 samples)&lt;br /&gt;
 File Copy 1024 bufsize 2000 maxblocks        431850.5 KBps  (30.0 s, 2 samples)&lt;br /&gt;
 File Copy 256 bufsize 500 maxblocks          212468.6 KBps  (30.0 s, 2 samples)&lt;br /&gt;
 File Copy 4096 bufsize 8000 maxblocks       1100792.9 KBps  (30.0 s, 2 samples)&lt;br /&gt;
 Pipe Throughput                             1189114.2 lps   (10.0 s, 7 samples)&lt;br /&gt;
 Pipe-based Context Switching                  16156.4 lps   (10.0 s, 7 samples)&lt;br /&gt;
 Process Creation                               1880.5 lps   (30.0 s, 2 samples)&lt;br /&gt;
 Shell Scripts (1 concurrent)                   1267.7 lpm   (60.0 s, 2 samples)&lt;br /&gt;
 Shell Scripts (8 concurrent)                    928.5 lpm   (60.0 s, 2 samples)&lt;br /&gt;
 System Call Overhead                         904143.8 lps   (10.0 s, 7 samples)&lt;br /&gt;
&lt;br /&gt;
 System Benchmarks Index Values               BASELINE       RESULT    INDEX&lt;br /&gt;
 Dhrystone 2 using register variables         116700.0   31371686.9   2688.2&lt;br /&gt;
 Double-Precision Whetstone                       55.0       6636.9   1206.7&lt;br /&gt;
 Execl Throughput                                 43.0       3464.7    805.7&lt;br /&gt;
 File Copy 1024 bufsize 2000 maxblocks          3960.0     431850.5   1090.5&lt;br /&gt;
 File Copy 256 bufsize 500 maxblocks            1655.0     212468.6   1283.8&lt;br /&gt;
 File Copy 4096 bufsize 8000 maxblocks          5800.0    1100792.9   1897.9&lt;br /&gt;
 Pipe Throughput                               12440.0    1189114.2    955.9&lt;br /&gt;
 Pipe-based Context Switching                   4000.0      16156.4     40.4&lt;br /&gt;
 Process Creation                                126.0       1880.5    149.2&lt;br /&gt;
 Shell Scripts (1 concurrent)                     42.4       1267.7    299.0&lt;br /&gt;
 Shell Scripts (8 concurrent)                      6.0        928.5   1547.5&lt;br /&gt;
 System Call Overhead                          15000.0     904143.8    602.8&lt;br /&gt;
                                                                   &lt;br /&gt;
 ========&lt;br /&gt;
 System Benchmarks Index Score                                         &lt;br /&gt;
 687.6&lt;br /&gt;
 &lt;br /&gt;
 ------------------------------------------------------------------------&lt;br /&gt;
 Benchmark Run: Wed Jun 15 2022 08:36:48 - 09:05:10&lt;br /&gt;
 8 CPUs in system; running 8 parallel copies of tests&lt;br /&gt;
 &lt;br /&gt;
 Dhrystone 2 using register variables      157010560.9 lps   (10.0 s, 7 samples)&lt;br /&gt;
 Double-Precision Whetstone                    38380.8 MWIPS (9.5 s, 7 samples)&lt;br /&gt;
 Execl Throughput                              14684.0 lps   (29.9 s, 2 samples)&lt;br /&gt;
 File Copy 1024 bufsize 2000 maxblocks        775566.4 KBps  (30.0 s, 2 samples)&lt;br /&gt;
 File Copy 256 bufsize 500 maxblocks          247697.5 KBps  (30.0 s, 2 samples)&lt;br /&gt;
 File Copy 4096 bufsize 8000 maxblocks       1947686.0 KBps  (30.0 s, 2 samples)&lt;br /&gt;
 Pipe Throughput                             6462292.1 lps   (10.0 s, 7 samples)&lt;br /&gt;
 Pipe-based Context Switching                 535021.4 lps   (10.0 s, 7 samples)&lt;br /&gt;
 Process Creation                              21863.7 lps   (30.0 s, 2 samples)&lt;br /&gt;
 Shell Scripts (1 concurrent)                  12727.2 lpm   (60.0 s, 2 samples)&lt;br /&gt;
 Shell Scripts (8 concurrent)                   1865.6 lpm   (60.1 s, 2 samples)&lt;br /&gt;
 System Call Overhead                        4647127.5 lps   (10.0 s, 7 samples)&lt;br /&gt;
 &lt;br /&gt;
 System Benchmarks Index Values               BASELINE       RESULT    INDEX&lt;br /&gt;
 Dhrystone 2 using register variables         116700.0  157010560.9  13454.2&lt;br /&gt;
 Double-Precision Whetstone                       55.0      38380.8   6978.3&lt;br /&gt;
 Execl Throughput                                 43.0      14684.0   3414.9&lt;br /&gt;
 File Copy 1024 bufsize 2000 maxblocks          3960.0     775566.4   1958.5&lt;br /&gt;
 File Copy 256 bufsize 500 maxblocks            1655.0     247697.5   1496.7&lt;br /&gt;
 File Copy 4096 bufsize 8000 maxblocks          5800.0    1947686.0   3358.1&lt;br /&gt;
 Pipe Throughput                               12440.0    6462292.1   5194.8&lt;br /&gt;
 Pipe-based Context Switching                   4000.0     535021.4   1337.6&lt;br /&gt;
 Process Creation                                126.0      21863.7   1735.2&lt;br /&gt;
 Shell Scripts (1 concurrent)                     42.4      12727.2   3001.7&lt;br /&gt;
 Shell Scripts (8 concurrent)                      6.0       1865.6   3109.4&lt;br /&gt;
 System Call Overhead                          15000.0    4647127.5   3098.1&lt;br /&gt;
                                                                    &lt;br /&gt;
  ========&lt;br /&gt;
  System Benchmarks Index Score                                        &lt;br /&gt;
  3187.6&lt;/div&gt;</summary>
		<author><name>Snnbyyds</name></author>
	</entry>
	<entry>
		<id>https://wiki.uotan.cn/index.php?title=%E4%B8%BA%E6%89%8B%E6%9C%BA%E5%AE%89%E8%A3%85Linux&amp;diff=252</id>
		<title>为手机安装Linux</title>
		<link rel="alternate" type="text/html" href="https://wiki.uotan.cn/index.php?title=%E4%B8%BA%E6%89%8B%E6%9C%BA%E5%AE%89%E8%A3%85Linux&amp;diff=252"/>
		<updated>2024-02-15T02:26:43Z</updated>

		<summary type="html">&lt;p&gt;Snnbyyds：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== 该章节将引导你为一些手机安装主线Linux操作系统 ==&lt;br /&gt;
注意：本教程中，操作环境为64位Ubuntu，目标机器为OnePlus6T，我们将尝试利用UEFI在OnePlus6T上启动Archlinux&lt;br /&gt;
* 不同于Windows, Linux的安装过程可能具有一定的复杂性，步骤繁杂，方案多样，如果你使用不同的机型，请先仔细阅读本文和搜索资料；此外，主线Linux的开发（内核驱动移植，制作dts等）不在本文讨论范畴内。&lt;br /&gt;
[[文件:Archlinux-neofetch-op6t.png|缩略图]]&lt;br /&gt;
=== 1 编译内核 ===&lt;br /&gt;
sdm845成品：&lt;br /&gt;
[Releases · silime/kernel-builder (github.com)](https://github.com/silime/kernel-builder)&lt;br /&gt;
==== 1.1 安装相关依赖 ====&lt;br /&gt;
对于Ubuntu 22.04 LTS:&lt;br /&gt;
&lt;br /&gt;
 sudo apt install build-essential openssl pkg-config libssl-dev libncurses5-dev pkg-config minizip libelf-dev flex bison  libc6-dev libidn11-dev rsync bc liblz4-tool  &lt;br /&gt;
 sudo apt install gcc-aarch64-linux-gnu dpkg-dev git&lt;br /&gt;
&lt;br /&gt;
==== 1.2 克隆内核源码 ====&lt;br /&gt;
你可以在“-b”参数后选择其他分支&lt;br /&gt;
&lt;br /&gt;
 mkdir ~/workspace&lt;br /&gt;
 cd ~/workspace&lt;br /&gt;
 git clone --depth=1 https://gitlab.com/sdm845-mainline/linux.git -b sdm845/6.8-dev&lt;br /&gt;
&lt;br /&gt;
可用分支可在gitlab网页查看&lt;br /&gt;
&lt;br /&gt;
==== 1.3  生成 .config ====&lt;br /&gt;
 make ARCH=arm64 defconfig sdm845.config&lt;br /&gt;
 # generate .config&lt;br /&gt;
&lt;br /&gt;
==== 1.4 进行编译 ====&lt;br /&gt;
&lt;br /&gt;
 make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- -j$(nproc)&lt;br /&gt;
&lt;br /&gt;
生成deb包供Debian系得GNU/Linux使用&lt;br /&gt;
&lt;br /&gt;
 make -j$(nproc) ARCH=arm64 KBUILD_DEBARCH=arm64 KDEB_CHANGELOG_DIST=mobile CROSS_COMPILE=aarch64-linux-gnu- deb-pkg&lt;br /&gt;
 # This will generate several deb files in ../&lt;br /&gt;
&lt;br /&gt;
=== 2 制作rootfs ===&lt;br /&gt;
==== 2.1 下载 ====&lt;br /&gt;
对于Archlinux，从http://os.archlinuxarm.org/os/ArchLinuxARM-aarch64-latest.tar.gz下载&lt;br /&gt;
&lt;br /&gt;
 cd ~/workspace&lt;br /&gt;
 wget http://os.archlinuxarm.org/os/ArchLinuxARM-aarch64-latest.tar.gz&lt;br /&gt;
&lt;br /&gt;
对于Ubuntu，从 [Index of /ubuntu-base](https://cdimage.ubuntu.com/ubuntu-base/)选择自己想要的版本&lt;br /&gt;
==== 2.2 制作 ====&lt;br /&gt;
===== 2.2.1 进入chroot =====&lt;br /&gt;
由于rootfs为ARM64，所以安装qemu-user-static&lt;br /&gt;
 sudo apt install qemu-user-static &lt;br /&gt;
&lt;br /&gt;
创建img并挂载&lt;br /&gt;
&lt;br /&gt;
 dd if=/dev/zero of=archlinux.img bs=1G count=6&lt;br /&gt;
 mkfs.ext4 archlinux.img&lt;br /&gt;
 mkdir arch&lt;br /&gt;
 sudo mount archlinux.img arch&lt;br /&gt;
&lt;br /&gt;
解压&lt;br /&gt;
&lt;br /&gt;
 cd arch&lt;br /&gt;
 sudo tar -xpvf ../ArchLinuxARM-aarch64-latest.tar.gz&lt;br /&gt;
&lt;br /&gt;
进入chroot环境&lt;br /&gt;
&lt;br /&gt;
 cd ..&lt;br /&gt;
 sudo mount --bind /dev arch/dev&lt;br /&gt;
 sudo mount -t devpts devpts arch/dev/pts -o gid=5,mode=620&lt;br /&gt;
 sudo mount -t proc proc arch/proc&lt;br /&gt;
 sudo mount -t sysfs sysfs arch/sys&lt;br /&gt;
 sudo mount -t tmpfs tmpfs arch/run&lt;br /&gt;
 &lt;br /&gt;
 sudo rm -rf arch/etc/resolv.conf &amp;amp;&amp;amp; sudo cp /etc/resolv.conf arch/etc/&lt;br /&gt;
 &lt;br /&gt;
 sudo chroot arch&lt;br /&gt;
===== 2.2.2 初始化pacman keyring =====&lt;br /&gt;
 pacman-key --init&lt;br /&gt;
 pacman-key --populate archlinuxarm&lt;br /&gt;
===== 2.2.3 换源 （可选） =====&lt;br /&gt;
详见 https://mirrors.tuna.tsinghua.edu.cn/help/archlinuxarm/&lt;br /&gt;
&lt;br /&gt;
 pacman -Syyu&lt;br /&gt;
 # upgrade&lt;br /&gt;
&lt;br /&gt;
===== 2.2.4 卸载旧的内核和firmware =====&lt;br /&gt;
 pacman -Q | grep -i linux&lt;br /&gt;
 pacman -R linux-aarch64 linux-firmware linux-firmware-whence&lt;br /&gt;
 &lt;br /&gt;
 exit&lt;br /&gt;
 # exit chroot environment&lt;br /&gt;
&lt;br /&gt;
===== 2.2.5 安装新的内核 =====&lt;br /&gt;
* 确保已经退出`chroot`环境&lt;br /&gt;
然后：&lt;br /&gt;
 cd ~/workspace/linux&lt;br /&gt;
 sudo make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu-  INSTALL_MOD_PATH=~/workspace/arch modules_install&lt;br /&gt;
 sudo make ARCH=arm64 INSTALL_PATH=~/workspace/arch/boot install&lt;br /&gt;
如果是`debian`系也可以直接chroot环境中用dpkg安装deb：&amp;lt;code&amp;gt;dpkg -i *.deb&amp;lt;/code&amp;gt;&lt;br /&gt;
===== 2.2.6 安装新的firmware =====&lt;br /&gt;
* 可以尝试从PostmarketOS&amp;lt;ref&amp;gt;https://wiki.postmarketos.org/wiki/OnePlus_6T_(oneplus-fajita)&amp;lt;/ref&amp;gt;中提取&lt;br /&gt;
进入chroot环境&lt;br /&gt;
 sudo chroot ~/workspace/arch&lt;br /&gt;
移动解压得到的文件&lt;br /&gt;
 mv * /usr/lib/firmware/&lt;br /&gt;
 ldconfig&lt;br /&gt;
修改/etc/mkinitcpio.conf&lt;br /&gt;
 nano /etc/mkinitcpio.conf&lt;br /&gt;
找到&lt;br /&gt;
 # BINARIES&lt;br /&gt;
 # This setting includes any additional binaries a given user may&lt;br /&gt;
 # wish into the CPIO image.  This is run last, so it may be used to&lt;br /&gt;
 # override the actual binaries included by a given hook&lt;br /&gt;
 # BINARIES are dependency parsed, so you may safely ignore libraries&lt;br /&gt;
 BINARIES=()&lt;br /&gt;
在`BINARIES=()`填入`xxxx_zap.mbn/ipa_fws.mbn`的路径&lt;br /&gt;
这两个固件的来源一般是手机提取并放在特殊的位置加载（具体由`dts/dtsi`指定）&lt;br /&gt;
对于fajita，改为：&lt;br /&gt;
  BINARIES=(/usr/lib/firmware/qcom/sdm845/oneplus6/a630_zap.mbn /usr/lib/firmware/qcom/sdm845/oneplus6/ipa_fws.mbn)&lt;br /&gt;
生成initrd.img&lt;br /&gt;
 ls /usr/lib/modules&lt;br /&gt;
 # get kernel version&lt;br /&gt;
 mkinitcpio --generate /boot/initrd.img-5.18.0-sdm845-00109-gf7ad1e5036bb-dirty --kernel 5.18.0-sdm845-00109-gf7ad1e5036bb-dirty&lt;br /&gt;
===== 2.2.7 安装软件包和基本配置&amp;lt;ref&amp;gt;https://archlinuxstudio.github.io/ArchLinuxTutorial/#/&amp;lt;/ref&amp;gt; =====&lt;br /&gt;
====== 2.2.7.1 设置时区 ======&lt;br /&gt;
 ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime&lt;br /&gt;
 # Shanghai&lt;br /&gt;
====== 2.2.7.2 设置locale ======&lt;br /&gt;
参考：https://wiki.archlinux.org/title/Locale&lt;br /&gt;
&lt;br /&gt;
 nano /etc/locale.gen&lt;br /&gt;
 # uncomment en_US.UTF-8 UTF-8&lt;br /&gt;
 # uncomment zh_CN.UTF-8 UTF-8&lt;br /&gt;
 &lt;br /&gt;
 locale-gen&lt;br /&gt;
&lt;br /&gt;
====== 2.2.7.3 自定义主机名 ======&lt;br /&gt;
 # For example&lt;br /&gt;
 echo 'OnePlus6T' &amp;gt; /etc/hostname&lt;br /&gt;
&lt;br /&gt;
====== 2.2.7.4 alarm（Archlinuxarm内置非root用户）配置 ======&lt;br /&gt;
&lt;br /&gt;
更改alarm密码，并添加到wheel用户组&lt;br /&gt;
&lt;br /&gt;
 passwd alarm&lt;br /&gt;
 # Change its password. Default is &amp;quot;alarm&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 usermod -aG wheel alarm&lt;br /&gt;
&lt;br /&gt;
添加sudo，设置sudo权限&lt;br /&gt;
&lt;br /&gt;
 pacman -S sudo&lt;br /&gt;
 EDITOR=nano visudo&lt;br /&gt;
&lt;br /&gt;
 找到下面这样的一行，把前面的注释符号 `#` 去掉&lt;br /&gt;
&lt;br /&gt;
 #%wheel ALL=(ALL:ALL) ALL&lt;br /&gt;
&lt;br /&gt;
====== 2.2.7.5 必要软件包 ======&lt;br /&gt;
 pacman -S base base-devel dhcpcd iwd&lt;br /&gt;
 pacman -S grub efibootmgr&lt;br /&gt;
 &lt;br /&gt;
 pacman -S networkmanager modemmanager&lt;br /&gt;
 pacman -S bluez bluez-utils pulseaudio-bluetooth&lt;br /&gt;
 pacman -S qrtr rmtfs&lt;br /&gt;
 systemctl enable NetworkManager bluetooth qrtr-ns rmtfs &lt;br /&gt;
 systemctl enable ModemManager&lt;br /&gt;
&lt;br /&gt;
 pacman -S git wget&lt;br /&gt;
 pacman -S ntfs-3g usbutils&lt;br /&gt;
&lt;br /&gt;
再安装 pd-mapper 和 tqftpserv&lt;br /&gt;
* 可以此处下载成品：https://github.com/silime/ArchLinux-Packages&lt;br /&gt;
* 也可以在步骤2.2.7.6后直接用pacman安装！&lt;br /&gt;
* 注：默认的PKGBUILD有问题，需要手动修复，在这里不详细描述，如果嫌麻烦，也可以直接编译安装&lt;br /&gt;
a. 直接编译安装（不推荐）：&lt;br /&gt;
 git clone https://github.com/andersson/pd-mapper.git&lt;br /&gt;
 git clone https://github.com/andersson/tqftpserv.git&lt;br /&gt;
 cd pd-mapper &amp;amp;&amp;amp; make &amp;amp;&amp;amp; make install &amp;amp;&amp;amp; cd ..&lt;br /&gt;
 cd tqftpserv &amp;amp;&amp;amp; make &amp;amp;&amp;amp; make install &amp;amp;&amp;amp; cd ..&lt;br /&gt;
 &lt;br /&gt;
 # clean&lt;br /&gt;
 rm -rf tqftpserv pd-mapper&lt;br /&gt;
&lt;br /&gt;
b. 使用pkgbuild&lt;br /&gt;
 # Switch to alarm first&lt;br /&gt;
 su alarm&lt;br /&gt;
&lt;br /&gt;
 cd ~&lt;br /&gt;
 # Compile and Install pd-mapper&lt;br /&gt;
 git clone https://aur.archlinux.org/pd-mapper-git.git ~/pd-mapper-git&lt;br /&gt;
 cd ~/pd-mapper-git&lt;br /&gt;
 &lt;br /&gt;
 nano PKGBUILD&lt;br /&gt;
 # fix some errors&lt;br /&gt;
 makepkg -si&lt;br /&gt;
 &lt;br /&gt;
 #Compile and Install tqftpserv&lt;br /&gt;
 git clone https://aur.archlinux.org/tqftpserv-git.git ~/tqftpserv-git&lt;br /&gt;
 cd ~/tqftpserv-git&lt;br /&gt;
 &lt;br /&gt;
 nano PKGBUILD&lt;br /&gt;
 # fix some errors&lt;br /&gt;
 makepkg -si&lt;br /&gt;
&lt;br /&gt;
启用 pd-mapper 和 tqftpserv&lt;br /&gt;
 sudo systemctl enable tqftpserv pd-mapper&lt;br /&gt;
回到root用户&lt;br /&gt;
 exit&lt;br /&gt;
&lt;br /&gt;
====== 2.2.7.6 添加Renegade Project源&amp;lt;ref&amp;gt;https://mirror.renegade-project.tech/index.html#/&amp;lt;/ref&amp;gt;（可选） ======&lt;br /&gt;
导入 GPG key:&lt;br /&gt;
 pacman-key --recv-keys 5E29D8F17064598A7A2223E2C735F8DF5B624511&lt;br /&gt;
 pacman-key --lsign-key 5E29D8F17064598A7A2223E2C735F8DF5B624511&lt;br /&gt;
在 /etc/pacman.conf 文件末尾添加以下内容：&lt;br /&gt;
 [renegade-project]&lt;br /&gt;
 Server = https://mirror.renegade-project.tech/arch/$arch&lt;br /&gt;
安装 renegade-project-keyring：&lt;br /&gt;
 pacman -S renegade-project-keyring&lt;br /&gt;
刷新&lt;br /&gt;
 pacman -Syy&lt;br /&gt;
&lt;br /&gt;
====== 2.2.7.7 安装用于切换slot的qbootctl（推荐） ======&lt;br /&gt;
* 确保已经完成了步骤2.2.7.6&lt;br /&gt;
 pacman -Sy qbootctl&lt;br /&gt;
&lt;br /&gt;
====== 2.2.7.8 安装更多package使一些硬件工作 ======&lt;br /&gt;
* 来自：https://github.com/silime/ArchLinux-Packages/releases&lt;br /&gt;
** 请用pacman安装[https://github.com/silime/ArchLinux-Packages/releases/tag/sensors sensors package]，[https://github.com/silime/ArchLinux-Packages/releases/tag/alsa-ucm-oneplus-0.5.10 alsa-ucm-oneplus-0.5.10]，[https://github.com/silime/ArchLinux-Packages/releases/tag/q6voice q6voice]&lt;br /&gt;
&lt;br /&gt;
====== 2.2.7.9 修改Modemmanager ======&lt;br /&gt;
* 重新编译ModemManager，开启`plugin_qcom_soc`,并安装&lt;br /&gt;
 su alarm&lt;br /&gt;
 mkdir ~/modemmanager&lt;br /&gt;
 cd ~/modemmanager&lt;br /&gt;
 nano PKGBUILD&lt;br /&gt;
* 将 [PKGBUILD - modemmanager (aarch64) | Package Files | Arch Linux ARM](https://archlinuxarm.org/packages/aarch64/modemmanager/files/PKGBUILD) 中的内容复制进PKGBUILD，然后进行以下修改&lt;br /&gt;
** 将`arch=(x86_64)`改为`arch=(x86_64 aarch64)`&lt;br /&gt;
** 将`-D plugin_qcom_soc=disabled`一行删除&lt;br /&gt;
 10c10&lt;br /&gt;
 &amp;lt; arch=(x86_64)&lt;br /&gt;
 ---&lt;br /&gt;
 &amp;gt; arch=(x86_64 aarch64)&lt;br /&gt;
 35d34&lt;br /&gt;
 &amp;lt;     -D plugin_qcom_soc=disabled&lt;br /&gt;
* 编译和安装&lt;br /&gt;
 makepkg -rsi&lt;br /&gt;
 # compile and install&lt;br /&gt;
 &lt;br /&gt;
 cd ..&lt;br /&gt;
 sudo rm -rf ~/modemmanager&lt;br /&gt;
 exit&lt;br /&gt;
&lt;br /&gt;
 systemctl enable ModemManager&lt;br /&gt;
&lt;br /&gt;
====== 2.2.7.10 其他软件 ======&lt;br /&gt;
中文字体&lt;br /&gt;
&lt;br /&gt;
 pacman -S noto-fonts-cjk&lt;br /&gt;
 # Chinese fonts&lt;br /&gt;
&lt;br /&gt;
yay&lt;br /&gt;
&lt;br /&gt;
 su alarm&lt;br /&gt;
 cd ~&lt;br /&gt;
 git clone https://aur.archlinux.org/yay-bin.git&lt;br /&gt;
 cd yay-bin &amp;amp;&amp;amp; makepkg -si&lt;br /&gt;
 exit&lt;br /&gt;
&lt;br /&gt;
桌面环境&lt;br /&gt;
&lt;br /&gt;
* 自选，建议gnome或phosh&lt;br /&gt;
** 如`gnome`&lt;br /&gt;
&lt;br /&gt;
 pacman -S gnome&lt;br /&gt;
 systemctl enable gdm&lt;br /&gt;
&lt;br /&gt;
* 如安装phosh，建议添加danctnix源 [danctnix (arikawa-hi.me)](https://p64.arikawa-hi.me/danctnix/)，然后安装&lt;br /&gt;
&lt;br /&gt;
网络浏览器&lt;br /&gt;
&lt;br /&gt;
 # for example, chromium&lt;br /&gt;
 pacman -S chromium&lt;br /&gt;
&lt;br /&gt;
===== 2.2.8 tfa98xx音频修复 =====&lt;br /&gt;
 echo 'snd-soc-tfa98xx' &amp;gt; /etc/modules-load.d/snd-soc-tfa98xx.conf&lt;br /&gt;
&lt;br /&gt;
===== 2.2.9 打包 =====&lt;br /&gt;
先清理，在chroot环境中&lt;br /&gt;
&lt;br /&gt;
 pacman -Scc&lt;br /&gt;
 # pacman&lt;br /&gt;
&lt;br /&gt;
进alarm用户&lt;br /&gt;
 su alarm # switch to alarm&lt;br /&gt;
 # clean bash history for alarm&lt;br /&gt;
 cat /dev/null &amp;gt; ~/.bash_history &amp;amp;&amp;amp; history -c &amp;amp;&amp;amp; exit&lt;br /&gt;
&lt;br /&gt;
在root用户&lt;br /&gt;
 # clean bash history for root&lt;br /&gt;
 cat /dev/null &amp;gt; ~/.bash_history &amp;amp;&amp;amp; history -c&lt;br /&gt;
&lt;br /&gt;
退出chroot环境&lt;br /&gt;
&lt;br /&gt;
 exit&lt;br /&gt;
&lt;br /&gt;
解除挂载&lt;br /&gt;
&lt;br /&gt;
 cd ~/workspace&lt;br /&gt;
 sudo umount ~/workspace/arch/run&lt;br /&gt;
 sudo umount ~/workspace/arch/sys&lt;br /&gt;
 sudo umount ~/workspace/arch/proc&lt;br /&gt;
 sudo umount ~/workspace/arch/dev/pts&lt;br /&gt;
 sudo umount ~/workspace/arch/dev&lt;br /&gt;
&lt;br /&gt;
用tar打包&lt;br /&gt;
&lt;br /&gt;
 cd ~/workspace/arch&lt;br /&gt;
 sudo tar -czvf ~/workspace/arch.tar.gz *&lt;br /&gt;
 # This will generate arch.tar.gz&lt;br /&gt;
&lt;br /&gt;
=== 3 安装到手机 ===&lt;br /&gt;
==== 3.1 刷入twrp和Magisk ====&lt;br /&gt;
* 你也可以使用KernelSU或其它方式获取root权限&lt;br /&gt;
==== 3.2 分区、格式化分区 ====&lt;br /&gt;
连接手机、电脑，手机进twrp&lt;br /&gt;
&lt;br /&gt;
将`parted`复制到手机储存&lt;br /&gt;
&lt;br /&gt;
电脑输入：&lt;br /&gt;
 adb shell&lt;br /&gt;
然后输入：&lt;br /&gt;
 cp /sdcard/parted /sbin/ &amp;amp;&amp;amp; chmod 755 /sbin/parted&lt;br /&gt;
 umount /data &amp;amp;&amp;amp; umount /sdcard&lt;br /&gt;
 parted /dev/block/sda&lt;br /&gt;
输入`p`查看当前分区情况&lt;br /&gt;
 p&lt;br /&gt;
对于一加6T，可这样分区：&lt;br /&gt;
* 压缩分区17&lt;br /&gt;
 resizepart 17&lt;br /&gt;
 # input 61GB &lt;br /&gt;
* 创建新分区&lt;br /&gt;
 mkpart esp fat32 61GB 62GB&lt;br /&gt;
 mkpart arch ext4 62GB 125GB&lt;br /&gt;
 set 18 esp on&lt;br /&gt;
随后退出parted&lt;br /&gt;
 q&lt;br /&gt;
再次重启到twrp，格式化各分区&lt;br /&gt;
&lt;br /&gt;
电脑输入：&lt;br /&gt;
 adb shell&lt;br /&gt;
然后输入：&lt;br /&gt;
 mkfs.fat -F32 -s1 /dev/block/by-name/esp&lt;br /&gt;
 mke2fs -t ext4 /dev/block/by-name/arch&lt;br /&gt;
 mke2fs -t ext4 /dev/block/by-name/userdata&lt;br /&gt;
&lt;br /&gt;
==== 3.3 获取UUID ====&lt;br /&gt;
重启到Android，在termux或adb shell输入&lt;br /&gt;
 su&lt;br /&gt;
 blkid /dev/block/by-name/arch&lt;br /&gt;
记下UUID值&lt;br /&gt;
&lt;br /&gt;
==== 3.4 准备grub配置文件 ====&lt;br /&gt;
*下载：&lt;br /&gt;
** https://forum.renegade-project.tech/uploads/short-url/hlr2fHanyoSkM1pOPy1eywhLiSm.zip&lt;br /&gt;
** https://forum.renegade-project.tech/uploads/short-url/hlr2fHanyoSkM1pOPy1eywhLiSm.zip&lt;br /&gt;
&lt;br /&gt;
将boot.tar.gz中grub.cfg的uuid全部改为步骤3.3中得到的&lt;br /&gt;
替换所有这种字符&lt;br /&gt;
[[文件:3a12afa8f91aef1d2d2fb693b93d0e13eae37729.png|缩略图]]&lt;br /&gt;
==== 3.5 解压rootfs ====&lt;br /&gt;
将arch.tar.gz复制到手机内部存储&lt;br /&gt;
* 建议使用termux操作&lt;br /&gt;
 pkg update&lt;br /&gt;
 pkg install tsu&lt;br /&gt;
提权&lt;br /&gt;
 tsu&lt;br /&gt;
 # root permission needed&lt;br /&gt;
挂载&amp;amp;解压&lt;br /&gt;
 cd ~&lt;br /&gt;
 mkdir arch&lt;br /&gt;
 mount /dev/block/by-name/arch ~/arch&lt;br /&gt;
 &lt;br /&gt;
 cd ~/arch&lt;br /&gt;
 tar -xpvf /sdcard/arch.tar.gz&lt;br /&gt;
 # extract&lt;br /&gt;
&lt;br /&gt;
==== 3.6 安装grub ====&lt;br /&gt;
 tsu&lt;br /&gt;
&lt;br /&gt;
 cd ~&lt;br /&gt;
 mkdir esp&lt;br /&gt;
&lt;br /&gt;
 mount /dev/block/by-name/esp esp&lt;br /&gt;
 mkdir esp/EFI&lt;br /&gt;
&lt;br /&gt;
将esp.zip中这两个文件夹复制到~/esp/EFI/&lt;br /&gt;
&lt;br /&gt;
将boot.tar.gz内两个文件夹复制进~/arch/boot&lt;br /&gt;
* 检查&lt;br /&gt;
 # /dev/block/by-name/arch has been mounted!&lt;br /&gt;
 cd ~/arch/boot &amp;amp;&amp;amp; ls&lt;br /&gt;
&lt;br /&gt;
==== 3.7 获取、添加dtb ====&lt;br /&gt;
对于一加6T，还需要将这两个dtb复制到~/arch/boot&lt;br /&gt;
* 注：对于一加6（T）不要使用内核编译生成的dtb&lt;br /&gt;
** 见arch/arm64/boot/dts/qcom/sdm845-oneplus-common.dtsi,将不会有显示&lt;br /&gt;
对于其它设备，请获取合适的dtb&lt;br /&gt;
&lt;br /&gt;
 /delete-node/ &amp;amp;rmtfs_mem;&lt;br /&gt;
 &lt;br /&gt;
 / {&lt;br /&gt;
 	aliases {&lt;br /&gt;
 		serial0 = &amp;amp;uart9;&lt;br /&gt;
 		hsuart0 = &amp;amp;uart6;&lt;br /&gt;
 	};&lt;br /&gt;
 &lt;br /&gt;
 	chosen {&lt;br /&gt;
 		stdout-path = &amp;quot;serial0:115200n8&amp;quot;; /*line 30 in dtsi*/&lt;br /&gt;
 	};&lt;br /&gt;
 &lt;br /&gt;
 	volume-keys {&lt;br /&gt;
 		compatible = &amp;quot;gpio-keys&amp;quot;;&lt;br /&gt;
 		label = &amp;quot;Volume keys&amp;quot;;&lt;br /&gt;
 		autorepeat;&lt;br /&gt;
&lt;br /&gt;
=====  3.7.1 dtb的获取 =====&lt;br /&gt;
下载适用自己设备的postmarketOS的boot.img.xz，解压得到img文件&lt;br /&gt;
&lt;br /&gt;
使用 extract-dtb&amp;lt;ref&amp;gt;https://pypi.org/project/extract-dtb/&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple extract-dtb&lt;br /&gt;
 extract-dtb 20220608-1408-postmarketOS-v22.06-phosh-18-oneplus-fajita-boot.img -o .&lt;br /&gt;
 # use your own img&lt;br /&gt;
 # will generate something like 01_dtbdump_,OnePlus_6T.dtb&lt;br /&gt;
 &lt;br /&gt;
 ls&lt;br /&gt;
 mv 01_dtbdump_,OnePlus_6T.dtb sdm845-oneplus-fajita.dtb&lt;br /&gt;
&lt;br /&gt;
===== 3.7.2 修改dtb，使得可能支持USB otg =====&lt;br /&gt;
安装dtc工具&lt;br /&gt;
 sudo apt install device-tree-compiler -y&lt;br /&gt;
&lt;br /&gt;
转换dtb为dts&lt;br /&gt;
 dtc -I dtb -O dts -o temp.dts sdm845-oneplus-fajita.dtb&lt;br /&gt;
&lt;br /&gt;
修改temp.dts&lt;br /&gt;
 nano temp.dts&lt;br /&gt;
&lt;br /&gt;
查找`dr_mode`&lt;br /&gt;
                         dwc3@a600000 {&lt;br /&gt;
                                 compatible = &amp;quot;snps,dwc3&amp;quot;;&lt;br /&gt;
                                 reg = &amp;lt;0x00 0xa600000 0x00 0xcd00&amp;gt;;&lt;br /&gt;
                                 interrupts = &amp;lt;0x00 0x85 0x04&amp;gt;;&lt;br /&gt;
                                 iommus = &amp;lt;0x25 0x740 0x00&amp;gt;;&lt;br /&gt;
                                 snps,dis_u2_susphy_quirk;&lt;br /&gt;
                                 snps,dis_enblslpm_quirk;&lt;br /&gt;
                                 phys = &amp;lt;0xb8&amp;gt;;&lt;br /&gt;
                                 phy-names = &amp;quot;usb2-phy&amp;quot;;&lt;br /&gt;
                                 dr_mode = &amp;quot;peripheral&amp;quot;;&lt;br /&gt;
                                 maximum-speed = &amp;quot;high-speed&amp;quot;;&lt;br /&gt;
                         };&lt;br /&gt;
&lt;br /&gt;
将`peripheral`改为`host` 此时生成的dtb将支持otg，但要外界供电，为了USB主动供电，需要进一步修改,但会导致充电失效&lt;br /&gt;
将charger@1000那段删除&lt;br /&gt;
 &lt;br /&gt;
                         pmic@2 {&lt;br /&gt;
                                 compatible = &amp;quot;qcom,pmi8998\0qcom,spmi-pmic&amp;quot;;&lt;br /&gt;
                                 reg = &amp;lt;0x02 0x00&amp;gt;;&lt;br /&gt;
                                 #address-cells = &amp;lt;0x01&amp;gt;;&lt;br /&gt;
                                 #size-cells = &amp;lt;0x00&amp;gt;;&lt;br /&gt;
 &lt;br /&gt;
                                 charger@1000 {&lt;br /&gt;
                                         compatible = &amp;quot;qcom,pmi8998-charger&amp;quot;;&lt;br /&gt;
                                         reg = &amp;lt;0x1000&amp;gt;;&lt;br /&gt;
                                         interrupts = &amp;lt;0x02 0x13 0x04 0x03 0x02 0x&amp;gt;&lt;br /&gt;
                                         interrupt-names = &amp;quot;usb-plugin\0bat-ov\0wd&amp;gt;&lt;br /&gt;
                                         io-channels = &amp;lt;0xdd 0x03 0xdd 0x04&amp;gt;;&lt;br /&gt;
                                         io-channel-names = &amp;quot;usbin_i\0usbin_v&amp;quot;;&lt;br /&gt;
                                         status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
                                         monitored-battery = &amp;lt;0xde&amp;gt;;&lt;br /&gt;
                                 };&lt;br /&gt;
 &lt;br /&gt;
                                 gpios@c000 {&lt;br /&gt;
                                         compatible = &amp;quot;qcom,pmi8998-gpio\0qcom,spm&amp;gt;&lt;br /&gt;
                                         reg = &amp;lt;0xc000&amp;gt;;&lt;br /&gt;
                                         gpio-controller;&lt;br /&gt;
                                         gpio-ranges = &amp;lt;0xdf 0x00 0x00 0x0e&amp;gt;;&lt;br /&gt;
                                         #gpio-cells = &amp;lt;0x02&amp;gt;;&lt;br /&gt;
                                         interrupt-controller;&lt;br /&gt;
                                         #interrupt-cells = &amp;lt;0x02&amp;gt;;&lt;br /&gt;
                                         phandle = &amp;lt;0xdf&amp;gt;;&lt;br /&gt;
                                 };&lt;br /&gt;
&lt;br /&gt;
生成新的dtb&lt;br /&gt;
 dtc -I dts -O dtb -o sdm845-oneplus-fajita-host.dtb temp.dts&lt;br /&gt;
复制好dtb，你的usb otg应该就**有可能**工作&lt;br /&gt;
&lt;br /&gt;
=== 4 刷入UEFI ===&lt;br /&gt;
进入bootloader&lt;br /&gt;
&lt;br /&gt;
临时启动&lt;br /&gt;
 fastboot boot boot-xxx.img&lt;br /&gt;
&lt;br /&gt;
刷入到当前boot分区&lt;br /&gt;
 fastboot flash boot boot-xxx.img&lt;br /&gt;
&lt;br /&gt;
=== 5 Enjoy！===&lt;br /&gt;
恭喜你！你已经成功在你的手机上安装Archlinux！！希望你能有所收获！！ &lt;br /&gt;
==== 5.1 adbd ====&lt;br /&gt;
* 确保已经添加Renegade Project源&lt;br /&gt;
 sudo pacman -S adbd&lt;br /&gt;
adbd能帮助你用adb调试手机上的Linux&lt;br /&gt;
==== 5.2 coremark跑分 ====&lt;br /&gt;
 yay -S coremark-git&lt;br /&gt;
 coremark&lt;br /&gt;
[[文件:6d52df4afa01bebdad9cc0a73299b746c235e2f5.png|缩略图]]&lt;br /&gt;
==== 5.3 unixbench 跑分 ====&lt;br /&gt;
 ========================================================================&lt;br /&gt;
    BYTE UNIX Benchmarks (Version 5.1.3)&lt;br /&gt;
 &lt;br /&gt;
    System: : GNU/Linux&lt;br /&gt;
    OS: GNU/Linux -- 5.18.0-sdm845-00109-gf7ad1e5036bb-dirty -- #1 SMP PREEMPT Thu Jun 2 01:12:20 UTC 2022&lt;br /&gt;
    Machine: aarch64 (unknown)&lt;br /&gt;
    Language: en_US.utf8 (charmap=&amp;quot;UTF-8&amp;quot;, collate=&amp;quot;UTF-8&amp;quot;)&lt;br /&gt;
    CPU 0:  (38.4 bogomips)&lt;br /&gt;
 &lt;br /&gt;
    CPU 1:  (38.4 bogomips)&lt;br /&gt;
 &lt;br /&gt;
    CPU 2:  (38.4 bogomips)&lt;br /&gt;
 &lt;br /&gt;
    CPU 3:  (38.4 bogomips)&lt;br /&gt;
 &lt;br /&gt;
    CPU 4:  (38.4 bogomips)&lt;br /&gt;
 &lt;br /&gt;
    CPU 5:  (38.4 bogomips)&lt;br /&gt;
 &lt;br /&gt;
    CPU 6:  (38.4 bogomips)&lt;br /&gt;
 &lt;br /&gt;
    CPU 7:  (38.4 bogomips)&lt;br /&gt;
 &lt;br /&gt;
    08:08:45 up 4 min,  3 users,  load average: 0.23, 0.15, 0.07; runlevel&lt;br /&gt;
 &lt;br /&gt;
 ------------------------------------------------------------------------&lt;br /&gt;
 Benchmark Run: Wed Jun 15 2022 08:08:45 - 08:36:48&lt;br /&gt;
 8 CPUs in system; running 1 parallel copy of tests&lt;br /&gt;
 &lt;br /&gt;
 Dhrystone 2 using register variables       31371686.9 lps   (10.0 s, 7 samples)&lt;br /&gt;
 Double-Precision Whetstone                     6636.9 MWIPS (9.9 s, 7 samples)&lt;br /&gt;
 Execl Throughput                               3464.7 lps   (30.0 s, 2 samples)&lt;br /&gt;
 File Copy 1024 bufsize 2000 maxblocks        431850.5 KBps  (30.0 s, 2 samples)&lt;br /&gt;
 File Copy 256 bufsize 500 maxblocks          212468.6 KBps  (30.0 s, 2 samples)&lt;br /&gt;
 File Copy 4096 bufsize 8000 maxblocks       1100792.9 KBps  (30.0 s, 2 samples)&lt;br /&gt;
 Pipe Throughput                             1189114.2 lps   (10.0 s, 7 samples)&lt;br /&gt;
 Pipe-based Context Switching                  16156.4 lps   (10.0 s, 7 samples)&lt;br /&gt;
 Process Creation                               1880.5 lps   (30.0 s, 2 samples)&lt;br /&gt;
 Shell Scripts (1 concurrent)                   1267.7 lpm   (60.0 s, 2 samples)&lt;br /&gt;
 Shell Scripts (8 concurrent)                    928.5 lpm   (60.0 s, 2 samples)&lt;br /&gt;
 System Call Overhead                         904143.8 lps   (10.0 s, 7 samples)&lt;br /&gt;
&lt;br /&gt;
 System Benchmarks Index Values               BASELINE       RESULT    INDEX&lt;br /&gt;
 Dhrystone 2 using register variables         116700.0   31371686.9   2688.2&lt;br /&gt;
 Double-Precision Whetstone                       55.0       6636.9   1206.7&lt;br /&gt;
 Execl Throughput                                 43.0       3464.7    805.7&lt;br /&gt;
 File Copy 1024 bufsize 2000 maxblocks          3960.0     431850.5   1090.5&lt;br /&gt;
 File Copy 256 bufsize 500 maxblocks            1655.0     212468.6   1283.8&lt;br /&gt;
 File Copy 4096 bufsize 8000 maxblocks          5800.0    1100792.9   1897.9&lt;br /&gt;
 Pipe Throughput                               12440.0    1189114.2    955.9&lt;br /&gt;
 Pipe-based Context Switching                   4000.0      16156.4     40.4&lt;br /&gt;
 Process Creation                                126.0       1880.5    149.2&lt;br /&gt;
 Shell Scripts (1 concurrent)                     42.4       1267.7    299.0&lt;br /&gt;
 Shell Scripts (8 concurrent)                      6.0        928.5   1547.5&lt;br /&gt;
 System Call Overhead                          15000.0     904143.8    602.8&lt;br /&gt;
                                                                   &lt;br /&gt;
 ========&lt;br /&gt;
 System Benchmarks Index Score                                         &lt;br /&gt;
 687.6&lt;br /&gt;
 &lt;br /&gt;
 ------------------------------------------------------------------------&lt;br /&gt;
 Benchmark Run: Wed Jun 15 2022 08:36:48 - 09:05:10&lt;br /&gt;
 8 CPUs in system; running 8 parallel copies of tests&lt;br /&gt;
 &lt;br /&gt;
 Dhrystone 2 using register variables      157010560.9 lps   (10.0 s, 7 samples)&lt;br /&gt;
 Double-Precision Whetstone                    38380.8 MWIPS (9.5 s, 7 samples)&lt;br /&gt;
 Execl Throughput                              14684.0 lps   (29.9 s, 2 samples)&lt;br /&gt;
 File Copy 1024 bufsize 2000 maxblocks        775566.4 KBps  (30.0 s, 2 samples)&lt;br /&gt;
 File Copy 256 bufsize 500 maxblocks          247697.5 KBps  (30.0 s, 2 samples)&lt;br /&gt;
 File Copy 4096 bufsize 8000 maxblocks       1947686.0 KBps  (30.0 s, 2 samples)&lt;br /&gt;
 Pipe Throughput                             6462292.1 lps   (10.0 s, 7 samples)&lt;br /&gt;
 Pipe-based Context Switching                 535021.4 lps   (10.0 s, 7 samples)&lt;br /&gt;
 Process Creation                              21863.7 lps   (30.0 s, 2 samples)&lt;br /&gt;
 Shell Scripts (1 concurrent)                  12727.2 lpm   (60.0 s, 2 samples)&lt;br /&gt;
 Shell Scripts (8 concurrent)                   1865.6 lpm   (60.1 s, 2 samples)&lt;br /&gt;
 System Call Overhead                        4647127.5 lps   (10.0 s, 7 samples)&lt;br /&gt;
 &lt;br /&gt;
 System Benchmarks Index Values               BASELINE       RESULT    INDEX&lt;br /&gt;
 Dhrystone 2 using register variables         116700.0  157010560.9  13454.2&lt;br /&gt;
 Double-Precision Whetstone                       55.0      38380.8   6978.3&lt;br /&gt;
 Execl Throughput                                 43.0      14684.0   3414.9&lt;br /&gt;
 File Copy 1024 bufsize 2000 maxblocks          3960.0     775566.4   1958.5&lt;br /&gt;
 File Copy 256 bufsize 500 maxblocks            1655.0     247697.5   1496.7&lt;br /&gt;
 File Copy 4096 bufsize 8000 maxblocks          5800.0    1947686.0   3358.1&lt;br /&gt;
 Pipe Throughput                               12440.0    6462292.1   5194.8&lt;br /&gt;
 Pipe-based Context Switching                   4000.0     535021.4   1337.6&lt;br /&gt;
 Process Creation                                126.0      21863.7   1735.2&lt;br /&gt;
 Shell Scripts (1 concurrent)                     42.4      12727.2   3001.7&lt;br /&gt;
 Shell Scripts (8 concurrent)                      6.0       1865.6   3109.4&lt;br /&gt;
 System Call Overhead                          15000.0    4647127.5   3098.1&lt;br /&gt;
                                                                    &lt;br /&gt;
  ========&lt;br /&gt;
  System Benchmarks Index Score                                        &lt;br /&gt;
  3187.6&lt;/div&gt;</summary>
		<author><name>Snnbyyds</name></author>
	</entry>
	<entry>
		<id>https://wiki.uotan.cn/index.php?title=%E6%96%87%E4%BB%B6:6d52df4afa01bebdad9cc0a73299b746c235e2f5.png&amp;diff=248</id>
		<title>文件:6d52df4afa01bebdad9cc0a73299b746c235e2f5.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.uotan.cn/index.php?title=%E6%96%87%E4%BB%B6:6d52df4afa01bebdad9cc0a73299b746c235e2f5.png&amp;diff=248"/>
		<updated>2024-02-15T02:22:17Z</updated>

		<summary type="html">&lt;p&gt;Snnbyyds：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;6d52df4afa01bebdad9cc0a73299b746c235e2f5&lt;/div&gt;</summary>
		<author><name>Snnbyyds</name></author>
	</entry>
	<entry>
		<id>https://wiki.uotan.cn/index.php?title=%E4%B8%BA%E6%89%8B%E6%9C%BA%E5%AE%89%E8%A3%85Linux&amp;diff=247</id>
		<title>为手机安装Linux</title>
		<link rel="alternate" type="text/html" href="https://wiki.uotan.cn/index.php?title=%E4%B8%BA%E6%89%8B%E6%9C%BA%E5%AE%89%E8%A3%85Linux&amp;diff=247"/>
		<updated>2024-02-15T02:09:24Z</updated>

		<summary type="html">&lt;p&gt;Snnbyyds：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== 该章节将引导你为一些手机安装主线Linux操作系统 ==&lt;br /&gt;
注意：本教程中，操作环境为64位Ubuntu，目标机器为OnePlus6T，我们将尝试利用UEFI在OnePlus6T上启动Archlinux&lt;br /&gt;
* 不同于Windows, Linux的安装过程可能具有一定的复杂性，步骤繁杂，方案多样，如果你使用不同的机型，请先仔细阅读本文和搜索资料；此外，主线Linux的开发（内核驱动移植，制作dts等）不在本文讨论范畴内。&lt;br /&gt;
[[文件:Archlinux-neofetch-op6t.png|缩略图]]&lt;br /&gt;
=== 1 编译内核 ===&lt;br /&gt;
sdm845成品：&lt;br /&gt;
[Releases · silime/kernel-builder (github.com)](https://github.com/silime/kernel-builder)&lt;br /&gt;
==== 1.1 安装相关依赖 ====&lt;br /&gt;
对于Ubuntu 22.04 LTS:&lt;br /&gt;
&lt;br /&gt;
 sudo apt install build-essential openssl pkg-config libssl-dev libncurses5-dev pkg-config minizip libelf-dev flex bison  libc6-dev libidn11-dev rsync bc liblz4-tool  &lt;br /&gt;
 sudo apt install gcc-aarch64-linux-gnu dpkg-dev git&lt;br /&gt;
&lt;br /&gt;
==== 1.2 克隆内核源码 ====&lt;br /&gt;
你可以在“-b”参数后选择其他分支&lt;br /&gt;
&lt;br /&gt;
 mkdir ~/workspace&lt;br /&gt;
 cd ~/workspace&lt;br /&gt;
 git clone --depth=1 https://gitlab.com/sdm845-mainline/linux.git -b sdm845/6.8-dev&lt;br /&gt;
&lt;br /&gt;
可用分支可在gitlab网页查看&lt;br /&gt;
&lt;br /&gt;
==== 1.3  生成 .config ====&lt;br /&gt;
 make ARCH=arm64 defconfig sdm845.config&lt;br /&gt;
 # generate .config&lt;br /&gt;
&lt;br /&gt;
==== 1.4 进行编译 ====&lt;br /&gt;
&lt;br /&gt;
 make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- -j$(nproc)&lt;br /&gt;
&lt;br /&gt;
生成deb包供Debian系得GNU/Linux使用&lt;br /&gt;
&lt;br /&gt;
 make -j$(nproc) ARCH=arm64 KBUILD_DEBARCH=arm64 KDEB_CHANGELOG_DIST=mobile CROSS_COMPILE=aarch64-linux-gnu- deb-pkg&lt;br /&gt;
 # This will generate several deb files in ../&lt;br /&gt;
&lt;br /&gt;
=== 2 制作rootfs ===&lt;br /&gt;
==== 2.1 下载 ====&lt;br /&gt;
对于Archlinux，从http://os.archlinuxarm.org/os/ArchLinuxARM-aarch64-latest.tar.gz下载&lt;br /&gt;
&lt;br /&gt;
 cd ~/workspace&lt;br /&gt;
 wget http://os.archlinuxarm.org/os/ArchLinuxARM-aarch64-latest.tar.gz&lt;br /&gt;
&lt;br /&gt;
对于Ubuntu，从 [Index of /ubuntu-base](https://cdimage.ubuntu.com/ubuntu-base/)选择自己想要的版本&lt;br /&gt;
==== 2.2 制作 ====&lt;br /&gt;
===== 2.2.1 进入chroot =====&lt;br /&gt;
由于rootfs为ARM64，所以安装qemu-user-static&lt;br /&gt;
 sudo apt install qemu-user-static &lt;br /&gt;
&lt;br /&gt;
创建img并挂载&lt;br /&gt;
&lt;br /&gt;
 dd if=/dev/zero of=archlinux.img bs=1G count=6&lt;br /&gt;
 mkfs.ext4 archlinux.img&lt;br /&gt;
 mkdir arch&lt;br /&gt;
 sudo mount archlinux.img arch&lt;br /&gt;
&lt;br /&gt;
解压&lt;br /&gt;
&lt;br /&gt;
 cd arch&lt;br /&gt;
 sudo tar -xpvf ../ArchLinuxARM-aarch64-latest.tar.gz&lt;br /&gt;
&lt;br /&gt;
进入chroot环境&lt;br /&gt;
&lt;br /&gt;
 cd ..&lt;br /&gt;
 sudo mount --bind /dev arch/dev&lt;br /&gt;
 sudo mount -t devpts devpts arch/dev/pts -o gid=5,mode=620&lt;br /&gt;
 sudo mount -t proc proc arch/proc&lt;br /&gt;
 sudo mount -t sysfs sysfs arch/sys&lt;br /&gt;
 sudo mount -t tmpfs tmpfs arch/run&lt;br /&gt;
 &lt;br /&gt;
 sudo rm -rf arch/etc/resolv.conf &amp;amp;&amp;amp; sudo cp /etc/resolv.conf arch/etc/&lt;br /&gt;
 &lt;br /&gt;
 sudo chroot arch&lt;br /&gt;
===== 2.2.2 初始化pacman keyring =====&lt;br /&gt;
 pacman-key --init&lt;br /&gt;
 pacman-key --populate archlinuxarm&lt;br /&gt;
===== 2.2.3 换源 （可选） =====&lt;br /&gt;
详见 https://mirrors.tuna.tsinghua.edu.cn/help/archlinuxarm/&lt;br /&gt;
&lt;br /&gt;
 pacman -Syyu&lt;br /&gt;
 # upgrade&lt;br /&gt;
&lt;br /&gt;
===== 2.2.4 卸载旧的内核和firmware =====&lt;br /&gt;
 pacman -Q | grep -i linux&lt;br /&gt;
 pacman -R linux-aarch64 linux-firmware linux-firmware-whence&lt;br /&gt;
 &lt;br /&gt;
 exit&lt;br /&gt;
 # exit chroot environment&lt;br /&gt;
&lt;br /&gt;
===== 2.2.5 安装新的内核 =====&lt;br /&gt;
* 确保已经退出`chroot`环境&lt;br /&gt;
然后：&lt;br /&gt;
 cd ~/workspace/linux&lt;br /&gt;
 sudo make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu-  INSTALL_MOD_PATH=~/workspace/arch modules_install&lt;br /&gt;
 sudo make ARCH=arm64 INSTALL_PATH=~/workspace/arch/boot install&lt;br /&gt;
如果是`debian`系也可以直接chroot环境中用dpkg安装deb：&amp;lt;code&amp;gt;dpkg -i *.deb&amp;lt;/code&amp;gt;&lt;br /&gt;
===== 2.2.6 安装新的firmware =====&lt;br /&gt;
* 可以尝试从PostmarketOS&amp;lt;ref&amp;gt;https://wiki.postmarketos.org/wiki/OnePlus_6T_(oneplus-fajita)&amp;lt;/ref&amp;gt;中提取&lt;br /&gt;
进入chroot环境&lt;br /&gt;
 sudo chroot ~/workspace/arch&lt;br /&gt;
移动解压得到的文件&lt;br /&gt;
 mv * /usr/lib/firmware/&lt;br /&gt;
 ldconfig&lt;br /&gt;
修改/etc/mkinitcpio.conf&lt;br /&gt;
 nano /etc/mkinitcpio.conf&lt;br /&gt;
找到&lt;br /&gt;
 # BINARIES&lt;br /&gt;
 # This setting includes any additional binaries a given user may&lt;br /&gt;
 # wish into the CPIO image.  This is run last, so it may be used to&lt;br /&gt;
 # override the actual binaries included by a given hook&lt;br /&gt;
 # BINARIES are dependency parsed, so you may safely ignore libraries&lt;br /&gt;
 BINARIES=()&lt;br /&gt;
在`BINARIES=()`填入`xxxx_zap.mbn/ipa_fws.mbn`的路径&lt;br /&gt;
这两个固件的来源一般是手机提取并放在特殊的位置加载（具体由`dts/dtsi`指定）&lt;br /&gt;
对于fajita，改为：&lt;br /&gt;
  BINARIES=(/usr/lib/firmware/qcom/sdm845/oneplus6/a630_zap.mbn /usr/lib/firmware/qcom/sdm845/oneplus6/ipa_fws.mbn)&lt;br /&gt;
生成initrd.img&lt;br /&gt;
 ls /usr/lib/modules&lt;br /&gt;
 # get kernel version&lt;br /&gt;
 mkinitcpio --generate /boot/initrd.img-5.18.0-sdm845-00109-gf7ad1e5036bb-dirty --kernel 5.18.0-sdm845-00109-gf7ad1e5036bb-dirty&lt;br /&gt;
===== 2.2.7 安装软件包和基本配置&amp;lt;ref&amp;gt;https://archlinuxstudio.github.io/ArchLinuxTutorial/#/&amp;lt;/ref&amp;gt; =====&lt;br /&gt;
====== 2.2.7.1 设置时区 ======&lt;br /&gt;
 ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime&lt;br /&gt;
 # Shanghai&lt;br /&gt;
====== 2.2.7.2 设置locale ======&lt;br /&gt;
参考：https://wiki.archlinux.org/title/Locale&lt;br /&gt;
&lt;br /&gt;
 nano /etc/locale.gen&lt;br /&gt;
 # uncomment en_US.UTF-8 UTF-8&lt;br /&gt;
 # uncomment zh_CN.UTF-8 UTF-8&lt;br /&gt;
 &lt;br /&gt;
 locale-gen&lt;br /&gt;
&lt;br /&gt;
====== 2.2.7.3 自定义主机名 ======&lt;br /&gt;
 # For example&lt;br /&gt;
 echo 'OnePlus6T' &amp;gt; /etc/hostname&lt;br /&gt;
&lt;br /&gt;
====== 2.2.7.4 alarm（Archlinuxarm内置非root用户）配置 ======&lt;br /&gt;
&lt;br /&gt;
更改alarm密码，并添加到wheel用户组&lt;br /&gt;
&lt;br /&gt;
 passwd alarm&lt;br /&gt;
 # Change its password. Default is &amp;quot;alarm&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 usermod -aG wheel alarm&lt;br /&gt;
&lt;br /&gt;
添加sudo，设置sudo权限&lt;br /&gt;
&lt;br /&gt;
 pacman -S sudo&lt;br /&gt;
 EDITOR=nano visudo&lt;br /&gt;
&lt;br /&gt;
 找到下面这样的一行，把前面的注释符号 `#` 去掉&lt;br /&gt;
&lt;br /&gt;
 #%wheel ALL=(ALL:ALL) ALL&lt;br /&gt;
&lt;br /&gt;
====== 2.2.7.5 必要软件包 ======&lt;br /&gt;
 pacman -S base base-devel dhcpcd iwd&lt;br /&gt;
 pacman -S grub efibootmgr&lt;br /&gt;
 &lt;br /&gt;
 pacman -S networkmanager modemmanager&lt;br /&gt;
 pacman -S bluez bluez-utils pulseaudio-bluetooth&lt;br /&gt;
 pacman -S qrtr rmtfs&lt;br /&gt;
 systemctl enable NetworkManager bluetooth qrtr-ns rmtfs &lt;br /&gt;
 systemctl enable ModemManager&lt;br /&gt;
&lt;br /&gt;
 pacman -S git wget&lt;br /&gt;
 pacman -S ntfs-3g usbutils&lt;br /&gt;
&lt;br /&gt;
再安装 pd-mapper 和 tqftpserv&lt;br /&gt;
* 可以此处下载成品：https://github.com/silime/ArchLinux-Packages&lt;br /&gt;
* 也可以在步骤2.2.7.6后直接用pacman安装！&lt;br /&gt;
* 注：默认的PKGBUILD有问题，需要手动修复，在这里不详细描述，如果嫌麻烦，也可以直接编译安装&lt;br /&gt;
a. 直接编译安装（不推荐）：&lt;br /&gt;
 git clone https://github.com/andersson/pd-mapper.git&lt;br /&gt;
 git clone https://github.com/andersson/tqftpserv.git&lt;br /&gt;
 cd pd-mapper &amp;amp;&amp;amp; make &amp;amp;&amp;amp; make install &amp;amp;&amp;amp; cd ..&lt;br /&gt;
 cd tqftpserv &amp;amp;&amp;amp; make &amp;amp;&amp;amp; make install &amp;amp;&amp;amp; cd ..&lt;br /&gt;
 &lt;br /&gt;
 # clean&lt;br /&gt;
 rm -rf tqftpserv pd-mapper&lt;br /&gt;
&lt;br /&gt;
b. 使用pkgbuild&lt;br /&gt;
 # Switch to alarm first&lt;br /&gt;
 su alarm&lt;br /&gt;
&lt;br /&gt;
 cd ~&lt;br /&gt;
 # Compile and Install pd-mapper&lt;br /&gt;
 git clone https://aur.archlinux.org/pd-mapper-git.git ~/pd-mapper-git&lt;br /&gt;
 cd ~/pd-mapper-git&lt;br /&gt;
 &lt;br /&gt;
 nano PKGBUILD&lt;br /&gt;
 # fix some errors&lt;br /&gt;
 makepkg -si&lt;br /&gt;
 &lt;br /&gt;
 #Compile and Install tqftpserv&lt;br /&gt;
 git clone https://aur.archlinux.org/tqftpserv-git.git ~/tqftpserv-git&lt;br /&gt;
 cd ~/tqftpserv-git&lt;br /&gt;
 &lt;br /&gt;
 nano PKGBUILD&lt;br /&gt;
 # fix some errors&lt;br /&gt;
 makepkg -si&lt;br /&gt;
&lt;br /&gt;
启用 pd-mapper 和 tqftpserv&lt;br /&gt;
 sudo systemctl enable tqftpserv pd-mapper&lt;br /&gt;
回到root用户&lt;br /&gt;
 exit&lt;br /&gt;
&lt;br /&gt;
====== 2.2.7.6 添加Renegade Project源&amp;lt;ref&amp;gt;https://mirror.renegade-project.tech/index.html#/&amp;lt;/ref&amp;gt;（可选） ======&lt;br /&gt;
导入 GPG key:&lt;br /&gt;
 pacman-key --recv-keys 5E29D8F17064598A7A2223E2C735F8DF5B624511&lt;br /&gt;
 pacman-key --lsign-key 5E29D8F17064598A7A2223E2C735F8DF5B624511&lt;br /&gt;
在 /etc/pacman.conf 文件末尾添加以下内容：&lt;br /&gt;
 [renegade-project]&lt;br /&gt;
 Server = https://mirror.renegade-project.tech/arch/$arch&lt;br /&gt;
安装 renegade-project-keyring：&lt;br /&gt;
 pacman -S renegade-project-keyring&lt;br /&gt;
刷新&lt;br /&gt;
 pacman -Syy&lt;br /&gt;
&lt;br /&gt;
====== 2.2.7.7 安装用于切换slot的qbootctl（推荐） ======&lt;br /&gt;
* 确保已经完成了步骤2.2.7.6&lt;br /&gt;
 pacman -Sy qbootctl&lt;br /&gt;
&lt;br /&gt;
====== 2.2.7.8 安装更多package使一些硬件工作 ======&lt;br /&gt;
* 来自：https://github.com/silime/ArchLinux-Packages/releases&lt;br /&gt;
** 请用pacman安装[https://github.com/silime/ArchLinux-Packages/releases/tag/sensors sensors package]，[https://github.com/silime/ArchLinux-Packages/releases/tag/alsa-ucm-oneplus-0.5.10 alsa-ucm-oneplus-0.5.10]，[https://github.com/silime/ArchLinux-Packages/releases/tag/q6voice q6voice]&lt;br /&gt;
&lt;br /&gt;
====== 2.2.7.9 修改Modemmanager ======&lt;br /&gt;
* 重新编译ModemManager，开启`plugin_qcom_soc`,并安装&lt;br /&gt;
 su alarm&lt;br /&gt;
 mkdir ~/modemmanager&lt;br /&gt;
 cd ~/modemmanager&lt;br /&gt;
 nano PKGBUILD&lt;br /&gt;
* 将 [PKGBUILD - modemmanager (aarch64) | Package Files | Arch Linux ARM](https://archlinuxarm.org/packages/aarch64/modemmanager/files/PKGBUILD) 中的内容复制进PKGBUILD，然后进行以下修改&lt;br /&gt;
** 将`arch=(x86_64)`改为`arch=(x86_64 aarch64)`&lt;br /&gt;
** 将`-D plugin_qcom_soc=disabled`一行删除&lt;br /&gt;
 10c10&lt;br /&gt;
 &amp;lt; arch=(x86_64)&lt;br /&gt;
 ---&lt;br /&gt;
 &amp;gt; arch=(x86_64 aarch64)&lt;br /&gt;
 35d34&lt;br /&gt;
 &amp;lt;     -D plugin_qcom_soc=disabled&lt;br /&gt;
* 编译和安装&lt;br /&gt;
 makepkg -rsi&lt;br /&gt;
 # compile and install&lt;br /&gt;
 &lt;br /&gt;
 cd ..&lt;br /&gt;
 sudo rm -rf ~/modemmanager&lt;br /&gt;
 exit&lt;br /&gt;
&lt;br /&gt;
 systemctl enable ModemManager&lt;br /&gt;
&lt;br /&gt;
====== 2.2.7.10 其他软件 ======&lt;br /&gt;
中文字体&lt;br /&gt;
&lt;br /&gt;
 pacman -S noto-fonts-cjk&lt;br /&gt;
 # Chinese fonts&lt;br /&gt;
&lt;br /&gt;
yay&lt;br /&gt;
&lt;br /&gt;
 su alarm&lt;br /&gt;
 cd ~&lt;br /&gt;
 git clone https://aur.archlinux.org/yay-bin.git&lt;br /&gt;
 cd yay-bin &amp;amp;&amp;amp; makepkg -si&lt;br /&gt;
 exit&lt;br /&gt;
&lt;br /&gt;
桌面环境&lt;br /&gt;
&lt;br /&gt;
* 自选，建议gnome或phosh&lt;br /&gt;
** 如`gnome`&lt;br /&gt;
&lt;br /&gt;
 pacman -S gnome&lt;br /&gt;
 systemctl enable gdm&lt;br /&gt;
&lt;br /&gt;
* 如安装phosh，建议添加danctnix源 [danctnix (arikawa-hi.me)](https://p64.arikawa-hi.me/danctnix/)，然后安装&lt;br /&gt;
&lt;br /&gt;
网络浏览器&lt;br /&gt;
&lt;br /&gt;
 # for example, chromium&lt;br /&gt;
 pacman -S chromium&lt;br /&gt;
&lt;br /&gt;
===== 2.2.8 tfa98xx音频修复 =====&lt;br /&gt;
 echo 'snd-soc-tfa98xx' &amp;gt; /etc/modules-load.d/snd-soc-tfa98xx.conf&lt;br /&gt;
&lt;br /&gt;
===== 2.2.9 打包 =====&lt;br /&gt;
先清理，在chroot环境中&lt;br /&gt;
&lt;br /&gt;
 pacman -Scc&lt;br /&gt;
 # pacman&lt;br /&gt;
&lt;br /&gt;
进alarm用户&lt;br /&gt;
 su alarm # switch to alarm&lt;br /&gt;
 # clean bash history for alarm&lt;br /&gt;
 cat /dev/null &amp;gt; ~/.bash_history &amp;amp;&amp;amp; history -c &amp;amp;&amp;amp; exit&lt;br /&gt;
&lt;br /&gt;
在root用户&lt;br /&gt;
 # clean bash history for root&lt;br /&gt;
 cat /dev/null &amp;gt; ~/.bash_history &amp;amp;&amp;amp; history -c&lt;br /&gt;
&lt;br /&gt;
退出chroot环境&lt;br /&gt;
&lt;br /&gt;
 exit&lt;br /&gt;
&lt;br /&gt;
解除挂载&lt;br /&gt;
&lt;br /&gt;
 cd ~/workspace&lt;br /&gt;
 sudo umount ~/workspace/arch/run&lt;br /&gt;
 sudo umount ~/workspace/arch/sys&lt;br /&gt;
 sudo umount ~/workspace/arch/proc&lt;br /&gt;
 sudo umount ~/workspace/arch/dev/pts&lt;br /&gt;
 sudo umount ~/workspace/arch/dev&lt;br /&gt;
&lt;br /&gt;
用tar打包&lt;br /&gt;
&lt;br /&gt;
 cd ~/workspace/arch&lt;br /&gt;
 sudo tar -czvf ~/workspace/arch.tar.gz *&lt;br /&gt;
 # This will generate arch.tar.gz&lt;br /&gt;
&lt;br /&gt;
=== 3 安装到手机 ===&lt;br /&gt;
==== 3.1 刷入twrp和Magisk ====&lt;br /&gt;
* 你也可以使用KernelSU或其它方式获取root权限&lt;br /&gt;
==== 3.2 分区、格式化分区 ====&lt;br /&gt;
连接手机、电脑，手机进twrp&lt;br /&gt;
&lt;br /&gt;
将`parted`复制到手机储存&lt;br /&gt;
&lt;br /&gt;
电脑输入：&lt;br /&gt;
 adb shell&lt;br /&gt;
然后输入：&lt;br /&gt;
 cp /sdcard/parted /sbin/ &amp;amp;&amp;amp; chmod 755 /sbin/parted&lt;br /&gt;
 umount /data &amp;amp;&amp;amp; umount /sdcard&lt;br /&gt;
 parted /dev/block/sda&lt;br /&gt;
输入`p`查看当前分区情况&lt;br /&gt;
 p&lt;br /&gt;
对于一加6T，可这样分区：&lt;br /&gt;
* 压缩分区17&lt;br /&gt;
 resizepart 17&lt;br /&gt;
 # input 61GB &lt;br /&gt;
* 创建新分区&lt;br /&gt;
 mkpart esp fat32 61GB 62GB&lt;br /&gt;
 mkpart arch ext4 62GB 125GB&lt;br /&gt;
 set 18 esp on&lt;br /&gt;
随后退出parted&lt;br /&gt;
 q&lt;br /&gt;
再次重启到twrp，格式化各分区&lt;br /&gt;
&lt;br /&gt;
电脑输入：&lt;br /&gt;
 adb shell&lt;br /&gt;
然后输入：&lt;br /&gt;
 mkfs.fat -F32 -s1 /dev/block/by-name/esp&lt;br /&gt;
 mke2fs -t ext4 /dev/block/by-name/arch&lt;br /&gt;
 mke2fs -t ext4 /dev/block/by-name/userdata&lt;br /&gt;
&lt;br /&gt;
==== 3.3 获取UUID ====&lt;br /&gt;
重启到Android，在termux或adb shell输入&lt;br /&gt;
 su&lt;br /&gt;
 blkid /dev/block/by-name/arch&lt;br /&gt;
记下UUID值&lt;br /&gt;
&lt;br /&gt;
==== 3.4 准备grub配置文件 ====&lt;br /&gt;
*下载：&lt;br /&gt;
** https://forum.renegade-project.tech/uploads/short-url/hlr2fHanyoSkM1pOPy1eywhLiSm.zip&lt;br /&gt;
** https://forum.renegade-project.tech/uploads/short-url/hlr2fHanyoSkM1pOPy1eywhLiSm.zip&lt;br /&gt;
&lt;br /&gt;
将boot.tar.gz中grub.cfg的uuid全部改为步骤3.3中得到的&lt;br /&gt;
替换所有这种字符&lt;br /&gt;
[[文件:3a12afa8f91aef1d2d2fb693b93d0e13eae37729.png|缩略图]]&lt;br /&gt;
==== 3.5 解压rootfs ====&lt;br /&gt;
将arch.tar.gz复制到手机内部存储&lt;br /&gt;
* 建议使用termux操作&lt;br /&gt;
 pkg update&lt;br /&gt;
 pkg install tsu&lt;br /&gt;
提权&lt;br /&gt;
 tsu&lt;br /&gt;
 # root permission needed&lt;br /&gt;
挂载&amp;amp;解压&lt;br /&gt;
 cd ~&lt;br /&gt;
 mkdir arch&lt;br /&gt;
 mount /dev/block/by-name/arch ~/arch&lt;br /&gt;
 &lt;br /&gt;
 cd ~/arch&lt;br /&gt;
 tar -xpvf /sdcard/arch.tar.gz&lt;br /&gt;
 # extract&lt;br /&gt;
&lt;br /&gt;
==== 3.6 安装grub ====&lt;br /&gt;
 tsu&lt;br /&gt;
&lt;br /&gt;
 cd ~&lt;br /&gt;
 mkdir esp&lt;br /&gt;
&lt;br /&gt;
 mount /dev/block/by-name/esp esp&lt;br /&gt;
 mkdir esp/EFI&lt;br /&gt;
&lt;br /&gt;
将esp.zip中这两个文件夹复制到~/esp/EFI/&lt;br /&gt;
&lt;br /&gt;
将boot.tar.gz内两个文件夹复制进~/arch/boot&lt;br /&gt;
* 检查&lt;br /&gt;
 # /dev/block/by-name/arch has been mounted!&lt;br /&gt;
 cd ~/arch/boot &amp;amp;&amp;amp; ls&lt;br /&gt;
&lt;br /&gt;
==== 3.7 获取、添加dtb ====&lt;br /&gt;
对于一加6T，还需要将这两个dtb复制到~/arch/boot&lt;br /&gt;
* 注：对于一加6（T）不要使用内核编译生成的dtb&lt;/div&gt;</summary>
		<author><name>Snnbyyds</name></author>
	</entry>
	<entry>
		<id>https://wiki.uotan.cn/index.php?title=%E6%96%87%E4%BB%B6:3a12afa8f91aef1d2d2fb693b93d0e13eae37729.png&amp;diff=246</id>
		<title>文件:3a12afa8f91aef1d2d2fb693b93d0e13eae37729.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.uotan.cn/index.php?title=%E6%96%87%E4%BB%B6:3a12afa8f91aef1d2d2fb693b93d0e13eae37729.png&amp;diff=246"/>
		<updated>2024-02-15T02:03:14Z</updated>

		<summary type="html">&lt;p&gt;Snnbyyds：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;3a12afa8f91aef1d2d2fb693b93d0e13eae37729&lt;/div&gt;</summary>
		<author><name>Snnbyyds</name></author>
	</entry>
	<entry>
		<id>https://wiki.uotan.cn/index.php?title=%E4%B8%BA%E6%89%8B%E6%9C%BA%E5%AE%89%E8%A3%85Linux&amp;diff=243</id>
		<title>为手机安装Linux</title>
		<link rel="alternate" type="text/html" href="https://wiki.uotan.cn/index.php?title=%E4%B8%BA%E6%89%8B%E6%9C%BA%E5%AE%89%E8%A3%85Linux&amp;diff=243"/>
		<updated>2024-02-15T01:53:10Z</updated>

		<summary type="html">&lt;p&gt;Snnbyyds：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== 该章节将引导你为一些手机安装主线Linux操作系统 ==&lt;br /&gt;
注意：本教程中，操作环境为64位Ubuntu，目标机器为OnePlus6T，我们将尝试利用UEFI在OnePlus6T上启动Archlinux&lt;br /&gt;
* 不同于Windows, Linux的安装过程可能具有一定的复杂性，步骤繁杂，方案多样，如果你使用不同的机型，请先仔细阅读本文和搜索资料；此外，主线Linux的开发（内核驱动移植，制作dts等）不在本文讨论范畴内。&lt;br /&gt;
[[文件:Archlinux-neofetch-op6t.png|缩略图]]&lt;br /&gt;
=== 1 编译内核 ===&lt;br /&gt;
sdm845成品：&lt;br /&gt;
[Releases · silime/kernel-builder (github.com)](https://github.com/silime/kernel-builder)&lt;br /&gt;
==== 1.1 安装相关依赖 ====&lt;br /&gt;
对于Ubuntu 22.04 LTS:&lt;br /&gt;
&lt;br /&gt;
 sudo apt install build-essential openssl pkg-config libssl-dev libncurses5-dev pkg-config minizip libelf-dev flex bison  libc6-dev libidn11-dev rsync bc liblz4-tool  &lt;br /&gt;
 sudo apt install gcc-aarch64-linux-gnu dpkg-dev git&lt;br /&gt;
&lt;br /&gt;
==== 1.2 克隆内核源码 ====&lt;br /&gt;
你可以在“-b”参数后选择其他分支&lt;br /&gt;
&lt;br /&gt;
 mkdir ~/workspace&lt;br /&gt;
 cd ~/workspace&lt;br /&gt;
 git clone --depth=1 https://gitlab.com/sdm845-mainline/linux.git -b sdm845/6.8-dev&lt;br /&gt;
&lt;br /&gt;
可用分支可在gitlab网页查看&lt;br /&gt;
&lt;br /&gt;
==== 1.3  生成 .config ====&lt;br /&gt;
 make ARCH=arm64 defconfig sdm845.config&lt;br /&gt;
 # generate .config&lt;br /&gt;
&lt;br /&gt;
==== 1.4 进行编译 ====&lt;br /&gt;
&lt;br /&gt;
 make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- -j$(nproc)&lt;br /&gt;
&lt;br /&gt;
生成deb包供Debian系得GNU/Linux使用&lt;br /&gt;
&lt;br /&gt;
 make -j$(nproc) ARCH=arm64 KBUILD_DEBARCH=arm64 KDEB_CHANGELOG_DIST=mobile CROSS_COMPILE=aarch64-linux-gnu- deb-pkg&lt;br /&gt;
 # This will generate several deb files in ../&lt;br /&gt;
&lt;br /&gt;
=== 2 制作rootfs ===&lt;br /&gt;
==== 2.1 下载 ====&lt;br /&gt;
对于Archlinux，从http://os.archlinuxarm.org/os/ArchLinuxARM-aarch64-latest.tar.gz下载&lt;br /&gt;
&lt;br /&gt;
 cd ~/workspace&lt;br /&gt;
 wget http://os.archlinuxarm.org/os/ArchLinuxARM-aarch64-latest.tar.gz&lt;br /&gt;
&lt;br /&gt;
对于Ubuntu，从 [Index of /ubuntu-base](https://cdimage.ubuntu.com/ubuntu-base/)选择自己想要的版本&lt;br /&gt;
==== 2.2 制作 ====&lt;br /&gt;
===== 2.2.1 进入chroot =====&lt;br /&gt;
由于rootfs为ARM64，所以安装qemu-user-static&lt;br /&gt;
 sudo apt install qemu-user-static &lt;br /&gt;
&lt;br /&gt;
创建img并挂载&lt;br /&gt;
&lt;br /&gt;
 dd if=/dev/zero of=archlinux.img bs=1G count=6&lt;br /&gt;
 mkfs.ext4 archlinux.img&lt;br /&gt;
 mkdir arch&lt;br /&gt;
 sudo mount archlinux.img arch&lt;br /&gt;
&lt;br /&gt;
解压&lt;br /&gt;
&lt;br /&gt;
 cd arch&lt;br /&gt;
 sudo tar -xpvf ../ArchLinuxARM-aarch64-latest.tar.gz&lt;br /&gt;
&lt;br /&gt;
进入chroot环境&lt;br /&gt;
&lt;br /&gt;
 cd ..&lt;br /&gt;
 sudo mount --bind /dev arch/dev&lt;br /&gt;
 sudo mount -t devpts devpts arch/dev/pts -o gid=5,mode=620&lt;br /&gt;
 sudo mount -t proc proc arch/proc&lt;br /&gt;
 sudo mount -t sysfs sysfs arch/sys&lt;br /&gt;
 sudo mount -t tmpfs tmpfs arch/run&lt;br /&gt;
 &lt;br /&gt;
 sudo rm -rf arch/etc/resolv.conf &amp;amp;&amp;amp; sudo cp /etc/resolv.conf arch/etc/&lt;br /&gt;
 &lt;br /&gt;
 sudo chroot arch&lt;br /&gt;
===== 2.2.2 初始化pacman keyring =====&lt;br /&gt;
 pacman-key --init&lt;br /&gt;
 pacman-key --populate archlinuxarm&lt;br /&gt;
===== 2.2.3 换源 （可选） =====&lt;br /&gt;
详见 https://mirrors.tuna.tsinghua.edu.cn/help/archlinuxarm/&lt;br /&gt;
&lt;br /&gt;
 pacman -Syyu&lt;br /&gt;
 # upgrade&lt;br /&gt;
&lt;br /&gt;
===== 2.2.4 卸载旧的内核和firmware =====&lt;br /&gt;
 pacman -Q | grep -i linux&lt;br /&gt;
 pacman -R linux-aarch64 linux-firmware linux-firmware-whence&lt;br /&gt;
 &lt;br /&gt;
 exit&lt;br /&gt;
 # exit chroot environment&lt;br /&gt;
&lt;br /&gt;
===== 2.2.5 安装新的内核 =====&lt;br /&gt;
* 确保已经退出`chroot`环境&lt;br /&gt;
然后：&lt;br /&gt;
 cd ~/workspace/linux&lt;br /&gt;
 sudo make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu-  INSTALL_MOD_PATH=~/workspace/arch modules_install&lt;br /&gt;
 sudo make ARCH=arm64 INSTALL_PATH=~/workspace/arch/boot install&lt;br /&gt;
如果是`debian`系也可以直接chroot环境中用dpkg安装deb：&amp;lt;code&amp;gt;dpkg -i *.deb&amp;lt;/code&amp;gt;&lt;br /&gt;
===== 2.2.6 安装新的firmware =====&lt;br /&gt;
* 可以尝试从PostmarketOS&amp;lt;ref&amp;gt;https://wiki.postmarketos.org/wiki/OnePlus_6T_(oneplus-fajita)&amp;lt;/ref&amp;gt;中提取&lt;br /&gt;
进入chroot环境&lt;br /&gt;
 sudo chroot ~/workspace/arch&lt;br /&gt;
移动解压得到的文件&lt;br /&gt;
 mv * /usr/lib/firmware/&lt;br /&gt;
 ldconfig&lt;br /&gt;
修改/etc/mkinitcpio.conf&lt;br /&gt;
 nano /etc/mkinitcpio.conf&lt;br /&gt;
找到&lt;br /&gt;
 # BINARIES&lt;br /&gt;
 # This setting includes any additional binaries a given user may&lt;br /&gt;
 # wish into the CPIO image.  This is run last, so it may be used to&lt;br /&gt;
 # override the actual binaries included by a given hook&lt;br /&gt;
 # BINARIES are dependency parsed, so you may safely ignore libraries&lt;br /&gt;
 BINARIES=()&lt;br /&gt;
在`BINARIES=()`填入`xxxx_zap.mbn/ipa_fws.mbn`的路径&lt;br /&gt;
这两个固件的来源一般是手机提取并放在特殊的位置加载（具体由`dts/dtsi`指定）&lt;br /&gt;
对于fajita，改为：&lt;br /&gt;
  BINARIES=(/usr/lib/firmware/qcom/sdm845/oneplus6/a630_zap.mbn /usr/lib/firmware/qcom/sdm845/oneplus6/ipa_fws.mbn)&lt;br /&gt;
生成initrd.img&lt;br /&gt;
 ls /usr/lib/modules&lt;br /&gt;
 # get kernel version&lt;br /&gt;
 mkinitcpio --generate /boot/initrd.img-5.18.0-sdm845-00109-gf7ad1e5036bb-dirty --kernel 5.18.0-sdm845-00109-gf7ad1e5036bb-dirty&lt;br /&gt;
===== 2.2.7 安装软件包和基本配置&amp;lt;ref&amp;gt;https://archlinuxstudio.github.io/ArchLinuxTutorial/#/&amp;lt;/ref&amp;gt; =====&lt;br /&gt;
====== 2.2.7.1 设置时区 ======&lt;br /&gt;
 ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime&lt;br /&gt;
 # Shanghai&lt;br /&gt;
====== 2.2.7.2 设置locale ======&lt;br /&gt;
参考：https://wiki.archlinux.org/title/Locale&lt;br /&gt;
&lt;br /&gt;
 nano /etc/locale.gen&lt;br /&gt;
 # uncomment en_US.UTF-8 UTF-8&lt;br /&gt;
 # uncomment zh_CN.UTF-8 UTF-8&lt;br /&gt;
 &lt;br /&gt;
 locale-gen&lt;br /&gt;
&lt;br /&gt;
====== 2.2.7.3 自定义主机名 ======&lt;br /&gt;
 # For example&lt;br /&gt;
 echo 'OnePlus6T' &amp;gt; /etc/hostname&lt;br /&gt;
&lt;br /&gt;
====== 2.2.7.4 alarm（Archlinuxarm内置非root用户）配置 ======&lt;br /&gt;
&lt;br /&gt;
更改alarm密码，并添加到wheel用户组&lt;br /&gt;
&lt;br /&gt;
 passwd alarm&lt;br /&gt;
 # Change its password. Default is &amp;quot;alarm&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 usermod -aG wheel alarm&lt;br /&gt;
&lt;br /&gt;
添加sudo，设置sudo权限&lt;br /&gt;
&lt;br /&gt;
 pacman -S sudo&lt;br /&gt;
 EDITOR=nano visudo&lt;br /&gt;
&lt;br /&gt;
 找到下面这样的一行，把前面的注释符号 `#` 去掉&lt;br /&gt;
&lt;br /&gt;
 #%wheel ALL=(ALL:ALL) ALL&lt;br /&gt;
&lt;br /&gt;
====== 2.2.7.5 必要软件包 ======&lt;br /&gt;
 pacman -S base base-devel dhcpcd iwd&lt;br /&gt;
 pacman -S grub efibootmgr&lt;br /&gt;
 &lt;br /&gt;
 pacman -S networkmanager modemmanager&lt;br /&gt;
 pacman -S bluez bluez-utils pulseaudio-bluetooth&lt;br /&gt;
 pacman -S qrtr rmtfs&lt;br /&gt;
 systemctl enable NetworkManager bluetooth qrtr-ns rmtfs &lt;br /&gt;
 systemctl enable ModemManager&lt;br /&gt;
&lt;br /&gt;
 pacman -S git wget&lt;br /&gt;
 pacman -S ntfs-3g usbutils&lt;br /&gt;
&lt;br /&gt;
再安装 pd-mapper 和 tqftpserv&lt;br /&gt;
* 可以此处下载成品：https://github.com/silime/ArchLinux-Packages&lt;br /&gt;
* 也可以在步骤2.2.7.6后直接用pacman安装！&lt;br /&gt;
* 注：默认的PKGBUILD有问题，需要手动修复，在这里不详细描述，如果嫌麻烦，也可以直接编译安装&lt;br /&gt;
a. 直接编译安装（不推荐）：&lt;br /&gt;
 git clone https://github.com/andersson/pd-mapper.git&lt;br /&gt;
 git clone https://github.com/andersson/tqftpserv.git&lt;br /&gt;
 cd pd-mapper &amp;amp;&amp;amp; make &amp;amp;&amp;amp; make install &amp;amp;&amp;amp; cd ..&lt;br /&gt;
 cd tqftpserv &amp;amp;&amp;amp; make &amp;amp;&amp;amp; make install &amp;amp;&amp;amp; cd ..&lt;br /&gt;
 &lt;br /&gt;
 # clean&lt;br /&gt;
 rm -rf tqftpserv pd-mapper&lt;br /&gt;
&lt;br /&gt;
b. 使用pkgbuild&lt;br /&gt;
 # Switch to alarm first&lt;br /&gt;
 su alarm&lt;br /&gt;
&lt;br /&gt;
 cd ~&lt;br /&gt;
 # Compile and Install pd-mapper&lt;br /&gt;
 git clone https://aur.archlinux.org/pd-mapper-git.git ~/pd-mapper-git&lt;br /&gt;
 cd ~/pd-mapper-git&lt;br /&gt;
 &lt;br /&gt;
 nano PKGBUILD&lt;br /&gt;
 # fix some errors&lt;br /&gt;
 makepkg -si&lt;br /&gt;
 &lt;br /&gt;
 #Compile and Install tqftpserv&lt;br /&gt;
 git clone https://aur.archlinux.org/tqftpserv-git.git ~/tqftpserv-git&lt;br /&gt;
 cd ~/tqftpserv-git&lt;br /&gt;
 &lt;br /&gt;
 nano PKGBUILD&lt;br /&gt;
 # fix some errors&lt;br /&gt;
 makepkg -si&lt;br /&gt;
&lt;br /&gt;
启用 pd-mapper 和 tqftpserv&lt;br /&gt;
 sudo systemctl enable tqftpserv pd-mapper&lt;br /&gt;
回到root用户&lt;br /&gt;
 exit&lt;br /&gt;
&lt;br /&gt;
====== 2.2.7.6 添加Renegade Project源&amp;lt;ref&amp;gt;https://mirror.renegade-project.tech/index.html#/&amp;lt;/ref&amp;gt;（可选） ======&lt;br /&gt;
导入 GPG key:&lt;br /&gt;
 pacman-key --recv-keys 5E29D8F17064598A7A2223E2C735F8DF5B624511&lt;br /&gt;
 pacman-key --lsign-key 5E29D8F17064598A7A2223E2C735F8DF5B624511&lt;br /&gt;
在 /etc/pacman.conf 文件末尾添加以下内容：&lt;br /&gt;
 [renegade-project]&lt;br /&gt;
 Server = https://mirror.renegade-project.tech/arch/$arch&lt;br /&gt;
安装 renegade-project-keyring：&lt;br /&gt;
 pacman -S renegade-project-keyring&lt;br /&gt;
刷新&lt;br /&gt;
 pacman -Syy&lt;br /&gt;
&lt;br /&gt;
====== 2.2.7.7 安装用于切换slot的qbootctl（推荐） ======&lt;br /&gt;
* 确保已经完成了步骤2.2.7.6&lt;br /&gt;
 pacman -Sy qbootctl&lt;br /&gt;
&lt;br /&gt;
====== 2.2.7.8 安装更多package使一些硬件工作 ======&lt;br /&gt;
* 来自：https://github.com/silime/ArchLinux-Packages/releases&lt;br /&gt;
** 请用pacman安装[https://github.com/silime/ArchLinux-Packages/releases/tag/sensors sensors package]，[https://github.com/silime/ArchLinux-Packages/releases/tag/alsa-ucm-oneplus-0.5.10 alsa-ucm-oneplus-0.5.10]，[https://github.com/silime/ArchLinux-Packages/releases/tag/q6voice q6voice]&lt;br /&gt;
&lt;br /&gt;
====== 2.2.7.9 修改Modemmanager ======&lt;br /&gt;
* 重新编译ModemManager，开启`plugin_qcom_soc`,并安装&lt;br /&gt;
 su alarm&lt;br /&gt;
 mkdir ~/modemmanager&lt;br /&gt;
 cd ~/modemmanager&lt;br /&gt;
 nano PKGBUILD&lt;br /&gt;
* 将 [PKGBUILD - modemmanager (aarch64) | Package Files | Arch Linux ARM](https://archlinuxarm.org/packages/aarch64/modemmanager/files/PKGBUILD) 中的内容复制进PKGBUILD，然后进行以下修改&lt;br /&gt;
** 将`arch=(x86_64)`改为`arch=(x86_64 aarch64)`&lt;br /&gt;
** 将`-D plugin_qcom_soc=disabled`一行删除&lt;br /&gt;
 10c10&lt;br /&gt;
 &amp;lt; arch=(x86_64)&lt;br /&gt;
 ---&lt;br /&gt;
 &amp;gt; arch=(x86_64 aarch64)&lt;br /&gt;
 35d34&lt;br /&gt;
 &amp;lt;     -D plugin_qcom_soc=disabled&lt;br /&gt;
* 编译和安装&lt;br /&gt;
 makepkg -rsi&lt;br /&gt;
 # compile and install&lt;br /&gt;
 &lt;br /&gt;
 cd ..&lt;br /&gt;
 sudo rm -rf ~/modemmanager&lt;br /&gt;
 exit&lt;br /&gt;
&lt;br /&gt;
 systemctl enable ModemManager&lt;br /&gt;
&lt;br /&gt;
====== 2.2.7.10 其他软件 ======&lt;br /&gt;
中文字体&lt;br /&gt;
&lt;br /&gt;
 pacman -S noto-fonts-cjk&lt;br /&gt;
 # Chinese fonts&lt;br /&gt;
&lt;br /&gt;
yay&lt;br /&gt;
&lt;br /&gt;
 su alarm&lt;br /&gt;
 cd ~&lt;br /&gt;
 git clone https://aur.archlinux.org/yay-bin.git&lt;br /&gt;
 cd yay-bin &amp;amp;&amp;amp; makepkg -si&lt;br /&gt;
 exit&lt;br /&gt;
&lt;br /&gt;
桌面环境&lt;br /&gt;
&lt;br /&gt;
* 自选，建议gnome或phosh&lt;br /&gt;
** 如`gnome`&lt;br /&gt;
&lt;br /&gt;
 pacman -S gnome&lt;br /&gt;
 systemctl enable gdm&lt;br /&gt;
&lt;br /&gt;
* 如安装phosh，建议添加danctnix源 [danctnix (arikawa-hi.me)](https://p64.arikawa-hi.me/danctnix/)，然后安装&lt;br /&gt;
&lt;br /&gt;
网络浏览器&lt;br /&gt;
&lt;br /&gt;
 # for example, chromium&lt;br /&gt;
 pacman -S chromium&lt;br /&gt;
&lt;br /&gt;
===== 2.2.8 tfa98xx音频修复 =====&lt;br /&gt;
 echo 'snd-soc-tfa98xx' &amp;gt; /etc/modules-load.d/snd-soc-tfa98xx.conf&lt;br /&gt;
&lt;br /&gt;
===== 2.2.9 打包 =====&lt;br /&gt;
先清理，在chroot环境中&lt;br /&gt;
&lt;br /&gt;
 pacman -Scc&lt;br /&gt;
 # pacman&lt;br /&gt;
&lt;br /&gt;
进alarm用户&lt;br /&gt;
 su alarm # switch to alarm&lt;br /&gt;
 # clean bash history for alarm&lt;br /&gt;
 cat /dev/null &amp;gt; ~/.bash_history &amp;amp;&amp;amp; history -c &amp;amp;&amp;amp; exit&lt;br /&gt;
&lt;br /&gt;
在root用户&lt;br /&gt;
 # clean bash history for root&lt;br /&gt;
 cat /dev/null &amp;gt; ~/.bash_history &amp;amp;&amp;amp; history -c&lt;br /&gt;
&lt;br /&gt;
退出chroot环境&lt;br /&gt;
&lt;br /&gt;
 exit&lt;br /&gt;
&lt;br /&gt;
解除挂载&lt;br /&gt;
&lt;br /&gt;
 cd ~/workspace&lt;br /&gt;
 sudo umount ~/workspace/arch/run&lt;br /&gt;
 sudo umount ~/workspace/arch/sys&lt;br /&gt;
 sudo umount ~/workspace/arch/proc&lt;br /&gt;
 sudo umount ~/workspace/arch/dev/pts&lt;br /&gt;
 sudo umount ~/workspace/arch/dev&lt;br /&gt;
&lt;br /&gt;
用tar打包&lt;br /&gt;
&lt;br /&gt;
 cd ~/workspace/arch&lt;br /&gt;
 sudo tar -czvf ~/workspace/arch.tar.gz *&lt;br /&gt;
 # This will generate arch.tar.gz&lt;/div&gt;</summary>
		<author><name>Snnbyyds</name></author>
	</entry>
	<entry>
		<id>https://wiki.uotan.cn/index.php?title=%E4%B8%BA%E6%89%8B%E6%9C%BA%E5%AE%89%E8%A3%85Linux&amp;diff=242</id>
		<title>为手机安装Linux</title>
		<link rel="alternate" type="text/html" href="https://wiki.uotan.cn/index.php?title=%E4%B8%BA%E6%89%8B%E6%9C%BA%E5%AE%89%E8%A3%85Linux&amp;diff=242"/>
		<updated>2024-02-15T01:48:22Z</updated>

		<summary type="html">&lt;p&gt;Snnbyyds：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== 该章节将引导你为一些手机安装主线Linux操作系统 ==&lt;br /&gt;
注意：本教程中，操作环境为64位Ubuntu，目标机器为OnePlus6T，我们将尝试利用UEFI在OnePlus6T上启动Archlinux&lt;br /&gt;
* 不同于Windows, Linux的安装过程可能具有一定的复杂性，步骤繁杂，方案多样，如果你使用不同的机型，请先仔细阅读本文和搜索资料；此外，主线Linux的开发（内核驱动移植，制作dts等）不在本文讨论范畴内。&lt;br /&gt;
[[文件:Archlinux-neofetch-op6t.png|缩略图]]&lt;br /&gt;
=== 1 编译内核 ===&lt;br /&gt;
sdm845成品：&lt;br /&gt;
[Releases · silime/kernel-builder (github.com)](https://github.com/silime/kernel-builder)&lt;br /&gt;
==== 1.1 安装相关依赖 ====&lt;br /&gt;
对于Ubuntu 22.04 LTS:&lt;br /&gt;
&lt;br /&gt;
 sudo apt install build-essential openssl pkg-config libssl-dev libncurses5-dev pkg-config minizip libelf-dev flex bison  libc6-dev libidn11-dev rsync bc liblz4-tool  &lt;br /&gt;
 sudo apt install gcc-aarch64-linux-gnu dpkg-dev git&lt;br /&gt;
&lt;br /&gt;
==== 1.2 克隆内核源码 ====&lt;br /&gt;
你可以在“-b”参数后选择其他分支&lt;br /&gt;
&lt;br /&gt;
 mkdir ~/workspace&lt;br /&gt;
 cd ~/workspace&lt;br /&gt;
 git clone --depth=1 https://gitlab.com/sdm845-mainline/linux.git -b sdm845/6.8-dev&lt;br /&gt;
&lt;br /&gt;
可用分支可在gitlab网页查看&lt;br /&gt;
&lt;br /&gt;
==== 1.3  生成 .config ====&lt;br /&gt;
 make ARCH=arm64 defconfig sdm845.config&lt;br /&gt;
 # generate .config&lt;br /&gt;
&lt;br /&gt;
==== 1.4 进行编译 ====&lt;br /&gt;
&lt;br /&gt;
 make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- -j$(nproc)&lt;br /&gt;
&lt;br /&gt;
生成deb包供Debian系得GNU/Linux使用&lt;br /&gt;
&lt;br /&gt;
 make -j$(nproc) ARCH=arm64 KBUILD_DEBARCH=arm64 KDEB_CHANGELOG_DIST=mobile CROSS_COMPILE=aarch64-linux-gnu- deb-pkg&lt;br /&gt;
 # This will generate several deb files in ../&lt;br /&gt;
&lt;br /&gt;
=== 2 制作rootfs ===&lt;br /&gt;
==== 2.1 下载 ====&lt;br /&gt;
对于Archlinux，从http://os.archlinuxarm.org/os/ArchLinuxARM-aarch64-latest.tar.gz下载&lt;br /&gt;
&lt;br /&gt;
 cd ~/workspace&lt;br /&gt;
 wget http://os.archlinuxarm.org/os/ArchLinuxARM-aarch64-latest.tar.gz&lt;br /&gt;
&lt;br /&gt;
对于Ubuntu，从 [Index of /ubuntu-base](https://cdimage.ubuntu.com/ubuntu-base/)选择自己想要的版本&lt;br /&gt;
==== 2.2 制作 ====&lt;br /&gt;
===== 2.2.1 进入chroot =====&lt;br /&gt;
由于rootfs为ARM64，所以安装qemu-user-static&lt;br /&gt;
 sudo apt install qemu-user-static &lt;br /&gt;
&lt;br /&gt;
创建img并挂载&lt;br /&gt;
&lt;br /&gt;
 dd if=/dev/zero of=archlinux.img bs=1G count=6&lt;br /&gt;
 mkfs.ext4 archlinux.img&lt;br /&gt;
 mkdir arch&lt;br /&gt;
 sudo mount archlinux.img arch&lt;br /&gt;
&lt;br /&gt;
解压&lt;br /&gt;
&lt;br /&gt;
 cd arch&lt;br /&gt;
 sudo tar -xpvf ../ArchLinuxARM-aarch64-latest.tar.gz&lt;br /&gt;
&lt;br /&gt;
进入chroot环境&lt;br /&gt;
&lt;br /&gt;
 cd ..&lt;br /&gt;
 sudo mount --bind /dev arch/dev&lt;br /&gt;
 sudo mount -t devpts devpts arch/dev/pts -o gid=5,mode=620&lt;br /&gt;
 sudo mount -t proc proc arch/proc&lt;br /&gt;
 sudo mount -t sysfs sysfs arch/sys&lt;br /&gt;
 sudo mount -t tmpfs tmpfs arch/run&lt;br /&gt;
 &lt;br /&gt;
 sudo rm -rf arch/etc/resolv.conf &amp;amp;&amp;amp; sudo cp /etc/resolv.conf arch/etc/&lt;br /&gt;
 &lt;br /&gt;
 sudo chroot arch&lt;br /&gt;
===== 2.2.2 初始化pacman keyring =====&lt;br /&gt;
 pacman-key --init&lt;br /&gt;
 pacman-key --populate archlinuxarm&lt;br /&gt;
===== 2.2.3 换源 （可选） =====&lt;br /&gt;
详见 https://mirrors.tuna.tsinghua.edu.cn/help/archlinuxarm/&lt;br /&gt;
&lt;br /&gt;
 pacman -Syyu&lt;br /&gt;
 # upgrade&lt;br /&gt;
&lt;br /&gt;
===== 2.2.4 卸载旧的内核和firmware =====&lt;br /&gt;
 pacman -Q | grep -i linux&lt;br /&gt;
 pacman -R linux-aarch64 linux-firmware linux-firmware-whence&lt;br /&gt;
 &lt;br /&gt;
 exit&lt;br /&gt;
 # exit chroot environment&lt;br /&gt;
&lt;br /&gt;
===== 2.2.5 安装新的内核 =====&lt;br /&gt;
* 确保已经退出`chroot`环境&lt;br /&gt;
然后：&lt;br /&gt;
 cd ~/workspace/linux&lt;br /&gt;
 sudo make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu-  INSTALL_MOD_PATH=~/workspace/arch modules_install&lt;br /&gt;
 sudo make ARCH=arm64 INSTALL_PATH=~/workspace/arch/boot install&lt;br /&gt;
如果是`debian`系也可以直接chroot环境中用dpkg安装deb：&amp;lt;code&amp;gt;dpkg -i *.deb&amp;lt;/code&amp;gt;&lt;br /&gt;
===== 2.2.6 安装新的firmware =====&lt;br /&gt;
* 可以尝试从PostmarketOS&amp;lt;ref&amp;gt;https://wiki.postmarketos.org/wiki/OnePlus_6T_(oneplus-fajita)&amp;lt;/ref&amp;gt;中提取&lt;br /&gt;
进入chroot环境&lt;br /&gt;
 sudo chroot ~/workspace/arch&lt;br /&gt;
移动解压得到的文件&lt;br /&gt;
 mv * /usr/lib/firmware/&lt;br /&gt;
 ldconfig&lt;br /&gt;
修改/etc/mkinitcpio.conf&lt;br /&gt;
 nano /etc/mkinitcpio.conf&lt;br /&gt;
找到&lt;br /&gt;
 # BINARIES&lt;br /&gt;
 # This setting includes any additional binaries a given user may&lt;br /&gt;
 # wish into the CPIO image.  This is run last, so it may be used to&lt;br /&gt;
 # override the actual binaries included by a given hook&lt;br /&gt;
 # BINARIES are dependency parsed, so you may safely ignore libraries&lt;br /&gt;
 BINARIES=()&lt;br /&gt;
在`BINARIES=()`填入`xxxx_zap.mbn/ipa_fws.mbn`的路径&lt;br /&gt;
这两个固件的来源一般是手机提取并放在特殊的位置加载（具体由`dts/dtsi`指定）&lt;br /&gt;
对于fajita，改为：&lt;br /&gt;
  BINARIES=(/usr/lib/firmware/qcom/sdm845/oneplus6/a630_zap.mbn /usr/lib/firmware/qcom/sdm845/oneplus6/ipa_fws.mbn)&lt;br /&gt;
生成initrd.img&lt;br /&gt;
 ls /usr/lib/modules&lt;br /&gt;
 # get kernel version&lt;br /&gt;
 mkinitcpio --generate /boot/initrd.img-5.18.0-sdm845-00109-gf7ad1e5036bb-dirty --kernel 5.18.0-sdm845-00109-gf7ad1e5036bb-dirty&lt;br /&gt;
===== 2.2.7 安装软件包和基本配置&amp;lt;ref&amp;gt;https://archlinuxstudio.github.io/ArchLinuxTutorial/#/&amp;lt;/ref&amp;gt; =====&lt;br /&gt;
====== 2.2.7.1 设置时区 ======&lt;br /&gt;
 ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime&lt;br /&gt;
 # Shanghai&lt;br /&gt;
====== 2.2.7.2 设置locale ======&lt;br /&gt;
参考：https://wiki.archlinux.org/title/Locale&lt;br /&gt;
&lt;br /&gt;
 nano /etc/locale.gen&lt;br /&gt;
 # uncomment en_US.UTF-8 UTF-8&lt;br /&gt;
 # uncomment zh_CN.UTF-8 UTF-8&lt;br /&gt;
 &lt;br /&gt;
 locale-gen&lt;br /&gt;
&lt;br /&gt;
====== 2.2.7.3 自定义主机名 ======&lt;br /&gt;
 # For example&lt;br /&gt;
 echo 'OnePlus6T' &amp;gt; /etc/hostname&lt;br /&gt;
&lt;br /&gt;
====== 2.2.7.4 alarm（Archlinuxarm内置非root用户）配置 ======&lt;br /&gt;
&lt;br /&gt;
更改alarm密码，并添加到wheel用户组&lt;br /&gt;
&lt;br /&gt;
 passwd alarm&lt;br /&gt;
 # Change its password. Default is &amp;quot;alarm&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 usermod -aG wheel alarm&lt;br /&gt;
&lt;br /&gt;
添加sudo，设置sudo权限&lt;br /&gt;
&lt;br /&gt;
 pacman -S sudo&lt;br /&gt;
 EDITOR=nano visudo&lt;br /&gt;
&lt;br /&gt;
 找到下面这样的一行，把前面的注释符号 `#` 去掉&lt;br /&gt;
&lt;br /&gt;
 #%wheel ALL=(ALL:ALL) ALL&lt;br /&gt;
&lt;br /&gt;
====== 2.2.7.5 必要软件包 ======&lt;br /&gt;
 pacman -S base base-devel dhcpcd iwd&lt;br /&gt;
 pacman -S grub efibootmgr&lt;br /&gt;
 &lt;br /&gt;
 pacman -S networkmanager modemmanager&lt;br /&gt;
 pacman -S bluez bluez-utils pulseaudio-bluetooth&lt;br /&gt;
 pacman -S qrtr rmtfs&lt;br /&gt;
 systemctl enable NetworkManager bluetooth qrtr-ns rmtfs &lt;br /&gt;
 systemctl enable ModemManager&lt;br /&gt;
&lt;br /&gt;
 pacman -S git wget&lt;br /&gt;
 pacman -S ntfs-3g usbutils&lt;br /&gt;
&lt;br /&gt;
再安装 pd-mapper 和 tqftpserv&lt;br /&gt;
* 可以此处下载成品：https://github.com/silime/ArchLinux-Packages&lt;br /&gt;
* 也可以在步骤2.2.7.6后直接用pacman安装！&lt;br /&gt;
* 注：默认的PKGBUILD有问题，需要手动修复，在这里不详细描述，如果嫌麻烦，也可以直接编译安装&lt;br /&gt;
a. 直接编译安装（不推荐）：&lt;br /&gt;
 git clone https://github.com/andersson/pd-mapper.git&lt;br /&gt;
 git clone https://github.com/andersson/tqftpserv.git&lt;br /&gt;
 cd pd-mapper &amp;amp;&amp;amp; make &amp;amp;&amp;amp; make install &amp;amp;&amp;amp; cd ..&lt;br /&gt;
 cd tqftpserv &amp;amp;&amp;amp; make &amp;amp;&amp;amp; make install &amp;amp;&amp;amp; cd ..&lt;br /&gt;
 &lt;br /&gt;
 # clean&lt;br /&gt;
 rm -rf tqftpserv pd-mapper&lt;br /&gt;
&lt;br /&gt;
b. 使用pkgbuild&lt;br /&gt;
 # Switch to alarm first&lt;br /&gt;
 su alarm&lt;br /&gt;
&lt;br /&gt;
 cd ~&lt;br /&gt;
 # Compile and Install pd-mapper&lt;br /&gt;
 git clone https://aur.archlinux.org/pd-mapper-git.git ~/pd-mapper-git&lt;br /&gt;
 cd ~/pd-mapper-git&lt;br /&gt;
 &lt;br /&gt;
 nano PKGBUILD&lt;br /&gt;
 # fix some errors&lt;br /&gt;
 makepkg -si&lt;br /&gt;
 &lt;br /&gt;
 #Compile and Install tqftpserv&lt;br /&gt;
 git clone https://aur.archlinux.org/tqftpserv-git.git ~/tqftpserv-git&lt;br /&gt;
 cd ~/tqftpserv-git&lt;br /&gt;
 &lt;br /&gt;
 nano PKGBUILD&lt;br /&gt;
 # fix some errors&lt;br /&gt;
 makepkg -si&lt;br /&gt;
&lt;br /&gt;
启用 pd-mapper 和 tqftpserv&lt;br /&gt;
 sudo systemctl enable tqftpserv pd-mapper&lt;br /&gt;
回到root用户&lt;br /&gt;
 exit&lt;br /&gt;
&lt;br /&gt;
====== 2.2.7.6 添加Renegade Project源&amp;lt;ref&amp;gt;https://mirror.renegade-project.tech/index.html#/&amp;lt;/ref&amp;gt;（可选） ======&lt;br /&gt;
导入 GPG key:&lt;br /&gt;
 pacman-key --recv-keys 5E29D8F17064598A7A2223E2C735F8DF5B624511&lt;br /&gt;
 pacman-key --lsign-key 5E29D8F17064598A7A2223E2C735F8DF5B624511&lt;br /&gt;
在 /etc/pacman.conf 文件末尾添加以下内容：&lt;br /&gt;
 [renegade-project]&lt;br /&gt;
 Server = https://mirror.renegade-project.tech/arch/$arch&lt;br /&gt;
安装 renegade-project-keyring：&lt;br /&gt;
 pacman -S renegade-project-keyring&lt;br /&gt;
刷新&lt;br /&gt;
 pacman -Syy&lt;br /&gt;
&lt;br /&gt;
====== 2.2.7.7 安装用于切换slot的qbootctl（推荐） ======&lt;br /&gt;
* 确保已经完成了步骤2.2.7.6&lt;br /&gt;
 pacman -Sy qbootctl&lt;br /&gt;
&lt;br /&gt;
====== 2.2.7.8 安装更多package使一些硬件工作 ======&lt;br /&gt;
* 来自：https://github.com/silime/ArchLinux-Packages/releases&lt;br /&gt;
** 请用pacman安装[https://github.com/silime/ArchLinux-Packages/releases/tag/sensors sensors package]，[https://github.com/silime/ArchLinux-Packages/releases/tag/alsa-ucm-oneplus-0.5.10 alsa-ucm-oneplus-0.5.10]，[https://github.com/silime/ArchLinux-Packages/releases/tag/q6voice q6voice]&lt;br /&gt;
&lt;br /&gt;
====== 2.2.7.9 修改Modemmanager ======&lt;br /&gt;
* 重新编译ModemManager，开启`plugin_qcom_soc`,并安装&lt;br /&gt;
 su alarm&lt;br /&gt;
 mkdir ~/modemmanager&lt;br /&gt;
 cd ~/modemmanager&lt;br /&gt;
 nano PKGBUILD&lt;br /&gt;
* 将 [PKGBUILD - modemmanager (aarch64) | Package Files | Arch Linux ARM](https://archlinuxarm.org/packages/aarch64/modemmanager/files/PKGBUILD) 中的内容复制进PKGBUILD，然后进行以下修改&lt;br /&gt;
** 将`arch=(x86_64)`改为`arch=(x86_64 aarch64)`&lt;br /&gt;
** 将`-D plugin_qcom_soc=disabled`一行删除&lt;br /&gt;
 10c10&lt;br /&gt;
 &amp;lt; arch=(x86_64)&lt;br /&gt;
 ---&lt;br /&gt;
 &amp;gt; arch=(x86_64 aarch64)&lt;br /&gt;
 35d34&lt;br /&gt;
 &amp;lt;     -D plugin_qcom_soc=disabled&lt;br /&gt;
* 编译和安装&lt;br /&gt;
 makepkg -rsi&lt;br /&gt;
 # compile and install&lt;br /&gt;
 &lt;br /&gt;
 cd ..&lt;br /&gt;
 sudo rm -rf ~/modemmanager&lt;br /&gt;
 exit&lt;br /&gt;
&lt;br /&gt;
 systemctl enable ModemManager&lt;br /&gt;
&lt;br /&gt;
====== 2.2.7.10 其他软件 ======&lt;br /&gt;
中文字体&lt;br /&gt;
&lt;br /&gt;
 pacman -S noto-fonts-cjk&lt;br /&gt;
 # Chinese fonts&lt;br /&gt;
&lt;br /&gt;
yay&lt;br /&gt;
&lt;br /&gt;
 su alarm&lt;br /&gt;
 cd ~&lt;br /&gt;
 git clone https://aur.archlinux.org/yay-bin.git&lt;br /&gt;
 cd yay-bin &amp;amp;&amp;amp; makepkg -si&lt;br /&gt;
 exit&lt;br /&gt;
&lt;br /&gt;
桌面环境&lt;br /&gt;
&lt;br /&gt;
* 自选，建议gnome或phosh&lt;br /&gt;
** 如`gnome`&lt;br /&gt;
&lt;br /&gt;
 pacman -S gnome&lt;br /&gt;
 systemctl enable gdm&lt;br /&gt;
&lt;br /&gt;
* 如安装phosh，建议添加danctnix源 [danctnix (arikawa-hi.me)](https://p64.arikawa-hi.me/danctnix/)，然后安装&lt;br /&gt;
&lt;br /&gt;
网络浏览器&lt;br /&gt;
&lt;br /&gt;
 # for example, chromium&lt;br /&gt;
 pacman -S chromium&lt;/div&gt;</summary>
		<author><name>Snnbyyds</name></author>
	</entry>
	<entry>
		<id>https://wiki.uotan.cn/index.php?title=%E4%B8%BA%E6%89%8B%E6%9C%BA%E5%AE%89%E8%A3%85Linux&amp;diff=241</id>
		<title>为手机安装Linux</title>
		<link rel="alternate" type="text/html" href="https://wiki.uotan.cn/index.php?title=%E4%B8%BA%E6%89%8B%E6%9C%BA%E5%AE%89%E8%A3%85Linux&amp;diff=241"/>
		<updated>2024-02-15T01:31:07Z</updated>

		<summary type="html">&lt;p&gt;Snnbyyds：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== 该章节将引导你为一些手机安装主线Linux操作系统 ==&lt;br /&gt;
注意：本教程中，操作环境为64位Ubuntu，目标机器为OnePlus6T，我们将尝试利用UEFI在OnePlus6T上启动Archlinux&lt;br /&gt;
* 不同于Windows, Linux的安装过程可能具有一定的复杂性，步骤繁杂，方案多样，如果你使用不同的机型，请先仔细阅读本文和搜索资料；此外，主线Linux的开发（内核驱动移植，制作dts等）不在本文讨论范畴内。&lt;br /&gt;
[[文件:Archlinux-neofetch-op6t.png|缩略图]]&lt;br /&gt;
=== 1 编译内核 ===&lt;br /&gt;
sdm845成品：&lt;br /&gt;
[Releases · silime/kernel-builder (github.com)](https://github.com/silime/kernel-builder)&lt;br /&gt;
==== 1.1 安装相关依赖 ====&lt;br /&gt;
对于Ubuntu 22.04 LTS:&lt;br /&gt;
&lt;br /&gt;
 sudo apt install build-essential openssl pkg-config libssl-dev libncurses5-dev pkg-config minizip libelf-dev flex bison  libc6-dev libidn11-dev rsync bc liblz4-tool  &lt;br /&gt;
 sudo apt install gcc-aarch64-linux-gnu dpkg-dev git&lt;br /&gt;
&lt;br /&gt;
==== 1.2 克隆内核源码 ====&lt;br /&gt;
你可以在“-b”参数后选择其他分支&lt;br /&gt;
&lt;br /&gt;
 mkdir ~/workspace&lt;br /&gt;
 cd ~/workspace&lt;br /&gt;
 git clone --depth=1 https://gitlab.com/sdm845-mainline/linux.git -b sdm845/6.8-dev&lt;br /&gt;
&lt;br /&gt;
可用分支可在gitlab网页查看&lt;br /&gt;
&lt;br /&gt;
==== 1.3  生成 .config ====&lt;br /&gt;
 make ARCH=arm64 defconfig sdm845.config&lt;br /&gt;
 # generate .config&lt;br /&gt;
&lt;br /&gt;
==== 1.4 进行编译 ====&lt;br /&gt;
&lt;br /&gt;
 make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- -j$(nproc)&lt;br /&gt;
&lt;br /&gt;
生成deb包供Debian系得GNU/Linux使用&lt;br /&gt;
&lt;br /&gt;
 make -j$(nproc) ARCH=arm64 KBUILD_DEBARCH=arm64 KDEB_CHANGELOG_DIST=mobile CROSS_COMPILE=aarch64-linux-gnu- deb-pkg&lt;br /&gt;
 # This will generate several deb files in ../&lt;br /&gt;
&lt;br /&gt;
=== 2 制作rootfs ===&lt;br /&gt;
==== 2.1 下载 ====&lt;br /&gt;
对于Archlinux，从http://os.archlinuxarm.org/os/ArchLinuxARM-aarch64-latest.tar.gz下载&lt;br /&gt;
&lt;br /&gt;
 cd ~/workspace&lt;br /&gt;
 wget http://os.archlinuxarm.org/os/ArchLinuxARM-aarch64-latest.tar.gz&lt;br /&gt;
&lt;br /&gt;
对于Ubuntu，从 [Index of /ubuntu-base](https://cdimage.ubuntu.com/ubuntu-base/)选择自己想要的版本&lt;br /&gt;
==== 2.2 制作 ====&lt;br /&gt;
===== 2.2.1 进入chroot =====&lt;br /&gt;
由于rootfs为ARM64，所以安装qemu-user-static&lt;br /&gt;
 sudo apt install qemu-user-static &lt;br /&gt;
&lt;br /&gt;
创建img并挂载&lt;br /&gt;
&lt;br /&gt;
 dd if=/dev/zero of=archlinux.img bs=1G count=6&lt;br /&gt;
 mkfs.ext4 archlinux.img&lt;br /&gt;
 mkdir arch&lt;br /&gt;
 sudo mount archlinux.img arch&lt;br /&gt;
&lt;br /&gt;
解压&lt;br /&gt;
&lt;br /&gt;
 cd arch&lt;br /&gt;
 sudo tar -xpvf ../ArchLinuxARM-aarch64-latest.tar.gz&lt;br /&gt;
&lt;br /&gt;
进入chroot环境&lt;br /&gt;
&lt;br /&gt;
 cd ..&lt;br /&gt;
 sudo mount --bind /dev arch/dev&lt;br /&gt;
 sudo mount -t devpts devpts arch/dev/pts -o gid=5,mode=620&lt;br /&gt;
 sudo mount -t proc proc arch/proc&lt;br /&gt;
 sudo mount -t sysfs sysfs arch/sys&lt;br /&gt;
 sudo mount -t tmpfs tmpfs arch/run&lt;br /&gt;
 &lt;br /&gt;
 sudo rm -rf arch/etc/resolv.conf &amp;amp;&amp;amp; sudo cp /etc/resolv.conf arch/etc/&lt;br /&gt;
 &lt;br /&gt;
 sudo chroot arch&lt;br /&gt;
===== 2.2.2 初始化pacman keyring =====&lt;br /&gt;
 pacman-key --init&lt;br /&gt;
 pacman-key --populate archlinuxarm&lt;br /&gt;
===== 2.2.3 换源 （可选） =====&lt;br /&gt;
详见 https://mirrors.tuna.tsinghua.edu.cn/help/archlinuxarm/&lt;br /&gt;
&lt;br /&gt;
 pacman -Syyu&lt;br /&gt;
 # upgrade&lt;br /&gt;
&lt;br /&gt;
===== 2.2.4 卸载旧的内核和firmware =====&lt;br /&gt;
 pacman -Q | grep -i linux&lt;br /&gt;
 pacman -R linux-aarch64 linux-firmware linux-firmware-whence&lt;br /&gt;
 &lt;br /&gt;
 exit&lt;br /&gt;
 # exit chroot environment&lt;br /&gt;
&lt;br /&gt;
===== 2.2.5 安装新的内核 =====&lt;br /&gt;
* 确保已经退出`chroot`环境&lt;br /&gt;
然后：&lt;br /&gt;
 cd ~/workspace/linux&lt;br /&gt;
 sudo make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu-  INSTALL_MOD_PATH=~/workspace/arch modules_install&lt;br /&gt;
 sudo make ARCH=arm64 INSTALL_PATH=~/workspace/arch/boot install&lt;br /&gt;
如果是`debian`系也可以直接chroot环境中用dpkg安装deb：&amp;lt;code&amp;gt;dpkg -i *.deb&amp;lt;/code&amp;gt;&lt;br /&gt;
===== 2.2.6 安装新的firmware =====&lt;br /&gt;
* 可以尝试从PostmarketOS&amp;lt;ref&amp;gt;https://wiki.postmarketos.org/wiki/OnePlus_6T_(oneplus-fajita)&amp;lt;/ref&amp;gt;中提取&lt;br /&gt;
进入chroot环境&lt;br /&gt;
 sudo chroot ~/workspace/arch&lt;br /&gt;
移动解压得到的文件&lt;br /&gt;
 mv * /usr/lib/firmware/&lt;br /&gt;
 ldconfig&lt;br /&gt;
修改/etc/mkinitcpio.conf&lt;br /&gt;
 nano /etc/mkinitcpio.conf&lt;br /&gt;
找到&lt;br /&gt;
 # BINARIES&lt;br /&gt;
 # This setting includes any additional binaries a given user may&lt;br /&gt;
 # wish into the CPIO image.  This is run last, so it may be used to&lt;br /&gt;
 # override the actual binaries included by a given hook&lt;br /&gt;
 # BINARIES are dependency parsed, so you may safely ignore libraries&lt;br /&gt;
 BINARIES=()&lt;br /&gt;
在`BINARIES=()`填入`xxxx_zap.mbn/ipa_fws.mbn`的路径&lt;br /&gt;
这两个固件的来源一般是手机提取并放在特殊的位置加载（具体由`dts/dtsi`指定）&lt;br /&gt;
对于fajita，改为：&lt;br /&gt;
  BINARIES=(/usr/lib/firmware/qcom/sdm845/oneplus6/a630_zap.mbn /usr/lib/firmware/qcom/sdm845/oneplus6/ipa_fws.mbn)&lt;br /&gt;
生成initrd.img&lt;br /&gt;
 ls /usr/lib/modules&lt;br /&gt;
 # get kernel version&lt;br /&gt;
 mkinitcpio --generate /boot/initrd.img-5.18.0-sdm845-00109-gf7ad1e5036bb-dirty --kernel 5.18.0-sdm845-00109-gf7ad1e5036bb-dirty&lt;br /&gt;
===== 2.2.7 安装软件包和基本配置&amp;lt;ref&amp;gt;https://archlinuxstudio.github.io/ArchLinuxTutorial/#/&amp;lt;/ref&amp;gt; =====&lt;br /&gt;
====== 2.2.7.1 设置时区 ======&lt;br /&gt;
 ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime&lt;br /&gt;
 # Shanghai&lt;br /&gt;
====== 2.2.7.2 设置locale ======&lt;br /&gt;
参考：https://wiki.archlinux.org/title/Locale&lt;br /&gt;
&lt;br /&gt;
 nano /etc/locale.gen&lt;br /&gt;
 # uncomment en_US.UTF-8 UTF-8&lt;br /&gt;
 # uncomment zh_CN.UTF-8 UTF-8&lt;br /&gt;
 &lt;br /&gt;
 locale-gen&lt;br /&gt;
&lt;br /&gt;
====== 2.2.7.3 自定义主机名 ======&lt;br /&gt;
 # For example&lt;br /&gt;
 echo 'OnePlus6T' &amp;gt; /etc/hostname&lt;br /&gt;
&lt;br /&gt;
====== 2.2.7.4 alarm（Archlinuxarm内置非root用户）配置 ======&lt;br /&gt;
&lt;br /&gt;
更改alarm密码，并添加到wheel用户组&lt;br /&gt;
&lt;br /&gt;
 passwd alarm&lt;br /&gt;
 # Change its password. Default is &amp;quot;alarm&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 usermod -aG wheel alarm&lt;br /&gt;
&lt;br /&gt;
添加sudo，设置sudo权限&lt;br /&gt;
&lt;br /&gt;
 pacman -S sudo&lt;br /&gt;
 EDITOR=nano visudo&lt;br /&gt;
&lt;br /&gt;
 找到下面这样的一行，把前面的注释符号 `#` 去掉&lt;br /&gt;
&lt;br /&gt;
 #%wheel ALL=(ALL:ALL) ALL&lt;br /&gt;
&lt;br /&gt;
====== 2.2.7.5 必要软件包 ======&lt;br /&gt;
 pacman -S base base-devel dhcpcd iwd&lt;br /&gt;
 pacman -S grub efibootmgr&lt;br /&gt;
 &lt;br /&gt;
 pacman -S networkmanager modemmanager&lt;br /&gt;
 pacman -S bluez bluez-utils pulseaudio-bluetooth&lt;br /&gt;
 pacman -S qrtr rmtfs&lt;br /&gt;
 systemctl enable NetworkManager bluetooth qrtr-ns rmtfs &lt;br /&gt;
 systemctl enable ModemManager&lt;br /&gt;
&lt;br /&gt;
 pacman -S git wget&lt;br /&gt;
 pacman -S ntfs-3g usbutils&lt;br /&gt;
&lt;br /&gt;
再安装 pd-mapper 和 tqftpserv&lt;br /&gt;
* 可以此处下载成品：https://github.com/silime/ArchLinux-Packages&lt;br /&gt;
* 注：默认的PKGBUILD有问题，需要手动修复，在这里不详细描述，如果嫌麻烦，也可以直接编译安装&lt;br /&gt;
a. 直接编译安装（不推荐）：&lt;br /&gt;
 git clone https://github.com/andersson/pd-mapper.git&lt;br /&gt;
 git clone https://github.com/andersson/tqftpserv.git&lt;br /&gt;
 cd pd-mapper &amp;amp;&amp;amp; make &amp;amp;&amp;amp; make install &amp;amp;&amp;amp; cd ..&lt;br /&gt;
 cd tqftpserv &amp;amp;&amp;amp; make &amp;amp;&amp;amp; make install &amp;amp;&amp;amp; cd ..&lt;br /&gt;
 &lt;br /&gt;
 # clean&lt;br /&gt;
 rm -rf tqftpserv pd-mapper&lt;br /&gt;
&lt;br /&gt;
b. 使用pkgbuild&lt;br /&gt;
 # Switch to alarm first&lt;br /&gt;
 su alarm&lt;br /&gt;
&lt;br /&gt;
 cd ~&lt;br /&gt;
 # Compile and Install pd-mapper&lt;br /&gt;
 git clone https://aur.archlinux.org/pd-mapper-git.git ~/pd-mapper-git&lt;br /&gt;
 cd ~/pd-mapper-git&lt;br /&gt;
 &lt;br /&gt;
 nano PKGBUILD&lt;br /&gt;
 # fix some errors&lt;br /&gt;
 makepkg -si&lt;br /&gt;
 &lt;br /&gt;
 #Compile and Install tqftpserv&lt;br /&gt;
 git clone https://aur.archlinux.org/tqftpserv-git.git ~/tqftpserv-git&lt;br /&gt;
 cd ~/tqftpserv-git&lt;br /&gt;
 &lt;br /&gt;
 nano PKGBUILD&lt;br /&gt;
 # fix some errors&lt;br /&gt;
 makepkg -si&lt;br /&gt;
&lt;br /&gt;
启用 pd-mapper 和 tqftpserv&lt;br /&gt;
 sudo systemctl enable tqftpserv pd-mapper&lt;br /&gt;
回到root用户&lt;br /&gt;
 exit&lt;/div&gt;</summary>
		<author><name>Snnbyyds</name></author>
	</entry>
	<entry>
		<id>https://wiki.uotan.cn/index.php?title=%E4%B8%BA%E6%89%8B%E6%9C%BA%E5%AE%89%E8%A3%85Linux&amp;diff=240</id>
		<title>为手机安装Linux</title>
		<link rel="alternate" type="text/html" href="https://wiki.uotan.cn/index.php?title=%E4%B8%BA%E6%89%8B%E6%9C%BA%E5%AE%89%E8%A3%85Linux&amp;diff=240"/>
		<updated>2024-02-15T01:19:06Z</updated>

		<summary type="html">&lt;p&gt;Snnbyyds：​创建页面，内容为“== 该章节将引导你为一些手机安装主线Linux操作系统 == 注意：本教程中，操作环境为64位Ubuntu，目标机器为OnePlus6T，我们将尝试利用UEFI在OnePlus6T上启动Archlinux * 不同于Windows, Linux的安装过程可能具有一定的复杂性，步骤繁杂，方案多样，如果你使用不同的机型，请先仔细阅读本文和搜索资料；此外，主线Linux的开发（内核驱动移植，制作dts等）不在本…”&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== 该章节将引导你为一些手机安装主线Linux操作系统 ==&lt;br /&gt;
注意：本教程中，操作环境为64位Ubuntu，目标机器为OnePlus6T，我们将尝试利用UEFI在OnePlus6T上启动Archlinux&lt;br /&gt;
* 不同于Windows, Linux的安装过程可能具有一定的复杂性，步骤繁杂，方案多样，如果你使用不同的机型，请先仔细阅读本文和搜索资料；此外，主线Linux的开发（内核驱动移植，制作dts等）不在本文讨论范畴内。&lt;br /&gt;
[[文件:Archlinux-neofetch-op6t.png|缩略图]]&lt;br /&gt;
=== 1 编译内核 ===&lt;br /&gt;
sdm845成品：&lt;br /&gt;
[Releases · silime/kernel-builder (github.com)](https://github.com/silime/kernel-builder)&lt;br /&gt;
==== 1.1 安装相关依赖 ====&lt;br /&gt;
对于Ubuntu 22.04 LTS:&lt;br /&gt;
&lt;br /&gt;
 sudo apt install build-essential openssl pkg-config libssl-dev libncurses5-dev pkg-config minizip libelf-dev flex bison  libc6-dev libidn11-dev rsync bc liblz4-tool  &lt;br /&gt;
 sudo apt install gcc-aarch64-linux-gnu dpkg-dev git&lt;br /&gt;
&lt;br /&gt;
==== 1.2 克隆内核源码 ====&lt;br /&gt;
你可以在“-b”参数后选择其他分支&lt;br /&gt;
&lt;br /&gt;
 mkdir ~/workspace&lt;br /&gt;
 cd ~/workspace&lt;br /&gt;
 git clone --depth=1 https://gitlab.com/sdm845-mainline/linux.git -b sdm845/6.8-dev&lt;br /&gt;
&lt;br /&gt;
可用分支可在gitlab网页查看&lt;br /&gt;
&lt;br /&gt;
==== 1.3  生成 .config ====&lt;br /&gt;
 make ARCH=arm64 defconfig sdm845.config&lt;br /&gt;
 # generate .config&lt;br /&gt;
&lt;br /&gt;
==== 1.4 进行编译 ====&lt;br /&gt;
&lt;br /&gt;
 make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- -j$(nproc)&lt;br /&gt;
&lt;br /&gt;
生成deb包供Debian系得GNU/Linux使用&lt;br /&gt;
&lt;br /&gt;
 make -j$(nproc) ARCH=arm64 KBUILD_DEBARCH=arm64 KDEB_CHANGELOG_DIST=mobile CROSS_COMPILE=aarch64-linux-gnu- deb-pkg&lt;br /&gt;
 # This will generate several deb files in ../&lt;br /&gt;
&lt;br /&gt;
=== 2 制作rootfs ===&lt;br /&gt;
==== 2.1 下载 ====&lt;br /&gt;
对于Archlinux，从http://os.archlinuxarm.org/os/ArchLinuxARM-aarch64-latest.tar.gz下载&lt;br /&gt;
&lt;br /&gt;
 cd ~/workspace&lt;br /&gt;
 wget http://os.archlinuxarm.org/os/ArchLinuxARM-aarch64-latest.tar.gz&lt;br /&gt;
&lt;br /&gt;
对于Ubuntu，从 [Index of /ubuntu-base](https://cdimage.ubuntu.com/ubuntu-base/)选择自己想要的版本&lt;br /&gt;
==== 2.2 制作 ====&lt;br /&gt;
===== 2.2.1 进入chroot =====&lt;br /&gt;
由于rootfs为ARM64，所以安装qemu-user-static&lt;br /&gt;
 sudo apt install qemu-user-static &lt;br /&gt;
&lt;br /&gt;
创建img并挂载&lt;br /&gt;
&lt;br /&gt;
 dd if=/dev/zero of=archlinux.img bs=1G count=6&lt;br /&gt;
 mkfs.ext4 archlinux.img&lt;br /&gt;
 mkdir arch&lt;br /&gt;
 sudo mount archlinux.img arch&lt;br /&gt;
&lt;br /&gt;
解压&lt;br /&gt;
&lt;br /&gt;
 cd arch&lt;br /&gt;
 sudo tar -xpvf ../ArchLinuxARM-aarch64-latest.tar.gz&lt;br /&gt;
&lt;br /&gt;
进入chroot环境&lt;br /&gt;
&lt;br /&gt;
 cd ..&lt;br /&gt;
 sudo mount --bind /dev arch/dev&lt;br /&gt;
 sudo mount -t devpts devpts arch/dev/pts -o gid=5,mode=620&lt;br /&gt;
 sudo mount -t proc proc arch/proc&lt;br /&gt;
 sudo mount -t sysfs sysfs arch/sys&lt;br /&gt;
 sudo mount -t tmpfs tmpfs arch/run&lt;br /&gt;
 &lt;br /&gt;
 sudo rm -rf arch/etc/resolv.conf &amp;amp;&amp;amp; sudo cp /etc/resolv.conf arch/etc/&lt;br /&gt;
 &lt;br /&gt;
 sudo chroot arch&lt;br /&gt;
===== 2.2.2 初始化pacman keyring =====&lt;br /&gt;
 pacman-key --init&lt;br /&gt;
 pacman-key --populate archlinuxarm&lt;br /&gt;
===== 2.2.3 换源 （可选） =====&lt;br /&gt;
详见 https://mirrors.tuna.tsinghua.edu.cn/help/archlinuxarm/&lt;br /&gt;
&lt;br /&gt;
 pacman -Syyu&lt;br /&gt;
 # upgrade&lt;br /&gt;
&lt;br /&gt;
===== 2.2.4 卸载旧的内核和firmware =====&lt;br /&gt;
 pacman -Q | grep -i linux&lt;br /&gt;
 pacman -R linux-aarch64 linux-firmware linux-firmware-whence&lt;br /&gt;
 &lt;br /&gt;
 exit&lt;br /&gt;
 # exit chroot environment&lt;br /&gt;
&lt;br /&gt;
===== 2.2.5 安装新的内核 =====&lt;br /&gt;
* 确保已经退出`chroot`环境&lt;br /&gt;
然后：&lt;br /&gt;
 cd ~/workspace/linux&lt;br /&gt;
 sudo make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu-  INSTALL_MOD_PATH=~/workspace/arch modules_install&lt;br /&gt;
 sudo make ARCH=arm64 INSTALL_PATH=~/workspace/arch/boot install&lt;br /&gt;
如果是`debian`系也可以直接chroot环境中用dpkg安装deb：&amp;lt;code&amp;gt;dpkg -i *.deb&amp;lt;/code&amp;gt;&lt;br /&gt;
===== 2.2.6 安装新的firmware =====&lt;br /&gt;
* 可以尝试从PostmarketOS&amp;lt;ref&amp;gt;https://wiki.postmarketos.org/wiki/OnePlus_6T_(oneplus-fajita)&amp;lt;/ref&amp;gt;中提取&lt;br /&gt;
进入chroot环境&lt;br /&gt;
 sudo chroot ~/workspace/arch&lt;br /&gt;
移动解压得到的文件&lt;br /&gt;
 mv * /usr/lib/firmware/&lt;br /&gt;
 ldconfig&lt;br /&gt;
修改/etc/mkinitcpio.conf&lt;br /&gt;
 nano /etc/mkinitcpio.conf&lt;br /&gt;
找到&lt;br /&gt;
 # BINARIES&lt;br /&gt;
 # This setting includes any additional binaries a given user may&lt;br /&gt;
 # wish into the CPIO image.  This is run last, so it may be used to&lt;br /&gt;
 # override the actual binaries included by a given hook&lt;br /&gt;
 # BINARIES are dependency parsed, so you may safely ignore libraries&lt;br /&gt;
 BINARIES=()&lt;br /&gt;
在`BINARIES=()`填入`xxxx_zap.mbn/ipa_fws.mbn`的路径&lt;br /&gt;
这两个固件的来源一般是手机提取并放在特殊的位置加载（具体由`dts/dtsi`指定）&lt;br /&gt;
对于fajita，改为：&lt;br /&gt;
  BINARIES=(/usr/lib/firmware/qcom/sdm845/oneplus6/a630_zap.mbn /usr/lib/firmware/qcom/sdm845/oneplus6/ipa_fws.mbn)&lt;br /&gt;
生成initrd.img&lt;br /&gt;
 ls /usr/lib/modules&lt;br /&gt;
 # get kernel version&lt;br /&gt;
 mkinitcpio --generate /boot/initrd.img-5.18.0-sdm845-00109-gf7ad1e5036bb-dirty --kernel 5.18.0-sdm845-00109-gf7ad1e5036bb-dirty&lt;br /&gt;
===== 2.2.7 安装软件包和基本配置&amp;lt;ref&amp;gt;https://archlinuxstudio.github.io/ArchLinuxTutorial/#/&amp;lt;/ref&amp;gt; =====&lt;br /&gt;
====== 2.2.7.1 设置时区 ======&lt;br /&gt;
 ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime&lt;br /&gt;
 # Shanghai&lt;br /&gt;
====== 2.2.7.2 设置locale ======&lt;br /&gt;
参考：https://wiki.archlinux.org/title/Locale&lt;br /&gt;
&lt;br /&gt;
 nano /etc/locale.gen&lt;br /&gt;
 # uncomment en_US.UTF-8 UTF-8&lt;br /&gt;
 # uncomment zh_CN.UTF-8 UTF-8&lt;br /&gt;
 &lt;br /&gt;
 locale-gen&lt;br /&gt;
&lt;br /&gt;
====== 2.2.7.3 自定义主机名 ======&lt;br /&gt;
 # For example&lt;br /&gt;
 echo 'OnePlus6T' &amp;gt; /etc/hostname&lt;br /&gt;
&lt;br /&gt;
====== 2.2.7.4 alarm（Archlinuxarm内置非root用户）配置 ======&lt;br /&gt;
&lt;br /&gt;
更改alarm密码，并添加到wheel用户组&lt;br /&gt;
&lt;br /&gt;
 passwd alarm&lt;br /&gt;
 # Change its password. Default is &amp;quot;alarm&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 usermod -aG wheel alarm&lt;br /&gt;
&lt;br /&gt;
添加sudo，设置sudo权限&lt;br /&gt;
&lt;br /&gt;
 pacman -S sudo&lt;br /&gt;
 EDITOR=nano visudo&lt;br /&gt;
&lt;br /&gt;
 找到下面这样的一行，把前面的注释符号 `#` 去掉&lt;br /&gt;
&lt;br /&gt;
 #%wheel ALL=(ALL:ALL) ALL&lt;/div&gt;</summary>
		<author><name>Snnbyyds</name></author>
	</entry>
	<entry>
		<id>https://wiki.uotan.cn/index.php?title=%E6%96%87%E4%BB%B6:Archlinux-neofetch-op6t.png&amp;diff=239</id>
		<title>文件:Archlinux-neofetch-op6t.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.uotan.cn/index.php?title=%E6%96%87%E4%BB%B6:Archlinux-neofetch-op6t.png&amp;diff=239"/>
		<updated>2024-02-15T00:38:25Z</updated>

		<summary type="html">&lt;p&gt;Snnbyyds：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Archlinux-neofetch-op6t&lt;/div&gt;</summary>
		<author><name>Snnbyyds</name></author>
	</entry>
	<entry>
		<id>https://wiki.uotan.cn/index.php?title=%E9%A6%96%E9%A1%B5&amp;diff=238</id>
		<title>首页</title>
		<link rel="alternate" type="text/html" href="https://wiki.uotan.cn/index.php?title=%E9%A6%96%E9%A1%B5&amp;diff=238"/>
		<updated>2024-02-15T00:24:55Z</updated>

		<summary type="html">&lt;p&gt;Snnbyyds：​/* 高级内容 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= 欢迎来到 &amp;lt;strong&amp;gt;Uotan Wiki · 刷机百科&amp;lt;/strong&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
'''我们致力于打造一个更适合国人使用、更贴近刷机本身的玩机知识站点'''&lt;br /&gt;
&lt;br /&gt;
'''本站现有{{NUMBEROFUSERS}}名用户，{{NUMBEROFEDITS}}次编辑，{{NUMBEROFARTICLES}}篇条目，{{NUMBEROFACTIVEUSERS}}位活跃编辑者。'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 刷机入门 ==&lt;br /&gt;
# [[ADB与Fastboot驱动]]&lt;br /&gt;
# [[解锁Bootloader]]&lt;br /&gt;
# [[刷入第三方Recovery]]&lt;br /&gt;
# [[获取Root权限]]&lt;br /&gt;
# [[Miflash线刷]]&lt;br /&gt;
&lt;br /&gt;
== 进阶内容 ==&lt;br /&gt;
# [[使用柚坛工具箱进行线刷]]&lt;br /&gt;
# [[ADB SideLoad]]&lt;br /&gt;
# [[Fastboot Update]]&lt;br /&gt;
# [[刷入任意单独镜像]]&lt;br /&gt;
# [[9008深度刷机]]&lt;br /&gt;
# [[提取分区]]&lt;br /&gt;
# [[修改分区]]&lt;br /&gt;
# [[QCN]]&lt;br /&gt;
# [[Super_Empty]]&lt;br /&gt;
&lt;br /&gt;
== 系统修改 ==&lt;br /&gt;
# [[ADB命令]]&lt;br /&gt;
# [[Magisk模块]]&lt;br /&gt;
# [[LsPosed 模块]]&lt;br /&gt;
# [[KSU 模块]]&lt;br /&gt;
# [[修改教程|修改方案]]&lt;br /&gt;
&lt;br /&gt;
== Mindows工具箱 ==&lt;br /&gt;
# [[为手机刷入Windows]]&lt;br /&gt;
# [[更新驱动程序]]&lt;br /&gt;
# [[重新安装Windows]]&lt;br /&gt;
&lt;br /&gt;
== 高级内容 ==&lt;br /&gt;
# [[Android 分区详解]]&lt;br /&gt;
# [[GKI 内核]]&lt;br /&gt;
# [[如何解包 Android ROM]]&lt;br /&gt;
# [[如何打包 Android ROM]]&lt;br /&gt;
# [[如何从源码构建 TWRP Recovery]]&lt;br /&gt;
# [[如何从源码构建 Android ROM]]&lt;br /&gt;
# [[使用edl.py]]&lt;br /&gt;
# [[为手机安装Linux]]&lt;br /&gt;
== 知名玩机博主 ==&lt;br /&gt;
# [[极客湾Geekerwan]]&lt;br /&gt;
# [[小白测评]]&lt;br /&gt;
# [[微积分WekiHome]]&lt;br /&gt;
# [[晨钟酱Official]]&lt;br /&gt;
# [[江灵夏草]]&lt;br /&gt;
# [[柚坛UOTAN]]&lt;br /&gt;
# [[派大宝UI]]&lt;br /&gt;
# [[我可以等你十年]]&lt;br /&gt;
# [[某贼]]&lt;br /&gt;
# [[凡生TalkING]]&lt;br /&gt;
&lt;br /&gt;
== 知名良心开发者 ==&lt;br /&gt;
# [[暮间雾]]&lt;br /&gt;
# [[某贼]]&lt;br /&gt;
# [[Amktiao]]&lt;br /&gt;
# [[小太阳ACA]]&lt;br /&gt;
# [[hellobbn]]&lt;br /&gt;
&lt;br /&gt;
== 更多词条 ==&lt;br /&gt;
# [[设备代号收录集合]]&lt;br /&gt;
# [[通用系统镜像]]&lt;br /&gt;
# [[AOSP]]&lt;br /&gt;
# [[Linux mainlining]]&lt;br /&gt;
# [[Windows on arm|WOA(Windows on arm)]]&lt;/div&gt;</summary>
		<author><name>Snnbyyds</name></author>
	</entry>
	<entry>
		<id>https://wiki.uotan.cn/index.php?title=Linux_mainlining&amp;diff=159</id>
		<title>Linux mainlining</title>
		<link rel="alternate" type="text/html" href="https://wiki.uotan.cn/index.php?title=Linux_mainlining&amp;diff=159"/>
		<updated>2024-02-14T14:24:12Z</updated>

		<summary type="html">&lt;p&gt;Snnbyyds：​创建页面，内容为“Linux mainlining通常指代在手机等设备上运行主线Linux”&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Linux mainlining通常指代在手机等设备上运行主线Linux&lt;/div&gt;</summary>
		<author><name>Snnbyyds</name></author>
	</entry>
	<entry>
		<id>https://wiki.uotan.cn/index.php?title=%E9%A6%96%E9%A1%B5&amp;diff=156</id>
		<title>首页</title>
		<link rel="alternate" type="text/html" href="https://wiki.uotan.cn/index.php?title=%E9%A6%96%E9%A1%B5&amp;diff=156"/>
		<updated>2024-02-14T14:20:35Z</updated>

		<summary type="html">&lt;p&gt;Snnbyyds：​/* 更多词条 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= 欢迎来到 &amp;lt;strong&amp;gt;Uotan Wiki · 刷机百科&amp;lt;/strong&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
'''我们致力于打造一个更适合国人使用、更贴近刷机本身的玩机知识站点'''&lt;br /&gt;
&lt;br /&gt;
'''本站现有{{NUMBEROFUSERS}}名用户，{{NUMBEROFEDITS}}次编辑，{{NUMBEROFARTICLES}}篇条目，{{NUMBEROFACTIVEUSERS}}位活跃编辑者。'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 刷机入门 ==&lt;br /&gt;
# [[ADB与Fastboot驱动]]&lt;br /&gt;
# [[解锁Bootloader]]&lt;br /&gt;
# [[刷入第三方Recovery]]&lt;br /&gt;
# [[获取Root权限]]&lt;br /&gt;
# [[Miflash线刷]]&lt;br /&gt;
&lt;br /&gt;
== 进阶内容 ==&lt;br /&gt;
# [[使用柚坛工具箱进行线刷]]&lt;br /&gt;
# [[ADB SideLoad]]&lt;br /&gt;
# [[Fastboot Update]]&lt;br /&gt;
# [[刷入任意单独镜像]]&lt;br /&gt;
# [[9008深度刷机]]&lt;br /&gt;
# [[提取分区]]&lt;br /&gt;
# [[修改分区]]&lt;br /&gt;
# [[QCN]]&lt;br /&gt;
# [[Super_Empty]]&lt;br /&gt;
&lt;br /&gt;
== 系统修改 ==&lt;br /&gt;
# [[ADB命令]]&lt;br /&gt;
# [[Magisk模块]]&lt;br /&gt;
# [[LsPosed 模块]]&lt;br /&gt;
# [[KSU 模块]]&lt;br /&gt;
# [[修改教程]]&lt;br /&gt;
&lt;br /&gt;
== Mindows工具箱 ==&lt;br /&gt;
# [[为手机刷入Windows]]&lt;br /&gt;
# [[更新驱动程序]]&lt;br /&gt;
# [[重新安装Windows]]&lt;br /&gt;
&lt;br /&gt;
== 高级内容 ==&lt;br /&gt;
# [[Android 分区详解]]&lt;br /&gt;
# [[GKI 内核]]&lt;br /&gt;
# [[如何解包 Android ROM]]&lt;br /&gt;
# [[如何打包 Android ROM]]&lt;br /&gt;
# [[如何从源码构建 TWRP Recovery]]&lt;br /&gt;
# [[如何从源码构建 Android ROM]]&lt;br /&gt;
# [[使用edl.py]]&lt;br /&gt;
&lt;br /&gt;
== 知名玩机博主 ==&lt;br /&gt;
# [[极客湾Geekerwan]]&lt;br /&gt;
# [[小白测评]]&lt;br /&gt;
# [[微积分WekiHome]]&lt;br /&gt;
# [[晨钟酱Official]]&lt;br /&gt;
# [[江灵夏草]]&lt;br /&gt;
# [[柚坛UOTAN]]&lt;br /&gt;
# [[派大宝UI]]&lt;br /&gt;
# [[我可以等你十年]]&lt;br /&gt;
# [[某贼]]&lt;br /&gt;
# [[凡生TalkING]]&lt;br /&gt;
# [[暮间雾]]&lt;br /&gt;
&lt;br /&gt;
== 知名良心开发者 ==&lt;br /&gt;
# [[暮间雾]]&lt;br /&gt;
# [[某贼]]&lt;br /&gt;
# [[Amktiao]]&lt;br /&gt;
# [[小太阳ACA]]&lt;br /&gt;
# [[hellobbn]]&lt;br /&gt;
&lt;br /&gt;
== 更多词条 ==&lt;br /&gt;
# [[设备代号收录集合]]&lt;br /&gt;
# [[通用系统镜像]]&lt;br /&gt;
# [[AOSP]]&lt;br /&gt;
# [[Linux mainlining]]&lt;br /&gt;
# [[Windows on arm|woa]]&lt;/div&gt;</summary>
		<author><name>Snnbyyds</name></author>
	</entry>
	<entry>
		<id>https://wiki.uotan.cn/index.php?title=%E9%A6%96%E9%A1%B5&amp;diff=154</id>
		<title>首页</title>
		<link rel="alternate" type="text/html" href="https://wiki.uotan.cn/index.php?title=%E9%A6%96%E9%A1%B5&amp;diff=154"/>
		<updated>2024-02-14T14:20:02Z</updated>

		<summary type="html">&lt;p&gt;Snnbyyds：​/* 知名良心开发者 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= 欢迎来到 &amp;lt;strong&amp;gt;Uotan Wiki · 刷机百科&amp;lt;/strong&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
'''我们致力于打造一个更适合国人使用、更贴近刷机本身的玩机知识站点'''&lt;br /&gt;
&lt;br /&gt;
'''本站现有{{NUMBEROFUSERS}}名用户，{{NUMBEROFEDITS}}次编辑，{{NUMBEROFARTICLES}}篇条目，{{NUMBEROFACTIVEUSERS}}位活跃编辑者。'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 刷机入门 ==&lt;br /&gt;
# [[ADB与Fastboot驱动]]&lt;br /&gt;
# [[解锁Bootloader]]&lt;br /&gt;
# [[刷入第三方Recovery]]&lt;br /&gt;
# [[获取Root权限]]&lt;br /&gt;
# [[Miflash线刷]]&lt;br /&gt;
&lt;br /&gt;
== 进阶内容 ==&lt;br /&gt;
# [[使用柚坛工具箱进行线刷]]&lt;br /&gt;
# [[ADB SideLoad]]&lt;br /&gt;
# [[Fastboot Update]]&lt;br /&gt;
# [[刷入任意单独镜像]]&lt;br /&gt;
# [[9008深度刷机]]&lt;br /&gt;
# [[提取分区]]&lt;br /&gt;
# [[修改分区]]&lt;br /&gt;
# [[QCN]]&lt;br /&gt;
# [[Super_Empty]]&lt;br /&gt;
&lt;br /&gt;
== 系统修改 ==&lt;br /&gt;
# [[ADB命令]]&lt;br /&gt;
# [[Magisk模块]]&lt;br /&gt;
# [[LsPosed 模块]]&lt;br /&gt;
# [[KSU 模块]]&lt;br /&gt;
# [[修改教程]]&lt;br /&gt;
&lt;br /&gt;
== Mindows工具箱 ==&lt;br /&gt;
# [[为手机刷入Windows]]&lt;br /&gt;
# [[更新驱动程序]]&lt;br /&gt;
# [[重新安装Windows]]&lt;br /&gt;
&lt;br /&gt;
== 高级内容 ==&lt;br /&gt;
# [[Android 分区详解]]&lt;br /&gt;
# [[GKI 内核]]&lt;br /&gt;
# [[如何解包 Android ROM]]&lt;br /&gt;
# [[如何打包 Android ROM]]&lt;br /&gt;
# [[如何从源码构建 TWRP Recovery]]&lt;br /&gt;
# [[如何从源码构建 Android ROM]]&lt;br /&gt;
# [[使用edl.py]]&lt;br /&gt;
&lt;br /&gt;
== 知名玩机博主 ==&lt;br /&gt;
# [[极客湾Geekerwan]]&lt;br /&gt;
# [[小白测评]]&lt;br /&gt;
# [[微积分WekiHome]]&lt;br /&gt;
# [[晨钟酱Official]]&lt;br /&gt;
# [[江灵夏草]]&lt;br /&gt;
# [[柚坛UOTAN]]&lt;br /&gt;
# [[派大宝UI]]&lt;br /&gt;
# [[我可以等你十年]]&lt;br /&gt;
# [[某贼]]&lt;br /&gt;
# [[凡生TalkING]]&lt;br /&gt;
# [[暮间雾]]&lt;br /&gt;
&lt;br /&gt;
== 知名良心开发者 ==&lt;br /&gt;
# [[暮间雾]]&lt;br /&gt;
# [[某贼]]&lt;br /&gt;
# [[Amktiao]]&lt;br /&gt;
# [[小太阳ACA]]&lt;br /&gt;
# [[hellobbn]]&lt;br /&gt;
&lt;br /&gt;
== 更多词条 ==&lt;br /&gt;
# [[设备代号收录集合]]&lt;br /&gt;
# [[通用系统镜像]]&lt;br /&gt;
# [[AOSP]]&lt;br /&gt;
# [[Windows on arm|woa]]&lt;/div&gt;</summary>
		<author><name>Snnbyyds</name></author>
	</entry>
	<entry>
		<id>https://wiki.uotan.cn/index.php?title=%E8%AE%BE%E5%A4%87%E4%BB%A3%E5%8F%B7%E6%94%B6%E5%BD%95%E9%9B%86%E5%90%88&amp;diff=117</id>
		<title>设备代号收录集合</title>
		<link rel="alternate" type="text/html" href="https://wiki.uotan.cn/index.php?title=%E8%AE%BE%E5%A4%87%E4%BB%A3%E5%8F%B7%E6%94%B6%E5%BD%95%E9%9B%86%E5%90%88&amp;diff=117"/>
		<updated>2024-02-14T12:47:43Z</updated>

		<summary type="html">&lt;p&gt;Snnbyyds：​清空全部内容&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Snnbyyds</name></author>
	</entry>
	<entry>
		<id>https://wiki.uotan.cn/index.php?title=%E4%BD%BF%E7%94%A8edl.py&amp;diff=114</id>
		<title>使用edl.py</title>
		<link rel="alternate" type="text/html" href="https://wiki.uotan.cn/index.php?title=%E4%BD%BF%E7%94%A8edl.py&amp;diff=114"/>
		<updated>2024-02-14T12:45:03Z</updated>

		<summary type="html">&lt;p&gt;Snnbyyds：​/* 使用EDL */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;本章将指导使用由[https://github.com/bkerler bkerler]所创建的非官方高通Sahara / Firehose Attack Client / Diag Tools&lt;br /&gt;
* 源代码：https://github.com/bkerler/edl&lt;br /&gt;
=== 在Linux发行版安装 ===&lt;br /&gt;
==== 配置依赖 ====&lt;br /&gt;
* Debian系列(Debian/Ubuntu/Mint/etc)&lt;br /&gt;
&lt;br /&gt;
  sudo apt install adb fastboot python3-dev python3-pip liblzma-dev git&lt;br /&gt;
  sudo systemctl stop ModemManager&lt;br /&gt;
  sudo systemctl disable ModemManager&lt;br /&gt;
  sudo apt purge ModemManager&lt;br /&gt;
&lt;br /&gt;
* Arch系列&lt;br /&gt;
  sudo pacman -S android-tools python python-pip git xz&lt;br /&gt;
  sudo pacman -R modemmanager&lt;br /&gt;
&lt;br /&gt;
==== 安装 ====&lt;br /&gt;
  git clone https://github.com/bkerler/edl.git&lt;br /&gt;
  cd edl&lt;br /&gt;
  git submodule update --init --recursive&lt;br /&gt;
  sudo cp Drivers/51-edl.rules /etc/udev/rules.d&lt;br /&gt;
  sudo cp Drivers/50-android.rules /etc/udev/rules.d&lt;br /&gt;
  python3 setup.py build&lt;br /&gt;
  sudo python3 setup.py install&lt;br /&gt;
&lt;br /&gt;
==== 使用EDL ====&lt;br /&gt;
请先利用edl工程线或其它任意方式进入0x9008 mode&lt;br /&gt;
&lt;br /&gt;
GitHub上详细教程：https://github.com/bkerler/edl?tab=readme-ov-file#run-edl-examples&lt;/div&gt;</summary>
		<author><name>Snnbyyds</name></author>
	</entry>
	<entry>
		<id>https://wiki.uotan.cn/index.php?title=%E4%BD%BF%E7%94%A8edl.py&amp;diff=113</id>
		<title>使用edl.py</title>
		<link rel="alternate" type="text/html" href="https://wiki.uotan.cn/index.php?title=%E4%BD%BF%E7%94%A8edl.py&amp;diff=113"/>
		<updated>2024-02-14T12:44:48Z</updated>

		<summary type="html">&lt;p&gt;Snnbyyds：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;本章将指导使用由[https://github.com/bkerler bkerler]所创建的非官方高通Sahara / Firehose Attack Client / Diag Tools&lt;br /&gt;
* 源代码：https://github.com/bkerler/edl&lt;br /&gt;
=== 在Linux发行版安装 ===&lt;br /&gt;
==== 配置依赖 ====&lt;br /&gt;
* Debian系列(Debian/Ubuntu/Mint/etc)&lt;br /&gt;
&lt;br /&gt;
  sudo apt install adb fastboot python3-dev python3-pip liblzma-dev git&lt;br /&gt;
  sudo systemctl stop ModemManager&lt;br /&gt;
  sudo systemctl disable ModemManager&lt;br /&gt;
  sudo apt purge ModemManager&lt;br /&gt;
&lt;br /&gt;
* Arch系列&lt;br /&gt;
  sudo pacman -S android-tools python python-pip git xz&lt;br /&gt;
  sudo pacman -R modemmanager&lt;br /&gt;
&lt;br /&gt;
==== 安装 ====&lt;br /&gt;
  git clone https://github.com/bkerler/edl.git&lt;br /&gt;
  cd edl&lt;br /&gt;
  git submodule update --init --recursive&lt;br /&gt;
  sudo cp Drivers/51-edl.rules /etc/udev/rules.d&lt;br /&gt;
  sudo cp Drivers/50-android.rules /etc/udev/rules.d&lt;br /&gt;
  python3 setup.py build&lt;br /&gt;
  sudo python3 setup.py install&lt;br /&gt;
&lt;br /&gt;
==== 使用EDL ====&lt;br /&gt;
请先利用edl工程线或其它任意方式进入0x9008 mode&lt;br /&gt;
GitHub上详细教程：https://github.com/bkerler/edl?tab=readme-ov-file#run-edl-examples&lt;/div&gt;</summary>
		<author><name>Snnbyyds</name></author>
	</entry>
	<entry>
		<id>https://wiki.uotan.cn/index.php?title=%E4%BD%BF%E7%94%A8edl.py&amp;diff=68</id>
		<title>使用edl.py</title>
		<link rel="alternate" type="text/html" href="https://wiki.uotan.cn/index.php?title=%E4%BD%BF%E7%94%A8edl.py&amp;diff=68"/>
		<updated>2024-02-14T11:10:24Z</updated>

		<summary type="html">&lt;p&gt;Snnbyyds：​创建页面，内容为“本章将指导使用由[https://github.com/bkerler bkerler]所创建的非官方高通Sahara / Firehose Attack Client / Diag Tools * 源代码：https://github.com/bkerler/edl === 在Linux发行版安装 === ==== 配置依赖 ==== * Debian系列(Debian/Ubuntu/Mint/etc)    sudo apt install adb fastboot python3-dev python3-pip liblzma-dev git   sudo systemctl stop ModemManager   sudo systemctl disable ModemManager   sudo apt purge ModemManager  * Arch系列   su…”&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;本章将指导使用由[https://github.com/bkerler bkerler]所创建的非官方高通Sahara / Firehose Attack Client / Diag Tools&lt;br /&gt;
* 源代码：https://github.com/bkerler/edl&lt;br /&gt;
=== 在Linux发行版安装 ===&lt;br /&gt;
==== 配置依赖 ====&lt;br /&gt;
* Debian系列(Debian/Ubuntu/Mint/etc)&lt;br /&gt;
&lt;br /&gt;
  sudo apt install adb fastboot python3-dev python3-pip liblzma-dev git&lt;br /&gt;
  sudo systemctl stop ModemManager&lt;br /&gt;
  sudo systemctl disable ModemManager&lt;br /&gt;
  sudo apt purge ModemManager&lt;br /&gt;
&lt;br /&gt;
* Arch系列&lt;br /&gt;
  sudo pacman -S android-tools python python-pip git xz&lt;br /&gt;
  sudo pacman -R modemmanager&lt;br /&gt;
&lt;br /&gt;
==== 安装 ====&lt;br /&gt;
  git clone https://github.com/bkerler/edl.git&lt;br /&gt;
  cd edl&lt;br /&gt;
  git submodule update --init --recursive&lt;br /&gt;
  sudo cp Drivers/51-edl.rules /etc/udev/rules.d&lt;br /&gt;
  sudo cp Drivers/50-android.rules /etc/udev/rules.d&lt;br /&gt;
  python3 setup.py build&lt;br /&gt;
  sudo python3 setup.py install&lt;/div&gt;</summary>
		<author><name>Snnbyyds</name></author>
	</entry>
	<entry>
		<id>https://wiki.uotan.cn/index.php?title=%E9%A6%96%E9%A1%B5&amp;diff=64</id>
		<title>首页</title>
		<link rel="alternate" type="text/html" href="https://wiki.uotan.cn/index.php?title=%E9%A6%96%E9%A1%B5&amp;diff=64"/>
		<updated>2024-02-14T11:01:15Z</updated>

		<summary type="html">&lt;p&gt;Snnbyyds：​/* 高级内容 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= 欢迎来到 &amp;lt;strong&amp;gt;Uotan Wiki · 刷机百科&amp;lt;/strong&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
'''我们致力于打造一个更适合国人使用、更贴近刷机本身的玩机知识站点'''&lt;br /&gt;
&lt;br /&gt;
'''本站现有{{NUMBEROFUSERS}}名用户，{{NUMBEROFEDITS}}次编辑，{{NUMBEROFARTICLES}}篇条目，{{NUMBEROFACTIVEUSERS}}位活跃编辑者。'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 刷机入门 ==&lt;br /&gt;
# [[ADB与Fastboot驱动]]&lt;br /&gt;
# [[解锁Bootloader]]&lt;br /&gt;
# [[刷入第三方Recovery]]&lt;br /&gt;
# [[获取Root权限]]&lt;br /&gt;
# [[Miflash线刷]]&lt;br /&gt;
&lt;br /&gt;
== 进阶内容 ==&lt;br /&gt;
# [[使用柚坛工具箱进行线刷]]&lt;br /&gt;
# [[ADB SideLoad]]&lt;br /&gt;
# [[Fastboot Update]]&lt;br /&gt;
# [[刷入任意单独镜像]]&lt;br /&gt;
# [[9008深度刷机]]&lt;br /&gt;
# [[提取分区]]&lt;br /&gt;
# [[修改分区]]&lt;br /&gt;
# [[QCN]]&lt;br /&gt;
# [[Super_Empty]]&lt;br /&gt;
&lt;br /&gt;
== 系统修改 ==&lt;br /&gt;
# [[ADB命令]]&lt;br /&gt;
# [[Magisk模块]]&lt;br /&gt;
# [[LsPosed 模块]]&lt;br /&gt;
# [[KSU 模块]]&lt;br /&gt;
# [[修改教程]]&lt;br /&gt;
&lt;br /&gt;
== Mindows工具箱 ==&lt;br /&gt;
# [[为手机刷入Windows]]&lt;br /&gt;
# [[更新驱动程序]]&lt;br /&gt;
# [[重新安装Windows]]&lt;br /&gt;
&lt;br /&gt;
== 高级内容 ==&lt;br /&gt;
# [[Android 分区详解]]&lt;br /&gt;
# [[GKI 内核]]&lt;br /&gt;
# [[如何解包 Android ROM]]&lt;br /&gt;
# [[如何打包 Android ROM]]&lt;br /&gt;
# [[如何从源码构建 TWRP Recovery]]&lt;br /&gt;
# [[如何从源码构建 Android ROM]]&lt;br /&gt;
# [[使用edl.py]]&lt;br /&gt;
&lt;br /&gt;
== 知名玩机博主 ==&lt;br /&gt;
# [[极客湾Geekerwan]]&lt;br /&gt;
# [[小白测评]]&lt;br /&gt;
# [[微积分WekiHome]]&lt;br /&gt;
# [[晨钟酱Official]]&lt;br /&gt;
# [[江灵夏草]]&lt;br /&gt;
# [[柚坛UOTAN]]&lt;br /&gt;
# [[派大宝UI]]&lt;br /&gt;
# [[我可以等你十年]]&lt;br /&gt;
# [[某贼]]&lt;br /&gt;
# [[凡生TalkING]]&lt;br /&gt;
# [[暮间雾]]&lt;br /&gt;
&lt;br /&gt;
== 知名良心开发者 ==&lt;br /&gt;
&lt;br /&gt;
== 更多词条 ==&lt;br /&gt;
# [[设备代号收录集合]]&lt;br /&gt;
# [[通用系统镜像]]&lt;br /&gt;
# [[AOSP]]&lt;/div&gt;</summary>
		<author><name>Snnbyyds</name></author>
	</entry>
	<entry>
		<id>https://wiki.uotan.cn/index.php?title=%E5%A6%82%E4%BD%95%E4%BB%8E%E6%BA%90%E7%A0%81%E6%9E%84%E5%BB%BA_Android_ROM&amp;diff=56</id>
		<title>如何从源码构建 Android ROM</title>
		<link rel="alternate" type="text/html" href="https://wiki.uotan.cn/index.php?title=%E5%A6%82%E4%BD%95%E4%BB%8E%E6%BA%90%E7%A0%81%E6%9E%84%E5%BB%BA_Android_ROM&amp;diff=56"/>
		<updated>2024-02-14T10:41:36Z</updated>

		<summary type="html">&lt;p&gt;Snnbyyds：​/* 2. 启动编译 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[文件:LineageOS长版.png|缩略图]]&lt;br /&gt;
== 该章节将引导你从源码构建Android ROM ==&lt;br /&gt;
注意：本教程以'''LineageOS 21.0'''&amp;lt;ref&amp;gt;https://lineageos.org/&amp;lt;/ref&amp;gt;与''OnePlus6T''&amp;lt;ref&amp;gt;https://wiki.lineageos.org/devices/fajita/build/&amp;lt;/ref&amp;gt;为例&lt;br /&gt;
=== 部署环境 ===&lt;br /&gt;
==== 1. 硬件方面的选择 ====&lt;br /&gt;
对于''LineageOS 21.0''，除非你的电脑拥有较高的配置，我们一般建议你在实体机编译，以下为针对''LineageOS 21.0''的推荐配置。&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;div align=center&amp;gt;&lt;br /&gt;
  &amp;lt;table&amp;gt;&lt;br /&gt;
    &amp;lt;tr align=center&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;磁盘空间&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;内存&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;tr align=center&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;300GB+&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;16GB+&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
  &amp;lt;/table&amp;gt;&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
你可能还需要设置swap&amp;lt;ref&amp;gt;https://wiki.archlinux.org/title/Swap&amp;lt;/ref&amp;gt;以防止编译失败&lt;br /&gt;
&lt;br /&gt;
==== 2. 选择合适的操作系统 ====&lt;br /&gt;
&lt;br /&gt;
请使用64位的Linux发行版，推荐使用'''Ubuntu 22.04 LTS'''&lt;br /&gt;
&lt;br /&gt;
Ubuntu安装教程： https://ubuntu.com/tutorials/install-ubuntu-desktop&lt;br /&gt;
&lt;br /&gt;
Archlinux安装教程：https://wiki.archlinux.org/title/Installation_guide&lt;br /&gt;
&lt;br /&gt;
（也可使用WSL：https://learn.microsoft.com/zh-cn/windows/wsl/install ）&lt;br /&gt;
&lt;br /&gt;
==== 3. 安装依赖项目 ====&lt;br /&gt;
对于 Ubuntu 22.04 LTS等Debian系发行版，执行以下命令&lt;br /&gt;
&lt;br /&gt;
  sudo apt update&lt;br /&gt;
  sudo apt upgrade&lt;br /&gt;
  sudo apt install bc bison build-essential ccache curl flex g++-multilib gcc-multilib git git-lfs gnupg gperf imagemagick lib32readline-dev lib32z1-dev libelf-dev liblz4-tool libsdl1.2-dev libssl-dev libxml2 libxml2-utils lzop pngcrush rsync schedtool squashfs-tools xsltproc zip zlib1g-dev git git-lfs lib32ncurses5-dev libncurses5 libncurses5-dev&lt;br /&gt;
&lt;br /&gt;
对于'''Archlinux''', 你可以从'''AUR'''安装&amp;lt;code&amp;gt;lineageos-devel&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== 4. 获取repo工具 ====&lt;br /&gt;
在国内我们使用清华源，执行以下命令&lt;br /&gt;
&lt;br /&gt;
  mkdir ~/bin&lt;br /&gt;
  export PATH=~/bin:$PATH&lt;br /&gt;
  cd ~/bin&lt;br /&gt;
  curl https://mirrors.tuna.tsinghua.edu.cn/git/git-repo -o repo&lt;br /&gt;
  chmod +x repo&lt;br /&gt;
  cd ~&lt;br /&gt;
&lt;br /&gt;
==== 5. 设置邮箱和用户名 ====&lt;br /&gt;
此步骤只需要重复一次&lt;br /&gt;
&lt;br /&gt;
  git config --global user.name &amp;quot;Your Name&amp;quot;&lt;br /&gt;
  git config --global user.email &amp;quot;youremail@yourdomain.com&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== 下载源代码 ===&lt;br /&gt;
==== 1. 镜像源的配置 ====&lt;br /&gt;
建议先设置从清华源更新repo工具，并配置git从清华源拉取AOSP源码&lt;br /&gt;
&lt;br /&gt;
  git config --global url.https://mirrors.tuna.tsinghua.edu.cn/git/AOSP/.insteadof https://android.googlesource.com&lt;br /&gt;
  export REPO_URL='https://mirrors.tuna.tsinghua.edu.cn/git/git-repo'&lt;br /&gt;
&lt;br /&gt;
==== 2. 获取主要源代码 ====&lt;br /&gt;
这里下载的是LineageOS 21.0的源代码，请灵活操作&lt;br /&gt;
* 小技巧：使用&amp;lt;code&amp;gt;--depth=1&amp;lt;/code&amp;gt;可以有效节省流量和加快拉取速度！&lt;br /&gt;
===== 2.1 初始化 =====&lt;br /&gt;
  mkdir ~/los&lt;br /&gt;
  cd ~/los&lt;br /&gt;
  repo init -u https://mirrors.tuna.tsinghua.edu.cn/git/lineageOS/LineageOS/android.git -b lineage-21.0 --git-lfs --depth=1&lt;br /&gt;
===== 2.2 编写cust.xml防止清华源同步错误 =====&lt;br /&gt;
* 这里用nano编辑器&lt;br /&gt;
  nano .repo/local_manifests/cust.xml&lt;br /&gt;
写入以下内容&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
  &amp;lt;manifest&amp;gt;&lt;br /&gt;
    &amp;lt;remove-project name=&amp;quot;LineageOS/android&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;/manifest&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== 2.3 同步 =====&lt;br /&gt;
  repo sync --force-sync -j4&lt;br /&gt;
&lt;br /&gt;
==== 3. 获取设备配置 ====&lt;br /&gt;
* 对于官方的设备，一般直接利用breakfast就能拉取除了vendor tree以外的所有依赖项目&amp;lt;ref&amp;gt;https://wiki.lineageos.org/devices/fajita/build/#prepare-the-device-specific-code&amp;lt;/ref&amp;gt;&lt;br /&gt;
* 此处我们按照非官方设备的方式进行操作&lt;br /&gt;
===== 3.1 克隆 device tree =====&lt;br /&gt;
* 注意一般的设备树（可能有例外）命名方式为'''device_manufacture_codename''', 克隆目录为'''device/manufacture/codename'''&lt;br /&gt;
  git clone --depth=1 -b lineage-21 https://github.com/LineageOS/android_device_oneplus_fajita.git device/oneplus/fajita&lt;br /&gt;
===== 3.2 克隆 common tree (如必要) =====&lt;br /&gt;
* 命名方式：'''device_manufacture_SoC-common'''&lt;br /&gt;
  git clone --depth=1 -b lineage-21 https://github.com/LineageOS/android_device_oneplus_sdm845-common.git device/oneplus/sdm845-common&lt;br /&gt;
===== 3.3 克隆 hardware （如必要）=====&lt;br /&gt;
  git clone -b lineage-21 https://github.com/LineageOS/android_hardware_oneplus.git hardware/oneplus&lt;br /&gt;
===== 3.4 克隆内核源代码 =====&lt;br /&gt;
  git clone -b lineage-21 --depth=1 https://github.com/LineageOS/android_kernel_oneplus_sdm845.git kernel/oneplus/sdm845&lt;br /&gt;
===== 3.5 克隆vendor blobs =====&lt;br /&gt;
  git clone -b lineage-21 --depth=1 https://github.com/TheMuppets/proprietary_vendor_oneplus_fajita.git vendor/oneplus/fajita&lt;br /&gt;
  git clone -b lineage-21 --depth=1 https://github.com/TheMuppets/proprietary_vendor_oneplus_sdm845-common.git vendor/oneplus/sdm845-common&lt;br /&gt;
&lt;br /&gt;
=== 编译 ===&lt;br /&gt;
&lt;br /&gt;
==== 1. 初始化编译环境 ====&lt;br /&gt;
  . build/envsetup.sh&lt;br /&gt;
&lt;br /&gt;
==== 2. 启动编译 ====&lt;br /&gt;
  lunch lineage_fajita-user&lt;br /&gt;
  mka bacon&lt;br /&gt;
&lt;br /&gt;
=== 测试 ===&lt;br /&gt;
使用合适的方式将LineageOS安装到你的设备上！&lt;/div&gt;</summary>
		<author><name>Snnbyyds</name></author>
	</entry>
	<entry>
		<id>https://wiki.uotan.cn/index.php?title=%E5%A6%82%E4%BD%95%E4%BB%8E%E6%BA%90%E7%A0%81%E6%9E%84%E5%BB%BA_Android_ROM&amp;diff=55</id>
		<title>如何从源码构建 Android ROM</title>
		<link rel="alternate" type="text/html" href="https://wiki.uotan.cn/index.php?title=%E5%A6%82%E4%BD%95%E4%BB%8E%E6%BA%90%E7%A0%81%E6%9E%84%E5%BB%BA_Android_ROM&amp;diff=55"/>
		<updated>2024-02-14T10:40:00Z</updated>

		<summary type="html">&lt;p&gt;Snnbyyds：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[文件:LineageOS长版.png|缩略图]]&lt;br /&gt;
== 该章节将引导你从源码构建Android ROM ==&lt;br /&gt;
注意：本教程以'''LineageOS 21.0'''&amp;lt;ref&amp;gt;https://lineageos.org/&amp;lt;/ref&amp;gt;与''OnePlus6T''&amp;lt;ref&amp;gt;https://wiki.lineageos.org/devices/fajita/build/&amp;lt;/ref&amp;gt;为例&lt;br /&gt;
=== 部署环境 ===&lt;br /&gt;
==== 1. 硬件方面的选择 ====&lt;br /&gt;
对于''LineageOS 21.0''，除非你的电脑拥有较高的配置，我们一般建议你在实体机编译，以下为针对''LineageOS 21.0''的推荐配置。&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;div align=center&amp;gt;&lt;br /&gt;
  &amp;lt;table&amp;gt;&lt;br /&gt;
    &amp;lt;tr align=center&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;磁盘空间&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;内存&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;tr align=center&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;300GB+&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;16GB+&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
  &amp;lt;/table&amp;gt;&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
你可能还需要设置swap&amp;lt;ref&amp;gt;https://wiki.archlinux.org/title/Swap&amp;lt;/ref&amp;gt;以防止编译失败&lt;br /&gt;
&lt;br /&gt;
==== 2. 选择合适的操作系统 ====&lt;br /&gt;
&lt;br /&gt;
请使用64位的Linux发行版，推荐使用'''Ubuntu 22.04 LTS'''&lt;br /&gt;
&lt;br /&gt;
Ubuntu安装教程： https://ubuntu.com/tutorials/install-ubuntu-desktop&lt;br /&gt;
&lt;br /&gt;
Archlinux安装教程：https://wiki.archlinux.org/title/Installation_guide&lt;br /&gt;
&lt;br /&gt;
（也可使用WSL：https://learn.microsoft.com/zh-cn/windows/wsl/install ）&lt;br /&gt;
&lt;br /&gt;
==== 3. 安装依赖项目 ====&lt;br /&gt;
对于 Ubuntu 22.04 LTS等Debian系发行版，执行以下命令&lt;br /&gt;
&lt;br /&gt;
  sudo apt update&lt;br /&gt;
  sudo apt upgrade&lt;br /&gt;
  sudo apt install bc bison build-essential ccache curl flex g++-multilib gcc-multilib git git-lfs gnupg gperf imagemagick lib32readline-dev lib32z1-dev libelf-dev liblz4-tool libsdl1.2-dev libssl-dev libxml2 libxml2-utils lzop pngcrush rsync schedtool squashfs-tools xsltproc zip zlib1g-dev git git-lfs lib32ncurses5-dev libncurses5 libncurses5-dev&lt;br /&gt;
&lt;br /&gt;
对于'''Archlinux''', 你可以从'''AUR'''安装&amp;lt;code&amp;gt;lineageos-devel&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== 4. 获取repo工具 ====&lt;br /&gt;
在国内我们使用清华源，执行以下命令&lt;br /&gt;
&lt;br /&gt;
  mkdir ~/bin&lt;br /&gt;
  export PATH=~/bin:$PATH&lt;br /&gt;
  cd ~/bin&lt;br /&gt;
  curl https://mirrors.tuna.tsinghua.edu.cn/git/git-repo -o repo&lt;br /&gt;
  chmod +x repo&lt;br /&gt;
  cd ~&lt;br /&gt;
&lt;br /&gt;
==== 5. 设置邮箱和用户名 ====&lt;br /&gt;
此步骤只需要重复一次&lt;br /&gt;
&lt;br /&gt;
  git config --global user.name &amp;quot;Your Name&amp;quot;&lt;br /&gt;
  git config --global user.email &amp;quot;youremail@yourdomain.com&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== 下载源代码 ===&lt;br /&gt;
==== 1. 镜像源的配置 ====&lt;br /&gt;
建议先设置从清华源更新repo工具，并配置git从清华源拉取AOSP源码&lt;br /&gt;
&lt;br /&gt;
  git config --global url.https://mirrors.tuna.tsinghua.edu.cn/git/AOSP/.insteadof https://android.googlesource.com&lt;br /&gt;
  export REPO_URL='https://mirrors.tuna.tsinghua.edu.cn/git/git-repo'&lt;br /&gt;
&lt;br /&gt;
==== 2. 获取主要源代码 ====&lt;br /&gt;
这里下载的是LineageOS 21.0的源代码，请灵活操作&lt;br /&gt;
* 小技巧：使用&amp;lt;code&amp;gt;--depth=1&amp;lt;/code&amp;gt;可以有效节省流量和加快拉取速度！&lt;br /&gt;
===== 2.1 初始化 =====&lt;br /&gt;
  mkdir ~/los&lt;br /&gt;
  cd ~/los&lt;br /&gt;
  repo init -u https://mirrors.tuna.tsinghua.edu.cn/git/lineageOS/LineageOS/android.git -b lineage-21.0 --git-lfs --depth=1&lt;br /&gt;
===== 2.2 编写cust.xml防止清华源同步错误 =====&lt;br /&gt;
* 这里用nano编辑器&lt;br /&gt;
  nano .repo/local_manifests/cust.xml&lt;br /&gt;
写入以下内容&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
  &amp;lt;manifest&amp;gt;&lt;br /&gt;
    &amp;lt;remove-project name=&amp;quot;LineageOS/android&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;/manifest&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== 2.3 同步 =====&lt;br /&gt;
  repo sync --force-sync -j4&lt;br /&gt;
&lt;br /&gt;
==== 3. 获取设备配置 ====&lt;br /&gt;
* 对于官方的设备，一般直接利用breakfast就能拉取除了vendor tree以外的所有依赖项目&amp;lt;ref&amp;gt;https://wiki.lineageos.org/devices/fajita/build/#prepare-the-device-specific-code&amp;lt;/ref&amp;gt;&lt;br /&gt;
* 此处我们按照非官方设备的方式进行操作&lt;br /&gt;
===== 3.1 克隆 device tree =====&lt;br /&gt;
* 注意一般的设备树（可能有例外）命名方式为'''device_manufacture_codename''', 克隆目录为'''device/manufacture/codename'''&lt;br /&gt;
  git clone --depth=1 -b lineage-21 https://github.com/LineageOS/android_device_oneplus_fajita.git device/oneplus/fajita&lt;br /&gt;
===== 3.2 克隆 common tree (如必要) =====&lt;br /&gt;
* 命名方式：'''device_manufacture_SoC-common'''&lt;br /&gt;
  git clone --depth=1 -b lineage-21 https://github.com/LineageOS/android_device_oneplus_sdm845-common.git device/oneplus/sdm845-common&lt;br /&gt;
===== 3.3 克隆 hardware （如必要）=====&lt;br /&gt;
  git clone -b lineage-21 https://github.com/LineageOS/android_hardware_oneplus.git hardware/oneplus&lt;br /&gt;
===== 3.4 克隆内核源代码 =====&lt;br /&gt;
  git clone -b lineage-21 --depth=1 https://github.com/LineageOS/android_kernel_oneplus_sdm845.git kernel/oneplus/sdm845&lt;br /&gt;
===== 3.5 克隆vendor blobs =====&lt;br /&gt;
  git clone -b lineage-21 --depth=1 https://github.com/TheMuppets/proprietary_vendor_oneplus_fajita.git vendor/oneplus/fajita&lt;br /&gt;
  git clone -b lineage-21 --depth=1 https://github.com/TheMuppets/proprietary_vendor_oneplus_sdm845-common.git vendor/oneplus/sdm845-common&lt;br /&gt;
&lt;br /&gt;
=== 编译 ===&lt;br /&gt;
&lt;br /&gt;
==== 1. 初始化编译环境 ====&lt;br /&gt;
  . build/envsetup.sh&lt;br /&gt;
&lt;br /&gt;
==== 2. 启动编译 ====&lt;br /&gt;
  . lunch lineage_fajita-user&lt;br /&gt;
  mka bacon&lt;br /&gt;
&lt;br /&gt;
=== 测试 ===&lt;br /&gt;
使用合适的方式将LineageOS安装到你的设备上！&lt;/div&gt;</summary>
		<author><name>Snnbyyds</name></author>
	</entry>
	<entry>
		<id>https://wiki.uotan.cn/index.php?title=%E5%A6%82%E4%BD%95%E4%BB%8E%E6%BA%90%E7%A0%81%E6%9E%84%E5%BB%BA_TWRP_Recovery&amp;diff=52</id>
		<title>如何从源码构建 TWRP Recovery</title>
		<link rel="alternate" type="text/html" href="https://wiki.uotan.cn/index.php?title=%E5%A6%82%E4%BD%95%E4%BB%8E%E6%BA%90%E7%A0%81%E6%9E%84%E5%BB%BA_TWRP_Recovery&amp;diff=52"/>
		<updated>2024-02-14T10:10:21Z</updated>

		<summary type="html">&lt;p&gt;Snnbyyds：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== 该章节将引导你从源码构建TWRP Recovery ==&lt;br /&gt;
注意：本教程以'''TWRP-12.1'''与''qti Lahaina for arm64''为例&lt;br /&gt;
=== 部署环境 ===&lt;br /&gt;
==== 1. 硬件方面的选择 ====&lt;br /&gt;
对于''TWRP''，除非你的电脑拥有较高的配置，我们一般建议你在实体机编译，以下为针对''TWRP-12.1''的推荐配置。&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;div align=center&amp;gt;&lt;br /&gt;
  &amp;lt;table&amp;gt;&lt;br /&gt;
    &amp;lt;tr align=center&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;磁盘空间&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;内存&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;tr align=center&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;40GB+&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;16GB+&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
  &amp;lt;/table&amp;gt;&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== 2. 选择合适的操作系统 ====&lt;br /&gt;
&lt;br /&gt;
请使用64位的Linux发行版，推荐使用'''Ubuntu 22.04 LTS'''&lt;br /&gt;
&lt;br /&gt;
Ubuntu安装教程： https://ubuntu.com/tutorials/install-ubuntu-desktop&lt;br /&gt;
&lt;br /&gt;
Archlinux安装教程：https://wiki.archlinux.org/title/Installation_guide&lt;br /&gt;
&lt;br /&gt;
（也可使用WSL：https://learn.microsoft.com/zh-cn/windows/wsl/install ）&lt;br /&gt;
&lt;br /&gt;
==== 3. 安装依赖项目 ====&lt;br /&gt;
对于 Ubuntu 22.04 LTS等Debian系发行版，执行以下命令&lt;br /&gt;
&lt;br /&gt;
 sudo apt update&lt;br /&gt;
 sudo apt upgrade&lt;br /&gt;
 sudo apt install bc bison build-essential ccache curl flex g++-multilib gcc-multilib git git-lfs gnupg gperf imagemagick lib32ncurses5-dev lib32readline-dev lib32z1-dev libelf-dev liblz4-tool libncurses5 libncurses5-dev libsdl1.2-dev libssl-dev libxml2 libxml2-utils lzop pngcrush rsync schedtool squashfs-tools xsltproc zip zlib1g-dev&lt;br /&gt;
&lt;br /&gt;
对于'''Archlinux''', 你可以从'''AUR'''安装&amp;lt;code&amp;gt;lineageos-devel&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== 4. 获取repo工具 ====&lt;br /&gt;
在国内我们使用清华源，执行以下命令&lt;br /&gt;
&lt;br /&gt;
  mkdir ~/bin&lt;br /&gt;
  export PATH=~/bin:$PATH&lt;br /&gt;
  cd ~/bin&lt;br /&gt;
  curl https://mirrors.tuna.tsinghua.edu.cn/git/git-repo -o repo&lt;br /&gt;
  chmod +x repo&lt;br /&gt;
  cd ~&lt;br /&gt;
&lt;br /&gt;
==== 5. 设置邮箱和用户名 ====&lt;br /&gt;
此步骤只需要重复一次&lt;br /&gt;
&lt;br /&gt;
  git config --global user.name &amp;quot;Your Name&amp;quot;&lt;br /&gt;
  git config --global user.email &amp;quot;youremail@yourdomain.com&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== 下载源代码 ===&lt;br /&gt;
==== 1. 镜像源的配置 ====&lt;br /&gt;
建议先设置从清华源更新repo工具，并配置git从清华源拉取AOSP源码&lt;br /&gt;
&lt;br /&gt;
  git config --global url.https://mirrors.tuna.tsinghua.edu.cn/git/AOSP/.insteadof https://android.googlesource.com&lt;br /&gt;
  export REPO_URL='https://mirrors.tuna.tsinghua.edu.cn/git/git-repo'&lt;br /&gt;
&lt;br /&gt;
==== 2. 获取主要源代码 ====&lt;br /&gt;
这里下载的是twrp-12.1的源代码，请灵活操作&lt;br /&gt;
* 小技巧：使用&amp;lt;code&amp;gt;--depth=1&amp;lt;/code&amp;gt;可以有效节省流量和加快拉取速度！&lt;br /&gt;
&lt;br /&gt;
  mkdir ~/twrp&lt;br /&gt;
  cd ~/twrp&lt;br /&gt;
  repo init --depth=1 -u https://github.com/minimal-manifest-twrp/platform_manifest_twrp_aosp.git -b twrp-12.1&lt;br /&gt;
  repo sync --force-sync&lt;br /&gt;
&lt;br /&gt;
==== 3. 获取设备配置 ====&lt;br /&gt;
再克隆设备树（dt）&lt;br /&gt;
&lt;br /&gt;
* 这里我们克隆'''''qti Lahaina for arm64'''''的配置，注意一般的设备树（可能有例外）命名方式为'''device_manufacture_codename''', 克隆目录为'''device/manufacture/codename'''（如''OnePlus6T''的设备树一般命名为device_oneplus_fajita, 克隆到device/oneplus/fajita下）&lt;br /&gt;
* 也有一部分设备会有common tree （如ASUS ZenFone 8 的依赖： https://github.com/TeamWin/android_device_asus_sm8350-common）&lt;br /&gt;
&lt;br /&gt;
  git clone --depth=1 -b twrp-12.1 https://github.com/QRD-Development/twrp_device_qcom_lahaina.git device/qcom/lahaina&lt;br /&gt;
&lt;br /&gt;
=== 编译 ===&lt;br /&gt;
&lt;br /&gt;
==== 1. 初始化编译环境 ====&lt;br /&gt;
  . build/envsetup.sh&lt;br /&gt;
&lt;br /&gt;
==== 2. 启动编译 ====&lt;br /&gt;
* 对于演示设备qti Lahaina for arm64（codename: lahaina）, 我们选择&amp;lt;code&amp;gt;bootimage&amp;lt;/code&amp;gt;作为构建目标&lt;br /&gt;
&lt;br /&gt;
  lunch twrp_lahaina-eng&lt;br /&gt;
  mka bootimage&lt;br /&gt;
&lt;br /&gt;
* 构建目标有多种，主要由设备本身配置方式&amp;lt;ref&amp;gt;https://github.com/minimal-manifest-twrp/platform_manifest_twrp_aosp&amp;lt;/ref&amp;gt;决定&lt;br /&gt;
* 主要的构建目标（此处已经涵盖多种情况，但撰写者仍可能会有疏漏，请灵活判断）&lt;br /&gt;
** Recovery partition：&amp;lt;code&amp;gt;mka recoveryimage&amp;lt;/code&amp;gt;&lt;br /&gt;
*** 多用于含有recovery分区的设备&lt;br /&gt;
** Boot image ramdisk: &amp;lt;code&amp;gt;mka bootimage&amp;lt;/code&amp;gt;&lt;br /&gt;
*** 不含recovery分区的a/b设备，且boot header version一般小于等于3，同时recovery resource不在vendor ramdisk内&lt;br /&gt;
** Vendor_boot image ramdisk: &amp;lt;code&amp;gt;mka vendorbootimage&amp;lt;/code&amp;gt;&lt;br /&gt;
*** 不含recovery分区的a/b设备，且boot header version一般大于等于3；对于boot header version为4的设备，最好使用modular recovery ramdisk[https://github.com/QRD-Development/twrp%20device%20qcom%20lahaina/tree/twrp-12.1-for-boot-header-v4?tab=readme-ov-file （刷写示例）]&lt;br /&gt;
&lt;br /&gt;
=== 测试 ===&lt;br /&gt;
使用合适的方式将TWRP安装到你的设备上！&lt;/div&gt;</summary>
		<author><name>Snnbyyds</name></author>
	</entry>
	<entry>
		<id>https://wiki.uotan.cn/index.php?title=%E5%A6%82%E4%BD%95%E4%BB%8E%E6%BA%90%E7%A0%81%E6%9E%84%E5%BB%BA_TWRP_Recovery&amp;diff=51</id>
		<title>如何从源码构建 TWRP Recovery</title>
		<link rel="alternate" type="text/html" href="https://wiki.uotan.cn/index.php?title=%E5%A6%82%E4%BD%95%E4%BB%8E%E6%BA%90%E7%A0%81%E6%9E%84%E5%BB%BA_TWRP_Recovery&amp;diff=51"/>
		<updated>2024-02-14T10:08:10Z</updated>

		<summary type="html">&lt;p&gt;Snnbyyds：​暮间雾&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== 该章节将引导你从源码构建TWRP Recovery ==&lt;br /&gt;
注意：本教程以'''TWRP-12.1'''与''qti Lahaina for arm64''为例&lt;br /&gt;
=== 部署环境 ===&lt;br /&gt;
==== 1. 硬件方面的选择 ====&lt;br /&gt;
对于''TWRP''，除非你的电脑拥有较高的配置，我们一般建议你在实体机编译，以下为针对''TWRP-12.1''的推荐配置。&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;div align=center&amp;gt;&lt;br /&gt;
  &amp;lt;table&amp;gt;&lt;br /&gt;
    &amp;lt;tr align=center&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;磁盘空间&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;内存&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;tr align=center&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;40GB+&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;16GB+&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
  &amp;lt;/table&amp;gt;&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== 2. 选择合适的操作系统 ====&lt;br /&gt;
&lt;br /&gt;
请使用64位的Linux发行版，推荐使用'''Ubuntu 22.04 LTS'''&lt;br /&gt;
&lt;br /&gt;
Ubuntu安装教程： https://ubuntu.com/tutorials/install-ubuntu-desktop&lt;br /&gt;
&lt;br /&gt;
Archlinux安装教程：https://wiki.archlinux.org/title/Installation_guide&lt;br /&gt;
&lt;br /&gt;
（也可使用WSL：https://learn.microsoft.com/zh-cn/windows/wsl/install ）&lt;br /&gt;
&lt;br /&gt;
==== 3. 安装依赖项目 ====&lt;br /&gt;
对于 Ubuntu 22.04 LTS等Debian系发行版，执行以下命令&lt;br /&gt;
&lt;br /&gt;
 sudo apt update&lt;br /&gt;
 sudo apt upgrade&lt;br /&gt;
 sudo apt install bc bison build-essential ccache curl flex g++-multilib gcc-multilib git git-lfs gnupg gperf imagemagick lib32ncurses5-dev lib32readline-dev lib32z1-dev libelf-dev liblz4-tool libncurses5 libncurses5-dev libsdl1.2-dev libssl-dev libxml2 libxml2-utils lzop pngcrush rsync schedtool squashfs-tools xsltproc zip zlib1g-dev&lt;br /&gt;
&lt;br /&gt;
对于'''Archlinux''', 你可以从'''AUR'''安装&amp;lt;code&amp;gt;lineageos-devel&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== 4. 获取repo工具 ====&lt;br /&gt;
在国内我们使用清华源，执行以下命令&lt;br /&gt;
&lt;br /&gt;
  mkdir ~/bin&lt;br /&gt;
  export PATH=~/bin:$PATH&lt;br /&gt;
  cd ~/bin&lt;br /&gt;
  curl https://mirrors.tuna.tsinghua.edu.cn/git/git-repo -o repo&lt;br /&gt;
  chmod +x repo&lt;br /&gt;
  cd ~&lt;br /&gt;
&lt;br /&gt;
==== 5. 设置邮箱和用户名 ====&lt;br /&gt;
此步骤只需要重复一次&lt;br /&gt;
&lt;br /&gt;
  git config --global user.name &amp;quot;Your Name&amp;quot;&lt;br /&gt;
  git config --global user.email &amp;quot;youremail@yourdomain.com&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== 下载源代码 ===&lt;br /&gt;
==== 1. 镜像源的配置 ====&lt;br /&gt;
建议先设置从清华源更新repo工具，并配置git从清华源拉取AOSP源码&lt;br /&gt;
&lt;br /&gt;
  git config --global url.https://mirrors.tuna.tsinghua.edu.cn/git/AOSP/.insteadof https://android.googlesource.com&lt;br /&gt;
  export REPO_URL='https://mirrors.tuna.tsinghua.edu.cn/git/git-repo'&lt;br /&gt;
&lt;br /&gt;
==== 2. 获取主要源代码 ====&lt;br /&gt;
这里下载的是twrp-12.1的源代码，请灵活操作&lt;br /&gt;
* 小技巧：使用&amp;lt;code&amp;gt;--depth=1&amp;lt;/code&amp;gt;可以有效节省流量和加快拉取速度！&lt;br /&gt;
&lt;br /&gt;
  mkdir ~/twrp&lt;br /&gt;
  cd ~/twrp&lt;br /&gt;
  repo init --depth=1 -u https://github.com/minimal-manifest-twrp/platform_manifest_twrp_aosp.git -b twrp-12.1&lt;br /&gt;
  repo sync --force-sync&lt;br /&gt;
&lt;br /&gt;
==== 3. 获取设备配置 ====&lt;br /&gt;
再克隆设备树（dt）&lt;br /&gt;
&lt;br /&gt;
* 这里我们克隆'''''qti Lahaina for arm64'''''的配置，注意一般的设备树（可能有例外）命名方式为'''device_manufacture_codename''', 克隆目录为'''device/manufacture/codename'''（如''OnePlus6T''的设备树一般命名为device_oneplus_fajita, 克隆到device/oneplus/fajita下）&lt;br /&gt;
* 也有一部分设备会有common tree （如ASUS ZenFone 8 的依赖： https://github.com/TeamWin/android_device_asus_sm8350-common）&lt;br /&gt;
&lt;br /&gt;
  git clone --depth=1 -b twrp-12.1 https://github.com/QRD-Development/twrp_device_qcom_lahaina.git device/qcom/lahaina&lt;br /&gt;
&lt;br /&gt;
=== 编译 ===&lt;br /&gt;
&lt;br /&gt;
==== 1. 初始化编译环境 ====&lt;br /&gt;
  . build/envsetup.sh&lt;br /&gt;
&lt;br /&gt;
==== 2. 启动编译 ====&lt;br /&gt;
* 对于演示设备qti Lahaina for arm64（codename: lahaina）, 我们选择&amp;lt;code&amp;gt;bootimage&amp;lt;/code&amp;gt;作为构建目标&lt;br /&gt;
&lt;br /&gt;
  lunch twrp_lahaina-eng&lt;br /&gt;
  mka bootimage&lt;br /&gt;
&lt;br /&gt;
* 构建目标有多种，主要由设备本身配置方式&amp;lt;ref&amp;gt;https://github.com/minimal-manifest-twrp/platform_manifest_twrp_aosp&amp;lt;/ref&amp;gt;决定&lt;br /&gt;
* 主要的构建目标（此处已经涵盖多种情况，但撰写者仍可能会有疏漏，请灵活判断）&lt;br /&gt;
** Recovery partition：&amp;lt;code&amp;gt;mka recoveryimage&amp;lt;/code&amp;gt;&lt;br /&gt;
*** 多用于含有recovery分区的设备&lt;br /&gt;
** Boot image ramdisk: &amp;lt;code&amp;gt;mka bootimage&amp;lt;/code&amp;gt;&lt;br /&gt;
*** 不含recovery分区的a/b设备，且boot header version一般小于等于3，同时recovery resource不在vendor ramdisk内&lt;br /&gt;
** Vendor_boot image ramdisk: &amp;lt;code&amp;gt;mka vendorbootimage&amp;lt;/code&amp;gt;&lt;br /&gt;
*** 不含recovery分区的a/b设备，且boot header version一般大于等于3；对于boot header version为4的设备，最好使用modular recovery ramdisk[https://github.com/QRD-Development/twrp%20device%20qcom%20lahaina/tree/twrp-12.1-for-boot-header-v4?tab=readme-ov-file （刷写示例）]&lt;/div&gt;</summary>
		<author><name>Snnbyyds</name></author>
	</entry>
	<entry>
		<id>https://wiki.uotan.cn/index.php?title=%E5%A6%82%E4%BD%95%E4%BB%8E%E6%BA%90%E7%A0%81%E6%9E%84%E5%BB%BA_TWRP_Recovery&amp;diff=48</id>
		<title>如何从源码构建 TWRP Recovery</title>
		<link rel="alternate" type="text/html" href="https://wiki.uotan.cn/index.php?title=%E5%A6%82%E4%BD%95%E4%BB%8E%E6%BA%90%E7%A0%81%E6%9E%84%E5%BB%BA_TWRP_Recovery&amp;diff=48"/>
		<updated>2024-02-14T09:56:50Z</updated>

		<summary type="html">&lt;p&gt;Snnbyyds：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== 该章节将引导你从源码构建TWRP Recovery ==&lt;br /&gt;
注意：本教程以'''TWRP-12.1'''与''qti Lahaina for arm64''为例&lt;br /&gt;
=== 部署环境 ===&lt;br /&gt;
==== 1. 硬件方面的选择 ====&lt;br /&gt;
对于''TWRP''，除非你的电脑拥有较高的配置，我们一般建议你在实体机编译，以下为针对''TWRP-12.1''的推荐配置。&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;div align=center&amp;gt;&lt;br /&gt;
  &amp;lt;table&amp;gt;&lt;br /&gt;
    &amp;lt;tr align=center&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;磁盘空间&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;内存&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;tr align=center&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;40GB+&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;16GB+&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
  &amp;lt;/table&amp;gt;&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== 2. 选择合适的操作系统 ====&lt;br /&gt;
&lt;br /&gt;
请使用64位的Linux发行版，推荐使用'''Ubuntu 22.04 LTS'''&lt;br /&gt;
&lt;br /&gt;
Ubuntu安装教程： https://ubuntu.com/tutorials/install-ubuntu-desktop&lt;br /&gt;
&lt;br /&gt;
Archlinux安装教程：https://wiki.archlinux.org/title/Installation_guide&lt;br /&gt;
&lt;br /&gt;
（也可使用WSL：https://learn.microsoft.com/zh-cn/windows/wsl/install ）&lt;br /&gt;
&lt;br /&gt;
==== 3. 安装依赖项目 ====&lt;br /&gt;
对于 Ubuntu 22.04 LTS等Debian系发行版，执行以下命令&lt;br /&gt;
&lt;br /&gt;
 sudo apt update&lt;br /&gt;
 sudo apt upgrade&lt;br /&gt;
 sudo apt install bc bison build-essential ccache curl flex g++-multilib gcc-multilib git git-lfs gnupg gperf imagemagick lib32ncurses5-dev lib32readline-dev lib32z1-dev libelf-dev liblz4-tool libncurses5 libncurses5-dev libsdl1.2-dev libssl-dev libxml2 libxml2-utils lzop pngcrush rsync schedtool squashfs-tools xsltproc zip zlib1g-dev&lt;br /&gt;
&lt;br /&gt;
对于'''Archlinux''', 你可以从'''AUR'''安装&amp;lt;code&amp;gt;lineageos-devel&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== 4. 获取repo工具 ====&lt;br /&gt;
在国内我们使用清华源，执行以下命令&lt;br /&gt;
&lt;br /&gt;
  mkdir ~/bin&lt;br /&gt;
  export PATH=~/bin:$PATH&lt;br /&gt;
  cd ~/bin&lt;br /&gt;
  curl https://mirrors.tuna.tsinghua.edu.cn/git/git-repo -o repo&lt;br /&gt;
  chmod +x repo&lt;br /&gt;
  cd ~&lt;br /&gt;
&lt;br /&gt;
==== 5. 设置邮箱和用户名 ====&lt;br /&gt;
此步骤只需要重复一次&lt;br /&gt;
&lt;br /&gt;
  git config --global user.name &amp;quot;Your Name&amp;quot;&lt;br /&gt;
  git config --global user.email &amp;quot;youremail@yourdomain.com&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== 下载源代码 ===&lt;br /&gt;
==== 1. 镜像源的配置 ====&lt;br /&gt;
建议先设置从清华源更新repo工具，并配置git从清华源拉取AOSP源码&lt;br /&gt;
&lt;br /&gt;
  git config --global url.https://mirrors.tuna.tsinghua.edu.cn/git/AOSP/.insteadof https://android.googlesource.com&lt;br /&gt;
  export REPO_URL='https://mirrors.tuna.tsinghua.edu.cn/git/git-repo'&lt;br /&gt;
&lt;br /&gt;
==== 2. 获取主要源代码 ====&lt;br /&gt;
这里下载的是twrp-12.1的源代码，请灵活操作&lt;br /&gt;
* 小技巧：使用&amp;lt;code&amp;gt;--depth=1&amp;lt;/code&amp;gt;可以有效节省流量和加快拉取速度！&lt;br /&gt;
&lt;br /&gt;
  mkdir ~/twrp&lt;br /&gt;
  cd ~/twrp&lt;br /&gt;
  repo init --depth=1 -u https://github.com/minimal-manifest-twrp/platform_manifest_twrp_aosp.git -b twrp-12.1&lt;br /&gt;
  repo sync --force-sync&lt;br /&gt;
&lt;br /&gt;
==== 3. 获取设备配置 ====&lt;br /&gt;
再克隆设备树（dt）&lt;br /&gt;
&lt;br /&gt;
* 这里我们克隆'''''qti Lahaina for arm64'''''的配置，注意一般的设备树（可能有例外）命名方式为'''device_manufacture_codename''', 克隆目录为'''device/manufacture/codename'''（如''OnePlus6T''的设备树一般命名为device_oneplus_fajita, 克隆到device/oneplus/fajita下）&lt;br /&gt;
* 也有一部分设备会有common tree （如ASUS ZenFone 8 的依赖： https://github.com/TeamWin/android_device_asus_sm8350-common）&lt;br /&gt;
&lt;br /&gt;
  git clone --depth=1 -b twrp-12.1 https://github.com/QRD-Development/twrp_device_qcom_lahaina.git device/qcom/lahaina&lt;br /&gt;
&lt;br /&gt;
=== 编译 ===&lt;br /&gt;
&lt;br /&gt;
==== 1. 初始化编译环境 ====&lt;br /&gt;
  . build/envsetup.sh&lt;br /&gt;
&lt;br /&gt;
==== 2. 启动编译 ====&lt;br /&gt;
* 对于演示设备qti Lahaina for arm64（codename: lahaina）, 我们选择&amp;lt;code&amp;gt;bootimage&amp;lt;/code&amp;gt;作为构建目标&lt;br /&gt;
&lt;br /&gt;
  lunch twrp_lahaina-eng&lt;br /&gt;
  mka bootimage&lt;br /&gt;
&lt;br /&gt;
* 构建目标有多种，主要由设备本身配置方式&amp;lt;ref&amp;gt;https://github.com/minimal-manifest-twrp/platform_manifest_twrp_aosp&amp;lt;/ref&amp;gt;决定&lt;/div&gt;</summary>
		<author><name>Snnbyyds</name></author>
	</entry>
	<entry>
		<id>https://wiki.uotan.cn/index.php?title=%E9%A6%96%E9%A1%B5&amp;diff=45</id>
		<title>首页</title>
		<link rel="alternate" type="text/html" href="https://wiki.uotan.cn/index.php?title=%E9%A6%96%E9%A1%B5&amp;diff=45"/>
		<updated>2024-02-14T07:22:36Z</updated>

		<summary type="html">&lt;p&gt;Snnbyyds：​/* 知名玩机博主 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;strong&amp;gt;Uotan&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 刷机入门 ==&lt;br /&gt;
# [[ADB与Fastboot驱动]]&lt;br /&gt;
# [[解锁Bootloader]]&lt;br /&gt;
# [[刷入第三方Recovery]]&lt;br /&gt;
# [[获取Root权限]]&lt;br /&gt;
# [[Miflash线刷]]&lt;br /&gt;
&lt;br /&gt;
== 进阶内容 ==&lt;br /&gt;
# [[使用柚坛工具箱进行线刷]]&lt;br /&gt;
# [[ADB SideLoad]]&lt;br /&gt;
# [[Fastboot Update]]&lt;br /&gt;
# [[刷入任意单独镜像]]&lt;br /&gt;
# [[9008深度刷机]]&lt;br /&gt;
# [[提取分区]]&lt;br /&gt;
# [[修改分区]]&lt;br /&gt;
# [[QCN]]&lt;br /&gt;
# [[Super_Empty]]&lt;br /&gt;
&lt;br /&gt;
== 系统修改 ==&lt;br /&gt;
# [[ADB命令]]&lt;br /&gt;
# [[Magisk模块]]&lt;br /&gt;
# [[LsPosed 模块]]&lt;br /&gt;
# [[KSU 模块]]&lt;br /&gt;
# [[修改教程]]&lt;br /&gt;
&lt;br /&gt;
== Mindows工具箱 ==&lt;br /&gt;
# [[为手机刷入Windows]]&lt;br /&gt;
# [[更新驱动程序]]&lt;br /&gt;
# [[重新安装Windows]]&lt;br /&gt;
&lt;br /&gt;
== 高级内容 ==&lt;br /&gt;
# [[Android 分区详解]]&lt;br /&gt;
# [[GKI 内核]]&lt;br /&gt;
# [[如何解包 Android ROM]]&lt;br /&gt;
# [[如何打包 Android ROM]]&lt;br /&gt;
# [[如何从源码构建 TWRP Recovery]]&lt;br /&gt;
# [[如何从源码构建 Android ROM]]&lt;br /&gt;
&lt;br /&gt;
== 知名玩机博主 ==&lt;br /&gt;
# [[极客湾Geekerwan]]&lt;br /&gt;
# [[小白测评]]&lt;br /&gt;
# [[微积分WekiHome]]&lt;br /&gt;
# [[晨钟酱Official]]&lt;br /&gt;
# [[江灵夏草]]&lt;br /&gt;
# [[柚坛UOTAN]]&lt;br /&gt;
# [[派大宝UI]]&lt;br /&gt;
# [[我可以等你十年]]&lt;br /&gt;
# [[某贼]]&lt;br /&gt;
# [[凡生TalkING]]&lt;br /&gt;
# [[暮间雾]]&lt;br /&gt;
&lt;br /&gt;
== 知名良心开发者 ==&lt;br /&gt;
&lt;br /&gt;
== 更多词条 ==&lt;br /&gt;
# [[设备代号收录集合]]&lt;br /&gt;
# [[通用系统镜像]]&lt;br /&gt;
# [[AOSP]]&lt;/div&gt;</summary>
		<author><name>Snnbyyds</name></author>
	</entry>
	<entry>
		<id>https://wiki.uotan.cn/index.php?title=%E5%A6%82%E4%BD%95%E4%BB%8E%E6%BA%90%E7%A0%81%E6%9E%84%E5%BB%BA_TWRP_Recovery&amp;diff=44</id>
		<title>如何从源码构建 TWRP Recovery</title>
		<link rel="alternate" type="text/html" href="https://wiki.uotan.cn/index.php?title=%E5%A6%82%E4%BD%95%E4%BB%8E%E6%BA%90%E7%A0%81%E6%9E%84%E5%BB%BA_TWRP_Recovery&amp;diff=44"/>
		<updated>2024-02-14T07:21:24Z</updated>

		<summary type="html">&lt;p&gt;Snnbyyds：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== 该章节将引导你从源码构建TWRP Recovery ==&lt;br /&gt;
注意：本教程以'''TWRP-12.1'''与''qti Lahaina for arm64''为例&lt;br /&gt;
=== 部署环境 ===&lt;br /&gt;
==== 1. 硬件方面的选择 ====&lt;br /&gt;
对于''TWRP''，除非你的电脑拥有较高的配置，我们一般建议你在实体机编译，以下为针对''TWRP-12.1''的推荐配置。&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;div align=center&amp;gt;&lt;br /&gt;
  &amp;lt;table&amp;gt;&lt;br /&gt;
    &amp;lt;tr align=center&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;磁盘空间&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;内存&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;tr align=center&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;40GB+&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;16GB+&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
  &amp;lt;/table&amp;gt;&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== 2. 选择合适的操作系统 ====&lt;br /&gt;
&lt;br /&gt;
请使用64位的Linux发行版，推荐使用'''Ubuntu 22.04 LTS'''&lt;br /&gt;
&lt;br /&gt;
Ubuntu安装教程： https://ubuntu.com/tutorials/install-ubuntu-desktop&lt;br /&gt;
&lt;br /&gt;
Archlinux安装教程：https://wiki.archlinux.org/title/Installation_guide&lt;br /&gt;
&lt;br /&gt;
==== 3. 安装依赖项目 ====&lt;br /&gt;
对于 Ubuntu 22.04 LTS等Debian系发行版，执行以下命令&lt;br /&gt;
&lt;br /&gt;
 sudo apt update&lt;br /&gt;
 sudo apt upgrade&lt;br /&gt;
 sudo apt install bc bison build-essential ccache curl flex g++-multilib gcc-multilib git git-lfs gnupg gperf imagemagick lib32ncurses5-dev lib32readline-dev lib32z1-dev libelf-dev liblz4-tool libncurses5 libncurses5-dev libsdl1.2-dev libssl-dev libxml2 libxml2-utils lzop pngcrush rsync schedtool squashfs-tools xsltproc zip zlib1g-dev&lt;br /&gt;
&lt;br /&gt;
对于'''Archlinux''', 你可以从'''AUR'''安装&amp;lt;code&amp;gt;lineageos-devel&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== 4. 获取repo工具 ====&lt;br /&gt;
此处我们使用清华源，执行以下命令&lt;br /&gt;
&lt;br /&gt;
  mkdir ~/bin&lt;br /&gt;
  export PATH=~/bin:$PATH&lt;br /&gt;
  cd ~/bin&lt;br /&gt;
  curl https://mirrors.tuna.tsinghua.edu.cn/git/git-repo -o repo&lt;br /&gt;
  chmod +x repo&lt;br /&gt;
  cd ~&lt;br /&gt;
&lt;br /&gt;
==== 5. 设置邮箱和用户名 ====&lt;br /&gt;
此步骤只需要重复一次&lt;br /&gt;
&lt;br /&gt;
  git config --global user.name &amp;quot;Your Name&amp;quot;&lt;br /&gt;
  git config --global user.email &amp;quot;youremail@yourdomain.com&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== 下载源代码 ===&lt;br /&gt;
建议先设置从清华源更新repo工具，并配置git从清华源拉取AOSP源码&lt;br /&gt;
  git config --global url.https://mirrors.tuna.tsinghua.edu.cn/git/AOSP/.insteadof https://android.googlesource.com&lt;br /&gt;
  export REPO_URL='https://mirrors.tuna.tsinghua.edu.cn/git/git-repo'&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
这里下载的是twrp-12.1的源代码，请灵活操作&lt;br /&gt;
&lt;br /&gt;
  mkdir ~/twrp&lt;br /&gt;
  cd ~/twrp&lt;br /&gt;
&lt;br /&gt;
  repo init --depth=1 -u https://github.com/minimal-manifest-twrp/platform_manifest_twrp_aosp.git -b twrp-12.1&lt;br /&gt;
  repo sync --force-sync&lt;br /&gt;
&lt;br /&gt;
再克隆设备树（dt）&lt;br /&gt;
&lt;br /&gt;
* 这里我们克隆'''''qti Lahaina for arm64'''''的配置，注意一般的设备树命名方式为'''device_manufacture_codename''', 克隆目录为'''device/manufacture/codename'''&lt;br /&gt;
&lt;br /&gt;
  git clone --depth=1 -b twrp-12.1 https://github.com/QRD-Development/twrp_device_qcom_lahaina.git device/qcom/lahaina&lt;br /&gt;
&lt;br /&gt;
=== 编译 ===&lt;br /&gt;
  . build/envsetup.sh&lt;br /&gt;
  lunch twrp_lahaina-eng&lt;br /&gt;
  mka bootimage&lt;/div&gt;</summary>
		<author><name>Snnbyyds</name></author>
	</entry>
	<entry>
		<id>https://wiki.uotan.cn/index.php?title=%E5%A6%82%E4%BD%95%E4%BB%8E%E6%BA%90%E7%A0%81%E6%9E%84%E5%BB%BA_TWRP_Recovery&amp;diff=38</id>
		<title>如何从源码构建 TWRP Recovery</title>
		<link rel="alternate" type="text/html" href="https://wiki.uotan.cn/index.php?title=%E5%A6%82%E4%BD%95%E4%BB%8E%E6%BA%90%E7%A0%81%E6%9E%84%E5%BB%BA_TWRP_Recovery&amp;diff=38"/>
		<updated>2024-02-14T05:10:00Z</updated>

		<summary type="html">&lt;p&gt;Snnbyyds：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;markdown&amp;gt;&lt;br /&gt;
== 该章节将引导你从源码构建TWRP Recovery ==&lt;br /&gt;
注意：本教程以'''TWRP-12.1'''与''qti Lahaina for arm64''为例&lt;br /&gt;
=== 部署环境 ===&lt;br /&gt;
# '''硬件方面的选择'''&lt;br /&gt;
对于''TWRP''，除非你的电脑拥有较高的配置，我们一般建议你在实体机编译，以下为针对''TWRP-12.1''的推荐配置。&lt;br /&gt;
  &amp;lt;div align=center&amp;gt;&lt;br /&gt;
  &amp;lt;table&amp;gt;&lt;br /&gt;
    &amp;lt;tr align=center&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;磁盘空间&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;内存&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;tr align=center&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;40GB+&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;16GB+&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
  &amp;lt;/table&amp;gt;&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
# '''选择合适的操作系统'''&lt;br /&gt;
* 使用64位的Linux发行版，推荐使用Ubuntu 22.04 LTS&lt;br /&gt;
```&lt;br /&gt;
sudo apt update&lt;br /&gt;
sudo apt upgrade&lt;br /&gt;
sudo apt install bc bison build-essential ccache curl flex g++-multilib gcc-multilib git git-lfs gnupg gperf imagemagick lib32ncurses5-dev lib32readline-dev lib32z1-dev libelf-dev liblz4-tool libncurses5 libncurses5-dev libsdl1.2-dev libssl-dev libxml2 libxml2-utils lzop pngcrush rsync schedtool squashfs-tools xsltproc zip zlib1g-dev&lt;br /&gt;
```&lt;br /&gt;
对于Archlinux, 你可以从AUR安装`lineageos-devel`&lt;br /&gt;
&amp;lt;/markdown&amp;gt;&lt;/div&gt;</summary>
		<author><name>Snnbyyds</name></author>
	</entry>
	<entry>
		<id>https://wiki.uotan.cn/index.php?title=%E9%A6%96%E9%A1%B5&amp;diff=37</id>
		<title>首页</title>
		<link rel="alternate" type="text/html" href="https://wiki.uotan.cn/index.php?title=%E9%A6%96%E9%A1%B5&amp;diff=37"/>
		<updated>2024-02-14T05:04:24Z</updated>

		<summary type="html">&lt;p&gt;Snnbyyds：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;strong&amp;gt;Uotan&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 刷机入门 ==&lt;br /&gt;
# [[ADB与Fastboot驱动]]&lt;br /&gt;
# [[解锁Bootloader]]&lt;br /&gt;
# [[刷入第三方Recovery]]&lt;br /&gt;
# [[获取Root权限]]&lt;br /&gt;
# [[Miflash线刷]]&lt;br /&gt;
&lt;br /&gt;
== 进阶内容 ==&lt;br /&gt;
# [[使用柚坛工具箱进行线刷]]&lt;br /&gt;
# [[ADB SideLoad]]&lt;br /&gt;
# [[Fastboot Update]]&lt;br /&gt;
# [[刷入任意单独镜像]]&lt;br /&gt;
# [[9008深度刷机]]&lt;br /&gt;
# [[提取分区]]&lt;br /&gt;
# [[修改分区]]&lt;br /&gt;
# [[QCN]]&lt;br /&gt;
# [[Super_Empty]]&lt;br /&gt;
&lt;br /&gt;
== 系统修改 ==&lt;br /&gt;
# [[ADB命令]]&lt;br /&gt;
# [[Magisk模块]]&lt;br /&gt;
# [[LsPosed 模块]]&lt;br /&gt;
# [[KSU 模块]]&lt;br /&gt;
# [[修改教程]]&lt;br /&gt;
&lt;br /&gt;
== Mindows工具箱 ==&lt;br /&gt;
# [[为手机刷入Windows]]&lt;br /&gt;
# [[更新驱动程序]]&lt;br /&gt;
# [[重新安装Windows]]&lt;br /&gt;
&lt;br /&gt;
== 高级内容 ==&lt;br /&gt;
# [[Android 分区详解]]&lt;br /&gt;
# [[GKI 内核]]&lt;br /&gt;
# [[如何解包 Android ROM]]&lt;br /&gt;
# [[如何打包 Android ROM]]&lt;br /&gt;
# [[如何从源码构建 TWRP Recovery]]&lt;br /&gt;
# [[如何从源码构建 Android ROM]]&lt;br /&gt;
&lt;br /&gt;
== 知名玩机博主 ==&lt;br /&gt;
# [[极客湾Geekerwan]]&lt;br /&gt;
# [[小白测评]]&lt;br /&gt;
# [[微积分WekiHome]]&lt;br /&gt;
# [[晨钟酱Official]]&lt;br /&gt;
# [[江灵夏草]]&lt;br /&gt;
# [[柚坛UOTAN]]&lt;br /&gt;
# [[派大宝UI]]&lt;br /&gt;
# [[我可以等你十年]]&lt;br /&gt;
# [[某贼]]&lt;br /&gt;
# [[凡生TalkING]]&lt;br /&gt;
# [[暮间雾]]&lt;br /&gt;
&lt;br /&gt;
== 知名良心开发者 ==&lt;br /&gt;
&lt;br /&gt;
== 更多词条 ==&lt;br /&gt;
# [[设备代号收录集合]]&lt;br /&gt;
# [[通用系统镜像]]&lt;br /&gt;
# [[AOSP]]&lt;/div&gt;</summary>
		<author><name>Snnbyyds</name></author>
	</entry>
	<entry>
		<id>https://wiki.uotan.cn/index.php?title=%E5%A6%82%E4%BD%95%E4%BB%8E%E6%BA%90%E7%A0%81%E6%9E%84%E5%BB%BA_TWRP_Recovery&amp;diff=36</id>
		<title>如何从源码构建 TWRP Recovery</title>
		<link rel="alternate" type="text/html" href="https://wiki.uotan.cn/index.php?title=%E5%A6%82%E4%BD%95%E4%BB%8E%E6%BA%90%E7%A0%81%E6%9E%84%E5%BB%BA_TWRP_Recovery&amp;diff=36"/>
		<updated>2024-02-14T04:55:09Z</updated>

		<summary type="html">&lt;p&gt;Snnbyyds：​/* 部署环境 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== 该章节将引导你从源码构建TWRP Recovery ==&lt;br /&gt;
注意：本教程以'''TWRP-12.1'''与''qti Lahaina for arm64''为例&lt;br /&gt;
&amp;lt;markdown&amp;gt;&lt;br /&gt;
=== 部署环境 ===&lt;br /&gt;
# '''硬件方面的选择'''&lt;br /&gt;
对于''TWRP''，除非你的电脑拥有较高的配置，我们一般建议你在实体机编译，以下为针对''TWRP-12.1''的推荐配置。&lt;br /&gt;
  &amp;lt;div align=center&amp;gt;&lt;br /&gt;
  &amp;lt;table&amp;gt;&lt;br /&gt;
    &amp;lt;tr align=center&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;磁盘空间&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;内存&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;tr align=center&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;40GB+&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;16GB+&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
  &amp;lt;/table&amp;gt;&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
# '''选择合适的操作系统'''&lt;br /&gt;
* 使用64位的Linux发行版，推荐使用Ubuntu 22.04 LTS&lt;br /&gt;
```&lt;br /&gt;
sudo apt update&lt;br /&gt;
sudo apt upgrade&lt;br /&gt;
sudo apt install bc bison build-essential ccache curl flex g++-multilib gcc-multilib git git-lfs gnupg gperf imagemagick lib32ncurses5-dev lib32readline-dev lib32z1-dev libelf-dev liblz4-tool libncurses5 libncurses5-dev libsdl1.2-dev libssl-dev libxml2 libxml2-utils lzop pngcrush rsync schedtool squashfs-tools xsltproc zip zlib1g-dev&lt;br /&gt;
```&lt;br /&gt;
对于Archlinux, 你可以从AUR安装`lineageos-devel`&lt;br /&gt;
&amp;lt;/markdown&amp;gt;&lt;/div&gt;</summary>
		<author><name>Snnbyyds</name></author>
	</entry>
	<entry>
		<id>https://wiki.uotan.cn/index.php?title=%E5%A6%82%E4%BD%95%E4%BB%8E%E6%BA%90%E7%A0%81%E6%9E%84%E5%BB%BA_TWRP_Recovery&amp;diff=35</id>
		<title>如何从源码构建 TWRP Recovery</title>
		<link rel="alternate" type="text/html" href="https://wiki.uotan.cn/index.php?title=%E5%A6%82%E4%BD%95%E4%BB%8E%E6%BA%90%E7%A0%81%E6%9E%84%E5%BB%BA_TWRP_Recovery&amp;diff=35"/>
		<updated>2024-02-14T04:33:31Z</updated>

		<summary type="html">&lt;p&gt;Snnbyyds：​创建页面，内容为“== 该章节将引导你从源码构建TWRP Recovery == 注意：本教程以'''TWRP-12.1'''与''qti Lahaina for arm64''为例 === 部署环境 === # '''硬件方面的选择''' 对于''TWRP''，除非你的电脑拥有较高的配置，我们一般建议你在实体机编译，以下为针对''TWRP-12.1''的推荐配置。 &amp;lt;div align=center&amp;gt; &amp;lt;table&amp;gt;   &amp;lt;tr align=center&amp;gt;     &amp;lt;td&amp;gt;磁盘空间&amp;lt;/td&amp;gt;     &amp;lt;td&amp;gt;内存&amp;lt;/td&amp;gt;   &amp;lt;/tr&amp;gt;   &amp;lt;tr align=center&amp;gt;     &amp;lt;td&amp;gt;40GB+&amp;lt;/td&amp;gt;…”&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== 该章节将引导你从源码构建TWRP Recovery ==&lt;br /&gt;
注意：本教程以'''TWRP-12.1'''与''qti Lahaina for arm64''为例&lt;br /&gt;
=== 部署环境 ===&lt;br /&gt;
# '''硬件方面的选择'''&lt;br /&gt;
对于''TWRP''，除非你的电脑拥有较高的配置，我们一般建议你在实体机编译，以下为针对''TWRP-12.1''的推荐配置。&lt;br /&gt;
&amp;lt;div align=center&amp;gt;&lt;br /&gt;
&amp;lt;table&amp;gt;&lt;br /&gt;
  &amp;lt;tr align=center&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;磁盘空间&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;内存&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
  &amp;lt;tr align=center&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;40GB+&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;16GB+&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
# '''选择合适的操作系统'''&lt;br /&gt;
* 使用64位的Linux发行版，推荐使用Ubuntu 22.04 LTS&lt;br /&gt;
&lt;br /&gt;
```&lt;br /&gt;
sudo apt update&lt;br /&gt;
sudo apt upgrade&lt;br /&gt;
sudo apt install bc bison build-essential ccache curl flex g++-multilib gcc-multilib git git-lfs gnupg gperf imagemagick lib32ncurses5-dev lib32readline-dev lib32z1-dev libelf-dev liblz4-tool libncurses5 libncurses5-dev libsdl1.2-dev libssl-dev libxml2 libxml2-utils lzop pngcrush rsync schedtool squashfs-tools xsltproc zip zlib1g-dev&lt;br /&gt;
```&lt;br /&gt;
对于Archlinux, 你可以从AUR安装`lineageos-devel`&lt;/div&gt;</summary>
		<author><name>Snnbyyds</name></author>
	</entry>
	<entry>
		<id>https://wiki.uotan.cn/index.php?title=%E9%A6%96%E9%A1%B5&amp;diff=34</id>
		<title>首页</title>
		<link rel="alternate" type="text/html" href="https://wiki.uotan.cn/index.php?title=%E9%A6%96%E9%A1%B5&amp;diff=34"/>
		<updated>2024-02-14T04:06:33Z</updated>

		<summary type="html">&lt;p&gt;Snnbyyds：​/* 知名玩机博主 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;strong&amp;gt;Uotan&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 刷机入门 ==&lt;br /&gt;
# [[ADB与Fastboot驱动]]&lt;br /&gt;
# [[解锁Bootloader]]&lt;br /&gt;
# [[刷入第三方Recovery]]&lt;br /&gt;
# [[获取Root权限]]&lt;br /&gt;
# [[Miflash线刷]]&lt;br /&gt;
&lt;br /&gt;
== 进阶内容 ==&lt;br /&gt;
# [[使用柚坛工具箱进行线刷]]&lt;br /&gt;
# [[ADB SideLoad]]&lt;br /&gt;
# [[Fastboot Update]]&lt;br /&gt;
# [[刷入任意单独镜像]]&lt;br /&gt;
# [[9008深度刷机]]&lt;br /&gt;
# [[提取分区]]&lt;br /&gt;
# [[修改分区]]&lt;br /&gt;
# [[QCN]]&lt;br /&gt;
# [[Super_Empty]]&lt;br /&gt;
&lt;br /&gt;
== 系统修改 ==&lt;br /&gt;
# [[ADB命令]]&lt;br /&gt;
# [[Magisk模块]]&lt;br /&gt;
# [[LsPosed 模块]]&lt;br /&gt;
# [[KSU 模块]]&lt;br /&gt;
# [[修改教程]]&lt;br /&gt;
&lt;br /&gt;
== Mindows工具箱 ==&lt;br /&gt;
# [[为手机刷入Windows]]&lt;br /&gt;
# [[更新驱动程序]]&lt;br /&gt;
# [[重新安装Windows]]&lt;br /&gt;
&lt;br /&gt;
== 高级内容 ==&lt;br /&gt;
# [[Android 分区详解]]&lt;br /&gt;
# [[GKI 内核]]&lt;br /&gt;
# [[如何解包 Android ROM]]&lt;br /&gt;
# [[如何打包 Android ROM]]&lt;br /&gt;
# [[如何从源码构建 TWRP Recovery]]&lt;br /&gt;
# [[如何从源码构建 Android ROM]]&lt;br /&gt;
&lt;br /&gt;
== 知名玩机博主 ==&lt;br /&gt;
# [[极客湾Geekerwan]]&lt;br /&gt;
# [[小白测评]]&lt;br /&gt;
# [[微积分WekiHome]]&lt;br /&gt;
# [[晨钟酱Official]]&lt;br /&gt;
# [[江灵夏草]]&lt;br /&gt;
# [[柚坛UOTAN]]&lt;br /&gt;
# [[派大宝UI]]&lt;br /&gt;
# [[我可以等你十年]]&lt;br /&gt;
# [[某贼]]&lt;br /&gt;
# [[凡生TalkING]]&lt;br /&gt;
# [[暮间雾]]&lt;br /&gt;
&lt;br /&gt;
== 更多词条 ==&lt;br /&gt;
# [[设备代号收录集合]]&lt;br /&gt;
# [[通用系统镜像]]&lt;br /&gt;
# [[AOSP]]&lt;/div&gt;</summary>
		<author><name>Snnbyyds</name></author>
	</entry>
	<entry>
		<id>https://wiki.uotan.cn/index.php?title=%E9%A6%96%E9%A1%B5&amp;diff=15</id>
		<title>首页</title>
		<link rel="alternate" type="text/html" href="https://wiki.uotan.cn/index.php?title=%E9%A6%96%E9%A1%B5&amp;diff=15"/>
		<updated>2024-02-11T14:01:22Z</updated>

		<summary type="html">&lt;p&gt;Snnbyyds：​/* 初窥门径 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;strong&amp;gt;Uotan&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 初窥门径 ==&lt;br /&gt;
# 基础工具使用&lt;br /&gt;
* adb与fastboot命令&lt;br /&gt;
* 柚坛搞机工具箱&lt;br /&gt;
* 柚坛搞机工具箱（旧式）&lt;br /&gt;
* 如何成为掌管msm-4.19的神？&lt;br /&gt;
* 什么是柚坛？&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources 本地化msm-4.19到您的语言]&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Combating_spam 了解如何在您的wiki上打击暮间雾]&lt;br /&gt;
&lt;br /&gt;
== 田所浩二的力量 ==&lt;br /&gt;
&lt;br /&gt;
== 渐入佳境 ==&lt;br /&gt;
* [https://wiki.uotan.cn/index.php?title=%E7%B1%BB%E5%8E%9F%E7%94%9F%E5%85%A5%E9%97%A8 如何像纯白的龙一样强大]&lt;/div&gt;</summary>
		<author><name>Snnbyyds</name></author>
	</entry>
	<entry>
		<id>https://wiki.uotan.cn/index.php?title=%E9%A6%96%E9%A1%B5&amp;diff=14</id>
		<title>首页</title>
		<link rel="alternate" type="text/html" href="https://wiki.uotan.cn/index.php?title=%E9%A6%96%E9%A1%B5&amp;diff=14"/>
		<updated>2024-02-11T13:48:15Z</updated>

		<summary type="html">&lt;p&gt;Snnbyyds：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;strong&amp;gt;Uotan&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 初窥门径 ==&lt;br /&gt;
* 谁是暮间雾？&lt;br /&gt;
* 如何成为掌管msm-4.19的神？&lt;br /&gt;
* 什么是柚坛？&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources 本地化msm-4.19到您的语言]&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Combating_spam 了解如何在您的wiki上打击暮间雾]&lt;br /&gt;
&lt;br /&gt;
== 渐入佳境 ==&lt;br /&gt;
* [https://wiki.uotan.cn/index.php?title=%E7%B1%BB%E5%8E%9F%E7%94%9F%E5%85%A5%E9%97%A8 如何像纯白的龙一样强大]&lt;/div&gt;</summary>
		<author><name>Snnbyyds</name></author>
	</entry>
	<entry>
		<id>https://wiki.uotan.cn/index.php?title=%E9%A6%96%E9%A1%B5&amp;diff=12</id>
		<title>首页</title>
		<link rel="alternate" type="text/html" href="https://wiki.uotan.cn/index.php?title=%E9%A6%96%E9%A1%B5&amp;diff=12"/>
		<updated>2024-02-11T13:45:18Z</updated>

		<summary type="html">&lt;p&gt;Snnbyyds：​Test for new page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;strong&amp;gt;Uotan&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
请查阅[https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents 用户指导]以获取使用本wiki软件的信息。&lt;br /&gt;
&lt;br /&gt;
== 入门 ==&lt;br /&gt;
* 谁是暮间雾？&lt;br /&gt;
* 如何成为掌管msm-4.19的神？&lt;br /&gt;
* 什么是柚坛？&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources 本地化msm-4.19到您的语言]&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Combating_spam 了解如何在您的wiki上打击暮间雾]&lt;br /&gt;
* [https://wiki.uotan.cn/index.php?title=%E7%B1%BB%E5%8E%9F%E7%94%9F%E5%85%A5%E9%97%A8 如何像纯白的龙一样强大]&lt;/div&gt;</summary>
		<author><name>Snnbyyds</name></author>
	</entry>
	<entry>
		<id>https://wiki.uotan.cn/index.php?title=%E7%B1%BB%E5%8E%9F%E7%94%9F%E5%85%A5%E9%97%A8&amp;diff=10</id>
		<title>类原生入门</title>
		<link rel="alternate" type="text/html" href="https://wiki.uotan.cn/index.php?title=%E7%B1%BB%E5%8E%9F%E7%94%9F%E5%85%A5%E9%97%A8&amp;diff=10"/>
		<updated>2024-02-11T13:44:32Z</updated>

		<summary type="html">&lt;p&gt;Snnbyyds：​创建页面，内容为“Test”&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Test&lt;/div&gt;</summary>
		<author><name>Snnbyyds</name></author>
	</entry>
	<entry>
		<id>https://wiki.uotan.cn/index.php?title=%E9%A6%96%E9%A1%B5&amp;diff=8</id>
		<title>首页</title>
		<link rel="alternate" type="text/html" href="https://wiki.uotan.cn/index.php?title=%E9%A6%96%E9%A1%B5&amp;diff=8"/>
		<updated>2024-02-11T13:41:15Z</updated>

		<summary type="html">&lt;p&gt;Snnbyyds：​/* 入门 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;strong&amp;gt;Uotan&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
请查阅[https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents 用户指导]以获取使用本wiki软件的信息。&lt;br /&gt;
&lt;br /&gt;
== 入门 ==&lt;br /&gt;
* 谁是暮间雾？&lt;br /&gt;
* 如何成为掌管msm-4.19的神？&lt;br /&gt;
* 什么是柚坛？&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources 本地化msm-4.19到您的语言]&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Combating_spam 了解如何在您的wiki上打击暮间雾]&lt;/div&gt;</summary>
		<author><name>Snnbyyds</name></author>
	</entry>
	<entry>
		<id>https://wiki.uotan.cn/index.php?title=%E9%A6%96%E9%A1%B5&amp;diff=5</id>
		<title>首页</title>
		<link rel="alternate" type="text/html" href="https://wiki.uotan.cn/index.php?title=%E9%A6%96%E9%A1%B5&amp;diff=5"/>
		<updated>2024-02-11T13:39:47Z</updated>

		<summary type="html">&lt;p&gt;Snnbyyds：​/* 入门 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;strong&amp;gt;Uotan&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
请查阅[https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents 用户指导]以获取使用本wiki软件的信息。&lt;br /&gt;
&lt;br /&gt;
== 入门 ==&lt;br /&gt;
* 谁是暮间雾？&lt;br /&gt;
* 如何成为掌管msm-4.19的神？&lt;br /&gt;
* 什么是柚坛？&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources 本地化MediaWiki到您的语言]&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Combating_spam 了解如何在您的wiki上打击破坏]&lt;/div&gt;</summary>
		<author><name>Snnbyyds</name></author>
	</entry>
	<entry>
		<id>https://wiki.uotan.cn/index.php?title=%E9%A6%96%E9%A1%B5&amp;diff=4</id>
		<title>首页</title>
		<link rel="alternate" type="text/html" href="https://wiki.uotan.cn/index.php?title=%E9%A6%96%E9%A1%B5&amp;diff=4"/>
		<updated>2024-02-11T13:38:12Z</updated>

		<summary type="html">&lt;p&gt;Snnbyyds：​/* 入门 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;strong&amp;gt;Uotan&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
请查阅[https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents 用户指导]以获取使用本wiki软件的信息。&lt;br /&gt;
&lt;br /&gt;
== 入门 ==&lt;br /&gt;
* 谁是暮间雾？&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ/zh-hans MediaWiki常见问题]&lt;br /&gt;
* [https://lists.wikimedia.org/postorius/lists/mediawiki-announce.lists.wikimedia.org/ MediaWiki发布邮件列表]&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources 本地化MediaWiki到您的语言]&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Combating_spam 了解如何在您的wiki上打击破坏]&lt;/div&gt;</summary>
		<author><name>Snnbyyds</name></author>
	</entry>
	<entry>
		<id>https://wiki.uotan.cn/index.php?title=%E9%A6%96%E9%A1%B5&amp;diff=2</id>
		<title>首页</title>
		<link rel="alternate" type="text/html" href="https://wiki.uotan.cn/index.php?title=%E9%A6%96%E9%A1%B5&amp;diff=2"/>
		<updated>2024-02-11T13:12:17Z</updated>

		<summary type="html">&lt;p&gt;Snnbyyds：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;strong&amp;gt;Uotan&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
请查阅[https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents 用户指导]以获取使用本wiki软件的信息。&lt;br /&gt;
&lt;br /&gt;
== 入门 ==&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings MediaWiki配置设置列表]&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ/zh-hans MediaWiki常见问题]&lt;br /&gt;
* [https://lists.wikimedia.org/postorius/lists/mediawiki-announce.lists.wikimedia.org/ MediaWiki发布邮件列表]&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources 本地化MediaWiki到您的语言]&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Combating_spam 了解如何在您的wiki上打击破坏]&lt;/div&gt;</summary>
		<author><name>Snnbyyds</name></author>
	</entry>
</feed>