LG Optimus Slider (lg-vm701)

== Contributors ==
* Foldmorepaper
== Users owning this device ==
== What Works ==
The kernel compiles!
== What Does Not Work ==
Flashing is possible, but does not work due to these problems:
* booting off SD is necessary as system and userdata partitions are too small for the current image
* attempting to boot using pmbootstrap flasher boot uploads but fails to boot after printing the cmdline to the screen.
== Rooting ==
The exploit used on the LG Esteem also works on the Optimus Slider. Please see this forum thread on AndroidCentral for instructions. 
The tool referenced has a dead download link, but is available through the Internet Archive's Wayback Machine. LG_Esteem_Root.zip on archive.org
The tool runs from a .bat script. Though the changes necessary to run it on linux are trivial, here is the modified script:
run.sh
 
#!/bin/bash 
#####################################
# 
# LG Esteem root script
# Linux version 
#
# Exploit copyright (C) 2011 Revolutionary
# Scripting for LG Esteem by Dan Rosenberg (@djrbliss)
# Modified for Linux by foldmorepaper (@foldmorepaper)
#
#####################################
# 
# Instructions:
# 
# 1. Ensure you have the latest drivers installed from LG
# 
# 2. Put your device in debugging mode 
# 
# 3. Attach it via USB 
# 
# 4. Run this script in the same directory as the rest of the extracted
# zipfile 
# 
##################################### 
echo "[*] LG Esteem root script (Linux version)" 
echo "[*] Exploit copyright (C) 2011 Revolutionary" 
echo "[*] Scripting for LG Esteem by Dan Rosenberg (@djrbliss)"
echo "[*] Linux script by foldmorepaper (@foldmorepaper)"
echo "[*]" 
echo "[*] Before continuing, ensure USB debugging is enabled, that you"
echo "[*] have the latest LG drivers installed, and that your phone is"
echo "[*] connected via USB."
echo "[*]" 
read -p "[*] Press enter to root your phone..." 
echo "[*]"
 
echo "[*] Waiting for device..."
adb kill-server 
adb wait-for-device
 
echo "[*] Device found."
echo "[*] Pushing exploit binary..."
adb push zergrush /data/local/tmp/zergrush
adb shell "chmod 755 /data/local/tmp/zergrush"
echo "[*] Running exploit..."
adb shell "echo exit | /data/local/tmp/zergrush"
# Install the goods
echo "[*] Installing root tools..."
adb shell /data/local/tmp/sh -c "mount -orw,remount /dev/block/system /system"
adb shell /data/local/tmp/sh -c "mkdir /system/tmp"
adb shell /data/local/tmp/sh -c "chmod 777 /system/tmp"
adb push su /system/tmp/su
adb push busybox /system/tmp/busybox
adb push Superuser.apk /system/tmp/Superuser.apk
adb shell /data/local/tmp/sh -c "mv /system/tmp/su /system/xbin/su"
adb shell /data/local/tmp/sh -c "mv /system/tmp/Superuser.apk /system/app/Superuser.apk"
adb shell /data/local/tmp/sh -c "mv /system/tmp/busybox /system/xbin/busybox"
adb shell /data/local/tmp/sh -c "chown root /system/xbin/su"
adb shell /data/local/tmp/sh -c "chmod 4755 /system/xbin/su"
adb shell /data/local/tmp/sh -c "ln -s /system/xbin/su /system/bin/su"
adb shell /data/local/tmp/sh -c "chmod 755 /system/xbin/busybox"
adb shell /data/local/tmp/sh -c "/system/xbin/busybox --install /system/xbin/"
# Clean up after ourselves
echo "[*] Cleaning up..."
adb shell /data/local/tmp/sh -c "rmdir /system/tmp"
adb shell "rm /data/local/tmp/* 2>/dev/null"
echo "[*] Rebooting..."
adb reboot
adb wait-for-device
echo "[*] Root complete, enjoy!"
echo "[*] Press any key to exit."
adb kill-server
== Additional Info ==
Partitions
 
