26/2/09

Detalles del arranque de Windows XP

En el post anterior vimos como era el arranque de linux, ahora le toca el turno a winbugs!

La BIOS ROM:
Nada más pulsar el botón de encendido del PC se cargan las instrucciones contenidas en el POST (power-on self test o ‘autotest de encendido’) de la BIOS.
El POST hace unas comprobaciones básicas y toma la configuración del CMOS (complementary metal-oxide semiconductor o semiconductor complementario de óxido metálico). Son las instrucciones del CMOS las que determinan, entre otras cosas, el orden de los dispositivos de arranque.

Microsoft:
Durante este proceso se verifica cual es el primer dispositivo de arranque, y si este es un disco duro Básico, le pasará el control al MBR (master boot record o registro maestro de arranque).
El MBR está contenido en el primer sector físico del disco duro y es como una especie de índice que contiene toda nuestra tabla de particiones.
Este índice es creado cuando particionamos el disco duro y contiene un pequeño código ejecutable que damos en llamar Master Boot Code. El MBR es el encargado de llevar a cabo las siguientes operaciones.
  1. Busca en la tabla de particiones cual es la primera partición activa para transferirle el control
  2. Revisa cual es el sector de inicio de la partición que esté configurada como activa
  3. Carga un copia del sector de inicio desde la partición activa en memoria y finalmente transfiere el control al código ejecutable del sector de inicio
Si durante este proceso no se pueden completar alguna de estas operaciones, nuestra máquina presentará alguno de estos mensajes:
  • Invalid partition table.
  • Error loading operating system.
  • Missing operating system.
El sector Maestro de Arranque y el sector de inicio:
Una vez terminado el trabajo del MBR este, como hemos visto, transfiere al control al Sector de Arranque o Boot Sector, de nuestra partición activa en sistemas Windows, la primera partición activa es básica puesto que suele contener los archivos básicos de arranque de Windows y suele coincidir con la letra “C”.
En terminología informática esta partición también es llamada volumen de sistema, que puede coincidir con el volumen de inicio, si la primera partición activa, es decir nuestro volumen de sistema, también alberga al sistema operativo, aunque es cada vez más habitual que el volumen de sistema y de inicio no coincidan.
En cualquier caso, nuestro sector de arranque asume las siguientes operaciones:
  • Las instrucciones de inicialización para CPU basada en x86 (esta es la familia de procesadores Intel en la que funciona habitalmente Windows XP)
  • La identificación original del fabricante de nuestro PC, en el caso de que nuestro sistema sea OEM.
  • La BIOS Parameter Block, BPB
  • la BIOS Parameter Block, Extendida.
  • El código ejecutable que inicia nuestro sistema operativo.
Así pues, el siguiente paso, una vez leídas las instrucciones de inicialización para CPU basadas en x86, sería cargar la BPB.
La BPB contiene la estructura básica del volumen y las controladoras de disco utilizan este sector para leer y configurar los parámetros básicos de los volúmenes contenidos en nuestro disco.
También es un proceso básico puesto que es el encargado de transferirle el control al código ejecutable, que es en sí, el que va a iniciar nuestro sistema operativo.
Unos parámetros incorrectos en la BPB impedirán por tanto la carga del Sistema Operativo y explican porqué no podemos iniciar cualquier Windows si lo cambiamos de máquina, ya que la BPB se basa en parámetros físicos más que en parámetros lógicos.

El archivo NTLDR:
Ahora empiezan a intervenir los archivos propios del sistema operativo.
En todos los sistemas con núcleo NT (por ejemplo Windows XP o Windows 2000) el cargador se llama ntldr (de “nt loader”), y se encuentra en la partición activa o volumen de sistema (habitualmente C).
El archivo ntldr es el encargado de leer el sistema de archivos tanto de una partición NTFS como de una FAT.
Lo primero que hace el ntldr es cargar un serie de controladores básicos de dispositivos que van embebidos en este archivo, justo a continuación lee la información contenida en el archivo boot.ini que se encuentra oculto en el directorio raíz de nuestro volumen de sistema es decir en C, y que referencia qué tipo de Sistema Operativo tiene que cargar.
Supongamos que tenemos un arranque dual de XP y Windows 98. Si en el menú de arranque elegimos en este momento Windows 98, el ntldr pasará el control al bootsect.dos (para que se inicie Windows 98).
Si elegimos XP o un Sistema Operativo basado en núcleo NT se le pasa el control al ntdetect.com que es el encargado de la detección del hardware instalado.
Nuestro archivo ntdetect.com¸ se encarga de cargar la información contenida en nuestro perfil de hardware y las tablas de la ACPI, y las envía para su inclusión a nuestro archivo de arranque ntldr, para ser agregadas en la clave del registro:
  • HKEY_LOCAL_MACHINE\HARDWARE
El Kernel (núcleo) utiliza datos internos que provee el propio ntldr para crear la clave mencionada, cuya información será renovada en cada arranque de nuestra máquina, en base al hardware que se detecte durante cada inicio de nuestra máquina.
De vuelta al ntldr, este pasará el control al archivo ntoskrnl.exe, es decir, el núcleo del sistema operativo (el nombre del archivo proviene de “nt operating system kernel”), y al archivo HAL (hardware abstraction layer o capa de abstracción del hardware), y leerá la información contenida el fichero “system” que tenemos ubicado en la carpeta \windows\system32\config.
Son el HAL y el kernel los encargados de poner en funcionamiento el software, mediante una serie de componentes llamada Windows executive. Estos componentes están almacenados en los “conjuntos de control” del registro (control sets).
Concretamente los podemos encontrar referenciados en la clave del registro:
  • HKEY_LOCAL_MACHINE\SYSTEM
