Posted tagged ‘sistema operativo’

Android como Sistema Operativo

23 abril, 2019

Hola a todos,

Continuando con el curso de Android, les comparto ahora un material que nos habla de las características de Android como sistema operativo. Un sistema operativo es un software bastante grande, que se encarga de administrar todos los recursos del sistema, atender las ordenes del usuario y mantener sus aplicaciones en ejecución.

¿qué mecanismos usa Android para realizar administrar la ejecución de un dispositivo móvil?

Aquí el enlace a las notas: http://www.nachintoch.mx/teaching/mobile_dev/android-OS.pdf

Android: instalación en computadoras con arquitectura Intel x86 (PC)

4 mayo, 2017

Hola a todos!

Como quizá muchos de ustedes ya lo saben, soy un entusiasta del software/hardware libres y de los proyectos realizados bajo estas banderas. También estoy maravillado por la tecnología al rededor de los dispositivos móviles; tales como la gran variedad de sensores y las telecomunicaciones. Y seguramente también ya han notado que soy fan de una mezcla de estos dos mundos: el sistema operativo Android.

Hace un tiempo, había estado trabajando en un proyecto en el que el rendimiento y las funciones simuladas que hace el emulador del SDK; no eran suficientes para realizar las pruebas que necesitaba, así que trate de buscar una solución a mi problema.

Mientras pensaba en ello, me dí cuenta de un detalle muy obvio que hasta ese momento estaba dejando pasar desapercibido: Android es un sistema operativo. Así que me dije a mi mismo, ¿porqué no instalarlo en mi computadora en una partición nueva del disco, justo como cualquier otro SO?

Para mi alegría; descubrí que esto es mucho más fácil de lo que pensé originalmente, pues existe un proyecto que ha aprovechado el código fuente de Android; que es open source, para portarlo directamente a PC con arquitectura Intel x86 y x86_64.

Les estoy hablando del proyecto http://www.android-x86.org/ Este grupo ha lanzado varios portes de distintas versiones de Android para PC, lo cual me parece una contribución excelente al software libre y que le da muchas oportunidades a muchos usuarios.

Instalar Android en una partición independiente como SO nativo del sistema tiene algunas ventajas sobre la emulación:

  • Para empezar, el rendimiento es mucho mejor. Aún si el BIOS de tu sistema soporta virtualización por hardware, siempre se tendrá mejor rendimiento al eliminar todas las capas de abstracción posibles.
  • No necesitas instalar el Android SDK en tu sistema. Sí lo requieres sólo para el emulador, es bastante pesado y en mi opinión no es algo que valga tanto la pena sólo para emular.
  • La colección de drivers incluidos en los portes de Android para x86 es bastante buena; por lo que si tu máquina cuenta con componentes como interfaz WiFi, tarjeta gráfica; entre otros, el SO (Android) puede sacar mejor provecho de estos recursos de lo que harían otras aplicaciones como BlueStacks.
  • Puedes usar tu PC como una tablet con Android. Es decir, si tienes una laptop, ahora también puedes tener una tablet; como es mi caso. Para mi, este es un punto fuerte, ya que no soy tan fan de las tablet (pues un smartphone ofrece las mismas funcionalidades y además es teléfono) y no veo mucho sentido a adquirir una. Pero como gamer, una pantalla grande; es una pantalla grande, por lo que poder jugar los pocos juegos para móviles que encuentro atractivos en una pantalla grande (pudiendo incluso utilizar un monitor externo a través del puerto S-VGA [sí, mi portátil aún usa S-VGA y módem ¿algún problema?]) me parece genial. Ya sé que en este caso, las Phablets son una alternativa; pero creo que el móvil que estoy usando aún tiene bastante vida útil por delante como para jubilarlo por un simple capricho… Y tiene un tamaño razonable para ser un teléfono…
  • Otra ventaja basada en el punto anterior: si tienes una computadora vieja por allí arrumbada y sin propósito en la existencia, puedes darle una vida nueva como dispositivo Android… O instalarle Windows XP o 95 para jugar algunos clásicos.

Así es que si tú como yo, encuentras útil contar con un sistema con Android instalado en una máquina; a continuación les explico cómo hacerlo.


Comencemos por descargar la versión de Android que queremos tener. Para ello, vamos a http://www.android-x86.org/download y seleccionamos la versión de Android que deseamos. Además de la variedad de versiones de Android, disponibles, también hay algunas versiones de CyanogenMod disponibles para quienes lo prefieran.

