25 oct 2008

Configurando Dynamips / GNS3 para simular routers Cisco en 32 y 64 bits

Instalando Dynamips
En Debian testing y SID, estos 2 programas ya se encuentran en los repositorios, podemos instalarlo de la siguiente manera
aptitude install  gns3 dynamips
Sin embargo, dynamips consume bastantes recursos asi que sera mejor compilar una version optimizada para el procesador que tengamos.
Para compilar el codigo fuente:
apt-get build-dep gns3 dynamips
aptitude install libelf-dev libelf1 libpcap0.8 libpcap0.8-dev cdbs python-qt4-dev python-sip4-dev libasm1 elfutils python-qt4 python-sip4
Bajamos el cofigo fuente de la pagina de dynamips:
http://www.ipflow.utc.fr/dynamips/dynamips-0.2.8-RC2.tar.gz
tar zxvf dynamips-0.2.8-RC2.tar.gz
cd dynamips-0.2.8-RC2
Editamos el siguiente archivo para ponerlo de acuerdo a la version:
vi debian/changelog
dynamips (0.2.8-RC2-1) unstable; urgency=low -->lo cambiamos al texto que aparece en negrita
Damos permiso de ejecucion, creamos el binario .deb e instalamos
chmod +x debian/rules
fakeroot debian/rules binary  --> para 32bits
export DYNAMIPS_ARCH=amd64 &&  fakeroot debian/rules binary  --> para 64 bits
cd ..
dpkg -i dynamips_0.2.8-RC2-1_i386.deb -->32bits
dpkg -i dynamips_0.2.8-RC2-1_amd64.deb -->64bits

Instalando GNS3
Descargamos la ultima version de la pagina de GNS3, son archivos en python asi que no hay necesidad de instalar:
http://www.gns3.net/download 
tar jxvf GNS3-0.5-src.tar.bz2
cd GNS3-0.5-src
./gns3
Una ves ejecutado GNS3, nos pedira la ubicacion de dynamips, se encuentra en/bin/dynamips

Descomprimiendo el IOS
La documentacion recomienda descomprimir la imagen de IOS que vayamos a usar, asi que manos a la obra
unzip -p mi_archivo_ios.bin > ios_descomprimido.bin

Estableciendo el parametro idlepc
Si no configuramos este parametro, dinamyps consumira toda la CPU, hay otra opcion usando el comando cpulimit pero no e tenido la necesidad de usarlo aun.
De manera predeterminada, dynamips asume que queremos emular el modelo c7200, asi que si tenemos otra imagen debemos cambiarlo con el parametro -P (actualmente estan soportados los modelos 7200, 3600, 2691, 3725, 3745).
Podemos determinar graficamente este valor usando GNS3, pero al menos en mi PC (que no es tan nueva) deja colgado la interfaz, asi que hagamoslo en modo texto. Asmumanos que una imagen c3725, entonces ejecutamos este comando:
dynamips -P 3725  c3725_descomprimido.bin
Esto va a poner muy lenta la PC ya que va a consumir el 100% de CPU, esperamos que arranque el IOS hasta que nos aparesca el mensaje "Press RETURN to get started!" ( si nos pregunta la autoconfiguracion le damos que no). Luego presionamos la siguiente combinacion de teclas: Ctrl-] i (es decir, presionamos Control y ] al mismo tiempo, soltamos las teclas y a continuacion i). Esto nos va a mostrar una informacion como esta:
Please wait while gathering statistics...
Done. Suggested idling PC:
   0x602649b4 (count=75)
       0x60264a2c (count=40)
       0x60bedba0 (count=51)
Restart the emulator with "--idle-pc=0x602649b4" (for example)
Matamos el proceso dynamips y empezamos a probar con esos valores hasta encontrar el valor que haga que el consumo de cpu disminuya.
dynamips -P 3725 --idle-pc=0x602649b4  c3725_descomprimido.bin
Puede haber mas de un valor optimo, en mi caso obtuve estos resultados de uso de cpu:
  • 0x602649b4 (count=75)  --> 25%
  • 0x60264a2c (count=40) --> 90%
  • 0x60bedba0 (count=51) --> 26%
Luego de encontrado el valor optimo, abrimos el GNS3 y establecemos los valores.

