Diferència entre revisions de la pàgina «Ubuntu amb Android»
(Usuari normal) |
(→Altres fonts) |
||
(Hi ha 24 revisions intermèdies del mateix usuari que no es mostren) | |||
Línia 1: | Línia 1: | ||
[[Ubuntu amb Android|Català]] - [[Ubuntu en Android|Castellano]] - [[Ubuntu on Android|English]] | [[Ubuntu amb Android|Català]] - [[Ubuntu en Android|Castellano]] - [[Ubuntu on Android|English]] | ||
---- | ---- | ||
− | '''Introducció:''' Aquesta és una guia per fer funcionar un contenidor de Ubuntu GNU/Linux dins una sessió del sistema operatiu Android, i tenir així la funcionalitat d'un ordinador d'escriptori. És una guia molt detallada, també útil per qui vulgui crear un assistent o millorar el procediment. | + | '''Introducció:''' Aquesta és una guia per fer funcionar un contenidor de Ubuntu GNU/Linux dins una sessió del sistema operatiu Android, i tenir així la funcionalitat d'un ordinador d'escriptori sense perdre rendiment. És una guia molt detallada, que serveix per Debian i derivats, i també útil per qui vulgui crear un assistent o millorar el procediment. |
'''Notes:''' | '''Notes:''' | ||
− | * En el moment d'escriure aquesta guia (novembre del 2011), Canonical encara no | + | * En el moment d'escriure aquesta guia (novembre del 2011), [http://ca.wikipedia.org/wiki/Canonical_Ltd. Canonical] encara no tenia enllestida [http://www.ubuntu.com/devices/android la seva anunciada solució], però des del 2014 [https://wiki.ubuntu.com/Touch/Porting segueixen l'estratègia de Cyanogenmod i amb més èxit]. La versió amb què l'escriptori predeterminat (Unity) funciona millor és la 12.04 (Precise). |
+ | * El total de descàrregues que es proposa pot arribar a 1GiB de dades; si les feu totes des de l'aparell tingueu en compte la tarifa de dades que us aplica el proveïdor d'accés a internet. | ||
* S'ha explorat la possibilitat d'utilitzar un contenidor LXC per tenir un contenidor completament normal, però [http://ubuntuforums.org/showthread.php?t=2077671 no ha funcionat] per l'ús que fa Android de [https://sourceforge.net/mailarchive/message.php?msg_id=27043843 bionic lic en comptes de GNU libc]. | * S'ha explorat la possibilitat d'utilitzar un contenidor LXC per tenir un contenidor completament normal, però [http://ubuntuforums.org/showthread.php?t=2077671 no ha funcionat] per l'ús que fa Android de [https://sourceforge.net/mailarchive/message.php?msg_id=27043843 bionic lic en comptes de GNU libc]. | ||
__TOC__ | __TOC__ | ||
Línia 13: | Línia 14: | ||
== Accés per terminal == | == Accés per terminal == | ||
==== Terminal local ==== | ==== Terminal local ==== | ||
− | Sempre és recomanable tenir una [http://f-droid.org/repository/browse/?fdid=jackpal.androidterm aplicació de Terminal] disponible per poder fer gestions amb mobilitat, però les preparacions llargues i complexes és més còmode fer-les des d'un ordinador d'escriptori controlant l'aparell connectat per USB. | + | Sempre és recomanable tenir una [http://f-droid.org/repository/browse/?fdid=jackpal.androidterm aplicació de Terminal] (que es pot obtenir lliurement amb [[Gestor de paquets F-Droid|F-Droid]]) disponible per poder fer gestions amb mobilitat, però les preparacions llargues i complexes és més còmode fer-les des d'un ordinador d'escriptori controlant l'aparell connectat per USB. |
==== Control remot ==== | ==== Control remot ==== | ||
− | En la distribució Ubuntu GNU/Linux, a partir de la versió 12.10 al repositori universal hi ha disponible el paquet '''android-tools-adb''' que permet el control remot a un aparell amb Android en mode de depuració USB. | + | En la distribució Ubuntu GNU/Linux, a partir de la versió 12.10 al repositori ''universal'' hi ha disponible el paquet '''android-tools-adb''' que permet el control remot a un aparell amb Android en ''mode de depuració USB''. També hi ha un [https://launchpad.net/~nilarimogard/+archive/webupd8 repositori independent] que proporciona '''android-tools''' per anteriors versions. |
− | Per utilitzar el ''Android Debug Bridge'' (ADB) heu de tenir l'aparell en marxa, connectat per USB, i amb el mode de «Depuració d'USB» habilitat a les opcions del desenvolupador (developer) d'Android | + | Per utilitzar el ''Android Debug Bridge'' (ADB) heu de tenir l'aparell en marxa, connectat per USB, i amb el mode de «Depuració d'USB» habilitat a les opcions del desenvolupador (developer) d'Android. |
:'''ADB per USB''' | :'''ADB per USB''' | ||
* Per comprovar la connectivitat: | * Per comprovar la connectivitat: | ||
adb devices | adb devices | ||
− | (ha de | + | (ha de mostrar una «llista» amb un identificador estrany que digui que és un dispositiu; device) |
* Per obrir una sessió de terminal a l'aparell: | * Per obrir una sessió de terminal a l'aparell: | ||
adb shell | adb shell | ||
* Per iniciar una sessió com a superusuari (root), i tenir permisos d'administració d'Android: | * Per iniciar una sessió com a superusuari (root), i tenir permisos d'administració d'Android: | ||
su | su | ||
− | * Per finalitzar com a superusuari i després tancar la sessió de terminal: | + | * Per finalitzar com a superusuari i després també tancar la sessió de terminal: |
exit | exit | ||
exit | exit | ||
:'''ADB per xarxa''' | :'''ADB per xarxa''' | ||
− | Moltes connexions per USB són poc estables (es tallen molt sovint i te n'adones que escrius al teu ordinador), i en aquests casos es resol per xarxa ( | + | Moltes connexions per USB són poc estables (es tallen molt sovint i te n'adones que escrius al teu ordinador), i en aquests casos es resol per xarxa (Wifi). Quan es fa això és important que l'aparell no tingui connexió directa a internet (per exemple amb l'operador telefònic) i es tracti d'una comunicació pel Wifi local. |
− | * Des d'Android, per veure els dispositius de xarxa que té activats: | + | * Des d'Android, per veure els dispositius de xarxa que té activats (default... dev -->): |
ip route list | ip route list | ||
* Des d'Android, per veure l'adreça IP d'un dispositiu de xarxa (per exemple '''wlan0'''): | * Des d'Android, per veure l'adreça IP d'un dispositiu de xarxa (per exemple '''wlan0'''): | ||
Línia 50: | Línia 51: | ||
:'''Notes addicionals''' | :'''Notes addicionals''' | ||
* En aquesta guia, on s'indiquen instruccions escrites són per executar en una finestra de terminal local o remot. | * En aquesta guia, on s'indiquen instruccions escrites són per executar en una finestra de terminal local o remot. | ||
− | * Si | + | * Si obteniu missatges de tipus «Operation not permitted» sol ser perquè no heu iniciat com a superusuari (su) |
+ | |||
+ | == Comprovar les eines disponibles == | ||
+ | En un terminal comproveu aquesta instrucció: | ||
+ | chroot | ||
+ | Us pot dir dues coses: o bé la presentació d'ajuda (amb «''usage: chroot...''») o bé el missatge d'error «''chroot: not found''». En aquest últim cas (''not found'') teniu una variant d'Android molt retallada, i necessiteu reemplaçar-la per una altra més lliure com [[Canviar Android per CyanogenMod|CyanogenMod]] o [http://replicant.us/ Replicant]. Altres alternatives més tècniques són: [[Superposar directoris sobre Android]] o [https://wiki.ubuntu.com/ARM/OmapDesktopInstall Formatejar una targeta de memòria]. | ||
== Anotar l'arquitectura == | == Anotar l'arquitectura == | ||
− | Es pot mirar quina generació de processador utilitza Android amb | + | Es pot mirar quina generació de processador utilitza Android amb '''una''' de les següents instruccions: |
uname -m | uname -m | ||
+ | cat /proc/cpuinfo | ||
Si el processador ARM de l'aparell suporta coma flotant (ARMv7 o superior, per exemple armv7l seria el cas), aleshores es poden utilitzar paquets «armhf» en comptes de «armel». Això millora la velocitat d'alguns processos. | Si el processador ARM de l'aparell suporta coma flotant (ARMv7 o superior, per exemple armv7l seria el cas), aleshores es poden utilitzar paquets «armhf» en comptes de «armel». Això millora la velocitat d'alguns processos. | ||
Línia 60: | Línia 67: | ||
Per a què funcionin els enllaços i accessos a dispositiu cal que el nou contenidor estigui en una partició apropiada per GNU/Linux, com per exemple Ext3 o Ext4. Amb la instrucció '''mount''' es pot veure el format de cada volum, i amb aquesta sintaxi es veu molt clar: | Per a què funcionin els enllaços i accessos a dispositiu cal que el nou contenidor estigui en una partició apropiada per GNU/Linux, com per exemple Ext3 o Ext4. Amb la instrucció '''mount''' es pot veure el format de cada volum, i amb aquesta sintaxi es veu molt clar: | ||
mount | cut -f 1-5 -d ' ' | sed -e 's/ on / /g' | sed -e 's/ type / /g' | cut -f 2-3 -d ' ' | mount | cut -f 1-5 -d ' ' | sed -e 's/ on / /g' | sed -e 's/ type / /g' | cut -f 2-3 -d ' ' | ||
− | I es pot filtrar veure només les que ens interessa: | + | I es pot filtrar per veure només les que ens interessa: |
mount | cut -f 1-5 -d ' ' | sed -e 's/ on / /g' | sed -e 's/ type / /g' | cut -f 2-3 -d ' ' | sed -e '/ext.$/!d' | mount | cut -f 1-5 -d ' ' | sed -e 's/ on / /g' | sed -e 's/ type / /g' | cut -f 2-3 -d ' ' | sed -e '/ext.$/!d' | ||
Una vegada vistes les rutes compatibles, cal que valoreu l'espai lliure que hi ha amb aquesta instrucció: | Una vegada vistes les rutes compatibles, cal que valoreu l'espai lliure que hi ha amb aquesta instrucció: | ||
df | df | ||
− | Si a l'espai lliure (Free) no s' | + | Si a l'espai lliure (Free) no s'esmenta la unitat de mesura (100K, 100M, 100G), vol dir que s'expressa en K (KiB). A tenir en compte també que la ruta /cache funciona «com una paperera interna» i el seu contingut pot ser esborrat automàticament. |
− | Necessiteu almenys 100MiB per una instal·lació elemental (''core'' sol), però | + | Necessiteu almenys 100MiB per una instal·lació elemental (''core'' sol), o cap a 250MiB per un ''debootstrap'', però es pot arribar a utilitzar 2 o 3GiB si instal·leu totes les grans aplicacions d'escriptori d'ús comú, apart de comptar amb una mica d'espai de treball. Igualment es poden fer instal·lacions «per totes les butxaques». |
Per la resta de guia suposarem que heu escollit la partició '''/data''', i aleshores el nou sistema operatiu el poseu a '''/data/ubuntu'''. Heu d'habilitar doncs els permisos d'escriptura, execució, dispositius i superusuari a la partició, i crear el subdirectori: | Per la resta de guia suposarem que heu escollit la partició '''/data''', i aleshores el nou sistema operatiu el poseu a '''/data/ubuntu'''. Heu d'habilitar doncs els permisos d'escriptura, execució, dispositius i superusuari a la partició, i crear el subdirectori: | ||
Línia 77: | Línia 84: | ||
== Obtenir una base de sistema operatiu == | == Obtenir una base de sistema operatiu == | ||
− | Aquesta seria la manera de construïr-lo des d'un altre ordinador (suposant arquitectura per armhf): | + | Aquesta seria la manera de construïr-lo des d'un altre ordinador (suposant arquitectura per armhf) en una partició Ext2/Ext3: |
sudo debootstrap --verbose --arch=armhf --foreign precise precise-armhf | sudo debootstrap --verbose --arch=armhf --foreign precise precise-armhf | ||
* Per transportar l'arbre de directoris d'un dispositiu a un altre, cal copiar-ho amb permisos de superusuari, per tal que els atributs i propietaris de fitxers i directoris no es perdin pel camí. Per obrir així un explorador de carpetes amb Ubuntu, es pot executar (Alt+F2) «'''gksudo nautilus'''». | * Per transportar l'arbre de directoris d'un dispositiu a un altre, cal copiar-ho amb permisos de superusuari, per tal que els atributs i propietaris de fitxers i directoris no es perdin pel camí. Per obrir així un explorador de carpetes amb Ubuntu, es pot executar (Alt+F2) «'''gksudo nautilus'''». | ||
− | Però aquí també proposem la manera de fer-ho completament des de l'aparell amb Android: descarregant una base preparada (del web oficial) amb '''només una''' d'aquestes instruccions, segons la versió i variant que necessiteu (es | + | Però aquí també proposem la manera de fer-ho completament des de l'aparell amb Android: descarregant una base preparada (del web oficial) amb '''només una''' d'aquestes instruccions, segons la versió i variant que necessiteu (es publiquen més versions a cdimage.ubuntu.com): |
− | + | '''<nowiki>wget http://cdimage.ubuntu.com/ubuntu-core/releases/precise/release/ubuntu-core-12.04.2-core-armhf.tar.gz</nowiki>''' | |
− | + | <nowiki>wget http://cdimage.ubuntu.com/ubuntu-core/releases/oneiric/release/ubuntu-core-11.10-core-armel.tar.gz</nowiki> | |
− | + | <nowiki>wget http://cdimage.ubuntu.com/ubuntu-core/releases/quantal/release/ubuntu-core-12.10-core-armhf.tar.gz</nowiki> | |
− | + | <nowiki>wget http://cdimage.ubuntu.com/releases/precise/release/ubuntu-12.04-preinstalled-desktop-armhf+ac100.tar.gz</nowiki> | |
− | + | <nowiki>wget http://cdimage.ubuntu.com/releases/oneiric/release/ubuntu-11.10-preinstalled-desktop-armel+ac100.tar.gz</nowiki> | |
Nota: Les «preinstaled» porten tot el programari d'una instal·lació típica, però també elements que cal netejar per engegar el contenidor. | Nota: Les «preinstaled» porten tot el programari d'una instal·lació típica, però també elements que cal netejar per engegar el contenidor. | ||
− | + | Amb el fitxer descarregat, toca desempaquetar-lo: | |
− | tar -xzf ubuntu-core-12.04. | + | tar -xzf ubuntu-core-12.04.2-core-armhf.tar.gz |
− | rm ubuntu-core-12.04. | + | rm ubuntu-core-12.04.2-core-armhf.tar.gz |
== Adaptar la base == | == Adaptar la base == | ||
Corregiu alguns enllaços dins el directori de la base, per adequar-los més a la situació: | Corregiu alguns enllaços dins el directori de la base, per adequar-los més a la situació: | ||
+ | chmod 755 "$PuntArrel" | ||
if [ -d /acct ] ; then mkdir -p acct ; fi | if [ -d /acct ] ; then mkdir -p acct ; fi | ||
cd var | cd var | ||
Línia 114: | Línia 122: | ||
mount -o bind "/sys" "$PuntArrel/sys" | mount -o bind "/sys" "$PuntArrel/sys" | ||
if [ -d /acct ] ; then mount -o bind "/acct" "$PuntArrel/acct" ; fi | if [ -d /acct ] ; then mount -o bind "/acct" "$PuntArrel/acct" ; fi | ||
− | if [ -d /dev/cpuctl ] ; then mount -o bind "/dev/cpuctl" " | + | if [ -d /dev/cpuctl ] ; then mount -o bind "/dev/cpuctl" "$PuntArrel/dev/cpuctl" ; fi |
Si voleu fer disponibles les carpetes d'usuari d'Android, cal mirar quines particions hi ha muntades. Es pot fer amb un simple '''mount''' o amb aquesta instrucció que simplifica la informació: | Si voleu fer disponibles les carpetes d'usuari d'Android, cal mirar quines particions hi ha muntades. Es pot fer amb un simple '''mount''' o amb aquesta instrucció que simplifica la informació: | ||
Línia 122: | Línia 130: | ||
mount -o bind "/mnt/sdcard" "$PuntArrel/mnt/sdcard" | mount -o bind "/mnt/sdcard" "$PuntArrel/mnt/sdcard" | ||
− | == Entrar al nou sistema i | + | == Entrar al nou sistema i establir serveis elementals == |
Des de la incorporació del sistema d'inici de serveis Upstart, [http://gyp.blogs.balabit.com/2011/01/using-upstart-in-a-chroot/ els contenidors Chroot no inicien els serveis com una instal·lació normal], i cal fer-ho manualment. | Des de la incorporació del sistema d'inici de serveis Upstart, [http://gyp.blogs.balabit.com/2011/01/using-upstart-in-a-chroot/ els contenidors Chroot no inicien els serveis com una instal·lació normal], i cal fer-ho manualment. | ||
chroot "$PuntArrel" /bin/su | chroot "$PuntArrel" /bin/su | ||
mount -a | mount -a | ||
− | + | Assegureu-vos que hi figuri alguna cosa muntada, per a què no fallin algunes utilitats: | |
if [ "$(mount)" = "" ] ; then mount -o bind /selinux /selinux ; fi | if [ "$(mount)" = "" ] ; then mount -o bind /selinux /selinux ; fi | ||
+ | Completeu el ''debootstrap'' si és el cas, a la mateixa arquitectura: | ||
+ | if [ -x /debootstrap/debootstrap ] ; then /debootstrap/debootstrap --second-stage ; fi | ||
+ | |||
+ | Pedaç per evitar error d'inici de serveis Upstart: | ||
+ | dpkg-divert --local --rename --add /sbin/initctl | ||
+ | ln -s /bin/true /sbin/initctl | ||
+ | |||
+ | Configureu la xarxa: | ||
+ | echo "nameserver 4.2.2.2" > /etc/resolv.conf | ||
+ | echo "nameserver 8.8.8.8" >> /etc/resolv.conf | ||
+ | echo "nameserver 8.8.4.4" >> /etc/resolv.conf | ||
+ | echo "127.0.0.1 localhost" > /etc/hosts | ||
+ | |||
+ | Comproveu si hi ha repositoris establerts: | ||
+ | cat /etc/apt/sources.list | ||
+ | Si no hi havia res, o els «universe» estan deshabilitats amb #, escriviu-los amb les següents instruccions (exemple per Ubuntu 12.04, anomenat «precise»): | ||
+ | Versio="precise" | ||
+ | <nowiki>echo "deb http://ports.ubuntu.com/ ${Versio} main universe" > /etc/apt/sources.list</nowiki> | ||
+ | <nowiki>echo "# deb-src http://ports.ubuntu.com/ ${Versio} main universe" >> /etc/apt/sources.list</nowiki> | ||
+ | <nowiki>echo "" >> /etc/apt/sources.list</nowiki> | ||
+ | <nowiki>echo "deb http://ports.ubuntu.com/ ${Versio}-updates main universe" >> /etc/apt/sources.list</nowiki> | ||
+ | <nowiki>echo "# deb-src http://ports.ubuntu.com/ ${Versio}-updates main universe" >> /etc/apt/sources.list</nowiki> | ||
+ | <nowiki>echo "" >> /etc/apt/sources.list</nowiki> | ||
+ | <nowiki>echo "deb http://ports.ubuntu.com/ ${Versio}-security main universe" >> /etc/apt/sources.list</nowiki> | ||
+ | <nowiki>echo "# deb-src http://ports.ubuntu.com/ ${Versio}-security main universe" >> /etc/apt/sources.list</nowiki> | ||
+ | apt-get update | ||
+ | |||
+ | Instal·leu serveis i eines per evitar queixes (els paquets ''-ca'' són per la llengua catalana): | ||
+ | :Nota: si apareix algun requadre de pregunta o missatge, es canvia d'opció amb el TABulador i es polsen els botons amb l'espai, la qual cosa és fàcil de fer si s'està treballant amb ADB des d'un ordinador. | ||
+ | apt-get install dbus dbus-x11 | ||
+ | mkdir -p /var/run/dbus | ||
+ | apt-get install language-pack-ca | ||
+ | update-locale | ||
+ | LlenguaPredeterminada="ca_ES.UTF-8" | ||
+ | export LANG="$LlenguaPredeterminada" | ||
+ | export LANGUAGE="$LlenguaPredeterminada" | ||
+ | echo "LANG=\"$LlenguaPredeterminada\"" >> /etc/default/locale | ||
+ | echo "LANGUAGE=\"$LlenguaPredeterminada\"" >> /etc/default/locale | ||
Inicieu el servei DBus del qual en depenen moltes aplicacions (no es pot aprofitar el d'Android): | Inicieu el servei DBus del qual en depenen moltes aplicacions (no es pot aprofitar el d'Android): | ||
DbusPid="$(dbus-daemon --system --print-pid --fork)" | DbusPid="$(dbus-daemon --system --print-pid --fork)" | ||
+ | |||
+ | Instal·leu la part bàsica d'Ubuntu i apliqueu actualitzacions. Aquest procés triga bastant: | ||
+ | apt-get install ubuntu-minimal ubuntu-standard | ||
+ | apt-get upgrade | ||
+ | Instal·leu escriptori i aplicacions que us interessi. Aquest procés pot trigar MOLT: | ||
+ | apt-get install sudo ubuntu-desktop libreoffice libreoffice-l10n-ca language-pack-gnome-ca | ||
+ | (si apareix un requadre de missatge o pregunta, es desplaça amb el TABulador i es polsa amb l'espai). | ||
== Obrir un compte d'usuari normal == | == Obrir un compte d'usuari normal == | ||
Línia 149: | Línia 202: | ||
== Habilitar interfície gràfica == | == Habilitar interfície gràfica == | ||
− | Tot i que ja ha aparegut alguna [http://f-droid.org/repository/browse/?fdid=au.com.darkside.XServer eina X-Server] per utilitzar aplicacions en pantalla directament sense control remot, de moment exposem el mètode tradicional 2011-2012 (suposant que la pantalla de l'aparell té una resolució de 1280x720): | + | Tot i que ja ha aparegut alguna [http://f-droid.org/repository/browse/?fdid=au.com.darkside.XServer eina X-Server] per utilitzar aplicacions en pantalla directament sense control remot, de moment exposem el mètode tradicional 2011-2012 (suposant com a exemple que la pantalla de l'aparell té una resolució de 1280x720): |
apt-get install xvfb x11vnc xtightvncviewer | apt-get install xvfb x11vnc xtightvncviewer | ||
− | if [ "$Copyrect" = "" ] ; then CrOptions="-nowirecopyrect -noscrollcopyrect" else CrOptions="-ncache" fi | + | if [ "$Copyrect" = "" ] ; then CrOptions="-nowirecopyrect -noscrollcopyrect" ; else CrOptions="-ncache" ; fi |
− | + | MoreOptions="-create -localhost -xrandr $CrOptions -rfbport 5900 -nopw -forever -permitfiletransfer -nevershared -scale 1/1" | |
− | + | echo "x11vnc $MoreOptions -env FD_GEOM=${1:-1280x720x16} -afteraccept 'x-session-manager &' -logfile '.x11vnc.log'" > /tmp/xvnc.sh | |
− | Es quedarà esperant connexions (PORT=5900). Cal no tancar aquest terminal mentre es vulgui tenir Ubuntu disponible. | + | chmod a+rx /tmp/xvnc.sh |
+ | su -l $NomUsuari -c /tmp/xvnc.sh | ||
+ | Es quedarà esperant connexions (veureu PORT=5900). Cal no tancar aquest terminal mentre es vulgui tenir Ubuntu disponible. | ||
== Obrir l'escriptori d'Ubuntu des d'Android == | == Obrir l'escriptori d'Ubuntu des d'Android == | ||
Es pot utilitzar qualsevol [http://f-droid.org/repository/browse/?fdid=android.androidVNC programa de control remot per VNC], que es pot trobar fàcilment amb el [[gestor de paquets F-Droid]]. | Es pot utilitzar qualsevol [http://f-droid.org/repository/browse/?fdid=android.androidVNC programa de control remot per VNC], que es pot trobar fàcilment amb el [[gestor de paquets F-Droid]]. | ||
− | Es connecta a l'adreça '''localhost''' i amb el port normal '''5900'''. Sense usuari (''nickname'') ni tampoc contrasenya (''password''). Teniu un accés prou segur perquè només admetrà connexions des del mateix aparell. | + | Es connecta a l'adreça '''localhost''' i amb el port normal '''5900'''. Sense usuari (''nickname'') ni tampoc contrasenya (''password''). Teniu un accés prou segur perquè només admetrà connexions des del mateix aparell (-localhost). |
== Sortida == | == Sortida == | ||
Si voleu tornar a utilitzar Android n'hi ha prou amb tancar el VNC, o símplement minimitzar-lo per fer altres coses. Si atureu l'aparell amb Android no passa res; és com si també aturéssiu l'escriptori d'Ubuntu com si fos un ordinador. | Si voleu tornar a utilitzar Android n'hi ha prou amb tancar el VNC, o símplement minimitzar-lo per fer altres coses. Si atureu l'aparell amb Android no passa res; és com si també aturéssiu l'escriptori d'Ubuntu com si fos un ordinador. | ||
− | Si voleu aturar el sistema Ubuntu sense aturar ni reiniciar Android, heu de sortir de la sessió del mateix escriproti d'Ubuntu, igual com si ho fessiu d'un ordinador normal: amb el botó d'aturar l'ordinador, però l'opció de sortir com a usuari. Si veieu una finestra de terminal també tancant-la es finalitza la sessió. Amb les següents indicacions fareu una sortida completament neta. | + | Si voleu aturar el sistema Ubuntu sense aturar ni reiniciar Android, heu de sortir de la sessió del mateix escriproti d'Ubuntu, igual com si ho fessiu d'un ordinador normal: amb el botó gráfic d'aturar l'ordinador, però l'opció de sortir com a usuari. Si veieu una finestra de terminal també tancant-la es finalitza la sessió. Amb les següents indicacions fareu una sortida completament neta del contenidor. |
Aturar serveis: A la finestra de Terminal on teníeu el x11vnc esperant connexions, si aquest encara espera, el podeu interrompre amb {Control} + {C}. Després la resta: | Aturar serveis: A la finestra de Terminal on teníeu el x11vnc esperant connexions, si aquest encara espera, el podeu interrompre amb {Control} + {C}. Després la resta: | ||
Línia 174: | Línia 229: | ||
Si per exemple heu muntat la carpeta d'Android /mnt/sdcard : | Si per exemple heu muntat la carpeta d'Android /mnt/sdcard : | ||
umount "$PuntArrel/mnt/sdcard" | umount "$PuntArrel/mnt/sdcard" | ||
− | if [ -d /dev/cpuctl ] ; then umount " | + | if [ -d /dev/cpuctl ] ; then umount "$PuntArrel/dev/cpuctl" ; fi |
if [ -d /acct ] ; then umount "$PuntArrel/acct" ; fi | if [ -d /acct ] ; then umount "$PuntArrel/acct" ; fi | ||
umount "$PuntArrel/sys" | umount "$PuntArrel/sys" | ||
Línia 185: | Línia 240: | ||
== Per repetir l'experiència == | == Per repetir l'experiència == | ||
* Si no heu finalitzat la sessió dins Ubuntu, símplement podeu tornar a connectar amb el programa-client de VNC. | * Si no heu finalitzat la sessió dins Ubuntu, símplement podeu tornar a connectar amb el programa-client de VNC. | ||
− | * El millor, és clar és poder tenir icones directes a l'escriptori, tant per muntar el contenidor com per connectar amb l'escriptori per VNC. Aquest wiki agraïrà molt les aportacions sobre aquest tema. | + | * El millor, és clar, és poder tenir icones directes a l'escriptori d'Android, tant per muntar el contenidor com per connectar amb l'escriptori per VNC. Aquest wiki agraïrà molt les aportacions sobre aquest tema. |
− | En altres casos, com per exemple que hagueu aturat l'aparell o finalitzat Ubuntu completament, escriviu aquestes instruccions en una finestra de Terminal (dades del mateix exemple d'aquesta pàgina, que cal personalitzar): | + | En altres casos, com per exemple que hagueu aturat l'aparell o finalitzat el contenidor Ubuntu completament, escriviu aquestes instruccions en una finestra de Terminal (dades del mateix exemple d'aquesta pàgina, que cal personalitzar): |
su | su | ||
mount -o remount,rw,dev,exec,suid,noatime /data | mount -o remount,rw,dev,exec,suid,noatime /data | ||
Línia 196: | Línia 251: | ||
mount -o bind "/sys" "$PuntArrel/sys" | mount -o bind "/sys" "$PuntArrel/sys" | ||
if [ -d /acct ] ; then mount -o bind "/acct" "$PuntArrel/acct" ; fi | if [ -d /acct ] ; then mount -o bind "/acct" "$PuntArrel/acct" ; fi | ||
− | if [ -d /dev/cpuctl ] ; then mount -o bind "/dev/cpuctl" " | + | if [ -d /dev/cpuctl ] ; then mount -o bind "/dev/cpuctl" "$PuntArrel/dev/cpuctl" ; fi |
mount -o bind "/mnt/sdcard" "$PuntArrel/mnt/sdcard" | mount -o bind "/mnt/sdcard" "$PuntArrel/mnt/sdcard" | ||
chroot "$PuntArrel" /bin/su | chroot "$PuntArrel" /bin/su | ||
Línia 202: | Línia 257: | ||
if [ "$(mount)" = "" ] ; then mount -o bind /selinux /selinux ; fi | if [ "$(mount)" = "" ] ; then mount -o bind /selinux /selinux ; fi | ||
DbusPid="$(dbus-daemon --system --print-pid --fork)" | DbusPid="$(dbus-daemon --system --print-pid --fork)" | ||
− | |||
− | |||
− | |||
NomUsuari=usuari | NomUsuari=usuari | ||
− | + | if [ "$Copyrect" = "" ] ; then CrOptions="-nowirecopyrect -noscrollcopyrect" ; else CrOptions="-ncache" ; fi | |
+ | MoreOptions="-create -localhost -xrandr $CrOptions -rfbport 5900 -nopw -forever -permitfiletransfer -nevershared -scale 1/1" | ||
+ | echo "x11vnc $MoreOptions -env FD_GEOM=${1:-1280x720x16} -afteraccept 'x-session-manager &' -logfile '.x11vnc.log'" > /tmp/xvnc.sh | ||
+ | chmod a+rx /tmp/xvnc.sh | ||
+ | su -l $NomUsuari -c /tmp/xvnc.sh | ||
Connectar amb l'aplicació-client de VNC a l'adreça '''localhost''' i amb el port normal '''5900'''. Sense usuari ni tampoc contrasenya. | Connectar amb l'aplicació-client de VNC a l'adreça '''localhost''' i amb el port normal '''5900'''. Sense usuari ni tampoc contrasenya. | ||
− | Evidentment el millor és tenir les instruccions scripts (fitxers de text executables): del primer «mount» fins al «chroot» en un script a Android (per exemple / | + | Evidentment el millor és tenir les instruccions en scripts (fitxers de text executables): del primer «mount» fins al «chroot» en un script a Android (per exemple /system/bin/m) i la resta en un script a Ubuntu (per exemple /usr/local/bin/x). D'aquesta manera, en un terminal ja només caldria fer: |
su | su | ||
m | m | ||
x | x | ||
+ | I per fer-ho en una sola instrucció, podeu canviar la instrucció '''chroot "$PuntArrel" /bin/su''' per '''chroot "$PuntArrel" /bin/su -c /usr/local/bin/x''' , i aleshores també un script a Android (/system/bin/u) que contingui una sola línia amb '''su -c m''' . Amb això, engegueu el servei amb una sola instrucció al terminal: | ||
+ | u | ||
+ | (recordeu-vos de donar permís d'execució als scripts, per exemple amb: chmod 755 /system/bin/u ) | ||
+ | |||
+ | ==== Llançadors a l'escriptori d'Android ==== | ||
+ | Amb el [https://github.com/kuri65536/sl4a/releases SL4A] podeu preparar un programet Bash (''Shell script'') que també es pot executar sense mostrar la finestra de terminal (background). Amb això podeu substituïr «u» que hem posat d'exemple, creant un ''script'' anomenat per exemple '''Ubuntu.sh''' i amb contingut '''su -c m''' | ||
+ | |||
+ | Per crear una icona a l'escriptori (Home) que llanci l'Ubuntu de fons, premeu el fons de l'escriptori durant una estona fins que us obri un menú d'opcions, i trieu crear una drecera/llançadora personalitzada (''Custom shortcut''). Seleccioneu l'activitat "Scripts" que porta la icona dels ulls iluminats (SL4A), seleccioneu el vostre programet "Ubuntu.sh" i trieu que s'inicii de rerefons/background (botó amb engranatge). Li podeu acabar personalitzant el títol com «Ubuntu 0» i accepteu. | ||
+ | |||
+ | La mateixa tècnica podeu emprar per crear una llançadora que connecti directament per VNC: polsar llargament al fons de l'escriptori, Llançadora personalitzada (''Custom shortcut''), escollir activitat (''Pick your activity''), Connexió VNC, escolliu la de «localhost:5900», poseu-li un títol com «Ubuntu 1» i accepteu. | ||
+ | |||
+ | Amb aquestes dues llançadores, ja teniu l'Ubuntu amb 2 pulsacions: primer a la icona SL4A que treballa de rerefons, i després a la icona de VNC que us hi connecta. '''No llanceu novament la icona de SL4A si no us heu assegurat de què està aturat.''' Podeu connectar i desconnectar tantes vegades com voleu mentre l'Ubuntu estigui engegat de rerefons amb SL4A. | ||
+ | |||
+ | Un problema detectat: Si se us obre el menú però no us apareix l'opció de crear llançadora/drecera/shortcut a l'escriptori (només ofereix canviar fons), segurament esteu utilitzant l'escriptori «Trebuchet» que té alguna mancança. Podeu instal·lar el gestor d'escriptori [http://f-droid.org/repository/browse/?fdid=org.adw.launcher AnDerWeb] per arreglar-ho, però no aprofita les icones que tinguessiu col·locades amb l'anterior. | ||
+ | |||
+ | == Com veure les coses més grans == | ||
+ | Hi ha aparells de butxaca que tenen una gran densitat de punts en una pantalla tàctil, és a dir, molta resolució en una pantalla tant petita. Aprofitar tota la resolució en aquestes situacions fa difícil encertar els elements de l'escriptori amb el dit. | ||
+ | |||
+ | Si amb l'exemple d'aquesta guia volem veure les coses el ''doble'' de grans, canviem la resolució de 1280x720 per 640x360, i l'escala de 1/1 per 2/1. Això significa dividir per 2 la resolució i augmentar la petita imatge al doble per a què igualment empleni la pantalla. L'operació es pot fer en qualsevol proporció; aquí un exemple per fer-ho a dos terços (que implica un 50% d'augment): | ||
+ | MoreOptions="-create -localhost -xrandr $CrOptions -rfbport 5900 -nopw -forever -permitfiletransfer -nevershared -scale 3/2" | ||
+ | echo "x11vnc $MoreOptions -env FD_GEOM=${1:-853x480x16} -afteraccept 'x-session-manager &' -logfile '.x11vnc.log'" > /tmp/xvnc.sh | ||
+ | 1280/3x2 = 853 ; 720/3x2 = 480 ; escala 3/2 | ||
+ | |||
+ | == Altres fonts == | ||
+ | * [https://fsfe.org/campaigns/android/liberate.es.html Libera tu dispositivo] (Free Software Foundation) | ||
+ | * [https://wiki.ubuntu.com/Touch/Install#Instructions_for_flashing_a_phone_or_tablet_device_with_Ubuntu Instruccions per formatejar un telèfon o tauleta amb Ubuntu] | ||
+ | * [https://wiki.ubuntu.com/Touch/Porting Guia de portabilitat d'Ubuntu] (tàctils) | ||
+ | * [https://help.ubuntu.com/community/PortableDevices/Android Dispositius d'Android amb algun ús d'Ubuntu] | ||
+ | * [https://wiki.debian.org/ChrootOnAndroid Debian amb Android] (chroot) |
Revisió de 09:14, 25 gen 2022
Català - Castellano - English
Introducció: Aquesta és una guia per fer funcionar un contenidor de Ubuntu GNU/Linux dins una sessió del sistema operatiu Android, i tenir així la funcionalitat d'un ordinador d'escriptori sense perdre rendiment. És una guia molt detallada, que serveix per Debian i derivats, i també útil per qui vulgui crear un assistent o millorar el procediment.
Notes:
- En el moment d'escriure aquesta guia (novembre del 2011), Canonical encara no tenia enllestida la seva anunciada solució, però des del 2014 segueixen l'estratègia de Cyanogenmod i amb més èxit. La versió amb què l'escriptori predeterminat (Unity) funciona millor és la 12.04 (Precise).
- El total de descàrregues que es proposa pot arribar a 1GiB de dades; si les feu totes des de l'aparell tingueu en compte la tarifa de dades que us aplica el proveïdor d'accés a internet.
- S'ha explorat la possibilitat d'utilitzar un contenidor LXC per tenir un contenidor completament normal, però no ha funcionat per l'ús que fa Android de bionic lic en comptes de GNU libc.
Contingut
- 1 Permisos de superusuari (root)
- 2 Accés per terminal
- 3 Comprovar les eines disponibles
- 4 Anotar l'arquitectura
- 5 Preparar l'espai
- 6 Obtenir una base de sistema operatiu
- 7 Adaptar la base
- 8 Muntar recursos d'Android
- 9 Entrar al nou sistema i establir serveis elementals
- 10 Obrir un compte d'usuari normal
- 11 Habilitar interfície gràfica
- 12 Obrir l'escriptori d'Ubuntu des d'Android
- 13 Sortida
- 14 Per repetir l'experiència
- 15 Com veure les coses més grans
- 16 Altres fonts
Permisos de superusuari (root)
És un requisit tenir accés "su" per administrar el sistema operatiu. Podeu veure la guia Obrir permisos amb Android
Accés per terminal
Terminal local
Sempre és recomanable tenir una aplicació de Terminal (que es pot obtenir lliurement amb F-Droid) disponible per poder fer gestions amb mobilitat, però les preparacions llargues i complexes és més còmode fer-les des d'un ordinador d'escriptori controlant l'aparell connectat per USB.
Control remot
En la distribució Ubuntu GNU/Linux, a partir de la versió 12.10 al repositori universal hi ha disponible el paquet android-tools-adb que permet el control remot a un aparell amb Android en mode de depuració USB. També hi ha un repositori independent que proporciona android-tools per anteriors versions.
Per utilitzar el Android Debug Bridge (ADB) heu de tenir l'aparell en marxa, connectat per USB, i amb el mode de «Depuració d'USB» habilitat a les opcions del desenvolupador (developer) d'Android.
- ADB per USB
- Per comprovar la connectivitat:
adb devices
(ha de mostrar una «llista» amb un identificador estrany que digui que és un dispositiu; device)
- Per obrir una sessió de terminal a l'aparell:
adb shell
- Per iniciar una sessió com a superusuari (root), i tenir permisos d'administració d'Android:
su
- Per finalitzar com a superusuari i després també tancar la sessió de terminal:
exit exit
- ADB per xarxa
Moltes connexions per USB són poc estables (es tallen molt sovint i te n'adones que escrius al teu ordinador), i en aquests casos es resol per xarxa (Wifi). Quan es fa això és important que l'aparell no tingui connexió directa a internet (per exemple amb l'operador telefònic) i es tracti d'una comunicació pel Wifi local.
- Des d'Android, per veure els dispositius de xarxa que té activats (default... dev -->):
ip route list
- Des d'Android, per veure l'adreça IP d'un dispositiu de xarxa (per exemple wlan0):
ifconfig wlan0
- Per establir des de l'ordinador que la comunicació serà via xarxa (per exemple a la IP 192.168.1.122):
adb connect 192.168.1.122
- Per obrir una sessió de terminal a l'aparell:
adb shell
- Per iniciar una sessió com a superusuari (root), i tenir permisos d'administració d'Android:
su
- Per finalitzar com a superusuari i també tancar la sessió de terminal:
exit exit
- Notes addicionals
- En aquesta guia, on s'indiquen instruccions escrites són per executar en una finestra de terminal local o remot.
- Si obteniu missatges de tipus «Operation not permitted» sol ser perquè no heu iniciat com a superusuari (su)
Comprovar les eines disponibles
En un terminal comproveu aquesta instrucció:
chroot
Us pot dir dues coses: o bé la presentació d'ajuda (amb «usage: chroot...») o bé el missatge d'error «chroot: not found». En aquest últim cas (not found) teniu una variant d'Android molt retallada, i necessiteu reemplaçar-la per una altra més lliure com CyanogenMod o Replicant. Altres alternatives més tècniques són: Superposar directoris sobre Android o Formatejar una targeta de memòria.
Anotar l'arquitectura
Es pot mirar quina generació de processador utilitza Android amb una de les següents instruccions:
uname -m cat /proc/cpuinfo
Si el processador ARM de l'aparell suporta coma flotant (ARMv7 o superior, per exemple armv7l seria el cas), aleshores es poden utilitzar paquets «armhf» en comptes de «armel». Això millora la velocitat d'alguns processos.
Preparar l'espai
Per a què funcionin els enllaços i accessos a dispositiu cal que el nou contenidor estigui en una partició apropiada per GNU/Linux, com per exemple Ext3 o Ext4. Amb la instrucció mount es pot veure el format de cada volum, i amb aquesta sintaxi es veu molt clar:
mount | cut -f 1-5 -d ' ' | sed -e 's/ on / /g' | sed -e 's/ type / /g' | cut -f 2-3 -d ' '
I es pot filtrar per veure només les que ens interessa:
mount | cut -f 1-5 -d ' ' | sed -e 's/ on / /g' | sed -e 's/ type / /g' | cut -f 2-3 -d ' ' | sed -e '/ext.$/!d'
Una vegada vistes les rutes compatibles, cal que valoreu l'espai lliure que hi ha amb aquesta instrucció:
df
Si a l'espai lliure (Free) no s'esmenta la unitat de mesura (100K, 100M, 100G), vol dir que s'expressa en K (KiB). A tenir en compte també que la ruta /cache funciona «com una paperera interna» i el seu contingut pot ser esborrat automàticament.
Necessiteu almenys 100MiB per una instal·lació elemental (core sol), o cap a 250MiB per un debootstrap, però es pot arribar a utilitzar 2 o 3GiB si instal·leu totes les grans aplicacions d'escriptori d'ús comú, apart de comptar amb una mica d'espai de treball. Igualment es poden fer instal·lacions «per totes les butxaques».
Per la resta de guia suposarem que heu escollit la partició /data, i aleshores el nou sistema operatiu el poseu a /data/ubuntu. Heu d'habilitar doncs els permisos d'escriptura, execució, dispositius i superusuari a la partició, i crear el subdirectori:
mount -o remount,rw,dev,exec,suid,noatime /data PuntArrel="/data/ubuntu" mkdir "$PuntArrel" cd "$PuntArrel"
Obtenir una base de sistema operatiu
Aquesta seria la manera de construïr-lo des d'un altre ordinador (suposant arquitectura per armhf) en una partició Ext2/Ext3:
sudo debootstrap --verbose --arch=armhf --foreign precise precise-armhf
- Per transportar l'arbre de directoris d'un dispositiu a un altre, cal copiar-ho amb permisos de superusuari, per tal que els atributs i propietaris de fitxers i directoris no es perdin pel camí. Per obrir així un explorador de carpetes amb Ubuntu, es pot executar (Alt+F2) «gksudo nautilus».
Però aquí també proposem la manera de fer-ho completament des de l'aparell amb Android: descarregant una base preparada (del web oficial) amb només una d'aquestes instruccions, segons la versió i variant que necessiteu (es publiquen més versions a cdimage.ubuntu.com):
wget http://cdimage.ubuntu.com/ubuntu-core/releases/precise/release/ubuntu-core-12.04.2-core-armhf.tar.gz wget http://cdimage.ubuntu.com/ubuntu-core/releases/oneiric/release/ubuntu-core-11.10-core-armel.tar.gz wget http://cdimage.ubuntu.com/ubuntu-core/releases/quantal/release/ubuntu-core-12.10-core-armhf.tar.gz wget http://cdimage.ubuntu.com/releases/precise/release/ubuntu-12.04-preinstalled-desktop-armhf+ac100.tar.gz wget http://cdimage.ubuntu.com/releases/oneiric/release/ubuntu-11.10-preinstalled-desktop-armel+ac100.tar.gz
Nota: Les «preinstaled» porten tot el programari d'una instal·lació típica, però també elements que cal netejar per engegar el contenidor.
Amb el fitxer descarregat, toca desempaquetar-lo:
tar -xzf ubuntu-core-12.04.2-core-armhf.tar.gz rm ubuntu-core-12.04.2-core-armhf.tar.gz
Adaptar la base
Corregiu alguns enllaços dins el directori de la base, per adequar-los més a la situació:
chmod 755 "$PuntArrel" if [ -d /acct ] ; then mkdir -p acct ; fi cd var if [ -L run ] ; then rm run ; ln -s ../run run ; fi if [ -L lock ] ; then rm lock ; ln -s ../run/lock lock ; fi cd "$PuntArrel"
Netegeu directoris que de vegades venen amb contingut per una instal·lació nadiua:
if [ -d proc ] ; then rm -R proc/* ; fi if [ -d dev ] ; then rm -R dev/* ; fi if [ -d sys ] ; then rm -R sys/* ; fi
Muntar recursos d'Android
mount -o bind "/proc" "$PuntArrel/proc" mount -o bind "/dev" "$PuntArrel/dev" mount -o bind "/dev/pts" "$PuntArrel/dev/pts" mount -o bind "/sys" "$PuntArrel/sys" if [ -d /acct ] ; then mount -o bind "/acct" "$PuntArrel/acct" ; fi if [ -d /dev/cpuctl ] ; then mount -o bind "/dev/cpuctl" "$PuntArrel/dev/cpuctl" ; fi
Si voleu fer disponibles les carpetes d'usuari d'Android, cal mirar quines particions hi ha muntades. Es pot fer amb un simple mount o amb aquesta instrucció que simplifica la informació:
mount | sed -e '/ \/mnt\//!d' | sed -e '/^\//!d' | cut -f 2,3 -d ' ' | cut -f 2- -d '/' | cut -f 1 -d ' ' | sed -e 's/^/\//g'
Si per exemple volem muntar /mnt/sdcard fem:
mkdir -p "$PuntArrel/mnt/sdcard" mount -o bind "/mnt/sdcard" "$PuntArrel/mnt/sdcard"
Entrar al nou sistema i establir serveis elementals
Des de la incorporació del sistema d'inici de serveis Upstart, els contenidors Chroot no inicien els serveis com una instal·lació normal, i cal fer-ho manualment.
chroot "$PuntArrel" /bin/su mount -a
Assegureu-vos que hi figuri alguna cosa muntada, per a què no fallin algunes utilitats:
if [ "$(mount)" = "" ] ; then mount -o bind /selinux /selinux ; fi
Completeu el debootstrap si és el cas, a la mateixa arquitectura:
if [ -x /debootstrap/debootstrap ] ; then /debootstrap/debootstrap --second-stage ; fi
Pedaç per evitar error d'inici de serveis Upstart:
dpkg-divert --local --rename --add /sbin/initctl ln -s /bin/true /sbin/initctl
Configureu la xarxa:
echo "nameserver 4.2.2.2" > /etc/resolv.conf echo "nameserver 8.8.8.8" >> /etc/resolv.conf echo "nameserver 8.8.4.4" >> /etc/resolv.conf echo "127.0.0.1 localhost" > /etc/hosts
Comproveu si hi ha repositoris establerts:
cat /etc/apt/sources.list
Si no hi havia res, o els «universe» estan deshabilitats amb #, escriviu-los amb les següents instruccions (exemple per Ubuntu 12.04, anomenat «precise»):
Versio="precise" echo "deb http://ports.ubuntu.com/ ${Versio} main universe" > /etc/apt/sources.list echo "# deb-src http://ports.ubuntu.com/ ${Versio} main universe" >> /etc/apt/sources.list echo "" >> /etc/apt/sources.list echo "deb http://ports.ubuntu.com/ ${Versio}-updates main universe" >> /etc/apt/sources.list echo "# deb-src http://ports.ubuntu.com/ ${Versio}-updates main universe" >> /etc/apt/sources.list echo "" >> /etc/apt/sources.list echo "deb http://ports.ubuntu.com/ ${Versio}-security main universe" >> /etc/apt/sources.list echo "# deb-src http://ports.ubuntu.com/ ${Versio}-security main universe" >> /etc/apt/sources.list apt-get update
Instal·leu serveis i eines per evitar queixes (els paquets -ca són per la llengua catalana):
- Nota: si apareix algun requadre de pregunta o missatge, es canvia d'opció amb el TABulador i es polsen els botons amb l'espai, la qual cosa és fàcil de fer si s'està treballant amb ADB des d'un ordinador.
apt-get install dbus dbus-x11 mkdir -p /var/run/dbus apt-get install language-pack-ca update-locale LlenguaPredeterminada="ca_ES.UTF-8" export LANG="$LlenguaPredeterminada" export LANGUAGE="$LlenguaPredeterminada" echo "LANG=\"$LlenguaPredeterminada\"" >> /etc/default/locale echo "LANGUAGE=\"$LlenguaPredeterminada\"" >> /etc/default/locale
Inicieu el servei DBus del qual en depenen moltes aplicacions (no es pot aprofitar el d'Android):
DbusPid="$(dbus-daemon --system --print-pid --fork)"
Instal·leu la part bàsica d'Ubuntu i apliqueu actualitzacions. Aquest procés triga bastant:
apt-get install ubuntu-minimal ubuntu-standard apt-get upgrade
Instal·leu escriptori i aplicacions que us interessi. Aquest procés pot trigar MOLT:
apt-get install sudo ubuntu-desktop libreoffice libreoffice-l10n-ca language-pack-gnome-ca
(si apareix un requadre de missatge o pregunta, es desplaça amb el TABulador i es polsa amb l'espai).
Obrir un compte d'usuari normal
Utilitzant l'escriptori i aplicacions com a usuari normal (no root) millora la seguretat i l'admissió per part d'alguns components que ho requereixen.
cp -a /etc/adduser.conf /etc/adduser.conf.bak cat /etc/adduser.conf.bak | sed -e 's/^#EXTRA_GROUPS=/EXTRA_GROUPS=/g' > /etc/adduser.conf NomUsuari=usuari adduser --add_extra_groups --gecos "" $NomUsuari
Incloure el nou compte ($NomUsuari) al grup comú d'usuaris i grups d'administració que hi hagi:
usermod --append --groups users $NomUsuari usermod --append --groups sudo $NomUsuari usermod --append --groups adm $NomUsuari usermod --append --groups admin $NomUsuari
Crear un grup especial on incloure-hi l'usuari, per a què pugui obrir ports d'entrada.
addgroup --gid 3003 sockets usermod --append --groups sockets $NomUsuari
Habilitar interfície gràfica
Tot i que ja ha aparegut alguna eina X-Server per utilitzar aplicacions en pantalla directament sense control remot, de moment exposem el mètode tradicional 2011-2012 (suposant com a exemple que la pantalla de l'aparell té una resolució de 1280x720):
apt-get install xvfb x11vnc xtightvncviewer if [ "$Copyrect" = "" ] ; then CrOptions="-nowirecopyrect -noscrollcopyrect" ; else CrOptions="-ncache" ; fi MoreOptions="-create -localhost -xrandr $CrOptions -rfbport 5900 -nopw -forever -permitfiletransfer -nevershared -scale 1/1" echo "x11vnc $MoreOptions -env FD_GEOM=${1:-1280x720x16} -afteraccept 'x-session-manager &' -logfile '.x11vnc.log'" > /tmp/xvnc.sh chmod a+rx /tmp/xvnc.sh su -l $NomUsuari -c /tmp/xvnc.sh
Es quedarà esperant connexions (veureu PORT=5900). Cal no tancar aquest terminal mentre es vulgui tenir Ubuntu disponible.
Obrir l'escriptori d'Ubuntu des d'Android
Es pot utilitzar qualsevol programa de control remot per VNC, que es pot trobar fàcilment amb el gestor de paquets F-Droid.
Es connecta a l'adreça localhost i amb el port normal 5900. Sense usuari (nickname) ni tampoc contrasenya (password). Teniu un accés prou segur perquè només admetrà connexions des del mateix aparell (-localhost).
Sortida
Si voleu tornar a utilitzar Android n'hi ha prou amb tancar el VNC, o símplement minimitzar-lo per fer altres coses. Si atureu l'aparell amb Android no passa res; és com si també aturéssiu l'escriptori d'Ubuntu com si fos un ordinador.
Si voleu aturar el sistema Ubuntu sense aturar ni reiniciar Android, heu de sortir de la sessió del mateix escriproti d'Ubuntu, igual com si ho fessiu d'un ordinador normal: amb el botó gráfic d'aturar l'ordinador, però l'opció de sortir com a usuari. Si veieu una finestra de terminal també tancant-la es finalitza la sessió. Amb les següents indicacions fareu una sortida completament neta del contenidor.
Aturar serveis: A la finestra de Terminal on teníeu el x11vnc esperant connexions, si aquest encara espera, el podeu interrompre amb {Control} + {C}. Després la resta:
kill $DbusPid rm -f /var/run/dbus/pid if [ "$(mount | grep -e "/selinux")" != "" ] ; then umount /selinux ; fi umount -a exit
Si per exemple heu muntat la carpeta d'Android /mnt/sdcard :
umount "$PuntArrel/mnt/sdcard" if [ -d /dev/cpuctl ] ; then umount "$PuntArrel/dev/cpuctl" ; fi if [ -d /acct ] ; then umount "$PuntArrel/acct" ; fi umount "$PuntArrel/sys" umount "$PuntArrel/dev/pts" umount "$PuntArrel/dev" umount "$PuntArrel/proc" exit exit
Per repetir l'experiència
- Si no heu finalitzat la sessió dins Ubuntu, símplement podeu tornar a connectar amb el programa-client de VNC.
- El millor, és clar, és poder tenir icones directes a l'escriptori d'Android, tant per muntar el contenidor com per connectar amb l'escriptori per VNC. Aquest wiki agraïrà molt les aportacions sobre aquest tema.
En altres casos, com per exemple que hagueu aturat l'aparell o finalitzat el contenidor Ubuntu completament, escriviu aquestes instruccions en una finestra de Terminal (dades del mateix exemple d'aquesta pàgina, que cal personalitzar):
su mount -o remount,rw,dev,exec,suid,noatime /data PuntArrel="/data/ubuntu" mount -o bind "/proc" "$PuntArrel/proc" mount -o bind "/dev" "$PuntArrel/dev" mount -o bind "/dev/pts" "$PuntArrel/dev/pts" mount -o bind "/sys" "$PuntArrel/sys" if [ -d /acct ] ; then mount -o bind "/acct" "$PuntArrel/acct" ; fi if [ -d /dev/cpuctl ] ; then mount -o bind "/dev/cpuctl" "$PuntArrel/dev/cpuctl" ; fi mount -o bind "/mnt/sdcard" "$PuntArrel/mnt/sdcard" chroot "$PuntArrel" /bin/su mount -a if [ "$(mount)" = "" ] ; then mount -o bind /selinux /selinux ; fi DbusPid="$(dbus-daemon --system --print-pid --fork)" NomUsuari=usuari if [ "$Copyrect" = "" ] ; then CrOptions="-nowirecopyrect -noscrollcopyrect" ; else CrOptions="-ncache" ; fi MoreOptions="-create -localhost -xrandr $CrOptions -rfbport 5900 -nopw -forever -permitfiletransfer -nevershared -scale 1/1" echo "x11vnc $MoreOptions -env FD_GEOM=${1:-1280x720x16} -afteraccept 'x-session-manager &' -logfile '.x11vnc.log'" > /tmp/xvnc.sh chmod a+rx /tmp/xvnc.sh su -l $NomUsuari -c /tmp/xvnc.sh
Connectar amb l'aplicació-client de VNC a l'adreça localhost i amb el port normal 5900. Sense usuari ni tampoc contrasenya.
Evidentment el millor és tenir les instruccions en scripts (fitxers de text executables): del primer «mount» fins al «chroot» en un script a Android (per exemple /system/bin/m) i la resta en un script a Ubuntu (per exemple /usr/local/bin/x). D'aquesta manera, en un terminal ja només caldria fer:
su m x
I per fer-ho en una sola instrucció, podeu canviar la instrucció chroot "$PuntArrel" /bin/su per chroot "$PuntArrel" /bin/su -c /usr/local/bin/x , i aleshores també un script a Android (/system/bin/u) que contingui una sola línia amb su -c m . Amb això, engegueu el servei amb una sola instrucció al terminal:
u
(recordeu-vos de donar permís d'execució als scripts, per exemple amb: chmod 755 /system/bin/u )
Llançadors a l'escriptori d'Android
Amb el SL4A podeu preparar un programet Bash (Shell script) que també es pot executar sense mostrar la finestra de terminal (background). Amb això podeu substituïr «u» que hem posat d'exemple, creant un script anomenat per exemple Ubuntu.sh i amb contingut su -c m
Per crear una icona a l'escriptori (Home) que llanci l'Ubuntu de fons, premeu el fons de l'escriptori durant una estona fins que us obri un menú d'opcions, i trieu crear una drecera/llançadora personalitzada (Custom shortcut). Seleccioneu l'activitat "Scripts" que porta la icona dels ulls iluminats (SL4A), seleccioneu el vostre programet "Ubuntu.sh" i trieu que s'inicii de rerefons/background (botó amb engranatge). Li podeu acabar personalitzant el títol com «Ubuntu 0» i accepteu.
La mateixa tècnica podeu emprar per crear una llançadora que connecti directament per VNC: polsar llargament al fons de l'escriptori, Llançadora personalitzada (Custom shortcut), escollir activitat (Pick your activity), Connexió VNC, escolliu la de «localhost:5900», poseu-li un títol com «Ubuntu 1» i accepteu.
Amb aquestes dues llançadores, ja teniu l'Ubuntu amb 2 pulsacions: primer a la icona SL4A que treballa de rerefons, i després a la icona de VNC que us hi connecta. No llanceu novament la icona de SL4A si no us heu assegurat de què està aturat. Podeu connectar i desconnectar tantes vegades com voleu mentre l'Ubuntu estigui engegat de rerefons amb SL4A.
Un problema detectat: Si se us obre el menú però no us apareix l'opció de crear llançadora/drecera/shortcut a l'escriptori (només ofereix canviar fons), segurament esteu utilitzant l'escriptori «Trebuchet» que té alguna mancança. Podeu instal·lar el gestor d'escriptori AnDerWeb per arreglar-ho, però no aprofita les icones que tinguessiu col·locades amb l'anterior.
Com veure les coses més grans
Hi ha aparells de butxaca que tenen una gran densitat de punts en una pantalla tàctil, és a dir, molta resolució en una pantalla tant petita. Aprofitar tota la resolució en aquestes situacions fa difícil encertar els elements de l'escriptori amb el dit.
Si amb l'exemple d'aquesta guia volem veure les coses el doble de grans, canviem la resolució de 1280x720 per 640x360, i l'escala de 1/1 per 2/1. Això significa dividir per 2 la resolució i augmentar la petita imatge al doble per a què igualment empleni la pantalla. L'operació es pot fer en qualsevol proporció; aquí un exemple per fer-ho a dos terços (que implica un 50% d'augment):
MoreOptions="-create -localhost -xrandr $CrOptions -rfbport 5900 -nopw -forever -permitfiletransfer -nevershared -scale 3/2" echo "x11vnc $MoreOptions -env FD_GEOM=${1:-853x480x16} -afteraccept 'x-session-manager &' -logfile '.x11vnc.log'" > /tmp/xvnc.sh
1280/3x2 = 853 ; 720/3x2 = 480 ; escala 3/2
Altres fonts
- Libera tu dispositivo (Free Software Foundation)
- Instruccions per formatejar un telèfon o tauleta amb Ubuntu
- Guia de portabilitat d'Ubuntu (tàctils)
- Dispositius d'Android amb algun ús d'Ubuntu
- Debian amb Android (chroot)