Formatear Acer Aspire One desde memoria USB

28 04 2010

Retomando mi hábito de escritor de mi blog, ya hace mucho tiempo que no escribia y es que me gusta escribir sobre cosas que puedan ayudar a los demas y problemas que yo he podido solucionar, ya sea por intuición, por alguna “fumada” o simplemente por que lo deduje de algun lugar.

Hace un par de dias, me tope con el inconveniente de que no podia formatear una computadora Acer Aspire One, me tomo casi tres meses (si, casi tres meses) aunque no trabajaba en ella todos los días, pero igual ese tiempo me llevo hacerlo. Intente varias maneras de hacerlo y no se dejaba, llegue al grado de conseguir prestada una unidad externa de CD-ROM y al extremo de buscar a alguien y estar dispuesto a pagarle porque me formatearan la dichosa computadora.

Como ustedes sabran la dichosa computadora no trae su propia unidad de CD-ROM, por lo cual debemos formatearla desde una memoria USB, al buscar información en la web, lo clasico para encontrar son los pasos siguientes:

Y cualquiera de los dos funciona bien, no así al tener dos particiones como era mi caso, ya que esa computadora no se habia formateado en ocasiones anteriores, aun tenia la partición de recuperación, sin embarago instalar desde ahí, a mi no me parece no solo ya de por si el SO es restrictivo a morir y con eso aún mas. Total, al querer  iniciar el formateo (estando configurado el boot desde la memoria USB  y todo) me mostraba un error que si mal no recuerdo decia algo como…

C:\\<windows root>\system32\hal.dll

Pero buscando una solución y sabiendo donde y como buscar, encontre que este error salía en este tipo de operaciones (formatear la Aspire One), a causa de que el disco tiene mas de una partición, entonces la solución fue probar dejar una unica partición y wuaaala! Funcionó, así que ahora ya saben.





Módulo cargable en Linux

27 10 2009

Como parte de uno de los cursos que estoy llevando este semestre tuvimos que realizar un módulo cargable “en tiempo de ejecución” en Linux. Este aparte de mostrar mensajes de carga y descarga mediante dmesg, tenía que crear un archivo en el directorio /proc. A continuación la solución.

Primeramente hay que crear el archivo con el código fuente del módulo y agregar el código para el mismo. Abrimos una terminal de comandos y creamos una carpeta para tener un mejor orden y ahí dentro creamos el archivo.

mkdir modulo

cd modulo

nano primerModulo.c

A continuación el código fuente para el módulo.

/* El nombre del archivo es primerModulo */
#include <linux/module.h>          //para los detalles del modulo (Author, License…)
#include <linux/kernel.h>          //para usar la macro printk, KERN_INFO y KERN_ALERT
#include <linux/sched.h>           //para usar la estructura “task_struct”
#include <linux/proc_fs.h>    //para poder hacer la escritura en el archivo que estara en /proc

struct proc_dir_entry *structDirEntrada= NULL;
#define procfs_name “miprimermodulo”    //Nombre del archivo que se creara en /proc
char buff[500];        //buffer para escribir al archivo /proc/miprimermodulo

/*A continuacion viene la funcion de escritura en el archivo en /proc*/
int procfile_read(char *buffer, char **buffer_location, off_t offset, int buffer_length, int *eof, void *data){
int len;
static int count=1;
static char bufo[500];
if(offset>0)
return 0;
len=sprintf(bufo, “%s”, buff);
count++;
*buffer_location=bufo;
return len;
}

