自由学习记录(190)

https://miflashpro.com/miflash-pro-v7-3-706-21

OrangeFox 除了刷机,

刷 ROM、刷 Magisk、刷补丁包、刷 kernel、刷 recovery、刷 firmware 包。有些 zip 是系统 ROM,有些是修补包,有些是 root 包,OrangeFox 提供的是安装入口。

Wipe cache、Dalvik/ART cache、Format Data、清除某些分区。这个能力很危险,因为它能直接删除系统或用户数据。刷不同系统前常用 Format Data,是为了清掉旧系统加密和用户数据结构,避免新系统无法启动。

它类似传统说的 Nandroid Backup,可以备份 boot、recovery、vendor、data 等分区。

但它不是万能保险。特别是 Android 11/12 以后,动态分区、加密 data、super 分区让完整备份恢复变复杂。重要照片、文件、聊天记录,还是应该在正常系统里另外备份。

如果 Android 系统坏了但 recovery 还能进,OrangeFox 可以用文件管理器、MTP、ADB 把文件复制出来。比如系统 bootloop,但 /data/media/0 能解密,就可以救照片、下载文件、ROM 包。

连接电脑类。

ADB、ADB Sideload、MTP 都属于这一块。

ADB Sideload 用来从电脑直接推送 zip 给 recovery 安装;MTP 用来像 U 盘一样复制文件;ADB shell 可以进入 recovery 命令行。

分区和挂载管理类。

挂载 system/vendor/data/cache,查看分区,修复文件系统,处理动态分区映射。这是高级功能,不理解时不要乱动。

调试和修复类。

导出日志、终端、修复 SELinux context、修复权限、查看刷机失败原因。开发者和排错时很有用。

一个运行在 recovery 分区里的独立维护系统

刷 ROM 时要分清两个区域:

overflow-visible! 复制代码
复制代码
/system、/vendor、/product、/system_ext
= 系统本体、厂商组件、驱动层

/data
= 用户数据、App 数据、内部存储、加密状态、系统设置

你刷 LineageOS 的 zip,主要替换的是系统相关分区。它不会天然"干净地接管"MIUI 留在 /data 里的所有东西。问题通常出在 /data

为什么要 Format Data

第一,MIUI 的 /data 很可能有自己的加密状态。新 ROM 启动时,如果不能正确解密旧 /data,就可能卡开机、要求密码、内部存储不可读、或者直接 bootloop。

第二,MIUI 和 LineageOS 的系统设置、权限、SELinux context、App 框架不同。旧 /data/system/data/misc/data/vendor 里有大量和原系统绑定的状态。新系统直接沿用,容易出现系统服务崩溃、指纹/锁屏异常、权限错乱。

第三,MIUI 有大量私有服务和系统 App 数据。LineageOS 没有这些组件,但 /data 里还残留它们的数据、权限、启动记录、配置文件。它们不一定直接"污染"系统,但会提高不稳定概率。

第四,Android 跨大版本时,/data 的数据结构也可能变化。你是从 MIUI Android 12 底包切到 LineageOS 21 / Android 14,跨度更大,所以 clean flash 更稳。

还有一个关键点:为什么 ROM 包要 Format Data 后再传进去?

因为 Format Data 会清空内部存储。你如果先把 ROM zip 放进手机,然后再 Format Data,ROM zip 也会被删掉。所以更稳的做法是:

overflow-visible! 复制代码
复制代码
先 Format Data
再 Reboot Recovery
再从电脑传 ROM zip
再刷

如果你有 U 盘 OTG 或外置 SD 卡,也可以提前把 ROM 包放外部介质,因为 Format Data 不会清外部介质。但放手机内部存储就会被清掉。

你的手机支持直接重启到 recovery(所以大概也有手機用不了,也大概是老式的,2022年左右可能),所以以后进入 OrangeFox 可以用

所以我才之後重啟一直在miui這個界面沒有變化,是因為目前裡面什麼都清空了,裡面的recovery也清空了,這個時候要recovery再做一遍,然後附上對的zip

adb devices

adb push Flashable-lineage-21.0-20240810-free-atom.zip /sdcard/

LineageOS,不叫 Android的原因

