viernes, 17 de febrero de 2017

Instalación de Debian 8 desde usb


Página principal

Instalación de Debian 8 desde usb


Voy a intentar explicar todos los pasos que he seguido para crear un usb que sea arrancable para poder instalar  Debian 8 .
Como hago bastantes pruebas de instalación de distribuciones linux, necesito que sea lo mas rápido posible, y esto se hace mediante la instalación desde un usb.
La instalación normal se realiza bajando los 3 DVD de la distribución debian, en anteriores versiones eran 5 DVD, se han rebajado el numero de paquetes de la distribución perdiendo algunos paquetes obsoletos o que no son mayoritariamente usados.
Pero puede llegar el caso de que algunos ordenadores no incorporen lector de DVD, y en estos ordenadores solo se puede instalar desde usb.
Otro de los casos que puede ocurrir es que solo tengamos el primer DVD de la distribución, y los demás paquetes los instalemos desde la red. Los que tenemos fibra óptica o una conexión rápida somos unos privilegiados, la mayoría de la gente tiene poca velocidad, y algunas personas que viven en casas aisladas solo tienen conexión vía teléfono a precios altos y con un tope de datos mensuales. En este artículo  voy a crear un usb arrancable con el instalador de la distribución de linux Debian 8. También añadiré una serie de paquetes que utilizo normalmente, juegos, desarrollo, emuladores, etc.
Para hacerlo mas bonito uso una memoria usb de 8G míni, no es la mejor ni la  memoria mas rápida  que tengo, pero es tan diminuta que la puedes llevar en cualquier lado, y no veas como se queda la gente cuando  sacas la memoria, tanto poder en poco mas de 1 cm2. ;)



Existen numerosos tutoriales en internet de como instalar Debian 8 desde un usb.

https://www.debian.org/releases/stable/i386/ch04s03.html.es
https://elbauldelprogramador.com/iniciar-debian-desde-usb/
https://diariodeunalinuxera.com/2015/10/20/crear-un-usb-booteable-de-cualquier-distribucion-gnulinux-desde-la-terminal/
https://exdebian.org/foro/instalar-debian-8-desde-usb-solucionado

La forma normal que tiene la gente de hacer un usb arrancable es:
Siendo administrador.
su
Localizar donde está la memoria usb
fdisk -l
Desmontamos la memoria usb
umount /dev/sdc
Cuando estemos seguro de donde está (cuidado si nos equivocamos formateamos el disco duro)
mkfs.vfat -F 32 /dev/sdc -I
Copiamos la ISO en nuestra memoria usb
dd if=ImagenDebian.iso of=/dev/sdc
Terminamos de copiar los datos que puedan quedar en cache por si las moscas...
sync


A la hora de copiar la iso a nuestra memoria usb existen varios métodos:
dd if=ImagenDebian.iso of=/dev/sdc
dd if=/ruta/debian.iso of=/dev/sdb bs=1M; sync
cat debian.versión.iso > /dev/sdX ; sync
dd if=/your/path/debian-7.5.0-i386-netinst.iso of=/dev/sdX bs=4M sync

Todos los métodos de copiado hacen lo mismo, aunque algunos sean mas rápidos.

Esta forma está bien, pero tiene sus inconvenientes:
La memoria de 8G solo queda grabada con 4.5G el resto se inutiliza.
La memoria se queda en modo de solo lectura.
En algunos casos ni siquiera se monta en windows, tiene formato extraño.
En muchos casos después de instalar debian, si queremos instalar mas cosas no podemos intalar desde el usb, debemos emplear la red o un DVD.


Ahora empecemos con mi método.

