lunes, 13 de octubre de 2014

Ejercicios de programación en bash nivel -1 ( muy principiante )

Objetivos:
Incentivar y motivar a los usuarios a estudiar programación con una pequeña introducción acerca de bash.
Exponer una perspectiva simple sobre programación
Que es bash?
Un interprete de comandos

Mas detalles:
Bourne Shell (sh)
Creador original: Stephen Bourne, de los Laboratorios Bell de AT&T.
Año de aparición: 1977 - Actualidad
Descripción: Fue el intérprete usado en las primeras versiones de Unix y se convirtió en un estándar de facto.

Korn Shell (ksh)
Creador original: David Korn de los Laboratorios Bell de AT&T.
Año de aparición: Comienzos de los 80s - Actualidad.               
Descripción: Escrito para el proyecto GNU (GPL). Sus funciones avanzadas para manejar archivos de comandos lo pusieron a la par con lenguajes de programación especializados como awk y perl.

Bourne-Again Shell (Bash)
Creador original: Brian Fox
Año de aparición: 1987 - Actualidad
Descripción: Escrito para el proyecto GNU, se usa por defecto en la mayoría de las distribuciones de Linux actualmente. La sintaxis de órdenes de Bash incluye ideas tomadas desde Korn Shell.

Zsh
Creador original: Paul Falstad
Año de aparición: 1990 - Actualidad
Descripción: Se diseñó para poder usarse interactivamente. Reúne algunas importantes mejoras.

Estructura básica
para crear un script de bash necesitamos idenficarlo de forma correcta, para eso vamos a usar esto como encabezado.

#!/bin/bash

Se puede usar un editor de texto para crear el archivo con la sintaxis que utilizará el lenguaje de programación.
nano,geany,vim,sublime text2, etc.
al crear un archivo para que pueda ser interpretado en bash debemos asignarle los permisos de ejecución correspondiente.

$ chmod +x archivo.sh

Luego podremos escribir cualquier comentario precedido del signo numeral, gato o almohadilla "#" depende como le digan en tu pais.

#!/bin/bash
# cualquier linea precedida de signo # será ignorado como 

# una ejecución y sólo será tomada
# como un comentario.


Las órdenes de la linea de comandos

Es necesario estar familiarizado con la linea de comandos de bash para eso hay que ejercitar comandos básicos como
cd, ls, mv, cp, rm, chmod, clear,
http://www.puppylinux.org/wikka/BashCommands

Definiendo variables
Las variables son algo esencial en cualquier lenguaje de programación, ya que nos permiten almacenar cualquier dato para poder trabajar con él más adelante, guardándose durante la ejecución del script o programa.

Ejemplos de variables
var= x
var= y
var="/ruta/archivo"
var="comando"


veamos unos ejemplos mas reales
CHAT="/usr/bin/xchat"
MENSAJE="Muestra un mensaje"
LISTA="ls"


en la terminal podremos llamar a nuestras variable en un script si anteponemos el signo $ a la variable así

exec $CHAT
echo $MENSAJE
$LISTA /usr/bin


Meta caracteres
caracteres especiales que tienen un  significado propio para Bash.
   Le indica a Bash que ignore el carácter especial que viene después. Se suele usar para introducir funcionalidades al código, como saltos de línea, etc...

" "  Cuando se encierra entre comillas dobles un texto o una variable si esta es una frase (cadena de palabras) Bash lo interpretará como una cadena única.

  Identifica que lo que sigue al carácter es una variable.

' ' Las comillas simples se usan para desactivar todos los caracteres especiales encerrados dentro de ellas, así tenemos que si escribimos '$variable', Bash interpretará literalmente lo escrito y no su valor como variable.

  Cuando se coloca este carácter dentro de una línea del guión, Bash ignora el resto de la línea. Muy útil para hacer comentarios y anotaciones o para inhabilitar una línea de comandos al hacer pruebas.

  Este carácter se usa para separar la ejecución de distintos comandos en una misma línea de comandos.

``  Se utiliza para convertir la salida de un comando en una variable. El comando en cuestión se ejecuta en una sub-shell.

Operadores
Estos nos sirven para realizar comparaciones en bash, aquí algunos ejemplos.

Comparación de enteros (números) con ejemplos.

