にほんブログ村 IT技術ブログへ
にほんブログ村

Linux ブログランキングへ

2020年04月07日

2,500円 超格安Googleタブレット改造 Nexus7 2012 PostmarketOSインストールテスト 再び No.39

pmnexus7.jpg

今回は久しぶりにNexus7 2012でpostmarketOS。
最近は2,500円で買える程、安くなりました。
RaspberryPi3同等のスペックはあります。
現在でもギリギリ使える程度のスペックがありますので
この格安タブをリサイクルして活かしたいです。
今回は650MB以上のROMを焼く事に成功しました。
ストレージ8〜32GBのユーザー領域を使えるので広いです。

●2,500円中古Nexus7
値上がりするNexus5とは違い、年代とスペックが劣る
Nexus7 2012はどんどん価格が低下する傾向で
市場に中古がだぶついてきました。
安い時に買わなきゃw

でそれとは正反対にpostmarketOSの大きなバグがほぼ埋まりまして
MainlineKernelも公式にサポート開始、サクサクです。
なかなか魅力ある機種に生まれ変わりましたw
しかも爆安。

Tegra3の1.4GHzですが最新のKernelとAlpineLinuxは
当時と比べてもかなりサクサクで嬉しいです。
メモリも1GBあって節約すればなんとかなりますかも。
これでちゃんと周辺機種が使えれば面白いんですが・・・
Kapperは安Nexus7 2012と2013を買い占めています。
市場に弾はまだ沢山ありますが、格安ジャンクをガッツリ改造したいです。
Google公式ROMもありますので、改造初心者にもお勧めです。

https://wiki.postmarketos.org/wiki/Google_Nexus_7_2012_(asus-grouper)

●Androidのパーティション構造
ブートやシステムに関する/Systemが650MBで残りがだいたい/userdataになっています。
Linuxをインストールする時は/userdataにした方が良いです。
つまりデータを削除する必要があります。

Nexus 7 partition sizes (16Gb model)
Android Nexus7 Partitions
...
Partition Name Partition Description by_name Size in Blocks Size in MB
mmcblk0p1 recovery SOS 12288 12
mmcblk0p2 boot LNX 8192 8
mmcblk0p3 system APP 665600 650
mmcblk0p4 cache CAC 453632 443
mmcblk0p5 misc MSC 512 0.5
mmcblk0p6 staging MSP 10240 10
mmcblk0p7 provisioned PER 5120 5
mmcblk0p8 unknown MDA 512 0.5
mmcblk0p9 userdata UDA 14103552 13773
mmcblk0boot0 2048 2
mmcblk0boot1 2048 2

●Nexus7改造について
Root化とかBootloader unlockとかは割愛します。
昔の資料を見てください。
細かい所は前回のブログをご参考に

http://kapper1224.sblo.jp/category/1900023-1.html

問題点として、ブートする/systemに650MBしか容量がありません。
/userdataにpostmarketOSを焼くか
/systemをリサイズするか650 MB以下の小さいイメージを焼くか
しないと起動できません。

・650MB以下にして/systemに焼く
・650MB以上は/userdataに焼く

公式HPに書いてあるのはどちらかです。
ので650MBに収まる様にパッケージを選択するかどうかです。
WMはUSBキーボードが使えていませんのでXFCE4推奨。
アプリとして、容量の大きいvimとfileは外して
xvkbdは必須。Wifiを繋ぐ為にiwdが推奨されています。
ブラウザは一先ずdillo。
Bluetoothとしてbluez。
あとは適当なアプリを選んで。

ちなみにAlpine Linuxのパッケージ名が分からず
何のファイルがあってどんな名前か分からないので、
検索は諦めて直接レポジトリのサーバを見ましょう

http://nl.alpinelinux.org/alpine/v3.9/community/armhf/
http://nl.alpinelinux.org/alpine/v3.9/main/armhf/

勿論、/systemじゃなくて/userdataにインストールして起動できます。
その際には/systemを消す必要がありますのでご注意を。
(/systemが無ければ他のパーティションから起動する仕組み)

Fastbootモードのブートローダーをまず電源ON+音声下ボタンを
長押しして起動させたら

lsusb

でNexus7を無事認識していれば、

fastboot devices

でNexus7が表示されていればOk。
無ければ母艦を再起動するか、USBケーブルを変えるか
/etc/udev/rules.d/51-android.rulesを設定し直しましょう。

git clone https://gitlab.com/postmarketOS/pmbootstrap.git
cd pmbootstrap

650MB以下のイメージファイルで/systemに入れるなら、

./pmbootstrap.py init
ここでWMやパッケージ名を選択。XFCE4推奨。
./pmbootstrap.py install
./pmbootstrap.py flasher flash_kernel
./pmbootstrap.py flasher flash_rootfs
./pmbootstrap.py shutdown