Esta clave es utilizada para múltiples propósitos entre ellos determinar qué drivers deben ser cargados durante cada arranque de nuestro sistema, en base al hardware cargado.

Carga de Drivers y servicios
:
Ahora prestemos atención a los drivers y a los servicios. Están contenidos, respectivamente, en las siguientes carpetas a las que puede accederse directamente desde Inicio > Ejecutar y escribir los siguientes:
  • Drivers -> %systemroot%\System32\Drivers
  • Servicios -> %systemroot%\System
  • Puesto que los drivers también son servicios, en este momento el núcleo lee la información de la clave
  • HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services
Se arrancarán primero los servicios que tengan el valor Start puesto a ‘0’ (los drivers de arranque) y luego los que tengan dicho valor puesto a ‘1’.
Ahora llega el proceso en el que interviene el Administrador de sesión (Session Manager, smss.exe).
Éste crea variables de entorno, cambia a modo gráfico, y además de otras cosas, se encarga de arrancar el Administrador del logon (Logon Manager, winlogon.exe). El administrador de sesión lee tres claves:
  • HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Contro l\SessionManager
en la que, por ejemplo, podría haber una referencia al “autochk.exe” (una versión del chkdsk), por si se necesita cargarse,
  • HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Contro l\SessionManager\Subsystem
con los distintos subsistemas,
  • HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services
y acudiría a los servicios cuyo valor Start esté en “Auto-load”.
Si antes del logon quisiéramos que se nos cargarse alguna aplicación (no configurada como servicio, sino digamos que de forma “normal”) tendremos que colocarlas en alguna de estas dos claves del registro:
  • HKEY_LOCAL_MACHINE\Sofware\Microsoft\Windows\Curre ntVersion\RunServicesOnce
  • HKEY_LOCAL_MACHINE\Sofware\Microsoft\Windows\Curre ntVersion\RunServices
Estas dos claves se cargan de forma asíncrona. Por tanto, su contenido puede cargarse al mismo tiempo y no necesariamente en el orden especificado en las claves. Es más, aunque se cargan en el orden propuesto, se cargan también de forma asíncrona con el propio proceso de Inicio en sí, por lo que podría ser que continuasen cargándose después de introducir el nombre de usuario y contraseña.
Precisamente, como ya se ha indicado, la utilidad de estas dos claves es introducir aplicaciones en ellas para que se carguen antes del logon.

Iniciando Windows:
En este momento es winlogon.exe quien toma el control. Inicia el Administrador de control de servicios (Service control manager) el Local security authority (lsass.exe) y la Autentificación e Identificación Gráfica (Graphical Identification and Authentification, GINA) y pide al usuario (si así está configurado) un nombre y una contraseña.
De la autentificación de ese usuario y contraseña se encarga el protocolo Kerberos V5 o bien NTLM. (Como comentario totalmente aparte, comentar que Kerberos es el nombre inglés del perro de dos cabezas Cancerbero que era encargado de custodiar las puertas del infierno en la mitología).
NTLM proviene de NT Lan Manager, y se usa sobre todo en grupos de trabajo, Windows 95 y Windows 98.
Es en esta fase cuando ciertas claves del registro son adaptadas si el arranque ha tenido éxito, entre ellas las claves Control sets que anteriormente mencionaba, haciendo una nueva copia de la misma.
Las políticas de grupo locales que tengamos aplicadas también toman efecto en este punto y comienzan a cargarse ciertas claves que inicializan determinados programas y servicios no cargados con anterioridad.

Después de la autentificación:
Tras introducir el usuario y la contraseña, se cargan las claves:
  • HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunOnce\Setup
  • HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunOnce
Esta clave se carga de forma síncrona aunque su contenido no tiene por qué cargarse en el orden especificado. Esto también significa que si esta clave no se carga completamente no se cargan las siguientes.
Igualmente, esta clave no se carga hasta que no se han cargado las anteriores claves.
A continuación se carga la clave
  • HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunOnceEx.
A partir de aquí, y el orden de carga vuelve a ser asíncrono y, digámoslo así, todo se carga el mismo tiempo (más o menos) pudiéndose solapar unas cosas con otras. A continuación se carga lo siguiente:
  • Sección Load del Win.ini
y luego:
  • Sección Run del Win.ini
A continuación la clave:
  • HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run
que contiene los programas instalados en la máquina y la clave.
  • HKEY_CURRENT_USER\Software\Microsoft\Windows\Curre ntVersion\Run
que contiene los programas instalados específicamente en el usuario autentificado. También se carga la clave.
  • HKEY_CURRENT_USER\Software\Microsoft\Windows\Curre ntVersion\RunOnce
Hasta ahora digamos que lo que se ha cargado ha sido el núcleo de Windows y el contenido del registro. Ahora se acude a las carpetas del menú inicio:
  1. Documents and Settings\All Users\Menú Inicio\Programas\Inicio
  2. Documents and Settings\[usuario]\Menú Inicio\Programas\Inicio
A continuación se carga la clave:
  • HKEY_CURRENT_USER\Software\Microsoft\Windows\Curre ntVersion\RunOnce
y finalmente las tareas programas que se tengan.
Los elementos de los menú de inicio se cargan de forma alfanumérica. Por ejemplo, “a01.exe”, “a10.exe” y “b2p.exe” se cargan en ese orden. Si nos interesa alterar el orden de carga, tendríamos que renombrar los archivos.

Otras claves utilizadas durante la inicialización de Windows:
Todas las que hemos relatado en el apartado anterior suelen ser las utilizadas comúnmente para inicializar programas, antes o después de la fase de autentificación, pero quizás sea conveniente anotar alguna ubicación más en el registro que tiene el mismo propósito: iniciar nuestros programas.
Una de las ubicaciones más esotéricas y menos conocidas para iniciar programas es la clave Load, ubicada en la rama:
  • HKEY_CURRENT_USER\Software\Microsoft\WindowsNT\Cur rentVersion\Windows\load.