它叫 LineageOS ,不是直接叫 Android,是因为它不是 Google 官方发布给你这台手机的"原厂 Android",而是一个 基于 Android/AOSP 的第三方系统发行版

Android 可以理解成底层平台和开源基础;LineageOS 是把这个基础拿来整理、编译、适配、加功能、移除厂商东西之后形成的一个系统项目。LineageOS 官方自己的描述就是:它是一个免费开源系统,基于 Android mobile platform。lineageos.org

类比:

overflow-visible! 复制代码
复制代码
Linux = 内核/基础平台
Ubuntu / Arch / Debian = 基于 Linux 的发行版

Android / AOSP = 手机系统基础平台
LineageOS / Pixel Experience / crDroid = 基于 Android/AOSP 的第三方 ROM 发行版
MIUI / HyperOS / One UI = 厂商基于 Android 做的官方系统

所以你现在刷的不是"另一个非 Android 的系统"。它仍然是 Android 系列,只是它的发行版名字叫 LineageOS。它大概等于:

overflow-visible! 复制代码
复制代码
AOSP Android 14 基础
+ LineageOS 自己的系统应用、设置项、权限管理、更新框架、界面调整
+ atom 这台手机的 device tree
+ kernel / boot 相关镜像
+ vendor blobs / 硬件适配文件
= lineage-21.0-UNOFFICIAL-atom.zip

刷机包zip里在做什么,按责任层拆开看。

第一层是 系统文件

它会把 Android/LineageOS 的核心系统写到手机的系统相关分区里,比如 systemproductsystem_ext 等。Android 官方文档也说明,Android 设备的软件不是一个整体文件 ,而是拆在多个分区 里,每个分区负责不同部分。Android Open Source Project

第二层是 启动文件

ROM 包里通常会包含或更新 boot.img,里面有 kernel 和 ramdisk。手机开机时不是直接进入 Android 桌面,而是先经过 bootloader,再加载 boot image,再启动 Android userspace。

第三层是 设备适配
atom 这个包不是通用 Android 包。它包含给 Redmi 10X 5G 用的配置:分区怎么挂载、哪些硬件库要加载、指纹/相机/音频/传感器/屏幕参数怎么接、SELinux 规则怎么设。没有这一层,AOSP 本身不知道你的手机硬件怎么工作。

第四层是 vendor / proprietary blobs 的调用关系
很多硬件驱动不是 LineageOS 自己写的,也不是 AOSP 完全开源的,而是沿用小米官方系统里的闭源 vendor 文件。LineageOS 负责把 Android 14 的上层系统接到这些旧底层库上。这也是为什么民间 ROM 常有蓝牙、相机、VoLTE、指纹等 bug。

第五层是 安装脚本

你点 Flashable-lineage...zip 后,OrangeFox 不是简单"解压到手机"。它会读取 zip 里的安装脚本和 payload,把对应镜像/文件写入对应分区,设置权限、上下文、挂载点,有时还会处理 vbmeta、dtbo、vendor_boot、metadata 等。Android 官方 OTA 文档里也提到,完整更新包可以包含目标设备最终状态所需的 system、boot、recovery 等分区内容。Android Open Source Project

你现在这条链可以这样理解:

overflow-visible! 复制代码
复制代码
OrangeFox = 安装器 / 维护环境
Flashable-lineage zip = 安装包
LineageOS = 安装后运行的系统
Android/AOSP = LineageOS 的基础
atom = 这套安装包适配的具体硬件对象

所以"为什么不叫 Android"的核心原因是:
Android 是平台血统,LineageOS 是具体发行版名字。

為什麼叫 "Blob"?

Blob 原指「二進位大型物件」(Binary Large Object),在開源社群中,這個詞被用來嘲諷或代稱那些**「不知道裡面裝什麼、也無法修改」的黑盒子程式碼** 。

硬體製造商(如高通、聯發科、NVIDIA 等)為了保護商業機密,或是避免競爭對手抄襲技術,不願意公開讓硬體運作的核心技術文件與原始碼。因此,他們只提供封閉原始碼的二進制檔案給作業系統開發者。