-eq Equal (es igual a) if [ "$a" -eq "$b" ]

-ne Not Equal  (no es igual a / es distinto a) if [ "$a" -ne "$b" ]

-gt Greater Than (es mayor que) if [ "$a" -gt "$b" ]

-ge Greater Equal (es mayor que o igual a) if [ "$a" -ge "$b" ]

-lt Lower Than (es menor que) if [ "$a" -lt "$b" ]

-le Lower Equal (es menor que o igual a) if [ "$a" -le "$b" ]

<  Menor que (usar con doble paréntesis) (("$a" < "$b"))

<= Menor que o igual a (usar con doble paréntesis) (("$a" <= "$b"))

>  Mayor que (usar con doble paréntesis) (("$a" > "$b"))

>= Mayor que o igual a (usar con doble paréntesis) (("$a" >= "$b"))

Comparación de cadenas

= Igual a if [ "$a" = "$b" ]

== Igual a if [ "$a" == "$b" ]

!= No igual a / Distinto a if [ "$a" != "$b" ]

< Menor que (orden alfabético ASCII) if [[ "$a" < "$b" ]]

>  Mayor que (orden alfabético ASCII) if [[ "$a" > "$b" ]]
-z Cadena vacía (null) o de longitud cero if [ -z “$cadena” ]

-n Cadena no vacía (con contenido) if [ -n “$cadena” ]

Las estructuras de control
Son elementos de programación que pueden controlar y modificar el flujo de ejecución de las instrucciones de un programa

Ejecutar de acuerdo a una condición, ejecutar un grupo u otro de sentencias (If-Then-Else,  Select y Case)
Ejecutar un grupo de sentencias mientras exista una condición (While-do)
Ejecutar un grupo de sentencias hasta que exista una condición (Until-do)
Ejecutar un grupo de sentencias un número determinado de veces (For-Next)

Bueno después de la teoría obligatoria, vamos a comenzar con nuestro ejercicio.
"Adiós mundo" el ejemplo de hola mundo ya todos lo conocen así que vamos a saltarnos eso.

Problema a resolver:
Crear un script que revise si esta instalado un programa para que pueda ejecutarse.
si no está, que nos muestre un mensaje donde nos avise que requiere ser instalado.

Suena fácil eh, pero seamos mas específicos.

Crear un script que revise si esta instalado abiword para que abra como texto el script que vamos a crear.
Si abiword no esta en el sistema entonces enviaremos un mensaje al escritorio que nos avise que falta.

Para eso usaremos la estructura de control if-then-else y algunos operadores.
agregaré comentarios para mayor entendimiento y usaré la terminal y sublime text2 como mi editor de texto, Empecemos. 

sublime mi-script.sh
 
#!/bin/bash
### DEFINIENDO LAS VARIABLES
ABW="/usr/bin/abiword"
MSG="Requiere Abiword instalado"
SCRIPT="mi-script.sh"

## ASI DEFINIMOS DONDE EL SCRIPT VA A BUSCAR ABIWORD
## Y CUAL SERA EL MENSAJE DE ERROR SI ESTE FALTA
## USANDO OPERADORES Y ESTRUCTURAS DE CONTROL
## DETECTANDO ABIWORD
if [ -f "$ABW" ]; then
## SI CUMPLE LA CONDICIÓN QUE EXISTE ABIWORD
## ENTONCES EJECUTA EL SCRIPT
$ABW $SCRIPT
## SI NO CUMPLE LA CONDICION Y NO
## ENCUENTRA ABIWORD ENTONCES EJECUTA LA SEGUNDA ORDEN
else if [ ! -f "$ABW" ]; then
## SE PUEDE UTILIZAR CUALQUIER FORMA
## DE AVISO (AUDIBLE, XMESSAGE, XDIALOG ETC)
yaf-splash -bg orange -fg black -text "$MSG" -close box -fontsize large
## PARA UNA CORRECTA SINTAXIS POR
## CADA IF DEBE IR UNA ESTRUCTURA FI
 fi
fi

El script sin los comentarios quedaría de esta manera.