En esta clave y en esta rama, podríamos especificar programas que se iniciarían sólo en la sesión de usuario que esté actualmente logado (autenticado).
La clave análoga que afectaría a todos los usuarios de la máquina es denominada userinit, que podremos encontrar en la rama:
  • HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsNT\Cu rrentVersion\Winlogon\Userinit
Esta última clave, a diferencia de la clave Load, que anteriormente comentábamos, se encuentra presente en todos los sistemas y suele contener un único valor que apunta al ejecutable o proceso userinit.exe, que está encargado de inicializar los parámetros de inicialización de la Shell de Windows. Esta clave acepta valores separados por coma (CSV) por lo que es posible agregar más valores al ya comentado en esta clave.
Finalmente también podemos ejecutar diferentes procesos en la clave Explorer\Run
que podremos encontrar en las ramas,
  • HKEY_CURRENT_USER\Software\Microsoft\Windows\Curre ntVersion\Policies\Explorer\Run
  • HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Curr entVersion\Policies\Explorer\Run.
Detección de dispositivos Plug and Play:
La detección de este tipo de dispositivos que son detectados e instalados casi sin que el usuario interactúe para nada con el sistema, son cargados asincrónicamente durante la fase de autentificación. Esta fase de detección se basa fundamentalmente, en el firmware de cada dispositivo hardware conectado y en las características internas que el S.O. posee para la detección de nuevos tipos de dispositivos. Windows XP está optimizado para la detección de dispositivos que cumplan con la normativa ACPI.

22/2/09

Como es el inicio de Linux

Es una pregunta muy interesante, a si que veamos gráficamente que es lo que ocurre cuando iniciamos nuestro querido linux.


Resumen:

Cuando el sistema es encendido o reiniciado, el procesador ejecuta cierto código en lugares muy definidos. En una PC (Computadora Personal) este lugar es el sistema básico de entrada/salida llamado BIOS por sus siglas en inglés, que está almacenado en los circuitos de memoria flash en la tarjeta madre (motherboard). Como las PCs ofrecen mucha flexibilidad el BIOS debe determinar que dispositivos son candidatos para iniciar (boot).

La segunda fase del boot loader también inicia una aplicación de “splash” de tal forma que el usuario en vez de ver los mensajes de inicialización en modo de texto, ven una imágen gráfica, comúnmente con una pequeña barra que crece mientras se pone el equipo operable.

Finalmente se ejecuta XWindows y su ambiente gráfico y normalmente lo primero que muestran es una pantalla de acceso o Login. Una vez identificado el usuario se carga el espacio de dicho usuario y se ejecutan los programas que requiere la sesión de trabajo de dicho usuario.

En detalle:
  1. Al arrancar lo primero que hace el ordenador es ir a la BIOS que va a detectar los dispositivos y chequearlos, si todo sale correcto cargará en memoria el MBR, que es el dispositivo de arranque.

  2. En caso de ya tener linux instalado se iniciaría GRUB o LILO o SYSLINUX.

  3. GRUB lee la tabla de particiones del MBR, detecta en que particiones hay un sistema operativo y te muestra en un menú de arranque para elegir.
    Debemos recordar que el MBR como es un sector, solo puede almacenar 512 bytes por defecto (si es que ext2/3 no
    se ha modificado) que definen la estructura del MBR. El Master Boot Record es el sector de la primera pista del disco duro (sector
    0), y el resto de esa pista no se usará; Por lo que debemos tener en cuenta esto:
    * 0-445 bytes = Código del MBR que sirve para cargar en memoria el sector de la partición activa
    * 446-462 bytes = 16 bytes de la información de la 1ª partición
    * 463-479 bytes = 16 bytes de la información de la 2ª partición
    * 480-496 bytes = 16 bytes de la información de la 3ª partición
    * 497-512 bytes = 16 bytes de la información de la 4ª partición

    Con lo que estaremos limitados siempre a tener 4 particiones primarias, ó 3 más 1 extendida, que dentro de las extendidas pueden existir muchas.

  4. LILO es más antiguo, es casi idéntico a GRUB en su proceso, excepto que no contiene una interfaz de línea de comandos. Por lo tanto todos los cambios en su configuración deben ser escritos en el MBR, y reiniciar el sistema. Un error en la configuración puede arruinar el proceso de arranque a tal grado de que sea necesario usar otro dispositivo que contenga un programa que sea capaz de arreglar ese defecto.
    De forma adicional, LILO no entiende sistema de archivos, por lo tanto no hay archivos y todo se almacena en el MBR directamente.
    Cuando el usuario selecciona una opción del menú de carga de LILO, dependiendo de la respuesta, carga los 512 bytes del MBR para sistemas como Microsoft Windows, o la imagen del kernel para Linux.

  5. Si seleccionas linux:
    El GRUB detecta la partición /boot por defecto y carga en memoria:
    * El fichero del kernel de linux: –> kernel.img
    * Un fichero llamado INITIAL RAM DISK: intrd.img que contiene los drivers necesarios para que el kernel pueda empezar a funcionar.
  6. Una vez que el kernel se ha cargado en memoria y está listo, se lleva a cabo su ejecución. Esto se realiza llamando la función startup del kernel (en los procesadores x86, se encuentra en la función startup_32() del archivo /arch/i386/boot/head), esta función establece el manejo de memoria (tablas de paginación y paginación de memoria), detecta el tipo del CPU y funcionalidad adicional como capacidades de punto flotante. Después cambia a funcionalidades que no dependen del hardware por medio de la llamada a la función start_kernel().
    El proceso de arranque en Linux monta el disco RAM que fue cargado anteriormente como un sistema de archivos temporal. Esto permite que los módulos que contienen drivers puedan ser cargados sin depender de otros drivers de dispositivos físicos, y además mantiene el kernel más pequeño.
    Monta el árbol del directorio raíz / y lanza los procesos “padre” que se encargan de la supervisión/ejecución de todos los procesos de las aplicaciones usuario/sistema. INIT (el primer proceso en espacio de usuario) se encuentra en /sbin

  7. INIT consulta un fichero de configuración (nivel de ejecución del sistema) mirando su fichero de configuración: INITTAB (se encuentra en /etc) y sigue las intrucciones que hay en él.
    Para ello utiliza los RunLevel’s, y existen 6 posibles tipos que se identifican por un número:
    * 0 Apagado del sistema
    * 1 Monousuario sin entorno gráfico, sin entorno de red
    * 2 Multiusuario sin entorno gráfico, sin entorno de red
    * 3 Multiusuario sin entorno gráfico pero con entorno de red
    * 4 No se usa por razones históricas
    * 5 Por defecto, Multiusuario, con entorno gráfico, con red
    * 6 Reinicio del sistema

    Por ejemplo, si nosotros introducimos en consola “init 0” el sistema se apagaría.
    Bueno, ahora INIT hace básicamente dos cosas:
    1. Ejecuta scripts de configuración global del sistema rc.sysinit (se encuentra en /etc/rc.d):
    * Crea las variables de entorno del sistema
    * Activa la partición swap
    * Inicializa el reloj
    * Controla/chequea el sistema de ficheros ext2/3
    * …
    2. En función del número de RunLevel se va al directorio /etc/rc.d/rcn.d (para el runlevel 5 iría a /etc/rc.d/rc5.d) y ejecuta todos los scripts que hay dentro:
    kn nombre_proceso –> kill = parar o matar
    sn nombre_proceso –> start = empezar
    A los procesos llamados desde INIT (/etc/rc.d/rcn.d) con los scripts sn nombre_proceso se los llama demonios (procesos que están continuamente ejecutándose en segundo plano)
  8. INIT crea consolas virtuales, en estos momentos existen 7, 6 más la gráfica: Si el runlevel es el 5, para que te muestre un entorno gráfico lanza primero un servidor gráfico el cual se conecta de forma local a tu mismo equipo para crear el escritorio

  9. Te ofrece la pantalla de logueo y cuando accedes carga tu perfil desde /etc/rc.d/rc.local
