How to configure the Hp Touchpad internal storage
The most important feature that was ahead of its time and still until today is the use of LVM (Logical Volume Manager) for managing the internal storage.
To the regular user it will be insignificant but it can provide great benefits if deploy properly.
I could be wrong, but the TP could be the first and only mobile device ever shipped with LVM even now. (someone can correct me on this)
What is LVM?
I am a regular user and not an expert on LVM in Linux, the only device that I have to play with LVM is the TP and will show you the basics usage and it may not even have the full potential settings.
In webOS there is a program (app) call Tailor ( Formerly Known as Resizah ), a graphical interface to manage LVM.
The last alpha version 0.3.1 allows for creating a LuneOS partition.
Also you can create all Android partitions inside WebOS, create and resize all partitions while running WebOS.The magic of LVM!
Attached is a screen shot of my TP running Taylor.
Think of it as creating, deleting , moving, expanding or reducing (files and folders) with your file manager. Instead it will be the actual storage card, partitions, volumes. All done withing the OS no need to reboot or enter any commands. Resizing the android system, cache or data partition live inside android with just touch input.! That is how easy it could have been, but Android does not use LVM and the TP had to follow the rest of the herd. The reason that WebOS, Android, LuneOS (and more OS) can be install together is due to the flexibility of LVM.
The ToolBox by jcsullins provides scripts to create webOS and Android volumes and resize system, cache and data. But is not a live system and limited to pre-configure settings.
All the flexibility and easy to use comes with a risk of data lost as we know not everything in the computer world works as intended, due to the endless configuration and uses of each user.
This is a 32G Touchpad with WebOS, Android and LuneOS install and perfectly running. Factory install WebOS (original) Used ToolBox to create Android system, cache and data Used Taylor to create luneos-root List of physical volumes /dev/store/root [ 568.00 MB] /dev/store/var [ 64.00 MB] /dev/store/update [ 16.00 MB] /dev/store/log [ 24.00 MB] /dev/store/mojodb [ 256.00 MB] /dev/store/filecache [ 136.00 MB] /dev/store/media [ 19.44 GB] /dev/store/swap [ 400.00 MB] /dev/store/cm-cache [ 200.00 MB] /dev/store/cm-data [ 4.88 GB] /dev/store/cm-system [ 1.17 GB] /dev/store/luneos-root [ 1.95 GB] 12 disks 0 partitions 0 LVM physical volume whole disks 0 LVM physical volumes LVM is reporting to each OS its own disks and each OS mounts its own Disk using f stabs. In reality there is only one storage, not 12 ( the magic of LVM ! This is a 32G Touchpad that was completely reset using the Toolbox. /dev/block/mmcblk0p8 [ 10.00 MiB] /dev/block/mmcblk0p9 [ 1.46 MiB] /dev/block/mmcblk0p1 [ 100.00 MiB] /dev/block/mmcblk0p10 [ 3.00 MiB] /dev/block/mmcblk0p11 [ 3.00 MiB] /dev/block/mmcblk0p3 [ 1.46 MiB] /dev/block/mmcblk0p12 [ 4.00 MiB] /dev/block/mmcblk0p13 [ 32.00 MiB] /dev/block/mmcblk0p14 [ 29.09 GiB] LVM physical volume /dev/block/mmcblk0p6 [ 750.00 KiB] /dev/store/media [ 29.09 GiB] /dev/block/mmcblk0p7 [ 2.44 MiB] 1 disk 10 partitions 0 LVM physical volume whole disks 1 LVM physical volume /dev/block/mmcblk0p13 ( is the boot partition ) 32 MB where all the uImages are boot it from. This is the physical volume the real internal storage. PV VG Fmt Attr PSize PFree /dev/block/mmcblk0p14 store lvm2 a- 29.09g 0 This is the logical volume of the physical volume which is part of the volume group "store" The media USB storage in Android. This is the logical volume to resize and create other logical volume. --- Logical volume --- LV Name /dev/store/media VG Name store LV UUID WhFWig-xwTY-0SK3-OnrS-32mq-gADG-7mLY7c LV Write Access read/write LV Status available # open 1 LV Size 29.09 GiB Current LE 3723 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 4096 Persistent major 254 Persistent minor 6 Block device 253:6 This is all done loading TWRP mounting /boot and adb shell. The working directory for lvm.static is: /boot/usr/sbin to execute ./lvm.static plus command. Resizing Logical volume /dev/store/media to 1GB ./lvm.static lvresize --size 1G /dev/store/media PV VG Fmt Attr PSize PFree /dev/block/mmcblk0p14 store lvm2 a- 29.09g 28.09g Now there is 28.09g free to be allocated to any volume (disk) we want to create Keep in mind the Persistent minor is 6 of the major 254 ( the next disk can be from 0 to 5 and 7 to 254 ) but 6 is already taken. Creating Android volume cm-system ./lvm.static lvcreate -L 1.3G -M y --major 254 --minor 0 -n /dev/store/cm-system Creating Android volume cm-cache ./lvm.static lvcreate -L 200M -M y --major 254 --minor 1 -n /dev/store/cm-cache Creating Android volume cm-data (4GB) ./lvm.static lvcreate -L 4G -M y --major 254 --minor 2 -n /dev/store/cm-data Activating the new logical volume /boot/usr/sbin # ./lvm.static vgchange -ay 4 logical volume(s) in volume group "store" now active /boot/usr/sbin # ./lvm.static pvs PV VG Fmt Attr PSize PFree /dev/block/mmcblk0p14 store lvm2 a- 29.09g 22.59g There is 22.59GB free to create more volume or disk! Let's create volumes to install Linux as chroot ./lvm.static lvcreate -L 2G -M y --major 254 --minor 5 -n /dev/store/Linux-root Another chroot as Debian! ./lvm.static lvcreate -L 2G -M y --major 254 --minor 7 -n /dev/store/debian-root Create LuneOS volume ./lvm.static lvcreate -L 2G -M y --major 254 --minor 4 -n /dev/store/luneos-root There is 16.59GB free /boot/usr/sbin # ./lvm.static pvs PV VG Fmt Attr PSize PFree /dev/block/mmcblk0p14 store lvm2 a- 29.09g 16.59g Let's create another Android installation ( completely independent ) Android PIE system ./lvm.static lvcreate -L 1.3G -M y --major 254 --minor 8 -n /dev/store/A_PIE-system Android PIE cache ./lvm.static lvcreate -L 200M -M y --major 254 --minor 9 -n /dev/store/A_PIE-cache Android PIE Data (4GB) ./lvm.static lvcreate -L 4G -M y --major 254 --minor 10 -n /dev/store/A_PIE-data There is 11.09GB free /boot/usr/sbin # ./lvm.static pvs PV VG Fmt Attr PSize PFree /dev/block/mmcblk0p14 store lvm2 a- 29.09g 11.09g Let's create SailFishOS! ./lvm.static lvcreate -L 2G -M y --major 254 --minor 11 -n /dev/store/Sailfish_OS Another Installation Android 10 Queso! A_Queso-system ./lvm.static lvcreate -L 1.3G -M y --major 254 --minor 12 -n /dev/store/A_Queso-system A_Queso-cache ./lvm.static lvcreate -L 200M -M y --major 254 --minor 13 -n /dev/store/A_Queso-cache A_Queso_data ./lvm.static lvcreate -L 2G -M y --major 254 --minor 14 -n /dev/store/A_Queso_data There is 5.59GB free PV VG Fmt Attr PSize PFree /dev/block/mmcblk0p14 store lvm2 a- 29.09g 5.59g What about a swap volume! ./lvm.static lvcreate -L 1G -C y -M y --major 254 --minor 15 -n /dev/store/swap Now we can give the command to LVM to extend media to use the 4.59GB available and use it all. /lvm.static lvresize -l 100%FREE /dev/store/media 15 logical volume(s) in volume group "store" now active Here is the summary of all the disks available: /boot/usr/sbin # ./lvm.static lvmdiskscan /dev/block/mmcblk0p8 [ 10.00 MiB] /dev/store/cm-system [ 1.30 GiB] /dev/block/mmcblk0p9 [ 1.46 MiB] /dev/block/mmcblk0p1 [ 100.00 MiB] /dev/store/cm-cache [ 200.00 MiB] /dev/block/mmcblk0p10 [ 3.00 MiB] /dev/store/cm-data [ 4.00 GiB] /dev/block/mmcblk0p11 [ 3.00 MiB] /dev/block/mmcblk0p3 [ 1.46 MiB] /dev/block/mmcblk0p12 [ 4.00 MiB] /dev/store/luneos-root [ 2.00 GiB] /dev/block/mmcblk0p13 [ 32.00 MiB] /dev/store/Linux-root [ 2.00 GiB] /dev/block/mmcblk0p14 [ 29.09 GiB] LVM physical volume /dev/block/mmcblk0p6 [ 750.00 KiB] /dev/store/media [ 4.59 GiB] /dev/block/mmcblk0p7 [ 2.44 MiB] /dev/store/debian-root [ 2.00 GiB] /dev/store/A_PIE-system [ 1.30 GiB] /dev/store/A_PIE-cache [ 200.00 MiB] /dev/store/A_PIE-data [ 4.00 GiB] /dev/store/Sailfish_OS [ 2.00 GiB] /dev/store/A_Queso-system [ 1.30 GiB] /dev/store/A_Queso-cache [ 200.00 MiB] /dev/store/A_Queso_data [ 2.00 GiB] /dev/store/swap [ 1.00 GiB] 15 disks 10 partitions 0 LVM physical volume whole disks 1 LVM physical volume Now we can format every disk with ext2, ext3, ext4 and vfat Example to format Android system volumen mke2fs -E lazy_itable_init=0 -t ext4 /dev/store/cm-system mke2fs -E lazy_itable_init=0 -t ext4 /dev/store/cm-cache mke2fs -E lazy_itable_init=0 -t ext4 /dev/store/cm-data To make swap mkswap /dev/store/swap This is very easy to create, and quick there is no waitting time is done as soon as you press enter. We have create it a Touchpad that is capable of running the following OS independently. Current Version of Android A version of Android PIE 9 A version of Android Queso 10 LuneOS SailfishOS Linux-root (to run as chroot or native) debian-root (to run as chroot or native) A 1GB swap file The volume size of the disk created are minimum or below requirement but this is to show how powerful and simple LVM is to set up.