
今回はNexus7 2013を用いて/systemパーティションのリサイズと
postmarketOSのインストールまで。
古い機種に新しいOSを入れようとすると、
/system領域が小さいのでリサイズする必要があります。
これが実際に自分でやってみると非常に危険w
自己責任で。
●Nexus7 2013とpostmarketOS
スペック的にまだまだ実用のレベルを維持している
Nexus7 2013ですが、最近は3,000円で買えたり
非常に安くなってきました。
UBPortsも動くしおすすめです。
カスタムROMも非公式ながらAndroid10前後まで動くので面白いです。
Nexus7 2012と比べても倍近いスペックと2GBメモリありますし。
安い、早い、ROMが多いを満たす改造のホープです。
この機種に限りませんが、新しいROMを入れる場合に
/system領域が狭いのでリサイズをやってみたら起動しなくなりましたw
非常に危険行為ですが、習得しておきたい技ですw
こちらを参考にしました。
[GUIDE] Increase your Nexus 4's system partition for more space!
https://forum.xda-developers.com/nexus-4/general/guide-increase-nexus-4s-partition-space-t3800264
https://www.gsmarena.com/oppo_find_7a-reviews-6215p15.php
ちょっとでも失敗すると確実に起動しなくなりますw
当然ですが、全てのデータを一旦消す必要がありますw
なので自分でROMを焼き直せる人だけ可です。
実際に死にましたが、なんとか直せましたけども。
●Nexus7 2013の基本パーティション
重要なのでメモしておきます。
この初期の構成に戻せるように注意。
# ./parted /dev/block/mmcblk0 p
Model: MMC MMC16G (sd/mmc)
Disk /dev/block/mmcblk0: 15.5GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Number Start End Size File system Name Flags
1 67.1MB 157MB 89.6MB fat16 radio
2 201MB 204MB 3146kB modemst1
3 204MB 208MB 3146kB modemst2
4 268MB 284MB 15.4MB ext4 persist
5 336MB 336MB 799kB m9kefs1
6 336MB 337MB 799kB m9kefs2
7 403MB 403MB 799kB m9kefs3
8 403MB 407MB 3146kB fsg
9 470MB 471MB 1536kB sbl1
10 471MB 473MB 1536kB sbl2
11 473MB 475MB 2097kB sbl3
12 475MB 480MB 5243kB aboot
13 480MB 481MB 524kB rpm
14 537MB 554MB 16.8MB boot
15 604MB 605MB 524kB tz
16 605MB 605MB 1024B pad
17 605MB 606MB 1536kB sbl2b
18 606MB 608MB 2097kB sbl3b
19 608MB 613MB 5243kB abootb
20 613MB 614MB 524kB rpmb
21 614MB 614MB 524kB tzb
22 671MB 1552MB 881MB ext4 system
23 1552MB 2139MB 587MB ext4 cache
24 2147MB 2149MB 1049kB misc
25 2215MB 2225MB 10.5MB recovery
26 2282MB 2282MB 8192B DDR
27 2282MB 2282MB 8192B ssd
28 2282MB 2282MB 1024B m9kefsc
29 2349MB 2349MB 32.8kB metadata
30 2416MB 15.5GB 13.1GB userdata
●Nexus7 2013の/systemリサイズ
まずTWRPが起動できる所まで。
1.最新版までアップグレード
2.USBデバッグ
3.母艦PCにfastbootとadbコマンドインストールとPATH設定
4.ブートローダーunlock
5.TWRPインストール
6.TWRP起動してadbコマンドを使えるように設定
7.TWRPでWIPEして編集するパーティションのデータを消す
ここまでは詳細は書きませんが、簡単なので各自で。
出来ない人には/systemのリサイズは諦めましょう。
adbコマンドが使えるようになったらpartedコマンドを拾ってきます。
partedコマンドとはgpt、UEFIマシンで使われるパーティションツールです。
リンク先はテキストファイルですが、拡張子を抜いて保存。恐らくARM共通バイナリです。
https://drive.google.com/open?id=15uhtjeH2Z4DQywbRafrJs5cw7rmhnRG_
保存したらadb pushコマンドでAndroidに転送します。
$ adb push parted /
でadb shellを使います。
$ adb shell
端末が起動したら設定。
まずダウンロードしたpartedコマンドを実行形式に変換
$ chmod +x parted
これでpartedコマンドが使えます。
さあここから本番。
$ ./parted /dev/block/mmcblk0 p
ここでAndroidのパーティション一覧が表示されますが、
復旧させる時にどうしても必要なので、
テキストエディタにコピペして保存しておきます。
で/systemパーティションとその後をチェック。
Nexus7 2013の場合はcacheでした。
Number Start End Size File system Name Flags
21 614MB 614MB 524kB tzb
22 671MB 1552MB 881MB ext4 system
23 1552MB 2139MB 587MB ext4 cache
24 2147MB 2149MB 1049kB misc
/cacheを小さくして/systemに割り当てます。
2つともext4です。後で再フォーマットが必要なので絶対に忘れないように。
多分エラーが出ると思いますが、念の為umount。
$ umount /system
$ umount /cache
でパーティションを削除。
$ ./parted /dev/block/mmcblk0 rm 22
$ ./parted /dev/block/mmcblk0 rm 23
で新しくパーティションを割り当てるのですが、
ここで新しい容量を決めます。
このstartとendの値を指定します。
例えば/systemに671MBから1900MBを割り当てて
残りを/cacheに1900MBから2139MBに指定するとします。
$ ./parted /dev/block/mmcblk0 mkpart primary 671 1900
$ ./parted /dev/block/mmcblk0 mkpart primary 1900 2139
パーティションNoでは無くてStartとEndの容量を指定します。
パーティションNoは勝手に決められます。
でパーティションを再びチェック
$ ./parted /dev/block/mmcblk0 p
すると、22番と23番の容量が変更出来ました。良いね。
でパーティション名を入れます。
$ ./parted /dev/block/mmcblk0 name 22 system
$ ./parted /dev/block/mmcblk0 name 23 cache
これで/systemと/cacheのパーティション名に戻しました。
でもともとのext4フォーマットします。
$ mke2fs -b 4096 -T ext4 /dev/block/mmcblk0p22
$ mke2fs -b 4096 -T ext4 /dev/block/mmcblk0p23
これで使える様になりました。
後は普通にROMを焼けばOKです。
カンの鋭い人なら分かりますが、一番容量の大きい/userdataは
最後のパーティションにあることが多いです。
そしてパーティションを作るにはstartとendを容量指定して
連番で新しく再設定するパーティションが必要。
つまり、/userdataを小さくして/systemを大きくしようと思ったら、
その間の全てのパーティションを削除して同じ順番に作り直す必要があります。
実は、パーティション名を変えれば良いじゃん?って思いませんでした?
やってみて再起動したら全てのパーティションが認識しなくなりましたw
どうやらfstab的なものがあり、その順番に従わなくてはならない様子ですw
そして再起動してしまうと、全てのパーティション
つまり/recoveryパーティションすら認識しないので
TWRPが起動できなくなります。adbコマンドが使えません。
fastbootコマンドではパーティション編集は出来ません。
死んだか?
と思いましたが、実はfastbootコマンドには焼かなくても
外部からリカバリイメージを起動する方法があります。
$ fastboot boot recovery twrp-3.4.0-flo.img
こんな感じでbootコマンドでTWRPをimgファイルから直接起動できました。
これでadbコマンドが使えるのでパーティションの仕切り直しが出来ました。
良かった。死んだかとおもったw
・注意点
パーティションは必ず初期設定の順番の名前で作り直す
容量はチェックされていない。自由に設定
一部のパーティションはちゃんとext4でフォーマットし直す
万が一認識しなければfastboot boot recovery twrp〜コマンドでrecovey起動出来る
partedコマンドの練習にはなりましたが非常に危険です。
絶対に自己責任でお願いします。