Lo primero es bajar el programa unetbootin-linux-625  , elegir la versión que corresponda a vuestro sistema. https://unetbootin.github.io/ 
Confieso que por motivos que no vienen al caso utilice la versión de windows (quien esté libre de pecados que tire la primera piedra).
Después de un rato (nos da tiempo a mirar el correo) tenemos nuestro usb arrancable para poder instalar debian 8.
Probemos nuestro usb  instalando en una partición de nuestro disco duro. Comprobamos que la instalación  desde el usb es mucho mas rápido que desde el DVD.
Aclaremos que para poder arrancar desde el usb debemos pulsar una tecla (F1 al F12 dependiendo de nuestro ordenador)  cuando arranca el ordenador, en mi caso es F11.
Cuando tengamos instalado y funcionando el debian 8 en nuestro ordenador, nos damos cuenta que no se puede instalar nada mas desde el usb. Esto me confundió pues yo sabia que había muchos mas paquetes en el usb.
Después  de muchas investigaciones y pruebas, descubrí un fichero donde se encuentra el listado de todos los paquetes que existen en el usb.  Este fichero se encuentra en: /dists/jessie/contrib/binary-i386/Packages.gz

Para que me reconozca los paquetes contenidos del usb debemos realizar lo siguiente:
-Crear un directorio llamado main en el USB.
-Copiar el fichero que esta en el directorio del USB 
    /dists/jessie/contrib/binary-i386/Packages.gz 
          al  directorio del USB creado
    /main

Ahora debemos editar el fichero /etc/apt/sources.list y añadir
deb file:/media/usuario/8G2/ main/
Donde 8G2 es el nombre del usb  y usuario es el nombre del usuario que ha montado el dispositivo.
Ya podemos comprobar que en el instalador de paquetes synaptic reconoce el nuevo repositorio de paquetes, si lo tenemos ya abierto debemos recargar la información de paquetes.
Desde un terminal también podemos teclear  apt update para actualizar la información de paquetes.

Crear repositorios deb en disco duro o usb.

El tener que meter una y otra vez los disco de instalación de debian, o utilizar la red donde no es muy rápida, es un tanto molesto.
Crear nuestro propio repositorio en un disco duro o usb es muy práctico,  y bastante veloz a la hora de instalar paquetes.
Puedes hacer una selección de paquetes desde synaptic , instalándolos o solo bajarlos, y los almacena en /var/cache/apt/archives/  . Ahora los copias en el directorio de la memoria usb que quieras , yo los copio a /8G2/debian8/archives/   .
Con el programa dpkg-scanpackages creas un archivo comprimido Packages.gz donde se encuentran el listado de todos los paquetes. Este debe ser colocado con los paquetes que has añadido.
Ejemplo de como se crea el paquete comprimido y su colocación junto a los paquetes:
    dpkg-scanpackages archives /dev/null | gzip >archives/Packages.gz
En este ejemplo se creó el archivo comprimido con la información de todos los paquetes *.deb que existían en el directorio archives y lo coloco en el directorio archives.
Ahora solo se tiene que colocar el nuevo repositorio en el fichero de configuración
   /etc/apt/sources.list  .
Por ejemplo si tengo la memoria usb que se monta en    /media/usuario/8G2  , y el repositorio de archivos está en    /debian8/archives   pondríamos en el archivo /etc/apt/sources.list la siguiente línea:
   deb file:/media/usuario/8G2/debian8/    archives/

Mi configuración de /etc/apt/sources.list  es la siguiente:

deb file:/media/seta/8G2/debian8/     archives/ 
deb file:/media/seta/8G2/     main/
deb http://ftp.es.debian.org/debian/ jessie main contrib non-free


Donde 8G2 es el nombre del usb  y seta es el nombre del usuario que ha montado el dispositivo.

Ahora cuando voy al pueblo donde internet solo existe en el bar y sus alrededores, puedo instalar mi distribución linux Debian 8  desde mi diminuta memoria usb. :)
He estado haciendo todas las pruebas con la versión Debian 8.7.1 funcionando a la perfección, y he visto que se han arreglado bastantes fallos.

Saludos.
Juan Galaz

Bibliografía:

https://www.debian.org/releases/stable/i386/ch04s03.html.es
https://elbauldelprogramador.com/iniciar-debian-desde-usb/
https://diariodeunalinuxera.com/2015/10/20/crear-un-usb-booteable-de-cualquier-distribucion-gnulinux-desde-la-terminal/
https://exdebian.org/foro/instalar-debian-8-desde-usb-solucionado

http://www.elmundoenbits.com/2013/02/crear-un-repositorio-local-para.html#.VWmjIBcg1B0
http://blog.desdelinux.net/no-tienes-internet-aprende-como-llevarte-tus-repositorios-a-casa/

jueves, 2 de febrero de 2017

STM32F103C8T6 vs Arduino - Test de un bucle

Página principal


STM32F103C8T6
vs
Arduino
Test en un bucle


En esta practica voy a comparar la rapidez de un bucle en las dos placas.

Programa de bucle
//  Arduino
//  22.6 Seg.  __2000

//  STM
//  5.8 Seg.  ___2000

int n1,n2;
char z;

// STM
#define pinLED1 PA0

//Arduino
//#define pinLED1 13

void setup()
{
 pinMode(pinLED1, OUTPUT);
}

void loop()
{
   digitalWrite(pinLED1, HIGH);
   for(n1=0;n1<30000;n1++)
     {
       for(n2=0;n2<2000;n2++) { z=1; }
     }
   digitalWrite(pinLED1, LOW);
   for(n1=0;n1<30000;n1++)
     {
       for(n2=0;n2<2000;n2++) { z=0; }
     }
              
}


Como podemos comprobar que  si utilizamos el mismo programa, en Arduino tarda en recorrer el bucle 22.6 Seg. , y si utilizamos el STM32  tarda 5.8 Seg.
La comparación es de  3.8 veces más rápido el STM32 .
Yo esperaba bastante más rápido el STM32 por ser un micro de 32 bits  frente al arduino que es de 8 bits.
Además el uno funciona a 72 MHz frente al otro que funciona a 16 MHz.
Debemos pensar que la optimización de código de cada compilador es diferente.


Saludos.
JUAN GALAZ

STM32F103C8T6 vs Arduino Test con los puertos

Página principal

STM32F103C8T6
vs
Arduino
Test con los puertos


En esta practica voy a comparar la rapidez de manejo de puerto en las dos placas.




 Con STM32
//   817.7 khz
//__________
#define pinLED1 PA0


void setup()
{
   pinMode(pinLED1, OUTPUT);
 }

void loop()
{
 
salto:
  digitalWrite(pinLED1, LOW);
  digitalWrite(pinLED1, HIGH);
  goto salto;

}

Con Arduino
// 94060 Hz

void setup()
{
  pinMode(13, OUTPUT);
}

void loop()
{
  digitalWrite(13, HIGH);  
  digitalWrite(13, LOW);            
}
//  96920 Hz

void setup()
{
  pinMode(13, OUTPUT);
}

void loop()
{
salto:
  digitalWrite(13, HIGH);  
  digitalWrite(13, LOW);
  goto salto;            
}
//  2648.6 KHz

void setup()
{
   DDRB = DDRB | B00100000;
}
void loop()
{
salto:
  PORTB = PORTB | B00100000;
  PORTB = PORTB & B11011111;
  goto salto;    
}
//  3972.9 KHz

void setup()
{
   DDRB = DDRB | B00100000;
}
void loop()
{
salto:
  PORTB = 0;
  PORTB = 255;
  goto salto;          
}

Como podemos comprobar si utilizamos el mismo programa, en Arduino hacemos oscilar el puerto a 96 KHZ  ,y si utilizamos el STM32 oscila a 817KHz .
Como el arduino lo tengo bastante utilizado, sé bastantes trucos. Como vemos  podemos llegar a 2.6 Mhz , incluso a 3.9 Mhz haciendo alguna trampa.

Saludos.
JUAN GALAZ