Panasonic TOUGHPAD FZ-B2B
Android タブレットなのに BIOS があって x86 な CPU が載ってる頑丈な変態タブレットをアレコレしちゃいます
この記事で取り扱うのは Bay Trail-MのCeleron N2930を搭載しAndroid 4.4がインストールされているバージョンです。
バーコードリーダーほしいよぉ FZ-M1用バーコードリーダー手に入れました。普通に動きます。
BIOSの入り方
FZ-M1と同じ方法でいける。
- Starting System画面の左上隅をタッチ連打。青い画面に代わるまでやらないと認識しない。
- Starting System画面でUSBキーボードからF2連打
パーティション
/bootloader/ami/etc/recovery.fstabより
/dev/block/mmcblk0p7 /system ext4 ro wait /dev/block/mmcblk0p10 /factory ext4 ro wait /dev/block/mmcblk0p8 /cache ext4 noatime,nosuid,nodev,errors=panic wait,check /dev/block/mmcblk0p9 /data ext4 noatime,nosuid,nodev,errors=panic wait,check,encryptable=footer /dev/block/mmcblk0p3 /boot emmc defaults defaults /dev/block/mmcblk0p4 /recovery emmc defaults defaults /dev/block/mmcblk0p5 /misc emmc defaults defaults /dev/block/mmcblk0p1 /bootloader vfat defaults recoveryonly /dev/block/mmcblk0p2 /bootloader2 vfat defaults recoveryonly /dev/block/mmcblk1p1 /sdcard vfat defaults recoveryonly
ブートの順序
- セキュアブートが有効になっており、通常では解除できない。
- ESPの各バイナリはPanasonicの署名がついている。Microsoftの署名が通るかどうかは検証していない。
- /dev/block/mmcblk0p1がESPになっている
- ESP:/shim.efiがUEFIのbootentryに登録されている
- ESP:/shim.efiからESP:/gummiboot.efiを起動している。
- gummiboot.efiはAndroidを起動できるようにカスタムしたsystemd-bootのようだ。 https://github.com/me176c-dev/me176c-boot#readme 近い実装のbootloader
- ESP:/gummiboot.efiの場所は決め打ちっぽい
- gummiboot.efiがAndroid、Recovery、MokManager.efiの切り替えを担当しており、Vol-おしっぱで選択メニューが表示される。
- boot、recoveryはAndroidのboot.img 形式
カスタム証明書の登録
- Starting System画面でVol-を押したまま起動すると、選択肢が出るので、MokManagerを選ぶと証明書の登録ができる。
- 起動したいディストリビューションの証明書やオレオレ証明書を登録しておくとよろしい。
- 登録する際は、証明書のみをUSBメモリに入れてやらないと画面が崩れたりして失敗しやすい。
- セキュアブートの証明書に関してはArch LinuxのWiki 参照
- オレオレ証明書の作成方法は コマンド等のメモ に書いてます。
USBメモリから起動
- 本体ESPの署名がついたbootloader一式をUSBメモリにコピーすればUSB起動が可能。
- USB:/gummiboot.efiを署名付きの任意のローダーに入れ替えれば任意のLinuxカーネルを立ち上げることができる
- 個人的にはタッチパネルで操作可能な rEFInd がおすすめ
- AmiSetupWriter.efiはWin-Raid Forumの当該スレッド からダウンロードしてオレオレ署名する
- セキュアブート解除後もトラブルシューティング用に一式残しておくといざというときに対処可能
USB ├──MokManager.efi ←本体からコピー ├──shim.efi ←本体からコピー ├──gummiboot.efi ← refind_x64.efi と差し替える ├──cert/ ←オレオレ証明書とrEFInd のrefind.crtだけを入れる ├──EFI/tools ← EFI Shellのshellx64.efi等を入れておくとRefindから起動できる ├──AmiSetupWriter.efi ←自分で署名したものを入れる │ └──EFI/boot ├──bootx64.efi ←本体からコピーshim.efiと同一 ├──refind.conf ←rEFInd のアーカイブからコピー、適宜編集 ├──icons/ ←rEFInd のアーカイブからコピー └──drivers_x64/ ←rEFInd のアーカイブからコピー
セキュアブートの解除とタッチパネル有効化
FZ-B2 の UEFI は当然ながら Android に特化した設定となっており、非表示の設定項目を変更しないと SSD を換装して OS を入れ替えても
タッチパネルが動作しなかったり、シャットダウンした後に電源が切れなかったりしてまともに動作しないため、ここで設定変更を行う。
- FZ-B2のBIOSをV1.00L12に更新する。
- 上記を参考にセキュアブート環境で起動可能なEFI Shellとamisetupwriter.efiが入ったUSBメモリを用意する。
- UEFI Shellから下記のコマンドを入力して電源OFFしてから電源ONする。
AmiSetupWriter.efi 0x22e 0x0 AmiSetupWriter.efi 0x1F0 0x0 AmiSetupWriter.efi 0x1F1 0x0
- BIOS設定のセキュリティタブにセキュアブートの設定項目が追加されるので、セキュアブートを解除してフィニッシュ
- ここまで行えば通常のPCAT互換機なのでLinuxやWindowsをインストールできるようになります
コマンドの意味
- セキュリティタブにセキュアブートの設定項目を表示(0x1で非表示)
AmiSetupWriter.efi 0x22e 0x0
- Boot OS Selection をWinsdows 8.xに変更(0x1でAndroid 0x2でWindows7)
AmiSetupWriter.efi 0x1F0 0x0
- LPSS & SCC Devices ModeをACPIに変更(Androidの場合はPCI 0x1)
AmiSetupWriter.efi 0x1F1 0x0
上記のコマンドは FZ-M1A(Celeron版)とFZ-B2BのSetup IFR を比較することで発見した。
ほかにも面白そうなものや文鎮化しそうな項目があるので人柱するのもいいだろう。 俺はもうやらないけど