static int cargar(void){
//create_proc_entry lleva parametros nombre, modo, y padre de la estructura a la que se hace la asignacion.
structDirEntrada = create_proc_entry(procfs_name, 0644, NULL);

if (structDirEntrada == NULL) {
remove_proc_entry(buff, structDirEntrada);
printk(KERN_ALERT “Error: Could not initialize /proc/%s\n”, procfs_name);
return -ENOMEM;
}

//Ingresa el texto que se guardara en el archivo al buffer “buff”
sprintf(buff, “\n*** Hola soy el primer modulo de G10 – 200413044 ***\n\n”);

//A continuacion se setean varios de los parametros a los elementos de la estructura proc_dir_entry
structDirEntrada->read_proc = procfile_read;
structDirEntrada->owner = THIS_MODULE;
structDirEntrada->mode = S_IFREG | S_IRUGO;
structDirEntrada->uid = 0;
structDirEntrada->gid = 0;
structDirEntrada->size = 100000; //Se establece el tamaño del archivo en /proc (bytes)

//Lo siguiente tiene que ir hasta aca porque el estandar ISO C90 prohíbe las declaraciones mezcladas y código
printk(KERN_INFO “********************************************************\n”);
printk(KERN_INFO “* Hola, ahora se inicia la carga del modulo…\n”);
printk(KERN_INFO “* El user space del proceso es ‘%s’\n”, current->comm);
printk(KERN_INFO “* El PID del programa que lo inserto… %i\n”, current->pid);
printk(KERN_INFO “********************************************************\n”);
printk(KERN_INFO “——————————————————–\n”);
printk(KERN_INFO “——————————————————–\n”);
return 0;    //Se retorna 0 para indicar que todo salio bien, de lo contrario retorna != 0
}

