[One (M8) General] topjohnwu:
Marshmallow root has been much more difficult than simply flash a zip in recovery, because it also requires a modified boot image to work.

I've done all the work for you, this root is achieved with SELinux enforced using Chainfire's method.

The original RUU/Stock rom is here.

In this post you can find the followings:

Aroma Stock Rom

Root Info

GPE Marshmallow on All Models

Disable S-ON System Write Protection

Sweep to sleep module

FAQ

Aroma Stock Rom (All models support with selectable root)

Simplest way to dive in GPE Marshmallow, the installer will guide you to the right direction.

If you want root, take a look at the next section for some info about root methods.

Choose your model in the installer, it also includes proper support for Sprint and Verizon device,

This will NOT convert your device into GPE!! It only flashes a rom.

Aroma Version Stock GPE

Mega Link

​

Important!! If you choose systemless root, please choose "Do not install SuperSU" when reboot in TWRP, because TWRP isn't updated to detect this new method. If you choose to install SuperSU within TWRP you'll get stuck in boot loop.

Root Info

In Marshmallow, Chainfire gave us with two rooting methods include:

The traditional root in system, which breaks OTA functionality.

(It's more stable now)

New "systemless" approach, which means the root stuffs are only in DATA and BOOT, the system will stay intact and it will accept OTAs.

(Note that this method is still in beta stage according to CF)

If you already downloaded the GPE Marshmallow stock rom and you want root, this is where you'd be interested with.

(Non-GSM device should now jump to next section)

Choose your preferred root method above, and follow the correspond instructions below.

Instructions:

Traditional:

Flash m8-mmgpe-su-boot.zip in attachment with TWRP

Flash SuperSU 2.52

Systemless:

Be sure you haven't used any other root method(like the traditional one above), if you've rooted with other methods, please re-flash your system back to pure stock

Flash m8-mmgpe-su-boot-systemless.zip in attachment with TWRP

Download SuperSU-v2.56-20151030013730.zip in this thread, and flash it through TWRP

Important!! Please choose "Do not install SuperSU" when reboot in TWRP, because TWRP isn't updated to detect this new method. If you choose to install SuperSU within TWRP you'll get stuck in bootloop.

GPE Marshmallow on All Models

Not an International/GSM device and still want some Marshmallow love? This is where you'd be interested with.

Simplest way is flash the pre-packed rom above, but if you already downloaded the stock rom and don't want to re-download, then look below.

GPE MM on all models is possible because it uses the Sense all-model dtb image, thanks to sun_dream for his work!!

Choose your preferred root method above, and follow the correspond instructions below.

Instructions:

Traditional:

Flash m8_AIO-mmgpe-su-boot.zip in attachment with TWRP

Flash SuperSU 2.52

Systemless:

Be sure you haven't used any other root method(like the traditional one above), if you've rooted with other methods, please re-flash your system back to pure stock

Flash m8_AIO-mmgpe-su-boot-systemless.zip in attachment with TWRP

Download SuperSU-v2.56-20151030013730.zip in this thread, and flash it through TWRP

Important!! Please choose "Do not install SuperSU" when reboot in TWRP, because TWRP isn't updated to detect this new method. If you choose to install SuperSU within TWRP you'll get stuck in bootloop.

Disable S-ON System Write Protection

After you rooted, you might find out that your system partition is locked up, this is because of HTC's system write protection on S-ON devices, and here is a handy mod for you to bypass it. Original mod by flar2, I modified it to work on MM GPE.

Instructions:

You have to use the traditional root method above to make this work!!

Flash m8-mmgpe-wp_mod.zip in attachment

Sweep to Sleep module

A handy mod to turn of the screen by swiping the bottom of the screen. Original mod by flar2, I modified it to work on MM GPE.

Instructions:

This will flash files to system, there is no point in using systemless method, it ot should be OK

Flash m8-mmgpe-s2s_mod.zip in attachment

FAQ

Q: After choosing full wipe, my contents in internal storage are all gone!!

A: No, it's not. It's a new behavior of Marshmallow. After each clean flash, it will move all previous files in /sdcard into /sdcard/0. You can just move them back to the proper locations.

Q: I cannot install Busybox in system / I cannot use adaway !!

A: Flash wp_mod.

Q: I used systemless root and wanted to keep my system partition intact, how do I install Busybox?

A: Download Busybox Pro, type /su/bin as the installation path for busybox. You cannot do it using the free version, unfortunately.

Q: **** app cannot access external SDcard!!

A: Look at this explanation:

Since Kitkat(2 years ago man), we don't have direct external storage write permission. Google consider it insecure, so they implemented this feature. The reason why you can access external SDcard easily before is because most roms on XDA already contains a hack in /system/etc/permissions/platform.xml. You should not rely on this hack forever, please take a look below.

In lollipop and after, Google provided a much secure and better way to grant external storage access to third party apps, first of all take a look at this article for details:

http://www.androidpolice.com/2014/1...s-automatic-mediastore-and-improves-security/

So instead of using the old platform.xml hack in the old Kitkat days, adopt yourself with this new behavior of Android!! If a certain app cannot access SDcard, ASK THE DEVELOPER to add support for this API!!

Many apps already have support for this API. I'll take Titanium Backup for example, as lots of you cannot find the way to use it on externals SD. In Menu>>Preferences>>Backup Location, you can choose Document Provider on top of the detect button.

In the provider, open the menu on the top right corner and select "Show SDcard", then you'll see External Storage in the left side. Select external SDcard in the document provider and press the button on the bottom, the app will then be granted access to the whole external storage. You can then create a new folder in TiBack and select it as your backup location.

Other apps also follows the instructions above, you just have to manually set up the folder where the app can access, in the case which most of us would love to give access to the whole SDcard, I set the location to the root of external storage. Each app has independent permission, so you have to manually grant each app you wish to access external storage.

Q: I want OTA, what should I do?

A: Look at the following info

To accept OTA updates, you need the following:

Your MID should be 0P6B17000

Your CID should be GOOGL001

You have to fully convert to GPE

You have to keep system partition untouched

You have to have GPE stock recovery

So before anything, if you want to accept OTA, you have to change MID, CID, and convert to GPE. The tricky part is the system partition and the recovery. The easiest way is when the OTA comes, flash the stock rom again without root, flash GPE stock recovery through fastboot, then apply OTA. But if you like to go the hardcore way, here comes a tutorial:

fastboot flash systemless_boot.img

fastboot boot TWRP.img(so that you can use TWRP but you didn't actually flash it)

Flash systemless SuperSU

By doing so you can accept OTA at anytime.

Q: Are there any mods around?

A: Because of the difficulty of file based flashing, modded GPE MM might take a while to appear.

You can use Xposed Framework, as it now officially support Marshmallow.

http://xdaforums.com/showthread.php?t=3034811

Credits:

[MENTION=631273]Chainfire[/MENTION] for the new root methods and SuperSU

[MENTION=4684315]flar2[/MENTION] for wp_mod.ko and s2s_mod.ko

[MENTION=2972841]enewman17[/MENTION] for original RUU

[MENTION=586648]sun_dream[/MENTION] for the all models dtb image

[MENTION=5280118]whaevr[/MENTION] for porting to Verizon

[MENTION=1162986]Captain_Throwback[/MENTION] for porting to Sprint

​