Tal vez notes que la versión que quieres descargar se presenta en varias opciones:

  • x86 (32 bit) – Elige esta opción si tu procesador es de 32 bits. Un procesador de 64 bits también puede ejecutar esta versión, pero mejor aprovechalo al máximo.
  • x86_64 (64 bits) – Elige esta opción SOLO si tu procesador es de 64 bits. No es posible ejecutar un programa compilado para 64 bits en un sistema de 32.
  • Legacy – Elige esta opción si el BIOS de tu sistema es (o soporta) Legacy (antiguo – viejo). Normalmente lo sabes si al encender la máquina puedes ver la pantalla del BIOS y si al presionar teclas como F2 o F8 antes de que comience a cargar el SO tienes acceso a la configuración del mismo.
  • EFI – Elige esta opción si el BIOS de tu sistema es reciente. Normalmente usas un BIOS EFI si al encender tu máquina pasas de apagado a “cargando Windows” sin ver un cursor parpadeando ni letras blancas que con alguna descripción de tu sistema.
  • Live – Elige esta versión si en lugar de instalar Android en el sistema sólo quieres ejecutarlo desde un CD o una USB sin instalarlo. La desventaja de hacer esto es que cualquier cambio que hagas puede perderse (sobre todo su ejecutas en vivo desde disco), por lo que cualquier configuración o app que instales se perderá siempre que apagues el sistema.
  • ISO Image – Elige esta opción si vas a quemar la imagen en un CD o DVD. Estas imágenes también puedes “quemarlas” en una USB.
  • USB Image – Elige esta opción si vas a “quemar” la imagen en una USB.

Una vez que hayas descargado la versión de Android de tu elección, ahora hay que quemarla. Si vas a instalar desde CD o DVD, simplemente usa tu programa quemador preferido (el quemador por defecto de Windows, Roxio, Burner…) Si vas a instalar desde una USB, puedes usar UNetbootin desde Windows, Mac y Linux, Win32 Disk Imager en Windows; o desde sistemas basados en Debian hacer:

# cp ruta/a/la/imagen/descargada /dev/sdX
# sync

Recuerda reemplazar la “X” en “sdX” por la letra que tenga asignado el directorio donde se ha montado la USB en la que quieres quemar la imagen.


Ahora vamos a crear una partición para Android. Este procedimiento es el mismo que seguirías para instalar Linux o cualquier otro SO en un sistema multiboot; por lo que he escrito una entrada independiente para este paso.

Android x86 soporta las particiones en formato NTFS, FAT32, EXT2 y EXT3, pero no puede escribir nada en particiones FAT32; por lo que es poco recomendado. En mi opinión, usar una partición EXT3 sería lo mejor, aunque no le veo nada de malo a usar EXT2 o NTFS. También soporta que el SO coexista con otro en la misma partición, pero a mi gusto esto es bastante sucio y es preferible dedicarle su propio espacio.

Puedes saltarte este procedimiento y pasar al siguiente párrafo si prefieres que Android sea el único SO del sistema; pues el instalador puede formatear automáticamente la partición del disco que le indiques, si no la formateas, entonces el SO coexistirá con la información que ya esté en la partición; incluyendo coexistir con otro SO (pero ya di mi opinión al respecto).

Varios usuarios reportan que usando particiones de desde 5Gb se obtienen buenos resultados; pero en mi opinión, recomendaría usar entre 16 y 32 Gb que es lo que usualmente traen los dispositivos con Android.

Da clic aquí para abrir el tutorial sobre cómo gestionar particiones usando GParted con Debian Live.

Bien, ahora que tenemos una partición, podemos continuar con la instalación.


Previamente a iniciar la instalación debes insertar el medio en el que has quemado la imagen de Android (el disco o la USB). Enciende la máquina y asegúrate de arrancar desde el medio correcto (disco o USB); para esto puede que necesites revisar las opciones de arranque de tu BIOS.

Una vez que arranques desde el medio con la imagen, te aparecerá un menú muy simple en modo texto. Elige la opción “Install Android to harddisk“.

menu

Ahora debes elegir la partición en la que quieres instalar Android. Si deseas reformatear, selecciona la opción con el sistema de archivos que deseas usar. Recuerda que esto borrará todo lo que haya en la partición, así que asegúrate de no estar perdiendo nada importante. Si ya habías formateado la partición o conservar la información que haya (esta es la opción que eliges para hacer coexistir Android con otro SO), escoge “Do not format“.

partition

ext3

A continuación, el instalador preguntará si deseas instalar GRUB. Si ya cuentas con un sistema multiboot; elige que NO, ya que podrías sobreescribir el cargador que hayas configurado previamente. Si tu sistema aún no es multiboot o Android será el único SO de tu equipo, elige que SÍ.

grub

Después de esto sólo nos quedará esperar a que los archivos sean descomprimidos y copiados en la partición indicada y ¡listo!


Si al reiniciar tu sistema GRUB o tu cargador de arranque no muestra a Android o algún otro de los SO que tengas instalado, puedes consultar el tutorial que he hecho para reconfigurar GRUB.


¡Uf! Puede que parezca un poco tedioso, pero vale la pena y es bastante divertido contar con una “tablet” adicional. Puedes dar de alta una cuenta de Google para usar la Google Play como en cualquier otro dispositivo e instalar apps tal y como lo harías en cualquier teléfono o tablet con Android, ¡genial no?

FB_IMG_1491502299797

FB_IMG_1491502270741