24 oct 2008

Escribiendo Latex en Linux, preparando el entorno

Instalaremos los paquetes basicos:
aptitude install texlive
Si deseamos la instalacion completa, debemos instalar el paquete texlive-full. Si usas este paquete, se instalara el soporte para todos los idiomas disponibles, asi como las fuentes necesarias. Muy dificilmente necesitaras todo eso pero si quieres instalarlo lo haces con este comando:
aptitude install texlive-full
Con eso es suficiente. Podemos crear archivos latex usando el editor que nos guste.

Escribamos un documento latex bastante simple (holamundo.tex) y convirtamos nuestro documento latex a varios formatos:

\documentclass[12pt]{article}
\usepackage[spanish] {babel}
\title{\LaTeX}
\date{}
\begin{document}
  \maketitle Hola Mundo !!!!
  \begin{equation}
    x+y = z
  \end{equation}
\end{document}

Dependiendo el formato al que vayamos a convertirlo usaremos un comando distinto:
  • La forma clásica:
    • latex holamundo.tex -->Crea el archivo dvi, asi como un .aux y .log
    • xdvi holamundo.dvi -->Visualisamos nuestro documento latex
    • dvipdf holamundo.dvi -->convierte el archivo dvi a pdf
    • xpdf holamundo.pdf -->visualizamos el pdf
  • Una forma mas rapida:
    • pdflatex holamundo.tex --> crea directamente el archivo pdf
  • Tambien podemos convertirlo a HTML
    • pdfhtml holamundo.tex --> crea una carpeta holamundo y en el interior crea el documento
Disponemos de varias opciones para crear nuestros archivos .tex, desde usar vim o emacs con plugins, hasta entornos especializados como lyx, kile o texmacs. Personalmente prefiero lyx

  • Vim -->aptitude install vim-latexsuite
  • emacs -->aptitude install auctex
  • Kile -->aptitude install kile kdvi
  • lyx -->aptitude install lyx
  • Texmaker -->aptitude install texmaker

23 oct 2008

Instalando Packet Tracer 5 en Linux

La ultima versión de Packet Tracer trae una versión para linux, por lo que ya no es necesario instalar la versión de windows usando wine. Esta versión viene con un instalador especifico para ubuntu y fedora, así como el genérico que es el que vamos a usar.
Lo descargamos y descomprimimos:
#tar zxvf PacketTracer5_generic.tar.gz
#cd PacketTracer5
#./installer
Presionamos Enter para leer la licencia y Bajamos hasta el final para aceptarla escribiendo Y
Luego debemos especificar la ubicación en donde se instalara, presionamos enter para dejarlo en la ubicación predeterminada:

Enter location to install Packet Tracer 5 or press enter for default [/opt/pt]:

Nos pregunta si queremos que cree enlaces simbolicos a /usr/local/bin, escribirmos Y

Should we create a symbolic link "packettracer" in /usr/local/bin for easy Packet Tracer 5 startup? [Yn]Y

y listo !!!, ya tenemos packet tracer en Linux. Ahora solo debemos abrir un terminal ( xterm, kconsole, gnome-terminal, ... cualquiera), escribir el comando packettracer y ya lo tendremos el software ejecutándose en nuestra PC.

Nota: En caso de tener un sistema de 64 bits hay que instalar las librerías de compatibilidad de 32 bits.


Configurando emacs para autocompletado, resaltado de sintaxis y otras cosas

Actualmente estoy en la tarea de usar emacs, para programar.
Falta mejorar varias cosas, pero por el momento mi archivo de configuracion .emacs esta quedando asi:



(custom-set-variables
;; custom-set-variables was added by Custom.
;; If you edit it by hand, you could mess it up, so be careful.
;; Your init file should contain only one such instance.
;; If there is more than one, they won't work right.
'(column-number-mode t)
'(current-language-environment "UTF-8")
'(display-time-mode t)
'(ecb-options-version "2.32")
'(global-font-lock-mode t nil (font-lock))
'(global-semantic-stickyfunc-mode nil nil (semantic-util-modes))
'(safe-local-variable-values (quote ((indent-tabs-mode . 1))))
'(semantic-idle-scheduler-idle-time 3)
'(tab-width 4))
(custom-set-faces
;; custom-set-faces was added by Custom.
;; If you edit it by hand, you could mess it up, so be careful.
;; Your init file should contain only one such instance.
;; If there is more than one, they won't work right.
)

(require 'cc-mode)
(setq c-default-style "bsd"
c-basic-offset 4)
(setq backup-directory-alist (quote ((".*" . "~/.emacs.d/backups"))))
;; turn on paren matching
(show-paren-mode t)
(setq show-paren-style 'mixed)

;; Use "y or n" answers instead of full words "yes or no"
(fset 'yes-or-no-p 'y-or-n-p)
;; Display the time in the mode line
(setq display-time-24hr-format t)
(display-time)


(setq truncate-partial-width-windows nil)
(setq after-save-hook (quote (executable-make-buffer-file-executable-if-script-p)))
;; para asegurarte de que el fichero termina con línea vacía
(setq require-final-newline 'ask)
;;
;; eliminar espacios en blanco a final de línea y líneas vacias al final
(add-hook 'write-file-hooks 'delete-trailing-whitespace)
(setq delete-trailing-whitespace-p t)


;;Auto-añadir paréntesis o llave de cierre
(setq skeleton-pair t)
(global-set-key "[" 'skeleton-pair-insert-maybe)
(global-set-key "(" 'skeleton-pair-insert-maybe)
(global-set-key "{" 'skeleton-pair-insert-maybe)
(global-set-key "'" 'skeleton-pair-insert-maybe)
(global-set-key "\"" 'skeleton-pair-insert-maybe)

(require 'semantic nil t)
(global-semantic-idle-scheduler-mode 1)
(global-semantic-idle-completions-mode 1)
(global-semantic-idle-summary-mode 1)
(require 'semantic-sb nil t)
(require 'semanticdb nil t)

(define-key c-mode-base-map (kbd "RET") 'newline-and-indent)

;; Load CEDET
;; (load-file "~/cedet-VERSION/common/cedet.el")
;;
;; Enabling various SEMANTIC minor modes. See semantic/INSTALL for more ideas.
;; Select one of the following:

;; * This enables the database and idle reparse engines
(semantic-load-enable-minimum-features)

;; * This enables some tools useful for coding, such as summary mode
;; imenu support, and the semantic navigator
(semantic-load-enable-code-helpers)

;; * This enables even more coding tools such as the nascent intellisense mode
;; decoration mode, and stickyfunc mode (plus regular code helpers)
(semantic-load-enable-guady-code-helpers)

;; * This turns on which-func support (Plus all other code helpers)
(semantic-load-enable-excessive-code-helpers)

;; This turns on modes that aid in grammar writing and semantic tool
;; development. It does not enable any other features such as code
;; helpers above.
(semantic-load-enable-semantic-debugging-helpers)
(which-func-mode t)


(require 'semantic-ia nil t)
(global-set-key [(control return)] 'semantic-ia-complete-symbol-menu)
(global-set-key [(control shift return)] 'semantic-ia-complete-symbol)

(setq semanticdb-default-save-directory "~/.emacs.d/semantic")

(setq semantic-load-turn-everything-on t)
(require 'semantic-load)
(global-semantic-show-unmatched-syntax-mode -1)

(require 'ctypes)
(turn-on-font-lock)
(ctypes-auto-parse-mode 1)


(require 'ecb)
(require 'ecb-autoloads)
(setq ecb-primary-secondary-mouse-buttons (quote mouse-1--mouse-2))
;; Desactivamos el Tip of the Day de ECB...
(setq ecb-tip-of-the-day nil)
(ecb-activate)

(global-set-key [f12] 'ecb-toggle-ecb-windows)
(global-set-key [C-f12] 'ecb-activate)
(global-set-key [M-f12] 'ecb-deactivate)

(setq tex-dvi-view-command "xdvi")
;;(transient-mark-mode 1)
;;(add-hook 'text-mode-hook 'turn-on-auto-fill)




(setq-default TeX-master nil)
(setq TeX-parse-self t)
(setq TeX-auto-save t)
(load "preview-latex.el" nil t t)


(defalias 'perl-mode 'cperl-mode)