luego le damos permisos de ejecución y probamos en terminal
chmod +x mi-script.sh
./mi-script.sh
Para probar la segunda condicion voy a renombrar abiword para que el script lo detecte como faltante
mv /usr/bin/abiword /usr/bin/abiword.old
luego pruebo el script nuevamente
./mi-script.sh
Les apareció el mensaje?

Y así es como se escribe código, con un poco de practica y lectura se van aclarando los conceptos.

Estas notas son sacadas de manuales de bash y mi poca experiencia escribiendo código
Nos leemos en un próximo ejercicio.
Saludos.

domingo, 21 de septiembre de 2014

Bibletime 2.9.1 para PuppyLinux

Bibletime es una herramienta para estudio de la biblia escrita en QT
no hay mucho que agregar así que les dejo el .sfs para correrlo en PuppyLinux.
Además de un paquete de 12 biblias con extensión .pet para que puedan comparar y estudiar las Sagradas Escrituras
Descarga Bibletime
Pack de Biblias


jueves, 11 de septiembre de 2014

Hacer pastebin y subir imágenes desde la terminal

La de ram y clicks que me voy a ahorrar subiendo imagenes y pegando texto en
pastebin desde la terminal.
Primero descargamos e instalamos el pet de pastebinit
https://copy.com/4vJLoD2crqzL

necesitan la librería python-configobj
esta sirve para Pupjibaro
http://ftp.us.debian.org/debian/pool/main/c/configobj/python-configobj_4.7.2+ds-4_all.deb

ahora crearé un alias para evitar la forma larga
alias paste="pastebinit -a test -b http://paste.debian.net"
ok ahora probemos mandando algo
empezemos con la salida de un comando
ls | paste
ahora con el contenido de un archivo
paste /mnt/sda1/menu.lst

Listo ahora subir imagenes para compartir los links de mis capturas
yo tengo mi cuenta en postimage.org pero cuando solo quiero compartir alguna
captura así al "vuelo" usaré imgurl para eso

Editamos el archivo ~/.bashrc
geany .bashrc

Y agregaré estas lineas al final del archivo.

imgurl() {
    for i in "$@"; do
        curl -# -F "image"=@"$i" -F "key"="4907fcd89e761c6b07eeb8292d5a9b2a" imgur.com/api/upload.xml|\
        grep -Eo '<[a-z_]+>http[^<]+'|sed 's/^<.\|_./\U&/g;s/_/ /;s/<\(.*\)>/\x1B[0;34m\1:\x1B[0m /'
    done
}

Luego escribimos el comando
source ~/.bashrc

nos creamos un alias yo usaré "imagen"
alias imagen="imgurl"

para que los alias queden guardados por defecto es necesario editar el archivo /etc/profile
geany /etc/profile 

A partir de la linea 164 escriban los aliases asi:
##Set aliases
alias imagen="imgurl"
alias paste="pastebinit -a test -b http://paste.debian.net"

y pruebo subir algo
imagen /ruta/de/mi/archivo

Editado
Y si quieren subir archivos sin gestionar cuenta de usuario ni nada desde la terminal les dejo el pet de
plowshare4
https://copy.com/8YQ7JaRk6QwC

editan otro alias
alias plowup="plowup 1fichier"

ahora con plowup /ruta/archivo subes lo que quieras te da el link de descarga de inmediato luego  de subir

Ok eso es todo por hoy, siempre hay mas de una forma y parámetros para explorar...
Saludos.

miércoles, 10 de septiembre de 2014

mps-youtube para PuppyLinux

Ver y descargar videos, audios de youtube.
Bueno mi amigo Max_Escorpion me hablo de mps-youtube así que manos a la obra
compilamos y también la librería python pafy y ya están los paquetes.

mpsyt-0.01.46
pafy-0.3.62

Forma de uso.

primero un poco de configuración
corremos el programa
mpsyt

si queremos reproducir videos o solo audio lo cambiamos con este comando
set show_video true o false según lo que necesiten

cambiar la ruta de las descargas
set ddir /ruta

El tamaño de la ventana de video, usaré una pequeña
set window_size 500x300

para buscar una canción o video escriben precedido de un punto
.cancion/artista

para empezar a sonar es con el numero, pueden sonar varias
1-4 = de la 1 a la 4
1,3,5 = la 1, la 3, y 5

para descargar, el numero precedido de la letra d
d 4 = descargar el video/audio 4