Antes de terminar, quiero aclarar que las instrucciones aquí las he probado y me han funcionado bien. No puedo responsabilizarme si algo sale mal y no puedes arrancar ningún SO, pierdes información o se daña el equipo con el que hayas intentado seguir los pasos…


En fin, espero le sea de utilidad a más de uno y que el límite sea la imaginación.

Memory Rhapsody: un tributo a la nerdancia

30 marzo, 2017

Hola a todos!

En un intento más por parecer divertido; hace ya un año o más, escribí después de una noche de insomnio forzado (que casi no me tocan) esta adaptación del eterno clásico de Queen “Bohemian Rhapsody”; donde el personaje le anuncia a su madre que debe huir y esconderse por haber asesinado a alguien de un disparo y comienza a suplicara por su libertad mientras expresa su miseria y arrepentimiento.

Aquella noche de insomnio forzado, trabajaba en un programa en C que resolvía el problema del consenso para dos procesos (procesos de UNIX reales y no nada más los que se pueden modelar con hilos o procesos ligeros). Aprendí varias cosas aquella noche; cómo porqué no siempre es buena idea permitir que el compilador optimice ciertas variables o que usar registros como memoria compartida es mala idea. Pueden ver el post que publiqué en su momento aquí.

A la mañana siguiente; iba con el miedo de quedarme dormido en el metro y darle varias vuelta a la ciudad, cuando debería de haber estado en el trabajo. Así que tenía que mantener la mente suficientemente ocupada como para no dormirme sin un expendio de café a la redonda. No podía dejar de pensar en lo que había estado haciendo durante la noche mientras escuchaba música. En eso, escuché Bohemian Rhapsody y no pude evitar imaginar que el personaje era un proceso pidiendo clemencia al sistema operativo por haber efectuado una operación ilegal; y después empieza a expresara que su miseria se origina en sus “errores de programación”… Y así fue, como escribí esta burda adaptación “Memory Rhapsody”.

Espero les guste y les cause una sonrisa; como a mi siempre me la causa la oración al C.

Is this a real space? Or is just a null pointer? Caught in a bus flow, No escape from user misspells.

Open a file, Look for a EOF, And read…

I’m just a user process, I need no privileges.

Because I easy fork, Easy goto, Little time, Little address.

Any way the scheduler works, Doesn’t really bother to me, To me.

Papa, Just kill a child, Call a kill against his will, System accepted, now its dead.

Papa, Processor time had just begun, But now I’ve created a system inconsistency.

Papa… Oh… Didn’t meant to SEGFAULT, If I’m not responsive again next round.

Carry on, carry on, As if were hosted by Windows…

Too late, The ticks are gone, SYSTERM returned successful, Messages run down through my pipe.

Goodbye whole system, I’ve goto, Gotta leave behind a corrupted memory.

Papa… Oh… I don’t want to die, Sometimes I wish I’ve never been forked at all…

I see a little siluetto of a thread, Scaramouche Scaramouche will you do the system call?

5 to 0 V very very frightening me! Dennis Ritchie! Dennis Ritchie! Dennis Ritchie let me go! Magnifico!!

I’m just just a user process, No body loves me, He’s just a user process, from a user application, Spared from the system by his coding errors!

Easy goto Easy return, Will you let me go?

Bismillah no! Do you think this’ NT? Let me go! Bismillah no!

Kernel’ll no let you go! Bismillah no! Kernel’ll no let you go! Let me go… No! No! No! No! No! No! No!

Oh papa mio papa mio, Papa mio let me go…

Beelzelebub has a loader aside for me, For me, for me, for me!

So you think you can block me and change my stats?

So you think you can instance me and let me to die?

Oh! System! Can you do this to me system?

I just wanna get out I just wanna get messaged remotely

Oh… Oh yeah! Oh yeah!

Nothing really bothered me… Any one can read.

Nothing really matters, Nothing really matters to me…

Any way the scheduler works…

Teoría de Sistemas Operativos: Procesos, Hilos y Calendarizadores

17 agosto, 2015

Hola amigos!

Cómo les había comentado, estoy dando un par de cursos en la UNAM como ayudante de profesor. Esta semana estuvimos revisando los temas de procesos, hilos y calendarizadores, como bases para irnos encaminando al cómputo concurrente; donde paralelizar tareas es el pan de cada día 😛

Hice unas notas de clase, las comparto con todos ustedes.

Aprovecho para comentarles que el enlace a las notas son de mi sitio web personal: nachintoch.mx, allí estaré en las próximas semanas, subiendo software libre que he estado desarrollando los últimos 3 años y no he publicado, así como escritos y demás, ya que me permite tener mayor orden subirlos al sitio que aquí mismo.

Sin más; les dejo el enlace a las notas sobre procesos, hilos y calendarizadores: http://nachintoch.mx/teaching/texts/12-ago%201.3%20Hilos%20de%20ejecuci%C3%B3n%20y%20calendarizaci%C3%B3n%20de%20procesos.pdf


A %d blogueros les gusta esto: