{"id":1928,"date":"2016-02-20T12:37:51","date_gmt":"2016-02-20T12:37:51","guid":{"rendered":"http:\/\/blog.rastersoft.com\/?p=1928"},"modified":"2016-02-20T12:37:51","modified_gmt":"2016-02-20T12:37:51","slug":"mas-sobre-debian-en-android","status":"publish","type":"post","link":"https:\/\/blog.rastersoft.com\/?p=1928","title":{"rendered":"M\u00e1s sobre Debian en Android"},"content":{"rendered":"<p>A ra\u00edz de la aparici\u00f3n de <a href=\"http:\/\/maruos.com\/\" target=\"_blank\">MaruOS<\/a>, decid\u00ed intentar hacer algo similar en mi m\u00f3vil Android, as\u00ed que me puse a preparar una instalaci\u00f3n de Debian para Android como ya hab\u00eda hecho otras veces. Por desgracia las cosas se torcieron ya al principio, as\u00ed que voy a comentar los pasos que di para corregir los problemas que encontr\u00e9, que no han sido pocos:<\/p>\n<p>Para empezar, mi m\u00f3vil tiene Android 6 (en concreto la distribuci\u00f3n <a href=\"http:\/\/forum.xda-developers.com\/nexus-4\/development\/rom-pure-nexus-project-layers-t3237366\" target=\"_blank\">PureNexus para Nexus 4<\/a>\u00a0que encontr\u00e9 en la p\u00e1gina de <a href=\"http:\/\/changlonet.com\/blog\/2016\/01\/usuarios-resolviendo-lo-que-google-no-quiere-arreglar-de-android-y-nexus-4\/\" target=\"_blank\">El tendero digital<\/a>). Parece que algunos cambios de seguridad hechos en \u00e9l, junto con otros en APT fueron los que acabaron dando guerra. Pero no adelantemos acontecimientos&#8230;<\/p>\n<p>Empec\u00e9 creando el entorno b\u00e1sico con debootstrap, con el comando<\/p>\n<div class=\"mycode\">\n<pre class=\"mycode\">sudo debootstrap --arch=armhf --variant=minbase --foreign sid \u00a0\/home\/raster\/tmp \u00a0http:\/\/ftp.debian.org\/debian<\/pre>\n<\/div>\n<p>El resultado lo comprim\u00ed con TAR, lo pas\u00e9 al m\u00f3vil, y me conect\u00e9 a trav\u00e9s de USB con un shell ADB (para disponer de ADB hay que bajarse el SDK de Android):<\/p>\n<div class=\"mycode\">\n<pre class=\"mycode\">sudo .\/platform-tools\/adb shell<\/pre>\n<\/div>\n<p>Una vez hecho esto, lo primero es ejecutar el comando <em>resize<\/em> para ajustar el tama\u00f1o l\u00f3gico de la ventana a la que tenemos f\u00edsicamente, y que aplicaciones como los editores de texto y dem\u00e1s se vean correctamente.<\/p>\n<p>Tras ello, fui hasta <em>\/data\/media\/0<\/em>, que es donde se encuentra la zona de datos de usuario, y all\u00ed descomprim\u00ed el fichero .tar con el sistema Debian b\u00e1sico. Luego us\u00e9 un sencillo script para entrar dentro de \u00e9l para seguir la instalaci\u00f3n:<\/p>\n<div class=\"mycode\">\n<pre class=\"mycode\">resize\r\nexport SDCARD=\/data\r\nexport ROOT=$SDCARD\/media\/0\/debian\r\nexport PATH=\/usr\/local\/sbin:\/usr\/local\/bin:\/usr\/sbin:\/usr\/bin:\/sbin:\/bin:$PATH\r\nexport HOME=\/root\r\nmount -o remount,exec,dev,suid $SDCARD\r\nfor f in dev dev\/pts proc sys ; do mount -o bind \/$f $ROOT\/$f ; done\r\nchroot $ROOT \/bin\/bash -l\r\nfor f in sys proc dev\/pts dev ; do umount $ROOT\/$f ; done<\/pre>\n<\/div>\n<p>Tras lanzarlo, proced\u00ed a terminar la instalaci\u00f3n del sistema, pero me encontr\u00e9 con que al ejecutar <em>debootstrap\/debootstrap &#8211;second-stage<\/em>, fallaba y no continuaba la instalaci\u00f3n. Tras varias pruebas, descubr\u00ed que el problema era que intentaba crear varias veces una serie de nodos en <em>\/dev<\/em>.<\/p>\n<p>Se me ocurri\u00f3 probar a usar QEMU para realizar la operaci\u00f3n en mi propio PC, as\u00ed que instal\u00e9 <em>qemu-static<\/em>, copi\u00e9 <em>qemu-arm-static<\/em> al directorio <em>\/usr\/bin<\/em> del sistema Debian sin configurar, y lanc\u00e9 una sesi\u00f3n de shell dentro de ella con CHROOT en mi propio PC. Ah\u00ed el comando <em>debootstrap\/debootstrap &#8211;second-stage<\/em> s\u00ed funcion\u00f3, as\u00ed que proced\u00ed a comprimir el sistema ya listo y subirlo al m\u00f3vil.<\/p>\n<p>Ahora ya ten\u00eda un sistema Debian. O casi, porque cualquier intento de usar APT para instalar paquetes o actualizar la lista de programas fallaba con un error muy raro: no era capaz de resolver la direcci\u00f3n del repositorio:<\/p>\n<div class=\"mycode\">\n<pre class=\"mycode\">root@localhost:\/# apt-get update\r\nErr:1 http:\/\/ftp.debian.org\/debian sid InRelease\r\n  Temporary failure resolving 'ftp.debian.org'\r\nReading package lists... Done\r\nW: Failed to fetch http:\/\/ftp.debian.org\/debian\/dists\/sid\/InRelease  Temporary failure resolving 'ftp.debian.org'\r\nW: Some index files failed to download. They have been ignored, or old ones used instead.<\/pre>\n<\/div>\n<p>Sin embargo, un PING o un WGET a dicha direcci\u00f3n s\u00ed funcionaba perfectamente, por lo que no parec\u00eda ser un problema de la red en s\u00ed. Prob\u00e9 a poner manualmente la IP en el fichero <em>\/etc\/hosts<\/em> y entonces el error pas\u00f3 a ser otro:<\/p>\n<div class=\"mycode\">\n<pre class=\"mycode\">root@localhost:\/# apt-get update\r\nIgn:1 http:\/\/ftp.debian.org\/debian sid InRelease\r\nIgn:2 http:\/\/ftp.debian.org\/debian sid Release\r\nIgn:3 http:\/\/ftp.debian.org\/debian sid\/main armhf Packages.diff\/Index\r\nIgn:4 http:\/\/ftp.debian.org\/debian sid\/main all Packages\r\nIgn:5 http:\/\/ftp.debian.org\/debian sid\/main Translation-en.diff\/Index\r\nIgn:6 http:\/\/ftp.debian.org\/debian sid\/contrib armhf Packages.diff\/Index\r\nIgn:7 http:\/\/ftp.debian.org\/debian sid\/contrib all Packages\r\nIgn:8 http:\/\/ftp.debian.org\/debian sid\/contrib Translation-en.diff\/Index\r\nIgn:9 http:\/\/ftp.debian.org\/debian sid\/non-free armhf Packages.diff\/Index\r\nIgn:10 http:\/\/ftp.debian.org\/debian sid\/non-free all Packages\r\nIgn:11 http:\/\/ftp.debian.org\/debian sid\/non-free Translation-en.diff\/Index\r\nIgn:12 http:\/\/ftp.debian.org\/debian sid\/main armhf Packages\r\nIgn:4 http:\/\/ftp.debian.org\/debian sid\/main all Packages\r\nIgn:13 http:\/\/ftp.debian.org\/debian sid\/main Translation-en\r\nIgn:14 http:\/\/ftp.debian.org\/debian sid\/contrib armhf Packages\r\nIgn:7 http:\/\/ftp.debian.org\/debian sid\/contrib all Packages\r\nIgn:15 http:\/\/ftp.debian.org\/debian sid\/contrib Translation-en\r\nIgn:16 http:\/\/ftp.debian.org\/debian sid\/non-free armhf Packages\r\nIgn:10 http:\/\/ftp.debian.org\/debian sid\/non-free all Packages\r\nIgn:17 http:\/\/ftp.debian.org\/debian sid\/non-free Translation-en\r\nIgn:12 http:\/\/ftp.debian.org\/debian sid\/main armhf Packages\r\nIgn:4 http:\/\/ftp.debian.org\/debian sid\/main all Packages\r\nIgn:13 http:\/\/ftp.debian.org\/debian sid\/main Translation-en\r\nIgn:14 http:\/\/ftp.debian.org\/debian sid\/contrib armhf Packages\r\nIgn:7 http:\/\/ftp.debian.org\/debian sid\/contrib all Packages\r\nIgn:15 http:\/\/ftp.debian.org\/debian sid\/contrib Translation-en\r\nIgn:16 http:\/\/ftp.debian.org\/debian sid\/non-free armhf Packages\r\nIgn:10 http:\/\/ftp.debian.org\/debian sid\/non-free all Packages\r\nIgn:17 http:\/\/ftp.debian.org\/debian sid\/non-free Translation-en\r\nIgn:12 http:\/\/ftp.debian.org\/debian sid\/main armhf Packages\r\nIgn:4 http:\/\/ftp.debian.org\/debian sid\/main all Packages\r\nIgn:13 http:\/\/ftp.debian.org\/debian sid\/main Translation-en\r\nIgn:14 http:\/\/ftp.debian.org\/debian sid\/contrib armhf Packages\r\nIgn:7 http:\/\/ftp.debian.org\/debian sid\/contrib all Packages\r\nIgn:15 http:\/\/ftp.debian.org\/debian sid\/contrib Translation-en\r\nIgn:16 http:\/\/ftp.debian.org\/debian sid\/non-free armhf Packages\r\nIgn:10 http:\/\/ftp.debian.org\/debian sid\/non-free all Packages\r\nIgn:17 http:\/\/ftp.debian.org\/debian sid\/non-free Translation-en\r\nIgn:12 http:\/\/ftp.debian.org\/debian sid\/main armhf Packages\r\nIgn:4 http:\/\/ftp.debian.org\/debian sid\/main all Packages\r\nIgn:13 http:\/\/ftp.debian.org\/debian sid\/main Translation-en\r\nIgn:14 http:\/\/ftp.debian.org\/debian sid\/contrib armhf Packages\r\nIgn:7 http:\/\/ftp.debian.org\/debian sid\/contrib all Packages\r\nIgn:15 http:\/\/ftp.debian.org\/debian sid\/contrib Translation-en\r\nIgn:16 http:\/\/ftp.debian.org\/debian sid\/non-free armhf Packages\r\nIgn:10 http:\/\/ftp.debian.org\/debian sid\/non-free all Packages\r\nIgn:17 http:\/\/ftp.debian.org\/debian sid\/non-free Translation-en\r\nIgn:12 http:\/\/ftp.debian.org\/debian sid\/main armhf Packages\r\nIgn:4 http:\/\/ftp.debian.org\/debian sid\/main all Packages\r\nIgn:13 http:\/\/ftp.debian.org\/debian sid\/main Translation-en\r\nIgn:14 http:\/\/ftp.debian.org\/debian sid\/contrib armhf Packages\r\nIgn:7 http:\/\/ftp.debian.org\/debian sid\/contrib all Packages\r\nIgn:15 http:\/\/ftp.debian.org\/debian sid\/contrib Translation-en\r\nIgn:16 http:\/\/ftp.debian.org\/debian sid\/non-free armhf Packages\r\nIgn:10 http:\/\/ftp.debian.org\/debian sid\/non-free all Packages\r\nIgn:17 http:\/\/ftp.debian.org\/debian sid\/non-free Translation-en\r\nErr:12 http:\/\/ftp.debian.org\/debian sid\/main armhf Packages\r\n  Could not create a socket for 130.89.148.12 (f=2 t=1 p=6) - socket (13: Permission denied)\r\nIgn:13 http:\/\/ftp.debian.org\/debian sid\/main Translation-en\r\nErr:14 http:\/\/ftp.debian.org\/debian sid\/contrib armhf Packages\r\n  Could not create a socket for 130.89.148.12 (f=2 t=1 p=6) - socket (13: Permission denied)\r\nIgn:15 http:\/\/ftp.debian.org\/debian sid\/contrib Translation-en\r\nErr:16 http:\/\/ftp.debian.org\/debian sid\/non-free armhf Packages\r\n  Could not create a socket for 130.89.148.12 (f=2 t=1 p=6) - socket (13: Permission denied)\r\nIgn:17 http:\/\/ftp.debian.org\/debian sid\/non-free Translation-en\r\nReading package lists... Done\r\nW: The repository 'http:\/\/ftp.debian.org\/debian sid Release' does not have a Release file.\r\nN: Data from such a repository can't be authenticated and is therefore potentially dangerous to use.\r\nN: See apt-secure(8) manpage for repository creation and user configuration details.\r\nW: Failed to fetch http:\/\/ftp.debian.org\/debian\/dists\/sid\/main\/binary-armhf\/Packages  Could not create a socket for 130.89.148.12 (f=2 t=1 p=6) - socket (13: Permission denied)\r\nW: Failed to fetch http:\/\/ftp.debian.org\/debian\/dists\/sid\/contrib\/binary-armhf\/Packages  Could not create a socket for 130.89.148.12 (f=2 t=1 p=6) - socket (13: Permission denied)\r\nW: Failed to fetch http:\/\/ftp.debian.org\/debian\/dists\/sid\/non-free\/binary-armhf\/Packages  Could not create a socket for 130.89.148.12 (f=2 t=1 p=6) - socket (13: Permission denied)\r\nE: Some index files failed to download. They have been ignored, or old ones used instead.<\/pre>\n<\/div>\n<p>Esto era otra cosa, claramente: por alg\u00fan motivo, APT no consegu\u00eda permisos para acceder a la red. Parec\u00eda un problema de SELINUX, pero realmente estaba en modo permisivo, por lo que no deber\u00eda estar fallando.<\/p>\n<p>Tras rebuscar por todas partes, descubr\u00ed <a href=\"https:\/\/bugs.kali.org\/view.php?id=3012\">una entrada donde se comentaba el mismo problema para Kali-Rolling en Android<\/a>: la clave parece estar en que el usuario <em>_apt<\/em> est\u00e1 en el grupo <em>nogroup<\/em>, y eso en Android supone no tener acceso a nada, ni siquiera a la red. Para solucionarlo, s\u00f3lo tuve que editar el fichero <em>\/etc\/passwd<\/em> y cambiar el grupo de <em>_apt<\/em> de <strong>65534<\/strong> (nogroup) a <strong>3004<\/strong>, que aunque es un grupo que no existe en mi sistema, es suficiente para que todo vuelva a funcionar como debe.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>A ra\u00edz de la aparici\u00f3n de MaruOS, decid\u00ed intentar hacer algo similar en mi m\u00f3vil Android, as\u00ed que me puse a preparar una instalaci\u00f3n de Debian para Android como ya hab\u00eda hecho otras veces. Por desgracia las cosas se torcieron ya al principio, as\u00ed que voy a comentar los pasos que di para corregir los &hellip; <a href=\"https:\/\/blog.rastersoft.com\/?p=1928\" class=\"more-link\">Seguir leyendo <span class=\"screen-reader-text\">M\u00e1s sobre Debian en Android<\/span> <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[2,7],"tags":[],"class_list":["post-1928","post","type-post","status-publish","format-standard","hentry","category-cacharreo","category-tutoriales"],"_links":{"self":[{"href":"https:\/\/blog.rastersoft.com\/index.php?rest_route=\/wp\/v2\/posts\/1928","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.rastersoft.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.rastersoft.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.rastersoft.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.rastersoft.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1928"}],"version-history":[{"count":7,"href":"https:\/\/blog.rastersoft.com\/index.php?rest_route=\/wp\/v2\/posts\/1928\/revisions"}],"predecessor-version":[{"id":1935,"href":"https:\/\/blog.rastersoft.com\/index.php?rest_route=\/wp\/v2\/posts\/1928\/revisions\/1935"}],"wp:attachment":[{"href":"https:\/\/blog.rastersoft.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1928"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.rastersoft.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1928"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.rastersoft.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1928"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}