February 12, 2019

Android-x86 に Magisk を導入してみる!?

event_noteFebruary 12, 2019

この記事について

この記事では、PC で使えるアンドロイド OS の Android-x86 に Magisk を導入する手順について見ていきます。

2019年2月時点で最新の、 Android x86 のバージョン 8.1-r1 (64bit版) と Magisk v18.1 を使用しました。

今後のバージョンアップにより、多くの仕様が変更になるものと思いますので、その際は参考程度にご覧いただければと思います。

Magisk を Android-x86 にインストールする前に...

現時点での不具合?

私の環境だけかも知れませんが、以前 Magisk v17 を Android-x86 にインストールした際、頻繁にフリーズや再起動が発生し Magisk の使用を断念しました。Magisk v18.1 ではそのような、頻繁なフリーズ・再起動には見舞われませんでしたが、Magisk の主要機能である「MagiskHide」が有効に働いていないようで、Magisk を導入したがために 一部のアプリが動かなくなるというケースが十分に考えられます。
もしも以下の方法で、アプリが問題なく動くようでしたら、その環境には、無理に Magisk を導入しない方が良いと思われます。

Android-x86 で 起動させることのできない ゲーム などの アプリについて、少しでも起動率を上げるため、default.prop や build.prop などのシステムファイルを編集する手順について見ていきます。

Magisk を Android-x86 に導入するだけでは超えられない 壁

1. SafetyNet API

試した限りでは、SafetyNet を Pass することができませんでした。

2. マウス操作に対応していないゲームアプリ

ゲームアプリを起動することはできても、マウスのクリック操作を受け付けないアプリが少なくありませんでした。自動タップアプリを使って、擬似的にタップをすることで先に進めるアプリもありましたが、アクション系のゲームだとタッチ対応のディスプレイでないと、かなり遊ぶのは厳しいと思います。

3. 予期せぬ不具合

Android-x86 という特殊な環境のため、一部の機能が正常に動作しなかったり、システムが不安定になることがあるかもしれません。

Magisk を導入するメリット

Magisk を導入することで、いくつかのゲームアプリは Android-x86 でも起動させることができるようになりました (今後対策される可能性は高いですが...)。
今まで起動しなかったアプリを試すことができ、その上に root権限を保ち続けることができる点が最大のメリットだと思います。

6-19-2019 追記
最新版の Android x86 8.1-r2 (64bit版) と Magisk (v19.3) の組み合わせで試してみたところ、私の環境では「MagiskHide」が機能しました。MagiskHide で起動したいアプリにチェックを入れることで、より多くのゲームアプリが起動するようになりましたが、途中で認証に失敗して先に進めないアプリも少なくない印象です。

Android-x86 に Magisk をインストールする手順

ここからの操作は Ubuntu を使っていきます。

必要となるファイルの入手とインストール

以下の手順では abootimg と mkbootimg というプログラムを使います。この二つのインストール方法についてはこちらの記事の前半部分もご覧ください。

Android-x86 で 起動させることのできない ゲーム などの アプリについて、少しでも起動率を上げるため、default.prop や build.prop などのシステムファイルを編集する手順について見ていきます。

Magisk Manager をダウンロード

Magisk 本体の 設定などを行う、Magisk Manager というアプリの APK ファイルを入手します。こちらの公式フォーラムから ダウンロードが可能です。

Downloads という項目の中の、Latest Magisk Manager というリンクから、Magisk Manager のAPKを入手できます。

Ubuntu のファイルマネージャーを root権限で実行

端末に以下のコマンド

$ sudo nautilus

もしくは、

$ sudo -H nautilus

を入力すると、ファイルマネージャーを root権限で実行できます。
この root権限で実行したファイルマネージャーを使って、以下のファイル操作を行っていきます。

boot.img を生成

まずは、Ubuntu のルートディレクトリにある Android-x86 のフォルダ (「android-○.○-r○」など) にアクセスし、そのフォルダ内の、ファイルの何もない場所を右クリックして、「端末で開く」を選択します。

そして、開いた端末に以下のコマンドを入力して、実行します。

# mkbootimg --kernel kernel --ramdisk ramdisk.img --output boot.img