Android 刷機: 在安裝非官方 Android 系統(如 LineageOS、/e/OS)時,刷機包通常無法包含這些底層硬體的原始碼,++必須++ 從原本的手機系統中提取這些廠商專有檔案(稱作 proprietary-blobs ,系統才能正常++驅動相機、通訊和螢幕等硬體++。

開源社群的兩難

  • 好處: 有了這些 Blob,開源作業系統才能在各種複雜的手機或電腦硬體上順利運作
  • 壞處: 違背了完全開源自由(Free/Libre)的精神。因為無法檢視程式碼,開發者無法修復裡面的 Bug,也無法確定這些檔案中是否藏有安全性漏洞或後門。

第三方量化平台或交易機器人要求你填 Binance API key。你以為只是連接帳戶,其實對方如果保存不當、平台被黑、內部人員作惡,key 就可能外洩

所以就找小幣買,這樣可控。

ICO 不是一个实体,而是一种"首次代币发行/融资行为"。

ICO = Initial Coin Offering,意思是项目方第一次把自己的 token 拿出来卖给市场融资。它不是"某个公司/平台/钱包",而是一段发行与募资流程。比如项目方说:"我们发行 10 亿枚 ABC,其中 5% 拿出来卖,换 USDT/ETH/BNB 用于开发。"这整个行为就叫 ICO。Binance Academy 对 ICO 的定义也是"区块链项目通过出售加密货币来筹资"的方式。 Binance +1

Launchpad 更像是"交易所版 ICO",行业里通常叫 IEO。

IEO = Initial Exchange Offering。区别是:ICO 时代,项目方自己在官网/合约/钱包地址收钱,谁都能发,骗局很多;Launchpad/IEO 是交易所站出来筛选项目、设计认购规则、收用户资金、分配代币,然后通常安排上线交易。币安自己的介绍也把 Launchpad/Launchpool 放在"获得新 token"的产品体系里,Launchpool 是锁定资产获得空投,Launchpad 则偏向新币发行/认购。

一个简单例子:

项目 ABC 要在币安 Launchpad 卖 1000 万枚 ABC。

用户总共提交 100 万 BNB 认购。

你提交 10 BNB。

你的占比是 10 / 1,000,000 = 0.001%。

理论分配就是 1000 万枚 × 0.001% = 100 枚 ABC。

之后币安从你提交的 BNB 里扣掉对应金额,多余的 BNB 退回。

项目可能还有其他融资渠道。比如私募、VC 轮、团队份额、生态基金、空投、其他交易所发行、链上 DEX 流动性等。也就是说,币安不是唯一获得 token 的地方。

你可以把它理解成证券市场里的"券商承销/打新"类比:不是股票只属于这家券商用户,而是这家券商拿到一部分新股发行额度,让自己的客户参与申购。客户中签/分到额度以后,股票上市后其他人也可以买。

Launchpad 项目如果一上市就被大户收割散户,用户会把责任算到币安头上。限制额度、KYC、快照、认购上限,本质上是交易所的风控和声誉管理。

Launchpad 销售等很多部分。Launchpad 只是其中一小块。比如 Binance 公告过 Space ID 的总供应量是 20 亿枚,其中 1 亿枚,也就是 5%,分配给 Binance Launchpad;同时这个 Launchpad 销售还有总融资上限和单用户上限。�

项目方和币安都有谈判权。不是单边决定。通常大框架是项目方提出 tokenomics:总供应量、销售比例、融资需求、解锁安排、团队和投资人份额。币安会审查,并基于自己的 Launchpad 标准、用户规模、风控、合规、上市策略,要求调整销售额度、用户上限、价格、解锁规则或参与条件。

比如总发行量 10 亿枚:

团队:20%

投资人/私募:15%

生态基金:25%

社区/空投:15%

流动性/做市:10%

公开销售:5%

其他储备:10%

其中"公开销售 5% = 5000 万枚"里面,才可能继续拆:

Binance Launchpad:1000 万枚

OKX Jumpstart:500 万枚

Bybit Launchpad:500 万枚

项目官网吗/白名单销售:1000 万枚

DEX IDO:500 万枚

剩余公开销售储备:1500 万枚

所以你说的"拿五千万出来,币安一千万,别的交易所五百万"是可能存在的一种结构。

但很多 Binance Launchpad 项目不一定同时给很多交易所做初始发行。常见情况有几种:

第一种:币安独家首发。项目方只把公开销售额度放到 Binance Launchpad。其他交易所没有同阶段的认购额度,后面可能只是上线交易。

第二种:多平台分发。项目方把不同额度给不同交易所、DEX、官网白名单、社区销售。币安只是其中一个渠道。

二级市场 = 币已经发出来后,用户 A 卖给用户 B。

比如你在币安现货里买 BTC、ETH、某个新币,通常不是项目方直接卖给你,而是另一个用户/做市商卖给你。你的钱给了卖方,不是给项目方。

类比股票更直观:

公司 IPO 发新股给投资者,这是一级市场。

股票上市后,你在券商 App 里买卖腾讯、台积电、英伟达股票,这是二级市场。

币圈也是一样:

Launchpad/ICO/IDO:一级市场。

币安现货、合约、DEX 交易池:二级市场。

Launchpad allocation / public sale allocation / token sale allocation:这是给用户认购的新币销售额度。

Initial circulating supply:上线当天实际流通多少。

Market maker / liquidity provision:做市和流动性,不等于卖给用户。

Private sale / seed sale:早期投资人额度。

Airdrop / community rewards:空投或社区奖励,不是认购销售。

CEX = Centralized Exchange,中心化交易所,比如 Binance、OKX、Bybit。

DEX = Decentralized Exchange,去中心化交易所,比如 Uniswap、PancakeSwap、Curve。

所以 DEX 不是"decentralized X",而是:

D = Decentralized

E = Exchange

X = Exchange 里的 X 简写

因为英文里 Exchange 常被缩写成 X,比如 FX = Foreign Exchange,外汇。

I = Initial = 第一次

C = Coin = 币

E = Exchange = 交易所

O = Offering = 发行/发售

所以 ICO 和 IEO 的共同点是 Offering,都是"拿 token 出来卖/发行"。区别在中间那个字:

C:项目方自己发币卖。

E:通过交易所发币卖。

进 Fastboot,说明 音量下 + 电源 生效了;而 Recovery 通常是 音量上 + 电源

手机连电脑,确保手机已经开了 USB debugging。如果没开,到:

overflow-visible! 复制代码
复制代码
Settings > About phone > Build number 连点 7 次
Settings > System > Developer options > USB debugging

能打开百度,说明 Wi-Fi、DHCP、DNS、路由基本都通了。為什麼?


Root 存在的原因,本质是:Android 默认把"用户"和"系统管理员"分开了;root 就是拿回系统管理员权限。

Android 底层是 Linux。Linux 里最高权限用户叫 root

可以读写系统关键目录、修改内核相关参数、控制进程、改权限、挂载分区、注入模块。

普通 App 默认没有这些权限。Android 这样设计,是为了安全:防止 App 随便读取别的 App 数据、改系统文件、监听输入、破坏启动链、偷取密钥。

Magisk 这类现代 root 工具的价值在于:它不是粗暴改 /system,而是主要通过修补 boot.img,在启动阶段插入自己的权限管理层。这样它可以做到"systemless root",即尽量不直接改系统分区。你要授权哪个 App root,由 Magisk 管理,而不是所有 App 自动拥有 root。
**Metered network(計量付費網路)**是指一種會限制資料使用量,或根據你消耗的流量來計算費用的網路連線。
核心運作機制

  • 流量計費:超過規定額度會被收取額外費用,或遭遇網路降速。
  • 常見類型:行動數據(4G/5G)、隨身Wi-Fi、有流量上限的家用寬頻。
  • 系統識別:手機與電腦若連線至此類網路,通常會自動或手動開啟「計量付費連線」模式。

因为 Magisk 的 root 不是"在系统里安装一个 APK 就获得 root"。APK 只是管理器。真正让系统有 root 能力的部分,必须在开机最早期 被加载,而这个阶段发生在 boot.img 里。

Android 开机链大概是:

复制代码
Bootloader
→ boot.img
→ kernel + ramdisk
→ init
→ 挂载 system/vendor/product 等分区
→ 启动 Android 系统

Magisk 要做的是在 init 附近插入自己的启动逻辑,也就是所谓 systemless root :尽量不直接改 /system 分区,而是改启动镜像里的 ramdisk/init 流程,让系统启动时把 Magisk 注入进去。Magisk 官方文档也写明:如果设备的 boot 分区有 ramdisk,就取 boot.imginit_boot.img,用 Magisk App 选择并修补该文件,然后把修补后的镜像刷回对应分区。Topjohnwu

复制代码
Magisk.apk = 控制台 / 管理界面
boot.img = 开机发动机
magisk_patched.img = 被 Magisk 改造过的发动机
fastboot flash boot magisk_patched.img = 把改造后的发动机装回手机

为什么不是直接改 system

因为现代 Android 有 AVB、动态分区、只读 system、SELinux、verified boot 等机制。直接改 /system 风险更高,也更容易破坏 OTA 和完整性。Magisk 的设计就是尽量通过启动阶段挂载、替换、注入来实现 root,而不是粗暴修改系统分区。

不同设备不一定都 patch boot.img。有些新设备要 patch init_boot.img,有些没有 boot ramdisk 的设备要 patch recovery.img。Magisk 官方安装文档就是按"设备有没有 boot ramdisk"来决定 patch 哪个镜像。

刷 ROM 時,OrangeFox 把 zip 裡的內容寫進手機分區了。例如:

复制代码
boot.img 裡的內容 → 寫入 boot 分區
system 內容 → 寫入 system / super 相關分區
vendor/product 內容 → 寫入對應分區

寫入後,它不是以 /sdcard/Download/boot.img 這種普通文件存在,而是變成了底層分區內容。Magisk App 不能直接從普通文件管理器裡選到"當前 boot 分區"。所以你需要額外準備一份同版本 ROM 裡的 boot.img 文件,讓 Magisk 去 patch。

嚴格說,不能"只靠系統內一個普通 APK 立即 root"。因為普通 Android App 沒有權限修改 boot 分區,也沒有權限把自己插進開機鏈。Magisk App 在未 root 狀態下只能做一件事:幫你修補 boot.img 文件。它不能自己把 patched boot 寫進 boot 分區。

Magisk App 不只是简单给 boot.img 塞一个文件。它会根据当前设备、当前系统环境、ramdisk 状态、加密/SELinux/启动脚本结构,生成适合这台设备的 patched image。Magisk 官方安装文档明确写的是:把 boot.img / init_boot.img / recovery.img 复制到设备上,用 Magisk App 的 Select and Patch a File 修补,然后再把 patched image 拉回电脑用 fastboot 刷入。

电脑当然可以"直接写入手机分区",但前提是你已经有一个正确的 patched image。

电脑端的角色通常是:

复制代码
fastboot flash boot magisk_patched.img

它只是负责把镜像写进 boot 分区,不负责理解 Android 启动逻辑,也不负责生成 Magisk 注入结构。也就是说,电脑能"刷",但不适合"生成"。

不是因為 ReVanced Manager 必須 root,而是某些情況下,普通「重新簽名安裝一個修改 APK」會改變簽名、包狀態、安裝來源,容易觸發兼容或檢測問題;root/mount 類方式理論上可以更接近原 App 的安裝形態。

/sdcard/Download/ 是 Android 裡的內部儲存下載資料夾路徑 。你在手機文件管理器裡看到的 emulated0,其實和它是同一個地方。

Android 裡常見有幾個等價路徑:

复制代码
/sdcard/Download/

等價於:

复制代码
/storage/emulated/0/Download/

也常顯示成:

复制代码
Internal storage > Download
內部儲存空間 > Download

其中:

复制代码
/storage/emulated/0/

的意思是「目前主使用者 user 0 的模擬內部儲存」。emulated 不是外接 SD 卡,而是 Android 把內部儲存用一個兼容舊 Android App 的方式呈現出來。

Xposed 模块不是普通 App。它的工作方式是:当某个 App 启动时,LSPosed 可以把模块代码"注入"到那个 App 的进程里。你看到很多 App,是因为 LSPosed 在问你:

复制代码
这个模块要注入到哪些 App 里?

不是让你随便全选。

正确理解是:

复制代码
模块 = 插件
目标 App = 被插件影响的对象
Scope / 作用域 = 允许模块在哪些 App 里生效

举例:

如果模块是 Spotify 专用模块,作用域就只选:

复制代码
Spotify

不要选系统框架、设置、浏览器、文件管理器、全部 App。

Windows 遊戲 DLL 注入通常是:

复制代码
目標進程已經啟動
→ 用遠程執行緒 / LoadLibrary / 手動映射等方式
→ 把 DLL 塞進目標進程
→ 改函數入口、改記憶體、攔截 API

LSPosed / Xposed 更像是:

复制代码
Android App 啟動前
→ Zygote 孵化 App 進程
→ LSPosed 在 Zygote/ART 層提前掛進去
→ 當目標 App 啟動時,模組代碼被載入到該 App 進程
→ 在 Java/ART 方法層做 Hook

Android App 大多不是每次從零啟動一個乾淨進程,而是由 Zygote 預載系統類後 fork 出新 App 進程。LSPosed 利用 Magisk Zygisk 進入這個啟動鏈,提前在 Zygote/ART 層建立 Hook 能力。所以它不是等 App 完全跑起來後再硬塞一個 DLL,而是在 App 進程生成時就讓模組進場。

比較精確的對應是:

复制代码
Windows DLL 注入:
進程級 native 注入,常改 native API / 記憶體 / 函數指針

Xposed / LSPosed:
Zygote/ART 層注入,常 Hook Java/Kotlin 方法、Android framework API、App 類方法

例如某個 App 裡有一個 Java 方法:
Java

复制代码
boolean isFeatureEnabled()

Xposed 模組可以在這個方法被調用前後插入邏輯,甚至改返回值。這類操作不一定要改 APK 文件本身,因為它是在運行時改行為。

所以它和 ReVanced Manager 的差異是:

复制代码
ReVanced Manager:
靜態 patch。先改 APK,再安裝改過的 App。

LSPosed:
動態 Hook。App 原包可以不改,啟動時把模組注入進去改行為。

再用引擎/插件的角度說:

复制代码
APK patch = 改資產包/改源文件後重新打包
Xposed hook = 運行時攔截函數調用,像在系統層加插件

从原理上讲:LSPosed 把风险从"APK 被改"转移到了"运行环境被注入";反作弊也会相应从文件校验转向进程、Zygote、ART、root 和行为检测。

Reuters 5 月 20 日報導,歐洲一個準備推出歐元掛鉤穩定幣的銀行聯盟新增 25 家銀行 ,總數達 37 家金融機構、覆蓋 15 國 。加入者包括 ABN Amro、Sabadell、Rabobank、Bankinter、Bank of Ireland、Handelsbanken、Nordea 等。這個項目由阿姆斯特丹公司 Qivalis 運作,定位是建立由歐洲機構治理的數位支付與資產代幣化基礎設施,對抗美元穩定幣與美國/非歐洲加密支付公司主導地位。Reuters

這是近期最有制度意義的一條:加密市場不只是幣價波動,傳統銀行正在把穩定幣當成支付、清算、代幣化資產基礎設施來布局。

相关推荐
Pizza_Lawson1 小时前
spinningup学习笔记(二)
笔记·学习
吃好睡好便好1 小时前
在Matlab中绘制饼状图
开发语言·学习·matlab·3d·信息可视化
nashane1 小时前
HarmonyOS 6学习:外接键盘CapsLock键“失灵”?一招解锁大写输入
学习·华为·计算机外设·harmonyos
清钟沁桐1 小时前
mlir 编译器学习笔记之九 -- 后端生成
笔记·学习·mlir
叶~小兮1 小时前
Zabbix 7.0 深度原理与生产进阶运维学习笔记
运维·学习·zabbix
我想我不够好。1 小时前
2026.5.21 消防监控学习 1.5hours
学习
燐妤1 小时前
前端HTML编程6:ES6与前后端交互
前端·javascript·学习·html5
Hua-Jay2 小时前
OpenCV联合C++/Qt 学习笔记(二十四)----差值法检测移动物体、稠密光流法跟踪移动物体及稀疏光流法跟踪移动物体
c++·笔记·qt·opencv·学习·计算机视觉
坤坤藤椒牛肉面2 小时前
stm32学习1--新建工程
stm32·单片机·学习