Con eso estamos!

Basado en:

21/2/09

Kdm no muestra los temas

Bueno, sigo en encontrando algunos "bugs", por así llamarlo, esta ves le toco a KDM. El problema es que lo instale, instale los temas y todo bonito hasta que escogí mi tema favorito y al reiniciar kdm seguía ahí el tema por defecto que trae en debian...
La solución:
  • # vim /etc/kde3/kdm/kdmrc
  • Buscar una cadena que diga: Theme=/usr/share/apps/kdm/themes/nombre_del_tema (si no esta agregarla!)
  • Agregar si no existe o modificar la linea para que quede asi: UseTheme=true
  • Reiniciar kdm
Hecho, a disfrutar se a dicho!

19/2/09

Instalar plugin Flash

Bueno luego de instalar la nueva y flamante Debian lenny aparecieron algunos "errores" como ser que el plugin de flash andaba en root pero no para los otros usuarios, la solucion fue bastante simple:
  • Copiar el archivo libflashpayer.so a ~/.mozilla/plugins
Tambien lei otras formas de solucionarlo pero esta me parecio la mas sencilla

15/2/09

Como reiniciar linux de manera segura

Si alguna vez Linux se cuelga o tilda (si, pasa en las mejores familias =P ) de manera que aparenta no responder ni siquiera al teclado, entonces no trates de apagar la energía eléctrica de la PC, ya que el kernel de Linux está diseñado para esos raros casos y dispone de una salida de emergencia que muy pocos conocen.

Lo primero que uno prueba es Ctr-Alt-Backspace, o sino las combinaciones que utilizan las teclas de Función, pero si nada de esto sucede, lo que uno tiene que hacer es un shutdown de emergencia del kernel.

Los viejos Kernel de linux venían como opcional el "Magic SysRq Key" en el menuconfig y esta opcion estaba en el menú Kernel Hacking y no venía por defecto! Asi que los que tienen distros actulizadas aprovechen este hack...

Para hacer esto primero presiona la tecla "Alt" y "Print Screen/SysRq", y mientras continúas presionando esas dos teclas presiona las siguientes 6 teclas en órden: R E I S U B.

Observen que mientras hacen todo esto no vas ni a oír ni ver que nada suceda, solo notarán algo cuando termines toda la secuencia, en cuyo momento el Kernel matará todos los procesos, cerrará todos los puertos, librerías, archivos, etc, haciendo de este modo de apagado algo mucho mas seguro que simplemente apagando el sistema con el interruptor de energía.

Lo que hace cada sigla es:
  • R - pone el teclado en modo RAW (debe volver el control del teclado).
  • E - termina (term) todos los procesos (menos init).
  • I - mata (kill) todos los procesos (menos init).
  • S - sincroniza el disco duro.
  • U - desmonta todos los sistemas de ficheros.
  • B - reinicia el ordenador.
Tengan en cuenta que no siempre hace falta hacer todo eso. A veces es suficiente con hacer Alt + SysRq + R, luego pasar a una terminal (Ctrl + Alt + F1) y desde ahi matar el proceso desbocado, reiniciar X o lo que sea...