# cat /proc/partitions
major minor #blocks name
 31 0 5120 mtdblock0
 31 1 117888 mtdblock1
 31 2 7168 mtdblock2
 31 3 1280 mtdblock3
 31 4 1024 mtdblock4
 31 5 1024 mtdblock5
 31 6 161792 mtdblock6
 31 7 185344 mtdblock7
 31 8 512 mtdblock8
 31 9 1536 mtdblock9
fstab
# cat /etc/fstab 
/dev/block/mtdblock1 /cache yaffs2 rw
/dev/block/mtdblock7 /data yaffs2 rw
/dev/block/mmcblk0p1 /sdcard vfat rw
 /sd-ext auto rw
/dev/block/mtdblock6 /system yaffs2 rw
mtd
# cat /proc/mtd
dev: size erasesize name
mtd0: 00500000 00020000 "boot"
mtd1: 07320000 00020000 "cache"
mtd2: 00700000 00020000 "recovery"
mtd3: 00140000 00020000 "splash"
mtd4: 00100000 00020000 "FOTA"
mtd5: 00100000 00020000 "FOTA_STO"
mtd6: 09e00000 00020000 "system"
mtd7: 0b500000 00020000 "userdata"
mtd8: 00080000 00020000 "misc"
mtd9: 00180000 00020000 "persist"
== Custom Recovery ==
Two custom recoveries are available for the vm701. Use in the context of postmarketOS:
* CWM
** Enable fastboot by formatting the the boot partition
** Restore commonly-available Android system backups
* TWRP
** ADB access without booting Android
To flash a custom recovery to the recovery partition (before having access to fastboot), the tool flash_image is required. (available from, among other sources, BobZhome ROM's) 
flash_image Installation & Usage
$ adb push recovery.img /sdcard/
$ adb push flash_image /sdcard/
$ adb shell
$ su
# mount -o remount, rw /system
# cp /sdcard/flash_image /system/bin
# chmod 777 /system/bin/flash_image
# flash_image recovery /sdcard/recovery.img
# reboot recovery
==== Booting to Recovery ====
* From power-off: hold buttons Power + Volume Down until booted into recovery
* Using ADB: $ adb reboot recovery
* Using fastboot: $ fastboot reboot recovery
=== CWM ===
A custom CWM recovery is available from BobZhome ROM's. 
Push to SD card:
$ adb push BobZhome_VM701_recovery.img /sdcard/
==== Flash from Android ====
Using flash_image, flash recovery image to recovery partition (from ADB):
# flash_image recovery /sdcard/BobZhome_VM701_recovery.img
==== Flash/Boot from Fastboot ====
Boot recovery image fastboot boot BobZhome_VM701_recovery.imgFlash recovery image fastboot flash recovery BobZhome_VM701_recovery.img
=== TWRP ===
Download the official TWRP recovery from the device page. 
Push to SD card:
$ adb push twrp-2.8.5.0-gelato.img /sdcard/
==== Flash from Android ====
Using flash_image, flash recovery image to recovery partition (from ADB):
# flash_image recovery /sdcard/twrp-2.8.5.0-gelato.img
==== Flash/Boot from Fastboot ====
Boot recovery image fastboot boot twrp-2.8.5.0-gelato.imgFlash recovery image fastboot flash recovery twrp-2.8.5.0-gelato.img
== Installation ==
=== Fastboot ===
Fastboot is only available upon erasing/formatting the boot partition. There are alternative means of nulling the boot partition, but CWM is the easiest.
It is recommended, as always, to make a full system backup before doing any modifications. This is especially necessary in this case, as unbricking from emergency mode (camera button + backup button, plug in usb cable to computer) is not possible, even though the lg mobile support tool recognizes the device and downloads a firmware image, an unknown error occurs.
To format the boot partition, Mounts and Storage -> format /boot -> Yes - Format
On boot, fastboot should automatically start. To restore normal boot functionality, restore boot partition from backup.
== See also ==
FCC Internal Photos