{"id":1253,"date":"2013-08-05T20:55:21","date_gmt":"2013-08-05T18:55:21","guid":{"rendered":"http:\/\/blog.rastersoft.com\/?p=1253"},"modified":"2013-08-05T20:55:21","modified_gmt":"2013-08-05T18:55:21","slug":"arrancando-linux-en-la-tablet","status":"publish","type":"post","link":"https:\/\/blog.rastersoft.com\/?p=1253","title":{"rendered":"Arrancando Linux en la tablet"},"content":{"rendered":"<p style=\"text-align: left;\"><strong>Actualizado: <\/strong>Hoy me puse a intentar meter Linux en la <a href=\"https:\/\/blog.rastersoft.com\/?p=1218\" target=\"_blank\">tablet de la que habl\u00e9 en la anterior entrada<\/a>. Y lo he conseguido, he aqu\u00ed la prueba:<\/p>\n<p style=\"text-align: center;\"><a href=\"https:\/\/blog.rastersoft.com\/wp-content\/uploads\/2013\/08\/tablet_linux.jpg\" rel=\"lightbox-0\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-medium wp-image-1254\" src=\"https:\/\/blog.rastersoft.com\/wp-content\/uploads\/2013\/08\/tablet_linux-300x233.jpg\" alt=\"tablet_linux\" width=\"300\" height=\"233\" \/><\/a><\/p>\n<p style=\"text-align: left;\">Dado que esta tablet est\u00e1 equipada con un <a href=\"http:\/\/en.wikipedia.org\/wiki\/Allwinner_A13\" target=\"_blank\">Allwinner A13<\/a>, necesitamos un kernel y un cargador adecuados. Lo interesante de este chip es que no hace falta tocar la flash interna, sino que basta con ponerlos en una tarjeta SD, y arrancar\u00e1 desde \u00e9sta directamente. Y si luego queremos volver al sistema original, basta con retirar la tarjeta y reiniciar.<\/p>\n<p style=\"text-align: left;\">El n\u00facleo y el cargador los podemos obtener del repositorio GIT <a href=\"https:\/\/github.com\/linux-sunxi\" target=\"_blank\">linux-sunxi<\/a>, orientado precisamente hacia este tipo de <em>SoC<\/em>s. Las instrucciones b\u00e1sicas para compilar y generar todo las saqu\u00e9 de la <a href=\"http:\/\/olimex.wordpress.com\/2012\/10\/12\/building-bootable-sd-card-with-debian-linux-image-for-a13-olinuxino\/\">p\u00e1gina de Olimex<\/a>, y las he adaptado a este modelo.<\/p>\n<p style=\"text-align: left;\">Supondr\u00e9 que tienes una distribuci\u00f3n basada en Debian. Lo primero que hay que hacer es instalar los paquetes de compilaci\u00f3n cruzada y otras bibliotecas necesarias:<\/p>\n<div class=\"mycode\">\n<pre class=\"mycode\">    sudo apt-get install gcc-4.7-arm-linux-gnueabi gcc-4.7-arm-linux-gnueabi-base gcc-arm-linux-gnueabi libncurses5-dev uboot-mkimage build-essential git libusb-dev libusb-1.0-0-dev<\/pre>\n<\/div>\n<p style=\"text-align: left;\">Ahora bajamos el u-boot modificado con:<\/p>\n<div class=\"mycode\">\n<pre class=\"mycode\">    git clone -b sunxi https:\/\/github.com\/linux-sunxi\/u-boot-sunxi<\/pre>\n<\/div>\n<p style=\"text-align: left;\">Entramos en el directorio u-boot-sunxi y compilamos el c\u00f3digo:<\/p>\n<div class=\"mycode\">\n<pre class=\"mycode\">    cd u-boot-sunxi\n    make CROSS_COMPILE=arm-linux-gnueabi- a13-olinuxino\n    ls -l u-boot.bin spl\/sunxi-spl.bin\n    cd ..<\/pre>\n<\/div>\n<p style=\"text-align: left;\">Ahora que tenemos compilado el cargador, vamos con el n\u00facleo. Nos lo bajamos desde el repositorio, preparamos una configuraci\u00f3n base y entramos en modo <em>configuraci\u00f3n<\/em>:<\/p>\n<div class=\"mycode\">\n<pre class=\"mycode\">    git clone -b sunxi-3.0 https:\/\/github.com\/linux-sunxi\/linux-sunxi\n    cd linux-sunxi\n    make ARCH=arm a13_defconfig\n    make ARCH=arm menuconfig<\/pre>\n<\/div>\n<p style=\"text-align: center;\"><a href=\"https:\/\/blog.rastersoft.com\/wp-content\/uploads\/2013\/08\/tablet_config.png\" rel=\"lightbox-1\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1263\" src=\"https:\/\/blog.rastersoft.com\/wp-content\/uploads\/2013\/08\/tablet_config.png\" alt=\"tablet_config\" width=\"755\" height=\"497\" \/><\/a><\/p>\n<p style=\"text-align: left;\">Entre las opciones que he tocado est\u00e1n las siguientes:<\/p>\n<ul>\n<li>General Setup\n<ul>\n<li>POSIX message queues -&gt; Y<\/li>\n<\/ul>\n<\/li>\n<li>System Type\n<ul>\n<li>Emulate SWP\/SWPB instructions -&gt; N<\/li>\n<\/ul>\n<\/li>\n<li>Device Drivers\n<ul>\n<li>Network Device Support\n<ul>\n<li>Ethernet (10 or 100Mbit) -&gt; N<\/li>\n<\/ul>\n<\/li>\n<li>Character Devices\n<ul>\n<li>Non-standard serial port support -&gt; N<\/li>\n<li>Serial drivers\n<ul>\n<li>8250\/16550 and compatible serial support -&gt; N<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<li>Console Display driver support\n<ul>\n<li>Map the console to the primary display device -&gt; Y<\/li>\n<\/ul>\n<\/li>\n<li>Bootup logo -&gt; Y<\/li>\n<\/ul>\n<\/li>\n<li>Security Options\n<ul>\n<li>Enable the securityfs filesystem -&gt; N<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<p style=\"text-align: left;\">Una vez configurado, procedemos a compilar el n\u00facleo:<\/p>\n<div class=\"mycode\">\n<pre class=\"mycode\">    make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- uImage\n    make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- INSTALL_MOD_PATH=out modules\n    make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- INSTALL_MOD_PATH=out modules_install<\/pre>\n<\/div>\n<p style=\"text-align: left;\">Ahora llega el momento de generar la tarjeta SD con el sistema b\u00e1sico. Para ello, primero necesitamos dividirla en, al menos, dos particiones, una en formato VFAT (donde ir\u00e1 el n\u00facleo) y otra en formato EXT2\/3\/4 con el sistema en s\u00ed. As\u00ed que arrancamos fdisk y empezamos. Es importante que la primera partici\u00f3n empiece, al menos, en el sector 2048, para dejar sitio para el arranque.<\/p>\n<p style=\"text-align: left;\">Una vez formateadas ambas particiones, descargamos un sistema Debian base, lo descomprimimos en la partici\u00f3n EXT2\/3\/4 (que supondremos que est\u00e1 montada en <em>\/media\/particion2<\/em>) y copiamos los m\u00f3dulos (asumiendo, tambi\u00e9n, que la versi\u00f3n de n\u00facleo que tenemos es la 3.0.76):<\/p>\n<div class=\"mycode\">\n<pre class=\"mycode\">    wget http:\/\/rcn-ee.net\/deb\/rootfs\/wheezy\/debian-7.1-console-armhf-2013-07-22.tar.xz\n    tar xvf debian-7.1-console-armhf-2013-07-22.tar.xz\n    sudo tar -C \/media\/particion2 -xvf debian-7.1-console-armhf-2013-07-22\/armhf-rootfs-debian-wheezy.tar\n    cd ..\/linux-sunxi\n    sudo cp -a linux-allwinner\/out\/lib\/modules\/3.0.76\/ \/media\/particion2\/lib\/modules\/<\/pre>\n<\/div>\n<p style=\"text-align: left;\">Es importante descomprimirlo como <em>root<\/em> para que conserve los nombres de usuario correctos.<\/p>\n<p style=\"text-align: left;\">Ahora bajamos los ficheros de definici\u00f3n de placas y las utilidades, y las compilamos:<\/p>\n<div class=\"mycode\">\n<pre class=\"mycode\">    git clone https:\/\/github.com\/linux-sunxi\/sunxi-boards\n    git clone https:\/\/github.com\/linux-sunxi\/sunxi-tools\n    cd sunxi-tools\n    make<\/pre>\n<\/div>\n<p style=\"text-align: left;\">Ahora vamos a generar el fichero <em>script.bin<\/em>, necesario para configurar el n\u00facleo durante el arranque. Para ello utilizaremos las utilidades que acabamos de compilar y el fichero de configuraci\u00f3n <em>a13_mid.fex<\/em>, situado en el repo <em>sunxi-boards<\/em>, por ser el m\u00e1s parecido a nuestra tablet:<\/p>\n<div class=\"mycode\">\n<pre class=\"mycode\">    .\/fex2bin ..\/sunxi-boards\/sys_config\/a13\/a13_mid.fex script.bin<\/pre>\n<\/div>\n<p style=\"text-align: left;\">El siguiente paso consiste en copiar el fichero <em>uImage<\/em> y <em>script.bin<\/em> en la partici\u00f3n VFAT de nuestra tarjeta SD:<\/p>\n<div class=\"mycode\">\n<pre class=\"mycode\">    cp script.bin \/media\/particion1\n    cd ..\/linux-sunxi\n    cp arch\/arm\/boot\/uImage \/media\/particion1<\/pre>\n<\/div>\n<p style=\"text-align: left;\">Por \u00faltimo s\u00f3lo queda instalar u-Boot en la tarjeta, para lo cual hacemos (asumiendo que la tarjeta est\u00e1 en \/dev\/sdX):<\/p>\n<div class=\"mycode\">\n<pre class=\"mycode\">    cd ..\/u-boot-sunxi\n    sudo dd if=spl\/sunxi-spl.bin of=\/dev\/sdX bs=1024 seek=8\n    sudo dd if=u-boot.bin of=\/dev\/sdX bs=1024 seek=32<\/pre>\n<\/div>\n<p style=\"text-align: left;\">Y con esto ya est\u00e1. S\u00f3lo queda meter la tarjeta SD en la tablet, encenderla, y conectar un teclado USB.<\/p>\n<p style=\"text-align: left;\">El pr\u00f3ximo paso ser\u00e1 intentar activar la WiFi, algo que me est\u00e1 dando bastantes quebraderos de cabeza.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Actualizado: Hoy me puse a intentar meter Linux en la tablet de la que habl\u00e9 en la anterior entrada. Y lo he conseguido, he aqu\u00ed la prueba: Dado que esta tablet est\u00e1 equipada con un Allwinner A13, necesitamos un kernel y un cargador adecuados. Lo interesante de este chip es que no hace falta tocar &hellip; <a href=\"https:\/\/blog.rastersoft.com\/?p=1253\" class=\"more-link\">Seguir leyendo <span class=\"screen-reader-text\">Arrancando Linux en la tablet<\/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,5,7],"tags":[],"class_list":["post-1253","post","type-post","status-publish","format-standard","hentry","category-cacharreo","category-programacion","category-tutoriales"],"_links":{"self":[{"href":"https:\/\/blog.rastersoft.com\/index.php?rest_route=\/wp\/v2\/posts\/1253","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=1253"}],"version-history":[{"count":0,"href":"https:\/\/blog.rastersoft.com\/index.php?rest_route=\/wp\/v2\/posts\/1253\/revisions"}],"wp:attachment":[{"href":"https:\/\/blog.rastersoft.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1253"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.rastersoft.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1253"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.rastersoft.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1253"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}