Este tutorial de dockers , se realizo pruebas en un equipo virtual con redhat 6
Se requiere usar los paquetes que están en epel
$yum install docker-io
Iniciamos el servicio y se añade al auto inicio:
$/etc/init.d/docker start
$chkconfig docker on
Si el equipo en el que requerimos el docker cuenta con Internet podemos descargarlo de la siguiente manera:
#Busca imagenes
$docker search debian
#Descarga una imagen
$docker pull debian
Ahora si contamos con una imagen de forma local o es posible conectar el equipo a internet, podemos crear la imagen o descargarla de algún repo
- Repositorio donde descargar imagenes
https://hub.docker.com/explore/
https://hub.docker.com/_/debian/
Para importar nuestra imagen puede realizarse de la siguiente forma
$cat debian_squid.tar.gz |docker import - debian-squid
Ahora podemos visualizar nuestra imagen
$ docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
debian-squid latest 074db2704fe9 10 days ago 228 MB
Se procede a iniciar la imagen direccionando a un puerto, en este caso a un proxy cache
$docker run -p 3129:3128 -d -i -t debian-squid /bin/bash
Una vez inicializada la imagen del contenedor , podemos instalar los paquetes requeridos, squid, se realiza su configuracion
Para volver a ingresar al contenedor del docker se requiere saber su id
$docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
9b35b6f16b74 debian-squid "/bin/bash" 10 days ago Up 10 days 0.0.0.0:3129->3128/tcp cocky_jones
Ya que se conoce el id se ingresa de la siguiente forma:
$docker exec -it 9b35b6f16b74 bash
[root@iusatec ~]# docker exec -it 9b35b6f16b74 bash
root@9b35b6f16b74:/#
Una vez que tengamos un contenedor con el sw requerido podemos exportarlo o realizar una copia
Exportar
$docker export debian-squid |gzip > debian_squid.tar.gz
Realizar un commit
$docker commit 9b35b6f16b74 debian01
En el firewall la configuracion la realiza docker
$iptables -L -n
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy ACCEPT)
target prot opt source destination
DOCKER all -- 0.0.0.0/0 0.0.0.0/0
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 ctstate RELATED,ESTABLISHED
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Chain DOCKER (1 references)
target prot opt source destination
ACCEPT tcp -- 0.0.0.0/0 172.17.0.1 tcp dpt:3128
Podemos ver que el docker- proxy esta escuchando
$netstat -tupln
tcp 0 0 :::3129 :::* LISTEN 14946/docker-proxy
Esto es lo basico que se requiere para trabajar con contenedores linux
sábado, 17 de diciembre de 2016
jueves, 25 de agosto de 2016
processing: efécto básico matrix
Una de las ventajas de usar processing es que solamente te enfocas a realizar animaciones, efectos graficos y pueden ser programados de una manera muy sencilla, por ejemplo realizar una animación que trata de emular el código de la matrix, el cual no lleva mas que unos minutos si uno tiene las bases de pintar figuras y algo de programacion orientada a objetos
Código fuente:
m[] m1=new m[101];
void setup() {
size(800, 600);
fill(color(0, 255, 0));
noStroke();
for (int i=0; i<=100; i++) {
m1[i]=new m(random(0, width), random(0, height), random(1, 5));
}
}
void draw() {
background(0);
for (int i=0; i<=100; i++) {
m1[i].mover();
m1[i].display();
}
}
class m {
float x=0, y=0, v=0, t=1, r=0;
int i, c;
int[] cc=new int[61];
m(float xx, float yy, float vv) {
x=xx;
y=yy;
v=vv;
t=random(1, 60);
for (i=0; i<=t; i++) {
cc[i]=(int)random(0, 150);
}
}
void mover() {
y=y+v;
if (y>(height+t*5)) {
y=0;
v=random(2, 11);
x=random(0, width);
t=random(1, 60);
for (i=0; i<=t; i++) {
cc[i]=(int)random(0, 150);
}
}
}
void display() {
for (i=0; i<=t; i++) {
fill(0, cc[i], 0);
rect(x, y-5*i, 5, 5);
}
c=(int)random(0, 255);
fill(0, c, 0);
rect(x, y, 5, 5);
}
}
Código fuente:
m[] m1=new m[101];
void setup() {
size(800, 600);
fill(color(0, 255, 0));
noStroke();
for (int i=0; i<=100; i++) {
m1[i]=new m(random(0, width), random(0, height), random(1, 5));
}
}
void draw() {
background(0);
for (int i=0; i<=100; i++) {
m1[i].mover();
m1[i].display();
}
}
class m {
float x=0, y=0, v=0, t=1, r=0;
int i, c;
int[] cc=new int[61];
m(float xx, float yy, float vv) {
x=xx;
y=yy;
v=vv;
t=random(1, 60);
for (i=0; i<=t; i++) {
cc[i]=(int)random(0, 150);
}
}
void mover() {
y=y+v;
if (y>(height+t*5)) {
y=0;
v=random(2, 11);
x=random(0, width);
t=random(1, 60);
for (i=0; i<=t; i++) {
cc[i]=(int)random(0, 150);
}
}
}
void display() {
for (i=0; i<=t; i++) {
fill(0, cc[i], 0);
rect(x, y-5*i, 5, 5);
}
c=(int)random(0, 255);
fill(0, c, 0);
rect(x, y, 5, 5);
}
}
lunes, 23 de mayo de 2016
cluster de 2 nodos en centos/redhat
* Crear cluster
Video del funcionamiento del cluster
* Es requerido el grupo de paquetes "High Availability Management"
* Iniciar servicio ricci y hacerlo persistente para autoinicio
* Establecer password para el usuario ricci
* Asegurar comunicacion entre los nodos del clsuter
* En el archivo hosts son requeridas las ips y hostname de los nodos
ccs -h rhelcluster01 --createcluster rhelcluster
* Añadir nodos
ccs -h rhelcluster01 --addnode rhelcluster02
ccs -h rhelcluster01 --addnode rhelcluster01
* Listar nodos
ccs -h rhelcluster01 --lsnodes
* Agregar fence del cluster
ccs -h rhelcluster01 --addfencedev myfence agent=fence_virt
Si es equipo fisico hp y tiene ILO
<fencedevice agent="fence_ilo4" auth="password" ipaddr="ip_ilo" login="cluster" name="nodo1" passwd="cluster123"/>
* Agregar un metodo al fence del cluster
ccs -h rhelcluster01 --addmethod mthd1 rhelcluster01
ccs -h rhelcluster01 --addmethod mthd1 rhelcluster02
* Agregar un dominio del failover (ordered) tomando en cuenta la prioridad de los nodos el dominio de failover
ccs -h rhelcluster01 --addfailoverdomain rhelcluster ordered
* Se agregan nodos el dominio del failover
ccs -h rhelcluster01 --addfailoverdomainnode rhelcluster rhelcluster01
ccs -h rhelcluster01 --addfailoverdomainnode rhelcluster rhelcluster02
* Visualiza configuracion del dominio failover
ccs -h rhelcluster01 --lsfailoverdomain
* Agregar un filesystem para failover
ccs -h rhelcluster01 --addresource fs name=cluster_fs device=/dev/vg_cluster/lv_datos mountpoint=/cluster_fs fstype=ext4
* Agregar un servicio al dominio del failover
ccs -h rhelcluster01 --addservice cluster_filesystem domain=rhelcluster recovery=relocate autostart=1
* Agregar un subservicio del dominio del failover
ccs -h rhelcluster01 --addsubservice cluster_filesystem fs ref=cluster_fs
ccs -h rhelcluster01 --addsubservice cluster_filesystem ip address=10.188.18.76 monitor_link=yes sleeptime=10
* Crear un disco quorum (disco compartido)
mkqdisk -c /dev/vdc -l clusterqdisk
* Agregar el quorum al cluster
ccs -h rhelcluster01 --setquorumd label=clusterqdisk
** Es posible agregar una heuristica para el voto del quorum
<heuristic program="ping -c1 -w2 10.188.18.1"/>
* Listar quorum y status del quorum
ccs -h rhelcluster01 --lsquorum
mkqdisk -L
* Propagar configuracion del cluster
ccs -h rhelcluster01 --sync --activate
* Validar configuracion de cluster
ccs -h rhelcluster01 --checkconf
* Activar todos los nodos
ccs -h rhelcluster01 --startall
* Activar un nodo
ccs -h rhelcluster01 --start
* Desactivar un nodo
ccs -h rhelcluster01 --stop
* Ver estado del cluster
clustat
Ejemplo de salida
[root@rhelcluster02 ~]# clustat
Cluster Status for rhelcluster @ Mon May 23 12:52:41 2016
Member Status: Quorate
Member Name ID Status
------ ---- ---- ------
rhelcluster01 1 Online, rgmanager
rhelcluster02 2 Online, Local, rgmanager
/dev/block/252:32 0 Online, Quorum Disk
Service Name Owner (Last) State
------- ---- ----- ------ -----
service:cluster_filesystem rhelcluster01 started
service:cluster_filesystem2 rhelcluster02 started
* Si se requiere gfs2 (shared filesystem )
service clvmd start
chkconfig clvmd on
mkfs -t gfs2 -p lock_dlm -t rhelcluster:lvgfs -j 2 /dev/vg_compartido/lvgfs
- Monstar gfs2
mount -t gfs2 -o noatime /dev/vg_compartido/lvgfs /gfs/
- En el fstab
/dev/mapper/vg_compartido-lvgfs /gfs gfs2 defaults,noatime,nodiratime 0 0
* Salida de archivo de configurcion /etc/cluster/cluster.conf
________________________
<?xml version="1.0"?>
<cluster config_version="25" name="rhelcluster">
<fence_daemon/>
<clusternodes>
<clusternode name="rhelcluster01" nodeid="1">
<fence>
<method name="mthd1">
<device name="myfence"/>
</method>
</fence>
</clusternode>
<clusternode name="rhelcluster02" nodeid="2">
<fence>
<method name="mthd1">
<device name="myfence"/>
</method>
</fence>
</clusternode>
</clusternodes>
<cman/>
<fencedevices>
<fencedevice agent="fence_virt" name="myfence"/>
</fencedevices>
<rm>
<failoverdomains>
<failoverdomain name="rhelcluster" nofailback="0" ordered="1" restricted="0">
<failoverdomainnode name="rhelcluster01" priority="1"/>
<failoverdomainnode name="rhelcluster02" priority="2"/>
</failoverdomain>
<failoverdomain name="rhelcluster2" nofailback="0" ordered="1" restricted="0">
<failoverdomainnode name="rhelcluster02" priority="1"/>
<failoverdomainnode name="rhelcluster01" priority="2"/>
</failoverdomain>
</failoverdomains>
<resources>
<fs device="/dev/vg_cluster/lv_datos" fstype="ext4" mountpoint="/cluster_fs" name="cluster_fs"/>
<fs device="/dev/vg_cluster2/lvcluster2" fstype="ext4" mountpoint="/cluster2" name="cluster2"/>
<fs device="/dev/vg_cluster3/lv_cluster3" fstype="ext4" mountpoint="/cluster3" name="cluster3"/>
</resources>
<service autostart="1" domain="rhelcluster" name="cluster_filesystem" recovery="relocate">
<fs ref="cluster_fs"/>
<ip address="8.8.8.76" monitor_link="yes" sleeptime="10"/>
</service>
<service autostart="1" domain="rhelcluster2" name="cluster_filesystem2" recovery="relocate">
<fs ref="cluster2"/>
<ip address="8.8.8.77" monitor_link="yes" sleeptime="10"/>
<fs ref="cluster3"/>
</service>
</rm>
<quorumd label="clusterqdisk"/>
</cluster>
________________________
<?xml version="1.0"?>
<cluster config_version="60" name="ccc">
<clusternodes>
<clusternode name="ccc01" nodeid="1" votes="1">
<fence>
<method name="mthd1">
<device name="nodo1"/>
</method>
</fence>
</clusternode>
<clusternode name="ccc02" nodeid="2" votes="1">
<fence>
<method name="mthd1">
<device name="nodo2"/>
</method>
</fence>
</clusternode>
</clusternodes>
<cman transport="udpu"/>
<totem token="27000"/>
<fencedevices>
<fencedevice agent="fence_ilo4" auth="password" ipaddr="8.8.8.82" login="cluster" name="nodo1" passwd="ilo123"/>
<fencedevice agent="fence_ilo4" auth="password" ipaddr="8.8.8.83" login="cluster" name="nodo2" passwd="ilo123"/>
</fencedevices>
<rm>
<failoverdomains>
<failoverdomain name="ccc_pakcge1" nofailback="0" ordered="1" restricted="0">
<failoverdomainnode name="ccc01" priority="1"/>
<failoverdomainnode name="ccc02" priority="2"/>
</failoverdomain>
<failoverdomain name="ccc_pakcge2" nofailback="0" ordered="1" restricted="0">
<failoverdomainnode name="ccc02" priority="1"/>
<failoverdomainnode name="ccc01" priority="2"/>
</failoverdomain>
</failoverdomains>
<resources>
<fs device="/dev/vgxxn1/lvaaa" fstype="ext4" mountpoint="/opt/app/aaa/" name="lvaaa"/>
<fs device="/dev/vgxxn1/lvrrr_prm" fstype="ext4" mountpoint="/opt/app/rrr/prm/" name="lvrr_prm"/>
<fs device="/dev/vgxxn1/lvwww" fstype="ext4" mountpoint="/opt/app/www/" name="lvwww"/>
<fs device="/dev/vgxxn2/lvaaa2" fstype="ext4" mountpoint="/opt/app/aaa2/" name="lvaaa2"/>
<fs device="/dev/vgxxn2/lvrrr_sec" fstype="ext4" mountpoint="/opt/app/rrr/sec/" name="lvrrr_sec"/>
</resources>
<service autostart="1" domain="ccc_pakcge1" name="pakcge1" recovery="relocate">
<fs ref="lvaaa"/>
<fs ref="lvrrr_prm"/>
<fs ref="lvwww"/>
<ip address="8.8.8.84" monitor_link="yes" sleeptime="10"/>
</service>
<service autostart="1" domain="ccc_pakcge2" name="pakcge2" recovery="relocate">
<fs ref="lvaaa2"/>
<fs ref="lvrrr_sec"/>
<ip address="8.8.8.85" monitor_link="yes" sleeptime="10"/>
</service>
</rm>
<quorumd label="cluster_ccc" votes="2">
<heuristic program="ping -c1 -w2 8.8.8.1"/>
</quorumd>
</cluster>
________________________
Video del funcionamiento del cluster
* Es requerido el grupo de paquetes "High Availability Management"
* Iniciar servicio ricci y hacerlo persistente para autoinicio
* Establecer password para el usuario ricci
* Asegurar comunicacion entre los nodos del clsuter
* En el archivo hosts son requeridas las ips y hostname de los nodos
ccs -h rhelcluster01 --createcluster rhelcluster
* Añadir nodos
ccs -h rhelcluster01 --addnode rhelcluster02
ccs -h rhelcluster01 --addnode rhelcluster01
* Listar nodos
ccs -h rhelcluster01 --lsnodes
* Agregar fence del cluster
ccs -h rhelcluster01 --addfencedev myfence agent=fence_virt
Si es equipo fisico hp y tiene ILO
<fencedevice agent="fence_ilo4" auth="password" ipaddr="ip_ilo" login="cluster" name="nodo1" passwd="cluster123"/>
* Agregar un metodo al fence del cluster
ccs -h rhelcluster01 --addmethod mthd1 rhelcluster01
ccs -h rhelcluster01 --addmethod mthd1 rhelcluster02
* Agregar un dominio del failover (ordered) tomando en cuenta la prioridad de los nodos el dominio de failover
ccs -h rhelcluster01 --addfailoverdomain rhelcluster ordered
* Se agregan nodos el dominio del failover
ccs -h rhelcluster01 --addfailoverdomainnode rhelcluster rhelcluster01
ccs -h rhelcluster01 --addfailoverdomainnode rhelcluster rhelcluster02
* Visualiza configuracion del dominio failover
ccs -h rhelcluster01 --lsfailoverdomain
* Agregar un filesystem para failover
ccs -h rhelcluster01 --addresource fs name=cluster_fs device=/dev/vg_cluster/lv_datos mountpoint=/cluster_fs fstype=ext4
* Agregar un servicio al dominio del failover
ccs -h rhelcluster01 --addservice cluster_filesystem domain=rhelcluster recovery=relocate autostart=1
* Agregar un subservicio del dominio del failover
ccs -h rhelcluster01 --addsubservice cluster_filesystem fs ref=cluster_fs
ccs -h rhelcluster01 --addsubservice cluster_filesystem ip address=10.188.18.76 monitor_link=yes sleeptime=10
* Crear un disco quorum (disco compartido)
mkqdisk -c /dev/vdc -l clusterqdisk
* Agregar el quorum al cluster
ccs -h rhelcluster01 --setquorumd label=clusterqdisk
** Es posible agregar una heuristica para el voto del quorum
<heuristic program="ping -c1 -w2 10.188.18.1"/>
* Listar quorum y status del quorum
ccs -h rhelcluster01 --lsquorum
mkqdisk -L
* Propagar configuracion del cluster
ccs -h rhelcluster01 --sync --activate
* Validar configuracion de cluster
ccs -h rhelcluster01 --checkconf
* Activar todos los nodos
ccs -h rhelcluster01 --startall
* Activar un nodo
ccs -h rhelcluster01 --start
* Desactivar un nodo
ccs -h rhelcluster01 --stop
* Ver estado del cluster
clustat
Ejemplo de salida
[root@rhelcluster02 ~]# clustat
Cluster Status for rhelcluster @ Mon May 23 12:52:41 2016
Member Status: Quorate
Member Name ID Status
------ ---- ---- ------
rhelcluster01 1 Online, rgmanager
rhelcluster02 2 Online, Local, rgmanager
/dev/block/252:32 0 Online, Quorum Disk
Service Name Owner (Last) State
------- ---- ----- ------ -----
service:cluster_filesystem rhelcluster01 started
service:cluster_filesystem2 rhelcluster02 started
* Si se requiere gfs2 (shared filesystem )
service clvmd start
chkconfig clvmd on
mkfs -t gfs2 -p lock_dlm -t rhelcluster:lvgfs -j 2 /dev/vg_compartido/lvgfs
- Monstar gfs2
mount -t gfs2 -o noatime /dev/vg_compartido/lvgfs /gfs/
- En el fstab
/dev/mapper/vg_compartido-lvgfs /gfs gfs2 defaults,noatime,nodiratime 0 0
* Salida de archivo de configurcion /etc/cluster/cluster.conf
________________________
<?xml version="1.0"?>
<cluster config_version="25" name="rhelcluster">
<fence_daemon/>
<clusternodes>
<clusternode name="rhelcluster01" nodeid="1">
<fence>
<method name="mthd1">
<device name="myfence"/>
</method>
</fence>
</clusternode>
<clusternode name="rhelcluster02" nodeid="2">
<fence>
<method name="mthd1">
<device name="myfence"/>
</method>
</fence>
</clusternode>
</clusternodes>
<cman/>
<fencedevices>
<fencedevice agent="fence_virt" name="myfence"/>
</fencedevices>
<rm>
<failoverdomains>
<failoverdomain name="rhelcluster" nofailback="0" ordered="1" restricted="0">
<failoverdomainnode name="rhelcluster01" priority="1"/>
<failoverdomainnode name="rhelcluster02" priority="2"/>
</failoverdomain>
<failoverdomain name="rhelcluster2" nofailback="0" ordered="1" restricted="0">
<failoverdomainnode name="rhelcluster02" priority="1"/>
<failoverdomainnode name="rhelcluster01" priority="2"/>
</failoverdomain>
</failoverdomains>
<resources>
<fs device="/dev/vg_cluster/lv_datos" fstype="ext4" mountpoint="/cluster_fs" name="cluster_fs"/>
<fs device="/dev/vg_cluster2/lvcluster2" fstype="ext4" mountpoint="/cluster2" name="cluster2"/>
<fs device="/dev/vg_cluster3/lv_cluster3" fstype="ext4" mountpoint="/cluster3" name="cluster3"/>
</resources>
<service autostart="1" domain="rhelcluster" name="cluster_filesystem" recovery="relocate">
<fs ref="cluster_fs"/>
<ip address="8.8.8.76" monitor_link="yes" sleeptime="10"/>
</service>
<service autostart="1" domain="rhelcluster2" name="cluster_filesystem2" recovery="relocate">
<fs ref="cluster2"/>
<ip address="8.8.8.77" monitor_link="yes" sleeptime="10"/>
<fs ref="cluster3"/>
</service>
</rm>
<quorumd label="clusterqdisk"/>
</cluster>
________________________
<?xml version="1.0"?>
<cluster config_version="60" name="ccc">
<clusternodes>
<clusternode name="ccc01" nodeid="1" votes="1">
<fence>
<method name="mthd1">
<device name="nodo1"/>
</method>
</fence>
</clusternode>
<clusternode name="ccc02" nodeid="2" votes="1">
<fence>
<method name="mthd1">
<device name="nodo2"/>
</method>
</fence>
</clusternode>
</clusternodes>
<cman transport="udpu"/>
<totem token="27000"/>
<fencedevices>
<fencedevice agent="fence_ilo4" auth="password" ipaddr="8.8.8.82" login="cluster" name="nodo1" passwd="ilo123"/>
<fencedevice agent="fence_ilo4" auth="password" ipaddr="8.8.8.83" login="cluster" name="nodo2" passwd="ilo123"/>
</fencedevices>
<rm>
<failoverdomains>
<failoverdomain name="ccc_pakcge1" nofailback="0" ordered="1" restricted="0">
<failoverdomainnode name="ccc01" priority="1"/>
<failoverdomainnode name="ccc02" priority="2"/>
</failoverdomain>
<failoverdomain name="ccc_pakcge2" nofailback="0" ordered="1" restricted="0">
<failoverdomainnode name="ccc02" priority="1"/>
<failoverdomainnode name="ccc01" priority="2"/>
</failoverdomain>
</failoverdomains>
<resources>
<fs device="/dev/vgxxn1/lvaaa" fstype="ext4" mountpoint="/opt/app/aaa/" name="lvaaa"/>
<fs device="/dev/vgxxn1/lvrrr_prm" fstype="ext4" mountpoint="/opt/app/rrr/prm/" name="lvrr_prm"/>
<fs device="/dev/vgxxn1/lvwww" fstype="ext4" mountpoint="/opt/app/www/" name="lvwww"/>
<fs device="/dev/vgxxn2/lvaaa2" fstype="ext4" mountpoint="/opt/app/aaa2/" name="lvaaa2"/>
<fs device="/dev/vgxxn2/lvrrr_sec" fstype="ext4" mountpoint="/opt/app/rrr/sec/" name="lvrrr_sec"/>
</resources>
<service autostart="1" domain="ccc_pakcge1" name="pakcge1" recovery="relocate">
<fs ref="lvaaa"/>
<fs ref="lvrrr_prm"/>
<fs ref="lvwww"/>
<ip address="8.8.8.84" monitor_link="yes" sleeptime="10"/>
</service>
<service autostart="1" domain="ccc_pakcge2" name="pakcge2" recovery="relocate">
<fs ref="lvaaa2"/>
<fs ref="lvrrr_sec"/>
<ip address="8.8.8.85" monitor_link="yes" sleeptime="10"/>
</service>
</rm>
<quorumd label="cluster_ccc" votes="2">
<heuristic program="ping -c1 -w2 8.8.8.1"/>
</quorumd>
</cluster>
________________________
martes, 3 de mayo de 2016
Cyanogen 13 en moto g3
Anexo procedimiento para la instalación de cyanogen mod 13 en un equipo moto g 3, usando una estacion de trabajo con linux arch se requiere instalar los siguientes paquetes a travez de aur
yaourt ncurses5-compat-libs
Posteriormente habilitar multilib en los repos:
tail /etc/pacman.conf -n 1
Include = /etc/pacman.d/mirrorlist
Include = /etc/pacman.d/mirrorlist
yaourt android-sdk
Ya teniendo instaladas las herramientas para ejecutar comandos desde nuestra terminal linux, es requerido desbloquear el bootloader del telefono:
Obtener id de nuestro telefono
fastboot oem get_unlock_data
Una vez obtenidos los datos ingresarlos en la pagina:
Para proceder al desbloqueo
fastboot oem unlock 6C67...
Una vez desbloqueado el bootloader mandar el reinicio del telefono en modo bootloader
adb reboot bootloader
Lo siguiente es cargar el kernel y el sistema operativo
Se puede obtener desde:
Carga de kernel:
fastboot flash recovery ~/Downloads/cm-13.0-20160502-NIGHTLY-osprey-recovery.img
Después de procede al reinicio del teléfono en modo recovery:
adb reboot recovery
Ya una vez cargado el modo recovery, se elige la opción install update,y instalar desde el modo ADB,el teléfono se quedara en modo espera hasta que enviaron el sistema operativo a tra vez de adb
adb sideload ~/Downloads/cm-13.0-20160502-NIGHTLY-osprey.zip
Al terminar el proceso podemos reiniciar el teléfono y cargar el sistema ahora con cyanogen.
Para instalar la tienda de aplicaciones de google es posible hacerlo con twrp
fastboot flash recovery ~/Downloads/twrp-osprey-3.0.2-r1.img
La tienda de aplicaciones la obtenemos en:
Y la podemos enviar al telefono una vez que este en modo recovery
adb push ~/Downloads/open_gapps-arm-6.0-nano-20160501.zip /data/media/0
Desde el menú del modo recovery de twrp en la opcion de install procedemos a buscar el zip de las gapps e instalarlo, es posible que se deba de limpiar el cache desde twrp si es que manda error al instalar las gapps
Suscribirse a:
Entradas (Atom)