●postmarketOSのインストール
拡張した/systemパーティションにROMを焼きます。
増やした分だけ大きいイメージを焼けます。
実はMateやPlasma-mobile、PhoshやGnomeを焼く場合は必須です。
USBケーブルで繋いでlsusbで認識しているのを確認。
実はこんな面倒な事をしなくても/userdataに
書き込みしたかったのですが出来ませんでした。
苦肉の策です。
あとは普通にpmbootstrapコマンドを使います。
こちらをしっかり読んでそのまま。
https://wiki.postmarketos.org/wiki/Installation_from_recovery_mode
$ ./pmbootstrap.py init
$ ./pmbootstrap.py install --android-recovery-zip
$ ./pmbootstrap.py flasher flash_kernel
kernelまで焼いたら本体を焼きます。
一旦母艦PCとnexus7を両方再起動します。
何故かそうしないと通信が出来ません。
またTWRPをリカバリモードで起動します。
でAdvancedを選び、ADB Sideloadを選択し、バーをスライド。
するとターミナル画面が表示して止まるので、
母艦PC側からコマンド。
$ ./pmbootstrap.py flasher --method=adb sideload
すると転送とインストールが同時にはじまります。
ちなみにZIPをそのままadb pushで流して入れても起動しません。多分。
もしエラーが出て止まる場合は、ケーブルを交換するか
/userdataに書き込み設定をしていると止まりますので
/systemパーティションに再度設定し直します。
原因は分かっていませんが/userdataに書き込む設定にするとエラーが出ます。
終わったら再機動。
自動では動きませんので注意。
無事Mateが表示されました。
残念ながらNexus7 2013では部分的にブラックスクリーンになるので、
死んではいませんが操作できません。
なおWaylandは意図的にクアラコムの3Dドライバを削ってあるらしく
表示されないのでGnomeとか起動しません。
framebufferのXorgだけです。
バグ修正まちですね・・・
●まとめ
今回は/systemのリサイズからpostmarketOSのインストールまで。
大きなROM容量を焼き直すにはどうしても/systemのリサイズは必須ですが、
かなりヤバイコマンド設定なので死にましたw
実際に死んで、焦って、考えたらなんとか直せたという感じです。
勉強になりました。
新しいカスタムROMはどうしても/system領域の拡大が必要なので
覚悟して設定してみて下さい。
いざという時もTWRPを直接imgから起動できるので
多分なんとかなります。
壊しても絶対にkapperに相談しないで下さい。絶対に答えません。
自己責任で。
どうしても自分で壊して覚えるしかないのです。
是非格安ジャンクNexus7で練習してみて下さい(ぉぃ