BlueStacksでRoot化 (2025年1月)
BlueSracksでRoot化を行ったので、今後のための個人メモ
正直、BlueStacksのRoot化はめんどくさい∧不安定なので、拘りがないならLDPlayerなどをオススメします。うまくいく時とうまくいかない時があり、結局規則性が見えませんでした。
(筆者はHyperV環境で快適に動作するエミュがBlueStacksのみなので…トホホ…)
実行日:2025/01/30
実行環境:
Windows11 23H2
BlueStacks 5.21.650.1063→5.21.656.1001 (更新)
参考サイト:
1. (推奨) BlueStacksを完全アンインストール
必要ならバックアップを行い、BlueStacks Cleanerを使用して、完全アンインストールを行う。
参考:https://support.bluestacks.com/hc/ja/articles/360057724751
2. BlueStacksの特定バージョンをダウンロード
下記サイトを参考にして、必要なバージョンをダウンロード
今回は5.21.650.1063をダウンロードしてRoot化を行ったが、現在最新の5.21.656.1001でも多分行けると思う。
参考:https://w.atwiki.jp/sts2657/pages/39.html
URL形式:
https://cdn3.bluestacks.com/downloads/windows/nxt/{VERSION}/{HASH}/BlueStacksMicroInstaller_{VERSION}_native.exe
5.21.650.1063の場合:
https://cdn3.bluestacks.com/downloads/windows/nxt/5.21.650.1063/5726796c1f6cad73f3c75166c8a94f8d/BlueStacksMicroInstaller_5.21.650.1063_native.exe
3. インスタンスの作成
BlueStacksをインストール完了後、BlueStacks Multi-Instance Managerを起動して、必要なAndroidバージョンのインスタンスを作成。("起動させない")
4. 設定ファイルの編集 (1)
C:\ProgramData\BlueStacks_nxt\bluestacks.conf
の
「bst.feature.rooting="0"」
↓
「bst.feature.rooting="1"」
「bst.instance.{InstanceName}.enable_root_access="0"」
↓
「bst.instance.{InstanceName}.enable_root_access="1"」
InstanceNameの例:
Android 7 32bit:Nougat32
Android 7 64bit:Nougat32
Android 9:Pie64
Android 11:Rvc64
(Rvc64_4など、インスタンスが複数あると名前が変わるので、「enable_root_access="0"」で検索をかけると楽。)
編集後、右クリックでconfigのプロパディを開いて、「読み取り専用」にする。(インスタンス起動時、勝手に「bst.feature.rooting="1"」が0になる)
読み取り専用時、インスタンス作成や解像度などのオプションの変更ができないので、変更する際は一度読み取り解除して変更を許可する必要がある。
5. 設定ファイルの編集 (2)
C:\ProgramData\BlueStacks_nxt\Engine\{InstanceName}\
にある、
・Android.bstk.in
・{InstanceName}.bstk
・{InstanceName}.bstk-prev (ある場合)
の
<HardDisk uuid="{UUID}" location="fastboot.vdi" format="VDI" type="Readonly" />
<HardDisk uuid="{UUID}" location="Root.vhd" format="VHD" type="Readonly"/>
↓
<HardDisk uuid="{UUID}" location="fastboot.vdi" format="VDI" type="Normal" />
<HardDisk uuid="{UUID}" location="Root.vhd" format="VHD" type="Normal"/>
同じ階層下にRvc64_4などが存在しても、fastboot.vhdやRoot.vhdの設定はない。Rvc64のフォルダのファイルを編集する。
6. KitsuneMagiskの導入&Root化
インスタンスを起動して、KitsuneMagiskをインストール。
起動して「Direct Install (modify /system directly)」オプションを選択してRoot化。一発で成功した場合、おめでとうございます。幸運の持ち主です。
KitsuneMagiskの再起動ボタンは押さずに、右上バツからインスタンスを閉じて再起動をかけてください。再起動ボタンを押すとフリーズします。
Root化の際に、「暗号化を保持する」オプションが表示されてしまった場合、BlueStacksのインストール時などで起動させてしまった可能性がある。インスタンスを削除して再インストールを行う必要がある。
Root化がRead-Onlyによって書き込みが失敗してしまった場合、沼ります。(以下の手順に続く)
6.1. (失敗した場合)設定の確認
起動させているインスタンスのC:\ProgramData\BlueStacks_nxt\Engine\{InstanceName}\
にある、
・Android.bstk.in
・{InstanceName}.bstk
・{InstanceName}.bstk-prev (ある場合)
がRead-OnlyではなくNomalになっているか確認。
6.2. (失敗した場合)成功手順1
他のバージョン(Pie64)のインスタンスを作成して、そちらでRoot化できないか試す。もしできたら失敗したバージョンのインスタンスを削除して作り直して再Try。恐らく成功する。
6.3. (失敗した場合)成功手順2
BlueStacksの更新(今回は5.21.656.1001)して、「Diskformat Check」を行い、そのままRoot化できないか試す。
参考:https://support.bluestacks.com/hc/ja/articles/6175365472781
筆者は1回目は6.3.の手順でRoot化成功。2回目は6.2.の手順で成功した。2回目を試す前に1回目の手順も試してみたが、その際には「Diskformat Check」の項目はなかった。謎。恐らく6.2.の手順の成功率の方が高いと思う。これでだめならBlueStacksの完全アンインストールを行って再度環境を作り直したほうが早いかもしれない。
7. suファイルの削除
このままだと、KitsuneMagiskを開いた際に、
「magisk以外のsuバイナリが検出されました」
というエラーが出るので、
メニュー→環境設定→上位設定
から、ADBで接続する際のIP&ポートを確認して、
adb connect 127.0.0.1:5555
のようにして、ADB接続を行い、
adb shell
でシェルを開いて、
rm -r /system/xbin/su
を実行して削除。
接続先が複数あってシェルを開けない場合は、
adb disconnect
adb shell
PCにADBが入っていない人は以下の参考資料をチェック
参考:https://smartasw.com/archives/298
8. まとめ
上記の手順でうまく行った方はおめでとうございます。幸運の持ち主です。筆者もHyperV環境下でAndroidエミュを動かすために、何時間もこの沼に時間を食われました。冒頭でもお伝えしましたが、拘りがないならLDPlayerなど設定でsystemの書き込みを有効化できるエミュをおすすめします。
最後に、この記事が筆者の初めて投稿した記事なので、いいねやフォロー、成功したバージョン方法などのコメントをして頂けると嬉しいです。(*´꒳`*)
9. 余談
KitsuneMagiskを開いた際に「Root権限を失いました。復元してください。」というメッセージが表示された場合、3回閉じて再度開くとうまく開く。理由はわからない。
Root化を行った状態で開けないゲーム(BlueArchive)があったので、解決策をメモ。
7の手順でsuを消して、{InstanceName}.bstkのrootに関する記述を0にしたら解決できた。そこにたどり着くまでにあった発見をメモしておく。
デフォルトでsuバイナリが以下のディレクトリに存在していた。
①/sbin/su
②/system/xbin/su
②/system/xbin/bstk/su
③/system/bin/su
②/data/downloads/.xb/su
②/data/downloads/.xb/bstk/su
④/boot/android/dataFS/downloads/.xb/bstk/su
④/boot/android/dataFS/downloads/.xb/su
④/boot/android/android/system/xbin/bstk/su
①のsuはMagiskのsuなので削除✘
②のsuはADBで管理者権限に昇格した状態で削除可能
③は、SELinuxを無効化してマウントして消去
setenforce 0
mount -o remount,rw /system/bin
rm -f /system/bin/su
④は、マウントして消去
b0q:/ # fdisk -l
b0q:/ # blkid
/dev/block/sda1: UUID="e7043357-a7ed-4564-ace3-9a6718b7dce1" TYPE="ext4"
/dev/block/sdb1: UUID="7ec466b7-064d-4cf1-8de8-4971d35994cb" TYPE="ext4"
b0q:/ # ls -l /dev/block/sda1
brw------- 1 root root 8, 1 2025-01-30 04:18 /dev/block/sda1
b0q:/ # ls -l /dev/block/sdb1
brw------- 1 root root 8, 17 2025-01-30 04:18 /dev/block/sdb1
b0q:/ # mount /dev/block/sda1 /mnt/tmp
b0q:/ # rm -r /mnt/tmp/dataFS/downloads/.xb/bstk/su
b0q:/ # rm -r /mnt/tmp/dataFS/downloads/.xb/su
いいなと思ったら応援しよう!
![O_G](https://assets.st-note.com/production/uploads/images/172526820/profile_1b88f22ce95a2a1c5d1e6c3800f0608a.png?width=600&crop=1:1,smart)