static void descargar(void){
printk(KERN_INFO “#######################################\n”);
printk(KERN_INFO “# Se inicia la descarga del modulo… #\n”);
printk(KERN_INFO “#######################################\n”);
remove_proc_entry(buff, structDirEntrada);
}

module_init(cargar);    // Lo que se debe llamar al cargar un modulo
module_exit(descargar);    // Lo que se debe llamar al remover un modulo

MODULE_AUTHOR(“G10 – 200413044″);
MODULE_LICENSE(“Dual MIT/GPL”);
MODULE_DESCRIPTION(“Este es un modulo para la practica 3 de Sistemas Operativos 2.”);
MODULE_VERSION(“1:1.0-Beta1″);
//Existen mas licencias en module.h, y es quiza uno de los paramatros mas importantes.

Cuando terminanos de agregar el código, guardamos y cerramos el archivo. A continuación debemos crear el archivo make para la construcción del modulo. Esto se hace con los comandos siguientes.

nano Makefile


#Codigo del Makefile para la compilacion del modulo…
ifeq ($(KERNELRELEASE),)
KERNELDIR ?= /lib/modules/$(shell uname -r)/build
PWD := $(shell pwd)
.PHONY: build clean
build:
#— Importante la linea siguiente debe ir tabulada —
$(MAKE) -C $(KERNELDIR) M=$(PWD) modules
clean:
#— Importante la linea siguiente debe ir tabulada —
rm -rf *.o *~ core .depend .*.cmd *.ko *.mod.c
else
$(info Building with KERNELRELEASE = ${KERNELRELEASE})
obj-m :=    primerModulo.o
endif

Guardamos y cerramos el archivo, a continuación para construirlo, en la terminal de comandos tecleamos el comando. Esto nos crea varios archivos, entre ellos uno con extensión .ko, el cual es módulo a cargar en sí.

make

Podemos ver las propiedades del modulo con el comando

modinfo primerModulo.ko

A continuación montamos/insertamos el módulo en el sistema, esto se hace con el comando

sudo insmod primerModulo.ko

Podemos ver los mensajes de bitacora del módulo con el comando

dmesg

Con el modulo ya cargado podemos ver que en /proc se creó el archivo que tiene como objetivo el módulo, este lo podemos abrir con programas como nano, cat o less. Cabe mencionar que este archivo es accesible unicamente mientras el módulo este cargado, cuando se descarga aparece, pero no es accesible.

cat /proc/miprimermodulo

Ahora tenemos que descargar el módulo, esto se hace con el comando.

sudo rmmod primerModulo

Para ver todos los mensajes de bitácora del módulo, podemos teclear el comando siguiente.

tail /var/log/messages

Este es un módulo bastante básico, sin embargo, bastante interesante para iniciarse en la programación de los mismo o simplemente para saber como funcionan los mismos.

Referencias:





Yo quiero ser un BlogStar!

21 10 2009

Ese es el título de un video que prepararon un grupo de bloggers peruanos por motivo del Blogday Peru 2009, la verdad… el ritmo esta pegajoso, la letra les quedó buenisima y a mi punto de vista es bastante acertadísima. Esta bastante bueno y pues no podía quedarme sin “compartirlo”.

Creo que si estas leyendo esto te vas a sentir identificad@ con la rola, jajaja   :D





Así es la vida

19 10 2009

Ese es el título de una canción que escuche el otro día y que me hizo recordar muchas cosas por las que personas (digamos no malas) están pasando y también por las que a veces me toca pasar a mi también. Yo no soy mucho de ponerle atención a la letra de las canciones (tampoco es que escuche cualquier cosa, digase mierdaton), pero esta si me dejó en que pensar y en especial la parte donde dice “el que roba le pide al señor que le deje robar“.

Ultimamente por cosas del destino, me ha tocado que exponerme a la delicuencia común en los buses al tener que llevar a la universidad un objeto muy valioso y útil para mí. Total un día le pedí favor a un familiar que me fuera a traer, ya para el regreso de la universidad. En el transcurso del camino me comentaba (con tono un tanto molesto) a cerca de la nueva medida que tomarán en la Av. Petapa sobre un sistema prepago para el transporte urbano, del cual él es dueño de uno de esos buses. Esos buses son en los que me movilizo y los choferes (no pilotos) son ladrones aprovechados (no cobran la tarifa establecida), abusivos y les pela todo. Entonces fue cuando compredí que “el que roba le pide al señor que le deje robar…”.

Por otro lado una persona (digamos no mala) muy querida para mí, esta pasando por una situación bastante difícil en cuanto a su salud, sin embargo, como puede ahí sigue en la lucha, no es que sea una santa y tampoco se decir si se merece o no eso, lo cierto es que en ocasiones me es frustrante ver que personas que de verdad andan haciendo maldades (robar, secuestrar, politiquear, estafar, etc.) anden tan campantes por las calles y avenidas de nuestra Guatemala, entonces solo puedo decir WTF!!!

Por estas y otras razones me gustó esta canción, pues hay cosas que no podemos cambiar, pero al final (como me dijo una chica) “Dios sabe porque hace las cosas” y él sabrá por qué la vida es tan irónica/ilógica…

Luis Enrique – Así es la vida





Mujeres en Ingeniería

5 10 2009

“Es imposible, no hay mujeres atractivas en Ingenieria…”, jajaja, como dice un cuate, mejor sin comentarios…

jajaja, y ademas, uno también anda hecho lata, ya que queda muy poco tiempo para arreglarse y/o hacer ejercicio o a veces es simple hueva de arreglarse/peinarse/(hastaDe)Bañarse, y mas aun cuando ni comer puede uno tranquilo por preocupaciones varias, jajaja





Con mucho que hacer?

27 09 2009

Ultimamente he estado unPoco/bastante atareado, que tareas, que prácticas, que investigaciones, que calificadas, que una instalación, que una configuración por allá y otra por acá. Sin embargo, con la poca gente (que no es de la universidad) con la que tengo contacto humano, he notado que casi siempre andan de pele o en realidad no hacen mucho por sus vidas… y en ocaciones se me ocurre en que no sería una mala idea y juntar a toda esa mara ociosa (de alguna manera) y aplicar el teorema de los infinitos monos… y así poder realizar mis que haceres, jajaja.

infinitosMonos

infinitosMonos

Por supuesto, mi propuesta es algo metafórico al igual que el teorema, pues para algunas cosas podría dar unas indicaciones y en otras el tiempo tendría que tender a infinito. Bueno mejor sigo con mis que haceres.





Un nuevo foro, monjes.org

27 09 2009

En uno de esos tantos días en que uno esta trabajando en el monton de cosas que hay por hacer, un amigo (perdón por los créditos, pero no recuerdo quien) pasó un link desde el cual él había visto un documental interesante religulous. Bueno, como estaba ocupado, en mi navegador mantuve el link, a los pocos días (ayer) tuve oportunidad de bajar el documental y revisar el foro y la verdad, se ve bastante bueno, tiene buen contenido, el aspecto visual es bastante agradable, a la vez que es limpio y llamativo, aparte de que ya registrado (yo ya lo estoy) da varias opciones y lo mejor  es que aún sin registrarte tenes acceso a su contenido. Si tenes tiempo date un vuelta por








Seguir

Recibe cada nueva publicación en tu buzón de correo electrónico.