PhabletChroot

Creating a chroot environment on a ubuntu phone or tablet

Preparing the chroot environment

1 - create a chroot in your phone's home dir (eg /home/phablet/vivid-chroot) with debootstrap

$ sudo su
$ apt-get update && apt-get install debootstrap --yes && debootstrap --variant=buildd vivid /home/phablet/vivid-chroot

In case debootstrap complains about nodev/noexec (you only need that for debootstrap):

$ sudo mount -o remount,dev /home

2 - outside the chroot, as root:

$ cp /etc/apt/sources.list /home/phablet/vivid-chroot/etc/apt/sources.list && cp -r /etc/apt/sources.list.d /home/phablet/vivid-chroot/etc/apt && cp /etc/apt/trusted.gpg /home/phablet/vivid-chroot/etc/apt && cp -r /etc/apt/trusted.gpg.d /home/phablet/vivid-chroot/etc/apt && cp /etc/hosts /home/phablet/vivid-chroot/etc/hosts && echo vivid-chroot > /home/phablet/vivid-chroot/etc/debian_chroot

3 - inside the chroot, create a phablet user with the same uid and gid as outside the chroot.

Helps with copying stuff form/to the real to the chrooted home dirs. Also enables you to "scp some-file phablet@device_ip:/home/phablet/vivid-chroot/home/phablet" from your desktop.

$ addgroup --gid 32011 phablet && adduser --uid 32011 --gid 32011 phablet && apt-get update && apt-get install sudo && adduser phablet sudo

4 - still inside the chroot:

$ su phablet
$ mkdir /home/phablet/real_root

5 - outside the chroot, run this script as root (this step has to be done after every boot unless you wanna play with fstab):

    mount --bind /proc /home/phablet/vivid-chroot/proc
    mount --bind /dev /home/phablet/vivid-chroot/dev
    mount --bind / /home/phablet/vivid-chroot/home/phablet/real_root

Building and installing from inside the chroot (logged as phablet):

1 - When configuring projects make sure they install to /usr. Eg:

    qmake PREFIX=/usr [...]
    cmake -DCMAKE_INSTALL_PREFIX:PATH=/usr [...]
  • I also never build tests on the device. qtmir and unity8 have -DNO_TESTS=true for that.

2 - build normally.

  • eg: make -j4

3 - To install, do:

$ sudo make install DESTDIR=/home/phablet/real_root


CategoryUbuntuDevelopment

PhabletChroot (last edited 2016-06-22 14:07:15 by localhost)