Actualizacion: lei en otros post que tambien existe otro magic key "menos agresivo" la combinacion seria: ctrl + alt + PrintScreen + k

14/2/09

Introducción a los repositorios de Debian

Bueno, aprovecho sobre la hora, antes de que lenny sea estable =D, para que veamos un resumen del articulo publicado en http://www.esdebian.org, espero sea de utilidad para todos....

Introducción:
El repositorio es a todos los efectos un archivo ordenado donde son almacenados los paquetes
Debian (sean estos paquetes binarios o fuentes) en modo bien organizado, con una estructura
bien definida y constantemente actualizados.
Los paquetes contenidos en un repositorio son indexados en estos archivos:
Packages.gz (son paquetes que contienen los binarios).
Sources.gz (son aquellos que contienen los fuente).
En cada sistema Debian, los repositorios utilizados vienen indicados en el archivo:
/etc/apt/sources.list
Estructura de los repositorios:
Un repositorio se puede dividir a grandes rasgos en dos secciones, por ejemplo, si navegáramos con nuestro navegador preferido a por: http://ftp.de.debian.org/debian/, encontraríamos un directorio con los siguientes subdirectorios:
dist en esta rama están contenidos los archivos de control, que permiten el funcionamiento del sistema de empaquetamiento. Lógicamente están presentes los archivos que describen los paquetes presentes en el archivo (divididos por la release o rama a la que pertenecen).

doc recoge la documentación de base para Debian (señalaciones de bugs, Faq, el contrato social y demás)

indices contiene los índices de los archivos contenidos en todos los paquetes. Esta información es usada por apt-file, apt-file es un potente motor de búsqueda en grado de indicarnos a que paquete pertenece un determinado archivo, para saber mas man apt-file.

non-US OBSOLETOS - a causa de problemas legales debidos a la prohibición de exportación de material para la defensa (entre ellos material criptográfico, utilizados en PGP, SSH etc). Para solucionar este problema,los paquetes han sido puestos en una sección diferente, cuya distribución esta ligada a servers no estadounidenses.

pool este es el verdadero archivo, donde son contenidos los paquetes, ordenados por la letra inicial.

project contiene material para los desarrolladores.

tools contiene instrumentos Dos para la creación de discos de boot, particionamiento y arranque de Linux
Subdivision del repositorio:
Navegando un poco (sin marearse !!!) entre los directorios Debian, notamos una particular subdivisión, los repositorios, por cierto, están divididos en :
main es la sección principal, que contiene el 90% de los paquetes presentes en nuestra Debian.

