This How-To assumes you already have an installed BlueStacks you wish to root, but make sure it isn't running. So, let's get started
1. Copy over UPDATE-SuperSU-v2.46.zip and BlueStacks Root.fs to your linux box: in Windows it is typically located at "C:\ProgramData\BlueStacks\Android\Root.fs". If you're using VirtualBox, I suggest you use a shared folder to copy the image over to the guest linux OS.
2. As root, unpack UPDATE-SuperSU-v2.46.zip and mount Root.fs as a loop device.
3. Now we need to copy over (as root) some of the extracted files to the mounted Root.fs:
arm/su --> android/system/xbin/su
arm/su --> android/system/xbin/daemonsu
arm/supolicy --> android/system/xbin/supolicy
arm/libsupol.so --> android/system/lib/libsupol.so
common/Superuser.apk --> android/system/app/Superuser.apk
4. Since there's no init.d structure in BlueStacks, we need to edit android/system/etc/init.sh: at the buttom of the file find these lines:
init|"") do_init ;; esac
init|"") do_init /system/xbin/daemonsu --auto-daemon & ;; esac
6. Start BlueStacks and launch SuperSU via Play Store: it will prompt for upgrading su binary --- choose the normal way and restart BluseStacks upon completion.
7. That's it, you're rooted! Now you may wish to install a proper launcher (like Nova Launcher) if you have not done so already.
Now, as promised, you can grab pre-rooted BlueStacks 0.9.30.4239 Root.fs from here:
Stop BlueStacks, copy Root.fs over to your BlueStacks Android dir, and start BlueStacks. In case your current version is incompatible with the image, try BlueStacks-ThinInstaller_0.9.30.4239.exe from the link above. I'm not sure whether this ThinInstaller will download the proper data when newer version is released, so no guarantees here, you may still need to do it manually at some point in the future unless I maintain the Root.fs actual.