すると、boot.img ファイルが、ramdisk.img や kernel ファイルのあるフォルダに生成されます。

Magisk Manager の APK と boot.img を Android-x86 のダウンロードフォルダに配置

今回は、Android-x86 からファイルを見つける時に分かりやすいよう、Android-x86 のダウンロードフォルダを使っていきますが、Android-x86 からアクセスできる場所であれば、どこでも構いません。

Ubuntu のルートディレクトリにある Android-x86 のフォルダ (「android-○.○-r○」など) にアクセスし、そのフォルダ内のdatamedia0と進んでいくと、Android-x86 側のホームフォルダがあると思います。
そこにある、Downloadの中に、先ほどダウンロードした Magisk Manager の APK と 作成した boot.img ファイルを 配置してください (boot.imgファイルに関しては、ramdisk.img などがあるフォルダから、念のためコピーではなく、移動を行ったほうが良いと思います)。

Magisk Manager から boot.img をパッチ

ここからの操作は、Android-x86 で行います。

Magisk Manager のインストール

アンドロイドのファイルアプリなどを使って、「ダウンロード (Download)」フォルダに配置した、Magisk Manager の APK ファイルを開き、Magisk Manager をインストールします。

提供元不明のアプリとしてブロックされた場合は、設定から、提供元不明のアプリのインストールを許可します。

Magisk Manager から boot.img をパッチ

インストールが完了したら、Magisk Manager を開き、「Magisk がインストールされていません」の横にある 「インストール」というボタンをクリックして、インストール > Bootイメージのパッチ を選択します。

ファイルアプリから、先ほど作成した boot.img ファイルを選択すると、Bootイメージのパッチが始まります。パッチされた Bootイメージは patched_boot.img というファイル名で、アンドロイドの ダウンロードフォルダに保存されます。

パッチが完了したら、Ubuntu に戻ります。

Ubuntu から ramdisk.img を置き換え

patched_boot.img から パッチされた ramdisk.img を 分離して再配置

Ubuntu に戻ってきたら、root権限で Ubuntu のファイルマネージャーを起動します。
Ubuntu のルートディレクトリにある Android-x86 のフォルダ (「android-○.○-r○」など) にアクセスし、そのフォルダ内のdatamedia0Downlaodと進んでいくと、patched_boot.img というファイルが作成されていると思います。
この「Download」フォルダ内で、ファイルの何もない場所を右クリックし、「端末で開く」から、開いた端末に以下のコマンドを入力して Enter で実行します。

# abootimg -x patched_boot.img

6-19-2019 追記
最新版の Magisk Manager (v7.3.1) では patched_boot.img ではなく、magisk_patched.img という名前で、boot.img がパッチされていましたので、代わりに以下のコマンドを実行ください。

# abootimg -x magisk_patched.img

処理が終わると、patched_boot.img のあるフォルダに、zImageファイルinitrd.imgが生成されます。
その後、生成されたinitrd.imgramdisk.imgにリネームします

このramdisk.imgを、Ubuntu のルートディレクトリにある Android-x86 のフォルダ (「android-○.○-r○」など) に配置することで、Magisk をインストールした状態で、Android-x86 を使うことができるようになります (オリジナルの ramdisk.img はリネームするか、どこかにバックアップしておくと、元に戻したくなった場合に多少安心です)。

今作成した ramdisk.img を kernel などがあるフォルダに 配置したら、再び Android-x86 に戻ります。

Magisk Manager から インストール状況を確認

Android から Magisk Manager を起動すると、インストールが上手くいっていれば、「インストール済」と表示されるはずです。もしも「Magisk がインストールされていません」と表示されている場合は、Magisk Manager や Android 自体を再起動すると、上手くいくかも知れません。

「インストール済」と表示された場合は、Magisk のメニューから 設定に入り、「Magisk Manager を隠す」を選択します。

しばらくすると、Magisk Manager が削除され、ランダムなパッケージ名でパックされた、Manager というアプリがインストールされます。ここまで終わったら、Magisk の導入は完了です。
念のため、個別のアプリの データ・キャッシュの削除や Android の再起動を行っておくと良いかもしれません。