Ya con eso puedo empezar, hay mas parámetros para jugar
Saludos.

sábado, 6 de septiembre de 2014

Envia correos desde la terminal en PuppyLinux

Alguna vez enviaron un correo por terminal?
quieren probar?

Descarguen el pet desde terminal

wget -c --no-check-certificate https://copy.com/wmoZTSWYX4h6/email-3.1.3.pet
editen su configuración y prueben
ejemplos fáciles.

   Simple:
         echo "Mi mensaje" | email -V -s "Asunto" correo@ejemplo.com

   Adjuntando un archivo:
         echo "Mi mensaje" | email -V -a /ruta/archivo.cualquier-extensión correo@ejemplo.com

   Enviando el contenido dentro de un archivo en el cuerpo del mensaje:
         email -V -s "Asunto" correo@ejemplo.com < /ruta/archivo.txt
       
Pueden ver estos ejemplos en la terminal escribiendo email-ejemplos
Hay más de una forma, Saludos.

sábado, 30 de agosto de 2014

Jibyzanz version 1.0

Byzanz es una herramienta para capturar animaciones de tu escritorio en formato gif, muy útil para hacer presentaciones.
Jibyzanz es una adaptación al escritorio de PuppyLinux Pupjibaro, utilizando yad para integrarlo a la bandeja del sistema.

Requerimientos:
 
byzanz
libgstreamer
libgstreamer plugins
Notify-osd o cualquier notificador ( Pupjibaro utiliza Dunst )
En otros sistemas diferentes de Pupjibaro es muy posible necesite libgtk3 y xdotools-utils, tendran que
descargarlos de su administrador de paquetes.

Forma de Uso

Nada, muy simple la entrada en el menu coloca un icono en el systray con opciones
Grabar Escritorio completo, región y ventana.
Por defecto son 10 segundos para cada acción, si desean mas tiempo lo pueden hacer desde la terminal
byzanz-record --help
No soy experto codificando asi que tardará un poco en colocarle sección de preferencias.
No funciona capturando sonido aunque se puede, no se si es por byzanz o por la librería gstreamer, pero si se mira muy bien definido a la hora de hacer screencast de tu escritorio.

Todos los paquetes no llegan a los 2MB así que vale la pena probar

Hasta luego.

 byzans-0.2.2.pet https://copy.com/hEHHB3tNwUcp

 libgstreamer plugin base y libgstreamer ( .debs ) https://copy.com/BAXjk3fKwDO1

 jibayzanz-1.0.pet https://copy.com/vmQlBHHYM7o3





viernes, 22 de agosto de 2014

Como probar apps en PuppyLinux

Como todos saben Puppylinux es un sistema operativo linux que tiene su sistema de
paquetes propios llamados archivos .pet los cuales son creados a partir dependiendo
de algunas variables

DEFINICION DE PET SEGUN LA WIKA DE PUPPY:
PET es el sistema unificado de paquetes de instalación adoptado por Puppy Linux
desde la versión 2.14 en adelante. Hay varios juegos de palabras en esta sigla:
Puppy's Extra Treats (Trucos adicionales de Puppy), Puppy's Enhanced Tarballs
(Tarballs Mejorados de Puppy), y la palabra inglesa pet (mascota), junto con el
nombre de la distribución GNU/Linux, puppy (cachorro, perrito). Los paquetes
PET tienen la extensión .pet. En Puppy Linux, para compilar un programa y generar
su paquete PET es necesario tener activado el devx, un archivo que contiene muchas
herramientas de desarrollo. Los paquetes PET se pueden descargar desde el Administrador
de Paquetes, QuickPet o directamente de la Web, pero no hay una función específica
de instalación por comando como en otras distribuciones Linux, es más, mientras
que en estas últimas se hace mucho incapié en la instalación por comando con conexión
a Internet, en Puppy Linux no es absolutamente necesario tener Internet para instalar
un paquete, es posible descargar paquetes desde un lugar con Internet y llevarlos a
otra computadora que no tenga conexión. También se puede llevar Puppy Linux al lugar de
la fuente de Internet, si se usa en forma de instalación directa en un dispositivo
USB (pendrive, tarjeta de memoria, etc.) o si se usa el live CD con un archivo de sesión
guardado en un dispositivo USB, aunque esto es recomendable solamente si se cuenta
con el permiso del dueño de la computadora donde se usará.

Si abren un paquete de PET, verán los directorios y archivos dentro de él, como cualquier
estructura de paquetes. se parecen mucho a cualquier binario tarball.
Un ejemplo con un paquete "mi-juego.pet" con un binario "juego"
y su icono "icono.xpm" sería.

con estos archivos dentro

/usr/bin/mi-juego
/usr/local/lib/X11/mini-icons/icono.xpm



Pero quienes construyen los paquetes?
Todo el mundo con un poco de lectura sobre el tema puede crear un paquete.pet a partir de
su código fuente, de un binario de otra distribución o uno propio si se desea.
Generalmente los paquetes son creados por fanáticos de Puppy, desarrolladores, y colaboradores
incansables que con mucho empeño, nos hacen mas fácil a los usuarios instalar cualquier aplicación
en Puppy, como siempre la misma comunidad a nivel mundial se encarga de mantener el software y el
sistema en funcionamiento, sin percibir ningun lucro o retribución a cambio.

Pero por que nos falla una aplicación?
Hay varios factores por los que un programa x no funcione en puppy
- Incompatibilidad
- Paquete mal construido
- Errores de escritura
- Diferente suma de verificación

Sabiendo esto podemos antes de reportar un paquete que falla hacer nuestro propio "Debuggeo"
del mismo aquí algunos pasos.

USANDO LA TERMINAL
No hay nada mejor para saber que pasa entre nuestro ordenador y cualquier sistema operativo que la terminal

VERIFICAR LA SUMA DEL PAQUETE
Podemos comenzar revisando la suma de verificación del paquete con el comando md5sum desde la terminal

# md5sum paquete.pet

EL PAQUETE NO APARECE EN EL MENU
El menu de Puppy depende del administrador de ventanas jwm, openbox, lxde depende de la versión a cargo,
un standard para mostrar items en los menus son los archivos .desktop aquí pueden leer de que se trata.
http://standards.freedesktop.org/menu-spec/latest/index.html#introduction, la ruta predeterminada para
los archios .desktop es /usr/share/applications asi que lo primero es revisar si aparece dicho archivo
editar la categoría para probar ayuda en algunas ocasiones,
Ej.
Category=Internet; por Category=X-Internet; por mostrar un ejemplo.

# rox /usr/share/applications

BIEN EL MENU MUESTRA LA APLICACION PERO NO ABRE
En todos los casos, los paquetes y/o aplicaciones utilizan librerías algunas estandard de linux otras, especiales
creadas para que funcione dicho paquete, debemos averiguar si quizas hay un faltante, recuerda que si bien puppy
hace una revisión de dependencias luego de instalar el paquete no es tan expedita como lo hacen distro mas grandes
entonces podemos hacer lo siguiente en la terminal.

- Averiguar donde esta el binario

# which geany
/usr/bin/geany

- ejecutarlo ejemplos

# geany
o
#exec /usr/bin/geany

- revisar si cumple con las dependencias
# ldd /usr/bin/geany
si aparece alguna que diga "not found" entonces falta dicha librería

ENLACES SIMBOLICOS
A veces el sistema cuenta con libreria mas actualizadas que las que necesita el paquete, un ejemplo
digamos que libiconv.so.1 es necesaria para abrir X aplicación.
Entonces hacemos una busqueda en nuestro sistema con pfind si lo desean desde alguna gui y vemos
que nos aparece la libreria libiconv.so.1.11.1
Entonces solucionamos el problema haciendo enlace simbolico asi

# ln -s /usr/lib/libiconv.so.1.11.1 /usr/lib/libiconv.so.1

y volvemos a ejecutar el binario y asi sucesivamente

En algunos casos es tan fácil como editar la categoría del archivo desktop si lo abren como texto
la categoría puede que no la reconozca, o "linkear" una librería.

Siempre es bueno preguntarse
Baje un paquete para mi versión de Puppy?
Es la misma suma?
El creador del paquete es confiable?