contrib encontramos los paquetes que cumplen con 5 o 6 puntos de las DFSG(Debian Free Software Guidelines), pero que dependen de paquetes que no la respetan (DFSG = lineamientos o requisitos que una licencia debe cumplir para que sea definida como libre segun el proyecto Debian http://www.debian.org/social_contract#guidelines).

non-free contiene los paquetes que poseen limitaciones en su distribución (como por ejemplo aquellos que no pueden ser usados en ámbito comercial o porque dependen de paquetes que no respetan las DFSG).

volatile el repositorio Debian Volatile contiene paquetes de programas que requieren una frecuente actualización, por ejemplo las firmas de antivirus o de sistemas antispam.
Sources.list:
Este archivo es uno de los mas importantes en lo que refiere al sistema de configuración, este archivo contiene la lista y las direcciones de los repositorios al cual accede apt y/o aptitude.

Orden de ingreso:
Es importante ingresar los repositorios en un orden justo, los primeros en la lista, son los mas importantes (o favoritos). Para mejorar el rendimiento, es aconsejable ordenarlos por velocidad (primero el CDROM, después la red local, internet etc).

Sintaxis:
Cada linea que describe un repositorio tiene una determinada sintaxis:
deb uri distribution [component...]
Analizamos los componentes por separado, así lo entendemos mejor:
deb o deb-src sirve para indicar si el repositorio indicado contiene paquetes binarios o paquetes fuente (si tiene ambos es necesario especificarlo en dos lineas diferentes).

uri indica la dirección donde es posible encontrar el repositorio, y además podemos elegir entre los siguientes métodos de acceso a los paquetes:
file permite acceder a un repositorio presente en el HD de la PC ejemplo:
  • deb file:/home/gaucho/repos ./
Que no es ni mas ni menos que uno situado en la /home del usuario gaucho creado con dpkg-scanpackages (investiguen esto,es muy bueno!)

cdrom permite acceder a un repositorio presente en un cdrom.

http permite acceder a traves del protocolo http (si es especificada una variable de ambiente, http_proxy con el formato ,seran usadas estas opciones para acceder al repositorio, en caso de necesitar identificación, sera posible indicar la dirección del proxy, en la variable de ambiente de la siguiente forma: http://user:pass@server:port )

ftp permite acceder a un repositorio a traves del protocolo ftp, también es posible especificar un proxy,de la misma forma que en http sustituyendo http_proxy por ftp_proxy.

copy es identico a file, pero los archivos serán guardados en la cache de apt y/o aptitude, útil para soportes como memorias-flash, floppy, etc.

rsh,ssh permite acceder a un repositorio tramite el protocolo ssh , la identificacion sera tramite el intercambio de llaves RSA.
distribution indica la distribución (o rama) utilizada... es posible usar el nombre en código (sarge, etch,lenny) o el nombre genérico (stable, testing, unstable)

component indica las secciones del repositorio, non-free , main , contrib....

Nota: Ya que todos los repositorios los apuntas a la rama (no a su nombre de pila), sarge quedaría como:
deb http://ftp.br.debian.org/debian/ oldstable main contrib non-free
Cuando un repositorio apunta a una de las ramas (oldstable, stable, testing), apuntan a las versiones de turno, que en este momento son:
  • Oldstable --> sarge
  • stable --> etch
  • testing --> lenny
Cada vez que se libera una nueva versión de Debian, se actualizan los enlaces para que apunten a los nuevos nombres-clave, por ejemplo, cuando se libere lenny, oldstable apuntará a etch, stable será lenny y testing será el nombre de toy-story que siga.
En caso de tener los repositorios apuntando a stable, cada vez que se libere una versión de Debian se podrá inmediatamente actualizar los paquetes a la nueva versión, sin hacer cambios en el sources.list, ídem en el caso de apuntar a oldstable o testing.

Bueno, es todo... buen finde!

13/2/09

Mapa interactivo del kernel de Linux

Alguna vez te llegaste a preguntar como estaba diseñado el Kernel de Linux, pues eso no era ningún problema pues por ser de Open Source, la información también lo es.

Es este diagrama se puede apreciar toda la arquitectura del kernel y como está ligado con todos sus componentes tanto de software como de hardware. El mapa es interactivo y lo puedes modificar dependiendo de lo que quieras que te muestre pero nunca dejará de enlazar lo que funciona al mismo tiempo con cada parte del núcleo.

La información es muy clara y está perfectamente explicada cada cosa que está ligada con otra y divide en capas y en niveles como el sistema, red, almacenaje, memoria, procesamiento e interfaz con el usuario.

Enlace: http://www.linuxdriver.co.il


Correspondencia de arquitecturas i86 del nucleo de linux

Encontre en el/la web un articulo corto pero me parecio muy bueno y es una duda que los que se inician en el mundo linux, al principio, no entienden bien de que se trata esta serie de numeros...

Esta es la relación recomendada para que la compilación del nucleo resulte en un binario optimizado para cada maquina.
  • 386: 386DX, DXL, SL, SLC, SX fabricados por AMD, Cyrix o Intel; 486DLC o DLC2 de Cyrix o TI, UMC 486SX-S y NexGen Nx586.
  • 486: para los 486DX, DX2, DX4, SL, SLC, SLC2, SLC3, SX y SX2, de AMD, Cyrix, IBM e Intel, y los U5D y U5S de UMC.
  • 586: para CPUs Pentium genericas, como las que carecen del registro TSC.
  • Pentium-Classic: para los Intel Pentium.
  • Pentium-MMX: para los Intel Pentium con MMX.
  • i686, es la que hace referencia a los pentiumII en adelante, es decir:
  • Pentium-Pro: Intel Pentium Pro, Celeron y Pentium II.
  • Pentium-III: Intel Pentium III y Celeron basados en el nucleo Coppermine.
  • Pentium-4: para los Intel Pentium 4.
  • K6: para los AMD K6, K6-II y K6-III (tambien conocidos como K6-3D).
  • Athlon: para los AMD K7 (Athlon, Duron y Thunderbird).
  • Elan: para la familia AMD Elan (Elan SC400 y SC410).
  • Crusoe: para los Transmeta Crusoe.
  • Winchip-C6: para los IDT Winchip originales.
  • Winchip-2: para IDT Winchip 2.
  • Winchip-2A: para IDT Winchip con 3dNow!.
  • CyrixIII: VIA Cyrix III o VIA C3.
  • VIA C3-2: VIA C3-2 "Nehemiah" (modelo 9 y superiores).

Por descontado, ni os molesteis en compilar para una arquitectura superior a vuestra maquina, o de una rama muy diferente. A la inversa si es posible, ¡pero no tiene mucho sentido!


Extraido de http://www.saiyine.com/

11/2/09

Montar imagenes de distinto tipo en Linux

Bueno, sigo con los post pedorros por falta de tiempo para escribir, es que estoy trabajando en un proyecto con un amigo y ademas se acercan las mesas de examen en la facu...

  • Imágenes .ISO
Es la mas simple ya que es un formato abierto, solo debemos hacer:
mount -t iso9660 -o loop archivo.iso /directorio/de/montaje
  • Imágenes BIN CUE
Para poder montar estos archivos necesitas convertirlos antes a imagen ISO, esto lo puedes
hacer con el programa bchunk.
Recuerden que en debian y derivados es tan simple instalarlo como un: #apt-get install bchunk
Ojo! no recuerdo si agregue un repositorio para esto, si no les funciona comenten! Luego para convertirlo:
bchunk archivo.bin archivo.cue nuevonombre.iso
  • Imágenes NRG
mount -t iso9660 -o loop,offset=307200 imagen.nrg /directorio/de/montaje
Si tienes algún problema con ese método o deseas convertir la imagen NRG a ISO deberías usar el programa nrg2iso (que tambien esta en los repositorios) de la siguiente forma:
$nrg2iso archivo.nrg nuevoarchivo.iso
  • Imágenes MDF y MDS
De nuevo utilizaremos un programa para convertir antes la imagen mdf a iso. El programa tiene el original nombre de mdf2iso y lo usamos de la siguiente manera:
mdf2iso archivo.mdf nuevaimagen.iso
Lei por ahi, no recuerdo donde y no lo probe que para este formato basta con un:
mount imagen.mdf /path-montaje -o loop=/dev/loop0
  • Imágenes IMG
Ja! Adivinen... ahora usaremos el programa CCD2ISO
ccd2iso imagen.img imagen.iso
  • Imágenes DAA
Los creadores del programa sacaron una versión gratuita de su programa para Linux que ademas nos sirve para convertir otros formatos. wget http://poweriso.com/poweriso.tar.gz
Descomprimimos: tar -zxvf poweriso.tar.gz y convertimos a ISO:
./poweriso convert imagen.daa -o nuevaimagen.iso

Espero les sea útil el post bye!

8/2/09

Porque no me abre el disco local c cuando le doy doble click?

Es una lastima que el blog se ensucie de esta clase de post, pero me pidieron que lo postee por si se repite el problema Nuevamente me toco reparar una maquina con M$ Windows y el problema era el del titulo y no solo en el disco C sino también en las otras particiones y en un pendrive... Les comento como logre acceder a la unidad, de la eliminación del virus hay bastantes artículos en internet, asi que, queda como ejercicio para el lector =p
  1. Ve a ejecutar y escribe cmd luego enter
  2. En la nueva ventana escribe cd\ y luego enter
  3. En tu linea solo debe aparecer c:\ una vez allí escribe 'ATTRIB -S -H *.*' (sin las comillas) y luego enter
  4. Escribe dir y luego enter
  5. Veras una lista de los archivos y directorios en c:\
  6. Ahora ve a mi pc le das al boton carpetas y dale click a tu discoduro local c:\ en el arbol de la izquierda así podrás ver el contenido
  7. Veras varios archivos que antes no estaban por estar ocultos, deben borrar todos los que digan 'autorun' no importa su extensión,IMPORTANTE solo borra los que digan AUTORUN los demás no
Esto te permite el acceso nuevamente a tu unidad c: debes repetir estos pasos en cada unidad que tengas, incluido memorias extraibles o pendrives.
Bueno luego de este post pedorro, me despido hasta la proxima... si Dios quiere!

5/2/09

Debian a la gentoo

Si conocen a alguien que use Gentoo puede que tengan que aguantar frases del tipo "todos mis programas están compilados y optimizados a mi sistema", etc. Bueno, en Debian podemos tener eso también, o incluso mejor: tener paquetes deb optimizados a nuestra arquitectura. Y lo mejor: sólo para los paquetes que nosotros queramos!

Preparando el sistema:
Necesitamos dos cosas, primero tener alguna fuente de paquetes source en nuestras fuentes de apt:
deb-src http://ftp.es.debian.org/debian/ stable main contrib non-free
Ahora tendremos que instalar apt-build:
# aptitude install apt-build
En la propia instalación de apt-build nos pedirá el nivel de optimización de la compilación, el directorio que actuará de repositorio local donde se irán guardando nuestros paquetes y además añadirá una nueva fuente local a nuestro sources.list desde la que se podrán instalar los paquetes que compilemos.
Veran que ahora, al usar apt-get obtendremos un mensaje de error, esto se debe a que nuestra nueva fuente de paquetes no es válida hasta que no compilemos alguno.

Compilación de paquetes:
Para compilar e instalar un paquete usaremos:
# apt-build install paquete
Por ejemplo:
# apt-build install zeroc-ice
Si sólo queremos crear el paquete (sin instalarlo) y que éste se instale en nuestro repositorio de paquetes local:
# apt-build build-source
Posteriormente podremos instalarlo de forma normal con apt-get, aptitude o dpkg.
Si necesitamos actualizar todos los sources y recompilarlos, basta con ejecutar:
# apt-build update-source
En cuanto a limpieza del repositorio:
# apt-build clean-sources
Es como hacer un make clean en los directorios de los sources, es decir, borra archivos objeto.
# apt-build clean-repository
Esto borra paquetes descargados y archivos temporales creados durante la compilación.
Por útlimo, si alguien se aburre puede probar:
# apt-build world
Y con esto ya podremos tener nuestros programitas un poco más optimizados para nuestro sistema, y lo que es más importante, tendremos como defendernos de nuestros amigos de gentoo....

3/2/09

Esquemas de colores en vim

Seguimos con el tema de personalizacion y ahora le toco el turno al editor vim! En Vim Color Scheme Test podemos comparar los distintos esquemas de colores para vim disponibles en vim.org (algunos sólo funcionan correctamente con gvim).

Cómo se instalan? Basta con copiar a la carpeta ~/.vim/colors (si no existe aún, crearla). Para seleccionar el esquema a utilizar, en el .vimrc añadiremos una línea colorscheme nombreEsquema (cuidado con esto, el nombre del esquema es el nombre del archivo SIN la extensión). Otra forma si no queremos que el cambio sea para "siempre" es ingresar a vim y poner :
:colorscheme nombsquema
Notar que no lleva la extension .vim (podemos autocompletar esto usando la tecla tab). Por supuesto, debe estar activado el coloreo de sintaxis:

La opción del coloreado para la sintáxis se habilita en el archivo de configuración del vim. Intentá lo siguiente:
  • Con tu editor favorito editás como root el archivo /etc/vim/vimrc o quizás /etc/vimrc, depende de la distro.
  • Buscás unas lineas parecidas a las siguientes:
" Vim5 and later versions support syntax highlighting. Uncommenting the next
" line enables syntax highlighting by default.
" syntax on
" If using a dark background within the editing area and syntax highlighting
  • Descomentás la parte de "syntax on", quitando la comilla.
Listo! y como no podia faltar, la despedida geek :wq!

2/2/09

Coloreando el log de LINUX

Bueno, vamos a seguir coloreando la consola, esta vez es el turno del log (para hacer honor al blog =P) de linux. Por que? simplemente porque es mas legible y queda bonito!

Para eso tenemos que instalar la herramienta ccze:
apt-get install ccze
Para ver logs en colores hacemos:
# ccze < /var/log/dmesg
Pueden tambien hacer una combinacion para paginar, de la siguiente manera:
# ccze < /var/log/dmesg | more
Si quieren cambiar los colores por defecto pueden editar el archivo /etc/cczerc...

Nos vemos =-.P


1/2/09

Montar directorios remotos via ssh en Linux

La habilidad de expotar sistemas de ficheros (FS) es extremadamente útil, es por eso que programas como NFS o Samba son tan populares. Desafortunadamente, ambos están típicamente limitados a la red local que limita su uso. Un FS ideal permitiría conexiones encriptadas a un sitio remoto, sin complicadas conexiones VPN.
Eso es exactamente lo que hace shfs, o SHell File System. Permite montar directorios remotos via ssh usando un módulo del kernel (como smbfs) y una herramienta "user-space", como mount.

Para empezar, puedes descargarte shfs de:
http://shfs.sourceforge.net/
Antes de empezar, asegúrense que tienen las fuentes del kernel instaladas y, por supuesto,
el compilador de C, que tiene que ser exactamente la misma versión que compiló el kernel:
$ mv shfs-0.35.tar.gz /usr/local/src
$ cd /usr/local/src
$ tar xvzf shfs-0.35.tar.gz
$ cd shfs-0.35
$ make
$ sudo make install
Recuerden remplazar 0.35 por la versión que descargaron de la pagina....

El ejemplo de arriba compilará el módulo del kernel para tu kernel (shfs soporta tanto el kernel 2.4 como el 2.6) y también compilará la utilidad shfsmount.
Si estás usando gcc4, necesitarás descargar y aplicar este parche para que shfs compile correctamente:
http://atrey.karlin.mff.cuni.cz/~qiq/src/shfs/shfs-0.35/gcc4-compilefix.patch.
Una vez tengas instalado shfs , carga el módulo del kernel y monta tu primer sistema de ficheros remoto:
# modprobe shfs
# shfsmount user@remote /mnt/user
Esto montará el direcorio home de user@remote en el directorio /mnt/user.
También puedes usar el propio comando mount:
# mount -t shfs user@remote:/data /data
Así pues, podrías automontar ciertos directorios en el arranque añadiendo entradas en el /etc/fstab. Por supuesto, querrás usar las claves ssh ya que en cada arranque se te preguntará por un password. Como puedes ver, shfs es extremadamente fácil de usar y es muy versátil. Te permite montar un disco remoto de la oficina en tu escritorio de casa, reconociéndolo como local, pero sin el agobio de hacer nada aparte de habilitar el ssh en la máquina remota.

Para los usuarios que disponen de apt-get o aptitude, la cosa es mas fácil!!!
$ sudo aptitude install sshfs
SHFS necesita el módulo “fuse” para poder funcionar, por lo que tendréis que ejecutarlo siempre. Para que no lo tengáis que hacer a mano y lo cargue el sistema automáticamente, abran el fichero /etc/modules:
$ sudo gedit /etc/modules
Si está, no tienen que hacer nada más. Los que no lo tengan simplemente agregan “fuse” al final del fichero por ejemplo, guardan y cierran...

Los que metieron ahora tienen dos opciones para cargar fuse, reiniciar y que se cargue automáticamente mediante el archivo modules o cargarlo manualmente hasta que reinicien. Supongo que preferís la segunda opción:
$ sudo modprobe fuse
Hecho esto el último requerimiento que necesitamos es tener el servidor SSH funcionando.
En cuanto a configuración tan sólo tienen que agregar su cuenta al grupo que tiene acceso a fuse:
$ sudo usermod -G fuse -a tu_cuenta
Aconsejo que ahora reinicien el entorno gráfico (Ctrl+Alt+Backspace) para tener la certeza de que se aplique la adicción al grupo, en caso contrario es muy probable que de un error de permisos...

En el fondo ya está todo listo para montar la carpeta remota en nuestra carpeta local. Vamos a probarlo.

Creen una carpeta donde quieran. Para que sirva de ejemplo voy a crear la carpeta “pepino” en “/home/ceec/”. Tan sólo tenen que cambiar “ceec” por su cuenta en los siguientes pasos
$ mkdir /home/ceec/pepino
La carpeta “pepino” va a ser el punto de montaje de la carpeta remota. Es decir, cuando acceda a “pepino” voy a acceder a la carpeta del otro ordenador. En principio para montarla
$ sshfs ceec@192.168.1.4:/home/ceec /home/ceec/pepino/
donde:
  • sshfs es el comando que va a realizar el montaje remoto
  • ceec es la cuenta a la que tenéis acceso en el equipo remoto.
  • 192.168.1.4 es la ip del PC remoto. Pueden usar una IP pública para acceder desde el trabajo a casa.
  • /home/ceec es la carpeta del ordenador remoto que quiero montar en…
  • /home/ceec/pepino/ que es la carpeta del equipo que tengo delante.
Supongo que ya lo entendieron... CUIDADO! SSH y por consiguiente SSHFS usan el puerto 22 por defecto. Si no mofificaron el puerto de escucha de ssh no les funcionara. Para forzar un puerto podemos hacer
$ sshfs -p 8448 ceec@192.168.1.4:/home/ceec /home/ceec/pepino/
Siendo 8448 el puerto del ordenador remoto.

A partir de este momento, todo lo que borren, añadan, modifiquen de esa carpeta, lo haran también de la carpeta del otro ordenador.

Una vez montada la carpeta… ¿cómo se desmonta?
$ fusermount -u /home/ceec/pepino
Listo. Es un buen método para tener algo de nuestro ordenador siempre accesible, o bien para trabajar directamente sobre tus archivos remotos, o bien para compartir lo que queráis a modo de FTP casero o algo parecido. Hay otras alternativas como SFTP y SAMBA, pero hay un punto a favor muy bueno para usar SSHFS, su facilidad de instalación, configuración, uso y, sobre todo, su seguridad ya que toda la información que viaje de un equipo al otro estará encriptada.

Nota:
   Los usuarios de windows pueden ver: dokan