前置きと注意#
Huawei P30にlineageOS 18.1をインストールした話の続きです。
P30にGSIなカスタムROMをflashしようとしたところ
system領域が小さい!と怒られて大敗北しました。
今回はsystem領域の拡張に成功したのでメモ帳代わりにまとめることにしました。
⚠注意
この作業に取り掛かる前に必ずデータのバックアップを取ってください。
また、ここに書いてることを真似する場合は自己責任でお願いします。
この記事の内容を実践して生じた損害等の一切の責任を負いかねますので、ご了承ください。あなたの大切なスマホが文鎮になっても私は責任を取れません。
また、この方法で拡張した場合はeRecoveryを使って純正ROMに戻す場合はパーティションを元に戻さないとエラーを吐くので注意してください。
前提条件#
- BootloaderがunlockされているHuawei P30(自分はDC-Phoneix&HCUの時限ライセンスを購入して解除しました。 )
- fastbootコマンドが使用できる環境
- USB Type C to USB A 変換アダプタ
- USBマウス
P30はEMUI9.1にしておいてください。(EMUI10以降はfastbootコマンドが使えない&強制的にBootloaderにロックがかけられるため。)
eRecoveryを使用すると強制的にEMUI10にされますが、HCUでアンロックした場合は、HisuiteでEMUI9.1に戻すとbootloaderがアンロックされた状態に戻るはずなので慌てないでください。
(自分の場合はちゃんと戻りました)
準備#
- Mate20 XのTWRP
- P30のRecovery_ramdisk
- parted_gdisk_fdisk_mkfs-ext4-aarch64-zip
- flashするROM(今回はDotOSを選択しました)
- P30(
当たり前ですね)
TWRPをflashする#
Mate20 XのTWRPイメージがあるディレクトリでターミナルを開いてください。
開いたら
$ fastboot flash recovery_ramdisk twrp-3.2.1-0-everest-unofficial-v3.img
と入力してTWRPをflashしましょう。
下準備#
再起動してTWRPを起動しましょう。(電源+Volume Up)
タッチ操作は出来ないのでUSBマウスを接続して操作します。
作業が長引くかもしれないのでスリープを無効にして画面の明るさを最低にしましょう。
マウスの接続を解除してPCに接続してください。
接続したら一度
$ adb devices
と入力してちゃんと接続されているかを確認しましょう。
接続が確認出来たらpartedとgdiskをP30にコピーしましょう。
parted_gdisk_fdisk_mkfs.ext4-AARCH64.zipを展開してターミナルで開きましょう
$ adb push parted /
$ adb push gdisk /
コピーが終わったら端末のシェルを起動します。
$ adb shell
シェルを起動したらpartedとgdiskがコピーされているかを確認してください。
~ # ls
acc init patch_hw splash2
acct init.rc plat_file_contexts storage
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
file_contexts.bin parted sec_storage
gdisk patch sepolicy
partedとgdiskがあることを確認したら実行権限を付与しましょう。
~ # chmod +x parted
~ # chmod +x gdisk
拡張#
ここまで来たらあと一息!
パーティションを操作しましょう。
partedでsddを開きます。
/parted /dev/block/sdd
GNU Parted 3.2
Using /dev/block/sdd
Welcome to GNU Parted! Type 'help' to view a list of commands.
まずはパーティションテーブルを確認しましょう。
(parted) unit MiB
(parted) p
Error: The backup GPT table is corrupt, but the primary appears OK, so that will
be used.
OK/Cancel? ok
Model: HISI SS6100GBCV100MBD (scsi)
Disk /dev/block/sdd: 122000MiB
Sector size (logical/physical): 4096B/4096B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name Flags
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
62 2928MiB 3016MiB 88.0MiB cust_a msftdata
63 3016MiB 5328MiB 2312MiB ext4 system_a msftdata
64 5328MiB 7480MiB 2152MiB product_a msftdata
65 7480MiB 8056MiB 576MiB version_a msftdata
66 8056MiB 9200MiB 1144MiB preload_a msftdata
67 9200MiB 122000MiB 112800MiB ext4 userdata msftdata
確認ができたら適当なテキストファイルにコピペしておきましょう。
メモを忘れた人用に自分のパーティションテーブルを貼っておきます。Google Drive
今回はproduct_aとsystem_aを削除して新しくsystem_aを作成します。
この記事の場合は63,64ですね。
注意
ここで間違ったパーティションを削除してしまうと再起不可になってしまう可能性があるので必ず手作業でやるようにしましょう。
コピペはしないようにね。
(parted) rm
Partition number? 63
(parted) rm
Partition number? 64
削除が終わったらgdiskに移動します。
一度partedを閉じてから
~ # /gdisk /dev/block/sdd
GPT fdisk (gdisk) version 1.0.3
Partition table scan:
MBR: protective
BSD: not present
APM: not present
GPT: present
Found valid GPT with protective MBR; using GPT.
Command (? for help):
ここからパーティションを追加します。
この記事の場合は63ですね。
Command (? for help): n
Partition number (63-128, default 63): 63
First sector (34-1914879, default = 772096) or {+-}size{KMGTP}:
Last sector (772096-1914879, default = 1914879) or {+-}size{KMGTP}: +4464MiB
Current type is 'Linux filesystem'
Hex code or GUID (L to show codes, Enter = 8300): 0700
Changed type of partition to 'Microsoft basic data'
Command (? for help):
作成したパーティションの名前を変更します。
Command (? for help): c
Partition number (1-67): 63
Enter name: system_a
作業が終わったら書き込みをする前に一度変更後のパーティションテーブルを確認しましょう。
Command (? for help): p
Disk /dev/block/sdd: 31232000 sectors, 119.1 GiB
Sector size (logical/physical): 4096/4096 bytes
Disk identifier (GUID): F9F21FFF-A8D4-5F0E-9746-594869AEC34E
Partition table holds up to 128 entries
Main partition table begins at sector 2 and ends at sector 5
First usable sector is 34, last usable sector is 31231999
Partitions will be aligned on 128-sector boundaries
Total free space is 94 sectors (376.0 KiB)
Number Start (sector) End (sector) Size Code Name
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
62 749568 772095 88.0 MiB 0700 cust_a
63 772096 1914879 4.4 GiB 0700 system_a
65 1914880 2062335 576.0 MiB 0700 version_a
66 2062336 2355199 1.1 GiB 0700 preload_a
67 2355200 31231999 110.2 GiB 0700 userdata
確認して大丈夫だったらパーティション情報の書き込みをしましょう。
Command (? for help): w
Final checks complete. About to write GPT data. THIS WILL OVERWRITE EXISTING
PARTITIONS!!
Do you want to proceed? (Y/N): Y
OK; writing new GUID partition table (GPT) to /dev/block/sdd.
Warning: The kernel is still using the old partition table.
The new table will be used at the next reboot or after you
run partprobe(8) or kpartx(8)
The operation has completed successfully.
書き込みが終わったらgdiskを閉じてpartedを開いてください。
~ # /parted /dev/block/sdd
GNU Parted 3.2
Using /dev/block/sdd
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted)
Flagの設定
(parted) set 63
Flag to Invert? msftdata
New state? on/[off]? on
ext4にフォーマット
~ # make_ext4fs /dev/block/sdd63
Creating filesystem with parameters:
Size: 3472883712
Block size: 4096
Blocks per group: 32768
Inodes per group: 8160
Inode size: 256
Journal blocks: 13248
Label:
Blocks: 847872
Block groups: 26
Reserved block group size: 207
Created filesystem with 11/212160 inodes and 28026/847872 blocks
変更がちゃんとできているかの確認
~ # /parted /dev/block/sdd
GNU Parted 3.2
Using /dev/block/sdd
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) p
Model: HISI SS6100GBCV100MBD (scsi)
Disk /dev/block/sdd: 128GB
Sector size (logical/physical): 4096B/4096B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name Flags
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
62 3070MB 3163MB 92.3MB cust_a msftdata
63 3163MB 7843MB 4681MB ext4 system_a msftdata
65 7843MB 8447MB 604MB version_a msftdata
66 8447MB 9647MB 1200MB preload_a msftdata
67 9647MB 128GB 118GB userdata msftdata
これで拡張作業はおしまい。
ROMをflashしよう#
これでようやく好きなROMが焼けるはず…。
fastboot --disable-verity --disable-verification flash system dotOS-R-v5.2-arm64-ab-GAPPS-OFFICIAL.img
Sending sparse 'system' 1/8 (458752 KB) OKAY [ 3.193s]
Writing 'system' OKAY [ 1.051s]
Sending sparse 'system' 2/8 (458752 KB) OKAY [ 9.784s]
Writing 'system' OKAY [ 1.050s]
Sending sparse 'system' 3/8 (458752 KB) OKAY [ 9.894s]
Writing 'system' OKAY [ 1.051s]
Sending sparse 'system' 4/8 (458752 KB) OKAY [ 9.541s]
Writing 'system' OKAY [ 1.789s]
Sending sparse 'system' 5/8 (458752 KB) OKAY [ 9.920s]
Writing 'system' OKAY [ 4.190s]
Sending sparse 'system' 6/8 (458752 KB) OKAY [ 9.487s]
Writing 'system' OKAY [ 4.602s]
Sending sparse 'system' 7/8 (458752 KB) OKAY [ 9.500s]
Writing 'system' OKAY [ 1.034s]
Sending sparse 'system' 8/8 (233220 KB) OKAY [ 4.879s]
Writing 'system' OKAY [ 0.807s]
Finished. Total time: 81.857s
わーい。 この後初期化するので一度stock recoveryに戻してください。
fastboot flash recovery_ramdisk recovery_ramdiS.img
Sending 'recovery_ramdisk' (32768 KB) OKAY [ 0.232s]
Writing 'recovery_ramdisk' OKAY [ 0.077s]
Finished. Total time: 0.341s
リカバリーを起動してファクトリーリセットをしたらいよいよ起動!
いよいよ起動#
まぁ普通に起動するはずです。
後はmagiskを入れるなりなんなりで自由にやっちゃってください!USB接続してもWindowsが認識できない不具合(?)はこちらでも残ってました