En todo caso siempre puedes descomprimir un paquete y revisar antes de instalar cualquier paquete
Si todo eso falla entonces puedes preguntarle al desarrollador a cargo, reportarlo de una mejor manera
con los errores y la terminal muestra.
Reportar una aplicación como "No se abre" no le ayuda en mucho al que ofrece la app.
Si saben de otras formas de probar una aplicación por favor reportar y lo agrego al tema, gracias.

SE BUSCAN EDITORES PARA EL BLOG DE NILSONMORALES
Requisitos:
Deseo de aportar tutoriales Puppy para usuarios noveles
Buena ortografía ( no excelente, solo aceptable )
Sin presiones, ni obligaciones, solo deseo de participar.

Esto es de todos y para todos los usuarios Puppy, cambiamos el título del blog y listo.
Hasta pronto.

jueves, 10 de julio de 2014

Kiwix en PuppyLinux

Quienes podrían estar interesados en esta aplicación:
A mi criterio.
Docentes, maestros que enseñan cualquier materia académica en las escuelas y desean consultar la Wikipedia sin estar conectados a internet.
Padres de familia que quieran que sus hijos saquen información y hagan sus tareas sin distractores como Facebook o YouTube.
Estudiantes y autodidactas en general.
Este paquete requiere suficiente espacio para alojar mas de 10G que es el peso aproximado de la base de datos que descargará luego de instalada la aplicación (Base de datos de Wikipedia), para instalaciones completas en disco duros o instalaciones Frugales con mucho espacio.

Kiwix es un lector multimedia especializado para acceder a la Wikipedia offline
Kiwix descarga la wikipedia en formato .zim 
Le dan 'Si' a descargar catálogos remotos al iniciar la aplicación.


Luego en la casilla obtener nuevos archivos, si quieren le pasan un filtro para libros en su idioma y después descargar, cuando termine la descarga ya podrán tener la wikipedia sin necesidad de estar conectados.


Si antes desean descargar el .zim con la Wikipedia en español pueden hacerlo desde terminal con el comando wget. 
wget -c --no-check-certificate http://download.kiwix.org/zim/0.9/wikipedia_es_all_03_2012.zim
Descargar Kiwix-0.9rc2.pet
Md5sum 4b9a214c99ee43bc1e01240b3e636297   73MB.

Popcorn-Time en PuppyLinux




No hay mucho que comentar sobre la aplicación, pero si para los usuarios PuppyLinux que deseen probarla, aun está en etapa de pruebas es un beta, lo probé en un P4 con 1G ram, no estoy muy complacido quizás requiere mas ancho de banda de todos modos aquí se los dejo.
Prueben y reporten por favor.
Descarga Popcorn-Time.
PD: 59MB el MD5SUM luego se los paso.

sábado, 5 de julio de 2014

LiveUsb de PuppyLinux desde linea de comandos

Cuando alguien pregunta ¿Como hago una usb boteable con puppy? la mayoría de los usuarios decimos usa la herramienta x que viene en Puppy, pero que pasa si el usuario usa otra distro; no puede utilizar esa herramienta y tambien podría carecer de un lector de cd, aparte que es engorroso dejar de usar su distro preferida para hacerlo, muchos usuarios tienen su distro nativa y les gusta usar puppy desde alguna usb, microsd, para que les saque de apuros si algo sale mal, entonces lo recomendable sería hacerlo desde linea de comandos ya que son standard para todas las distribuciones linux con pequeñas diferencias como la de "sudo" antes de los comandos pero la base es la misma. así que cocinemos una liveusb de Puppy desde la terminal.

Requisitos 
- Un dispositivo usb, sdcard, 
- La iso de Puppy
- Una terminal que te permita copiar-pegar para facilitar el trabajo.
- Grub4dos en tu sistema

Enumerando los pasos
USB
1- Identificar nuestro dispositivo usb
2- Dar formato 
3- Hacer boteable el dispositivo usb
4- crear la carpeta que alojará los archivos de la iso
5- copiar y editar el menu.lst

ISO
1- Montar la iso
2- Copiar los archivos de la iso hasta la usb

Trataremos de usar la terminal en un 95% para mayor compatibilidad con la X distro que uses.

                             USB

1- fdisk -l 
Listar las particiones para identificar tu dispositivo usb



Como pueden ver el dispositivo usb que usaré se identifica como sdd1, el de ustedes puede variar, ahora sin montarlo vamos a darle formato 