でNexus7を再起動。
立ち上がるはずです。
ログはこちら

http://kapper1224.sakura.ne.jp/200401-pm_install_grouper.txt


●650MB以上のイメージを/userdataに焼き込む
./pmbootstrap.pyの設定は最大650MBまでになっているので変更が必要です。
書いていないんだもん(涙
HOMEの.local以下を編集します。

gedit ../.local/var/pmbootstrap/cache_git/pmaports/device/testing/device-asus-grouper/deviceinfo

するとこんなテキストファイルが出てきますので、
最後のdeviceinfo_flash_fastboot_max_size="650"を"14000"とか
適当に修正します。
修正した容量のimgファイルまでを焼ける様になります。

# Reference:
# Please use double quotes only. You can source this file in shell scripts.

deviceinfo_format_version="0"
deviceinfo_name="Google Nexus 7 2012 Wifi"
deviceinfo_manufacturer="Asus"
deviceinfo_codename="asus-grouper"
deviceinfo_year="2012"
deviceinfo_dtb="tegra30-asus-nexus7-grouper"
deviceinfo_append_dtb="true"
deviceinfo_modules_initfs=""
deviceinfo_arch="armv7"

# Device related
deviceinfo_keyboard="false"
deviceinfo_external_storage="false"
deviceinfo_screen_width="800"
deviceinfo_screen_height="1280"
deviceinfo_dev_touchscreen="/dev/input/event1"

# Bootloader related
deviceinfo_flash_method="fastboot"
deviceinfo_kernel_cmdline=""
deviceinfo_generate_bootimg="true"
deviceinfo_bootimg_qcdt="false"
deviceinfo_flash_offset_base=""
deviceinfo_flash_offset_kernel="0x00008000"
deviceinfo_flash_offset_ramdisk="0x01000000"
deviceinfo_flash_offset_second="0x00f00000"
deviceinfo_flash_offset_tags="0x00000100"
deviceinfo_flash_pagesize="2048"
deviceinfo_flash_fastboot_max_size="650"

保存したら、/systemと/userdataを削除します。
しないと焼けません。
また/systemが空の時に/userdataから起動するのが
postmarketOSのルールらしいので、/systemを
消さないと駄目です。ので
データのバックアップは自己責任で。

fastboot erase system
fastboot erase userdata

消したらインストール


./pmbootstrap.py init
ここでWMやパッケージ名を選択
./pmbootstrap.py install
./pmbootstrap.py flasher flash_kernel

./pmbootstrap.py export

ここで止めて、公式HP通り、
TWRPをダウンロードしインストールして画面を起動させます。
そうしないと、adbコマンドが使えません。ご注意を。

(computer) $ adb shell
(twrp) $ df # look for the data partition. should be something like /dev/block/mmcblk0p9 or p10 with /data next to it
(twrp) $ umount /dev/block/mmcblk0p__ <- fill partition number
(twrp) $ umount /dev/block/mmcblk0p__ <- fill partition number # again, it can be mounted as /sdcard and as /data
(computer again) $ adb push /tmp/postmarketOS-export/asus-grouper.img /dev/block/mmcblk0p__ <- fill partition number

公式通りにやっても実はパーティションはdfでちゃんと表示されてませんが、
パーティションが消える訳では無いので
問題ありませんのでご注意を。

grouperの場合、/dev/block/mmcblk0p9
tilapiaの場合、/dev/block/mmcblk0p10
に焼きます。
焼くのに20分くらい掛かるので長いです。

adb push /tmp/postmarketOS-export/asus-grouper.img /dev/block/mmcblk0p9
./pmbootstrap.py shutdown

焼いたら再起動します。
エラーがでなければOKです。
asus-grouper.imgのROMファイルはtmpだと母艦を落とした際に消えるので
どこかにバックアップして残しておくと便利です。
ちなみに、asus-grouper.imgのイメージファイルは

.local/var/pmbootstrap/chroot_native/home/pmos/rootfs/asus-grouper.img

に保存してありますので、上書きされる前にバックアップを
残しておくと便利です。

またpostmarketOSのWikiにありますコマンドの、
$ pmbootstrap flasher flash_rootfs --partition userdata
は固まって進まなくなるので使わないで下さい。


●まとめ
650MB以上のpostmarketOSが/userdataに焼けました。
Linuxデスクトップが超格安2,500円
Nexus7 2012で起動できました。
RaspberryPi3と同等スペックです。
7インチは良いですね。広いし安いですし。
これでSDカードスロットがあれば完璧だったんですが。
ソフトウェアキーボードはxvkbdで代用しましょう。
XFCE4から色々と。
ネットワークに繋いだりはこれから勉強します。
本当に面白い格安機種です。
posted by kapper at 03:45 | Comment(0) | Nexus7
にほんブログ村 IT技術ブログへ
にほんブログ村

Linux ブログランキングへ