2- mkfs.vfat -F 32 -n PuppyUsb /dev/sdd1



Formatear en fat32 
-F el tipo de formato 
-n asigna un nombre o viñeta al dispositivo, yo lo nombre PuppyUsb cambielo si quiere.

3- bootlace.com --time-out=0 /dev/sdd
Escribe la mbr a la partición y nos hace boteable la usb.



4- wget --no-check-certificate https://copy.com/RauOYpR0XZ2Z/grldr -P /mnt/sdd1


Usamos wget para descargar el archivo grldr y con el atributo -P para definir la ruta donde se va a descargar 


5- Usuarios Puppy no necesitan descargar grldr en el paso 4, viene en el sistema así que pueden copiarlo al dispositivo usb y darle permisos

cp /usr/lib/grub4dos/grldr /mnt/sdd1
chmod +x /mnt/sdd1/grldr

6- wget --no-check-certificate https://copy.com/qcnosgBmWFAk/menu.lst -P /mnt/sdd1
la plantilla del menu.lst para que puedas llenarla con tus datos al terminar el proceso, una vez funcione la usb boteable con PuppyLinux podran reinstalar grub4dos para un menu.lst más detallado y profesional.



7- wget --no-check-certificate https://copy.com/JbVWsDTAgkno/splash.xpm -P /mnt/sdd1
la imagen splash del grub para adornar un poco el arranque.

8- mkdir /mnt/sdd1/fixerdog
Esto creará el directorio donde después copiaremos los archivos de la iso (ISO-paso 5), la razón de crear un directorio es por si despues quieren arrancar mas Puppys en el mismo dispositivo.

                                  ISO

buscamos la iso, yo la tenia en la partición sda7 y se llama fixerdog-1.0.4.iso
asi que para ver sus archivos primero crearé un punto de montaje 

1- mkdir /mnt/imageniso

nos ubicamos en la carpeta donde tenemos nuestra iso 

2 cd /mnt/sda7

Montamos la iso

3- mount -o loop fixerdog-1.0.4.iso /mnt/imageniso



mount: warning: /mnt/imageniso seems to be mounted read-only. 
dice esto, claro ya que no podemos hacer cambios a la iso pero si podemos copiar 
sus archivos, nos dirigimos al directorio de montaje

4- cd /mnt/imageniso

y veremos el listado de archivos con el comando ls



ahora vamos a copiar 3 archivos al directorio que creamos en la usb 
vmlinuz, initrd.gz, el archivo.sfs 

para eso usamos el comando copiar cp y el atributo -g para que nos muestre una barra de progreso, este atributo es opcional, yo lo usé para efectos de este ejercicio, y puedo copiar varios archivos de una vez así.

5- cp -g vmlinuz initrd.gz Fixerdog-1.0.4.sfs /mnt/sdd1/fixerdog



editamos la plantilla del menu.lst que descargamos anteriormente con el comando wget (USB-comando 6) , llenando los espacios con las XXX por nuestros datos ej, el nombre que le dimos a nuestro directorio en el dispositivo usb.

Al final nos queda en la raiz del dispositivo: 
- El directorio con los archivos importantes de la iso dentro
- menu.lst
- grdlr
-splahs.xpm

Y solo nos queda probar si funciona.
Siempre pueden haber otros métodos y atajos, son libres de aportar y corregir

Comandos utilizados en este ejercicio

fdisk -l = Lista las tablas de particiones 
mkfs.vfat -F 32 -n = Crea particiones FAT desde linux, algunos atributos como -F y -n pueden ser utilizados para el tipo de partición y asignar un nombre al dispositivo donde se crea.
bootlace.com = Escribe el area de arranque o mbr (master boot record) en la partición donde se desea es parte del proyecto grub4dos.
wget = Descarga contenidos desde la web http, https, ftp puede ser usado de muchas formas, muy buena herramienta.
cp = Copia archivos en linux
chmod = Cambia permisos de acceso de archivos
mkdir = Crea directorios en linux
cd = Usado para moverse entre directorios, te cambia de un directorio a otro.
mount = Monta dispositivos, particiones, imagenes iso para su uso en sistemas linux
ls = Muestra el listado de archivos en sistemas Unix y derivados

Buena suerte.