Portada Blogs Álbumes Notas Herramientas Usuarios Ayuda |
Blog de BLei couRT (cambiar): Página Principal Entradas Historial Estadísticas |
<< Anterior | Link Permanente | Compartir en Facebook | Siguiente >> |
Entrada 1 de 3
Hay innumerables guías, manuales, y libros que hablan sobre GNU/Linux, pero la mayoría están orientados a usuarios con una base media a nivel de usuario en sistemas operativos, lo cual a menudo, es mucho suponer. Por si fuera poco el 99% de las veces estas ayudas se quedan a medio camino entre un verdadero manual y un listado de referencia, sin llegar a llegar a ser ninguna de las dos cosas.
Así que, por petición de unos, y porque creo que puedo escribir algo mucho más útil y sencillo para la mayoría de los interesados que todo lo que conozco, empiezo con esta guía de introducción al tema con la esperanza de que os pueda servir de algo. He de añadir, que aunque no tengáis pensado probar otros sistemas diferentes a Windows a corto plazo, esta guía sigue siendo de lectura igualmente recomendable porque aprenderéis qué cosas hacen ambos sistemas operativos y cómo las hacen, de forma que profundizaréis en el funcionamiento de vuestro ordenador y con esto, podréis evitar errores o prevenirlos, y sobretodo, podréis sacarle mucho más partido a vuestra máquina :-) En esta página no voy a explicar nada sobre Linux realmente, sólo voy a exponer ciertos conocimientos básicos que son necesarios para seguir correctamente el resto de páginas. Creo que es importante entender todo esto antes de seguir adelante. Archivado en: Spanish, System. Entrada 2 de 3
Por comodidad decimos Linux cuando realmente nos referimos a GNU/Linux. ¿Por qué ese nombre tan largo y feo?, ¿qué es eso de "GNU"?.
En primer lugar hay que entender qué es un sistema operativo. Un sistema operativo son un montón de programas que se distribuyen juntos para conseguir los siguientes objetivos: 1) Objetivos de bajo nivel: Son los objetivos esenciales que cualquier sistema operativo tiene que realizar, generalmente estos objetivos los realiza el núcleo (al que se le suele llamar usando su palabra inglesa: kernel). Todos los subobjetivos de bajo nivel obedecen a la máxima de dar soporte a los programas que van a ejecutarse sobre el sistema operativo, concretamente: 1.A) Abstraer el hardware: Cada componente de nuestro ordenador funciona de manera diferente según el modelo y el fabricante. Así por ejemplo, cada chisep de tarjeta de red, de sonido, de vídeo... tendrá una forma de funcionar específica. Si nosotros quisiéramos hacer un programa que, en el ejemplo de la tarjeta de red, mandase datos a internet, sería una locura tener que programarlo para usar todos y cada uno de los modelos de tarjeta de red que existen, ¿verdad?. La solución es que nuestro programa le dirá al sistema operativo qué quiere mandar X datos de tal forma por la tarjeta de red, el sistema operativo es el que se encargará de saber cómo funciona cada modelo de tarjeta de red, y será el que finalmente le diga a cada tarjeta lo que tiene que hacer en un "idioma" que ella pueda entender. ¿Y cómo puede saber un sistema operativo cómo funcionan todas las tarjetas de red que existen?: la respuesta es que no lo saben, somos nosotros quienes le "enseñamos" al instalar los drivers correspondientes. Por ello, sin drivers no podemos usar gran parte del hardware, porque simplemente el sistema operativo no sabe cómo ni de qué forma comunicarse con él. 1.B) Gestionar los recursos: En los sistemas actuales tenemos múltiples procesos (un proceso, para entendernos, podríamos decir que es un programa) ejecutándose "a la vez" (ejemplo, tener el messenger y firefox abiertos). Sin embargo hasta hace poco los ordenadores domésticos sólo tenían procesadores mononúcleos capaces de ejecutar un sólo proceso de forma simultánea. Hoy en día, lo común es tener 2 núcleos, y 4 en algunos casos, y es raro tener 6 u 8. Sin embargo, en un ordenador típico se están ejecutando muchos más procesos que núcleos o procesadores se tienen, concretamente en este momento mi ordenador con Windows XP está ejecutando 47 procesos: En mi portátil con Linux se están ejecutando 88 en este momento. ¿Cómo es posible esto si sólo tenemos 2 ó 4 núcleos?. La respuesta es que el sistema operativo ejecuta unos pocos milisegundos cada programa, de forma que parece que todos se ejecutan a la vez, pero en realidad no es así. Según la prioridad o la importancia de cada proceso el sistema operativo les dejará usar la CPU más veces que a otros (algunos pueden ser muy importantes, como los que requieren tiempo real (ver un vídeo, o escuchar una canción, y otros pueden esperar e interrumpirse más tiempo, como por ejemplo imprimir un documento). Es complicado planificar bien a que procesos se les deja cuánto tiempo de cpu y cuantas veces por segundo, porque mientras el sistema operativo "saca" un proceso de la cpu y mete otro se pierde bastante tiempo y el rendimiento general disminuye. A día de hoy los sistemas operativos para ordenadores personales suelen usar técnicas de planificación basadas en round robin con diversas mejoras que funcionas más o menos como he explicado. 1.C) Organizar la memoria: Otra de las tareas importantes es gestionar la memoria RAM de manera efectiva. Cuando ejecutamos un proceso este puede necesitar, por ejemplo, 200Kibs de memoria RAM. Pero conforme el proceso se ejecuta puede que vaya necesitando más espacio, hasta alcanzar, por ejemplo, los 500Mibs; y puede que luego ya no necesite tanto y se quede en 50Mibs. A medida que los procesos se ejecutan sus necesidades de memoria crecen y decrecen dinámicamente, el sistema operativo debe encargarse de asignarles la memoria que necesitan y de conocer que partes de la memoria quedan libres en cada momento para poder ser asignada a otros procesos. Aquí llega el primer mecanismo importante de seguridad: y es que un proceso sólo debe poder acceder a la memoria que le pertenece, de lo contrario un programa podría tomar el control absoluto del ordenador y de todos los programas y leer cualquier tipo de información aún aunque pertenezca a otro programa. El sistema operativo controla que todas las lecturas/escrituras de datos en memoria que hace un proceso las haga en su espacio de memoria asignado. Algunas características extra: ¿qué pasa si tenéis 512Mibs de ram y queréis ejecutar un proceso que requiere 800?. En sistemas operativos antiguos era imposible ejecutar un programa que ocupase más que la propia cantidad de ram, pero los sistemas de hoy en día usan sistemas de paginación y segmentación que dividen físicamente las áreas de memoria que ocupa un proceso (a costa de producir fragmentación) y que además, permiten usar el disco duro como si de memoria ram se tratase (eso sí, haciendo que todo funcione increíblemente lento, para que os hagáis una idea un disco duro moderno tiene una velocidad de lectura de unos 50Mibs/segundo y una RAM de unos 8000). A usar el disco duro como si fuera memoria ram se le denomina usar "memoria de intercambio", y forma parte del sistema de gestión de memoria que usan todos los sistemas operativos modernos: memoria virtual. A modo de ejemplo yo tengo configurado mi WindowsXP para que use un máximo de 2046MBs por unidad en caso de que se agote la RAM. No obstante Windows evitará usar el disco duro a toda costa y sólo recurrirá a él cuando se acabe toda la memoria posible: En Linux generalmente se crea una partición específica para la memoria de intercambio con un sistema de archivos optimizado para esta tarea. En todos los instaladores de Linux veréis que se os pide que, a parte de la partición principal del sistema, especifiquéis una para la memoria de intercambio, mejor conocida en Linux por su nombre en inglés: memoria swap. Por supuesto no es necesario ni obligatorio usar una partición swap, de hecho yo en mis equipos con Linux uso un archivo dentro de la partición principal como espacio de memoria swap en el disco duro. La ventaja de usar un archivo es que puedes hacerlo crecer o decrecer según tus necesidades en cualquier momento: la desventaja es que es un poco más lento, pero la verdad es que si tu ordenador tiene más de un giga de ram es extremadamente raro que llegue a usar la memoria de intercambio alguna vez, de hecho podéis no usar ni partición ni archivo, y vivir sólamente con vuestra memoria ram; en la práctica, no habrá ninguna diferencia (a Big Kahuna por ejemplo, le instalé Linux sin ningún tipo de Swap, aunque podrá crearse un archivo en cualquier momento si le hiciese falta). Aquí un ejemplo la memoria usada por mi portátil con Linux en este momento, como podéis ver, la memoria swap no se usa. En esta última imagen podéis ver que sólo quedan 140 megas de memoria RAM libres y que si abro un par de programas grandes se empezará a usar la swap. Esto no es cierto porque gran parte de la memoria ocupada corresponde a buffers y cachés que el sistema operativo utiliza para acelerarse y evitar accesos al (lento) disco duro. Por supuesto antes de tener que usar la swap Linux empezará a reducir su espacio para buffers y cachés hasta casi eliminarlo. Generalmente Linux trata de ocupar toda la ram posible con buffers y cachés, y si le metes 16Gigas de ram al sistema, él tratará de ocuparlos todos. Esto es así por una sencilla razón: memoria de alta calidad no usada es memoria desperdiciada; y mientras no haya procesos que necesiten más memoria, Linux tratará de "subir" desde el disco duro hasta la ram todo lo que piensa que vas a usar a corto plazo, para que así, cuando lo necesites, él pueda leerlo de la RAM a gran velocidad y tú no tengas que esperar al disco duro. Cómo sabe Linux qué cosas vas a utilizar a corto plazo es una mezcla de sofisticadas ideas, la mayoría apoyadas en el principio de localidad referencial que usan las cachés de las CPUs. Windows, en cambio, se limita a usar un sistema bastante más cutre que no aprovecha la memoria de calidad como la RAM, y si tiene que dejar el 75% de esa memoria sin uso, la deja (como es mi caso en el momento de escribir estas líneas). 1.D) Otras: Los kernels realizan muchas más tareas, pero para los objetivos de esta guía de iniciación para neófitos, con conocer estos objetivos básicos es suficiente ;P 2) Objetivos de alto nivel: La segunda parte ya es independiente del núcleo, y está muy por encima en el nivel de abstracción. Se trata de proporcionar al usuario métodos, programas, e interfaces para manejar y controlar el sistema, para configurarlo, y para facilitar el acceso a documentos y archivos. En Windows, Microsoft nos vende un paquete en el que el sistema operativo es un todo "fusionado". Parece que Windows sea un sólo programa que realiza todas las tareas anteriormente expuestas, las de bajo y las de alto nivel. En cambio en la mayoría de sistemas restantes las cosas suelen ser diferentes, todas las partes están perfectamente diferenciadas y lo que es mejor, tenemos incluso varias alternativas para cada parte, convirtiendo el sistema operativo en una colección de programas, en un puzzle, que nosotros podemos montar según nuestras preferencias y necesidades. En sistemas GNU/Linux el núcleo es... Linux. El error está en que comúnmente llamamos Linux a todo el sistema (lo cual, por comodidad, es comprensible), pero en realidad Linux es sólo el núcleo, del cual podemos incluso prescindir en muchas distribuciones, y optar por otros núcleos, como el núcleo de FreeBSD. Los núcleos *BSD compiten sanamente con linux, superan levemente las posibilidades que ofrece linux en algunos aspectos, tradicionalmente se han mostrado especialmente fuertes gestionando routers con millones de conexiones que a la mayoría de sistemas les acababa por desbordar. No obstante las pruebas de rendimiento y características entre núcleos BSD y Linux son a menudo objeto de controversia y acalorados debates entre defensores de un núcleo y otro. Yo, como no he hecho pruebas serias personalmente, no puedo opinar. Lo que sí es una realidad, es que Linux soporta infinitamente más hardware que BSD (los "drivers" de uno, no sirven para otro), y esta es la razón principal de la popularidad de Linux. Otro tema es la licencia: Linux es software libre bajo GLPv2: si haces un derivado y lo vendes o distribuyes, ese derivado también tiene que ser libre bajo GLPv2. BSD en cambio es software libre bajo licencia BSD, que no te obliga a nada, y no estás obligado a los derivados sigan siendo libres. BSD es más libre y se acerca más al dominio público, pero según sus detractores esa "libertad para no ser libre" no defiende la libertad final de todos los usuarios. La realidad es que muchos proyectos empezaron con licencias BSD y luego alguien hizo una mejora y la vendió como software privativo aprovechándose del trabajo de los demás. Finalmente esos proyectos ante el abuso cambiaron su licencia a la GPL, es el caso del famoso proyecto WINE (el que me pertime jugar al Baldurs Gate y al WOW en linux :D). Como curiosidad el núcleo de MaxOSX (el sistema operativo de los mac), llamado Darwin, está basado en BSD4.4. Perdón por haberme enrollado tanto xD, sigamos con el tema del nombre... Eso en lo que respecta al núcleo, luego están las funciones de "alto nivel" que, en el caso de GNU/Linux, están soportadas por las herramientas GNU, de ahí que el nombre final del sistema operativo sea GNU/Linux. Las herramientas GNU son un conjunto de programas que tratan de ofrecer una funcionalidad parecida a UNIX, sin embargo, lo que conseguimos al juntar el núcleo con las herramientas GNU está aún lejos de ser considerado un sistema operativo para un usuario de escritorio estándar, pues como interfaz directa es poco más que una consola. Hacen falta muchos más programas y herramientas, y sobretodo, un buen gestor de ventanas y un entorno gráfico bonito, potente, y amigable para que los usuarios que tienen miedo a las consolas negras con letras blancas no salgan corriendo a las primeras de cambio. Conforme nos alejamos del núcleo y subimos a capas superiores, la oferta de alternativas crece muchísimo, de forma que podremos elegir entre muchos "sistemas de escritorio", intérpretes de ordenes, registros de logs del sistema, planificadores de tareas programadas... etc. Y todavía a más alto nivel, podremos elegir entre distintos navegadores web, reproductores de música y películas, suits ofimáticas, etc. Un usuario nuevo no conoce ni puede entender las diferencias entre todas las posibles alternativas, por ello, no hay un sistema GNU/Linux general como tal, si no que hay distribuciones. Una distribución es una colección y configuración de programas que forman un sistema operativo entero, cada distribución usa los programas y herramientas que mejor le parecen, para formar un sistema coherente, robusto y estable. A diferencia de Windows o MacOsX que traen un paint, un bloc de notas, y un buscaminas; las distribuciones GNU/Linux suelen venir llenas de programas instalados (salvo aquellas con propósitos minimalistas) para todos los gustos. Algunas distribuciones famosas: - Ubuntu: Famosa por ser amigable y tener una curva de aprendizaje muy suave. Personalmente es la distribución que menos me gusta de todas cuantas he probado (seguramente es porque, personalmente, no soporto GNOME (GNOME es el "sistema de escritorio" que usa, hablaremos de él más adelante). - Debian: Es la distribución clásica y que hasta no muchos años tenía fama de ser difícil (pero realmente no lo era). - Red Hat: Distribución y empresa que da un magnífico soporte a profesionales (y particulares) con asistencia 24H. Es de pago (por el soporte). Es una compañía muy fuerte que no para de crecer, se ha ganado una gran fama como empresa de alta calidad que hace mucho dinero con el software libre, y desde luego es merecida. - Gentoo: De lejos mi favorita, aunque he reconocer que no es apta para novatos. No es una distribución difícil, pero requiere cierta experiencia y conocimientos sobre sistemas tipo unix, siendo recomendable además conocer bien el hardware de tu equipo y entender los procesos de compilación y optimización de paquetes. Hay miles de distribuciones para todos los gustos. Algunas son especiales para equipos antiguos, otras buscan incrementar el rendimiento, otras la configuración extrema, otras ejecutarse desde un cd o un pen sin tocar para nada el disco duro, y finalmente otras sólo tratan de ser fáciles y amigables para usuarios nuevos. En cualquier caso sólo un par de centenas de distribuciones suelen ser conocidas, y entre ellas, no suelen destacar más que una veintena. En la página web distrowatch podemos leer comparativas y rankings de popularidad de las 300 y pico distribuciones que hay registradas. Archivado en: Spanish, System. Entrada 3 de 3
La gente que no está acostumbrada, todavía me pone caras raras cuando me ve escribiendo cosas en una pantalla de texto negra con letras blancas, sin ratón y sin botones, y se quedan meditando, probablemente pensarán que soy un super hacker que sabe muchísimo, cuando simplemente lo único que sé... es escribir.
La gente tiene miedo a las consolas, piensan que es algo difícil y complicado y lo que es peor, piensan que es innecesario. Esta idea viene del hecho de que el usuario común apenas toca la consola en windows, el cree que así, le va bien. Pero esto es como la peli de regreso al futuro cuando Doc cuenta borracho en una taberna del oeste que en el futuro la gente se desplaza con coches, y un tipo le contesta: "¿y eso para qué?, ¿es que la gente no puede correr?". Obviamente si vais a hacer lo mismo que hacéis ahora en windows en linux no necesitáis tocar la consola, pero no obstante... para seguir los siguientes capítulos de esta guía, va a ser más cómodo y recomendable hacerlo. Así aprenderéis a hacer cosas con las que antes sólo podíais soñar. Motivos para usar la consola: Imaginemos que estamos escribiendo un documento en el procesador de textos y queremos guardarlo. A menudo veremos un gran botón con un icono muy llamativo en forma de disquete que, aunque no tengamos ni papa de informática, nos inducirá a pensar que si apretamos ahí, el documento quedará guardado. Ahora imaginamos el mismo procesador de textos con el mismo documento pero sin botones, en su lugar tiene una pequeña consola en la que escribir comandos. Para guardar tendremos que escribir en la consola "guardar" y pulsar ENTER. ¿No parece mucho más difícil verdad?. - Pero LaNsHoR... escribir "guardar" es más largo que hacer click, además de menos intuitivo, una persona que no sabe qué hay que escribir no sabrá guardar y en cambio con botones basta con explorar un poco. Efectivamente amigo imaginario, la gran pega de la consola es que no es "autoexplicativa", si no sabes hacer algo con ella, por mucho que la mires no vas a aprender. Sin embargo una búsqueda en google sobre "qué comando en linux hace X" siempre arroja 10000000000 resultados en el que alguien explica el comando correcto y su funcionamiento. La otra cuestión: "es más lento escribir guardar y que hacer click en un botón", muy cierto, por ello los procesadores de texto tienen botones y no consolas. - ¿Y entonces para qué %&@#· sirve la consola?. Pues porque hay muchas tareas que son más rápidas por consola que apretando botones, y porque hay millones de tareas posibles y no podemos tener un millones de botones en la pantalla. Veamos algunos ejemplos tontos: - Mover todas las imágenes de una carpeta a otra llamada imágenes, los documentos a otra llamada documentos, y la música a otra llamada música; los archivos zip moverlos a una carpeta llamada comprimidos y descomprimirlos en una subcarpeta que tenga el nombre del archivo original y borrar el archivo zip original. - Hacer un archivo txt con todos los archivos de una carpeta (incluyendo los de subcarpetas) ordenados primero por extensión y luego por orden alfabético, en la lista tiene que aparecer primero el nombre y luego el tamaño de los archivos. - Cambiar de tamaño todas las imágenes de una carpeta. - Comprobar cada 30 segundos la temperatura del procesador e ir escribiendo los datos en un archivo temperatura.txt que ponga la temperatura y la hora de medición. Estos son ejemplos de cosas que son más rápidas de hacer escribiendo las órdenes necesarias que navegando por menús; o de cosas que, directamente, no tienen menú ni interfaz para poder hacerlas. Algún día escribiré algo sobre como usar la consola a fondo, pero de momento... vamos a perderle el miedo y a usarla levemente para este manual. Doy por hecho que la mayoría estáis aquí porque usáis XP, pero los ejemplos que siguen los podréis hacer también en linux. En "inicio->programas->accesorios->símbolo del sistema" podemos abrir la consola para windows. En linux depende de la distribución... pero confío en que no tengáis dificultad para encontrarla (buscadla en el menú como Consola, Konsole, o Terminal). Veréis un cursor que parpadea precedido de la ruta de trabajo (en linux precedido por el prompt, el cual puede incluir la ruta de trabajo o no). La ruta de trabajo es la piedra angular de la consola, todo lo que hagamos se ejecutará ahí; así que si le decimos "crea un archivo llamado 'hola'" el sistema creará ese archivo dentro de la carpeta que indique la ruta de trabajo actual. Primer comando básico, ver los archivos de la ruta de trabajo actual: basta escribir "dir" y pulsar enter, en linux en vez de "dir" escribiremos "ls". El comando dir de windows nos muestra datos como el tamaño, la fecha, y los nombres de todos los archivos del directorio, el comando "ls" de linux, por defecto, sólo muestra el nombre. Por suerte en linux los comandos son muy configurables, si queremos ver más información usaremos "ls -l" (guión L (que en minúscula puede parecer una i mayúscula o un uno)), se dice que "-l" es un parámetro del comando. Si queréis ver todas las posibilidades del comando "ls", escribid (todo esto en linux) "man ls", con lo que podréis leer el manual del comando "ls" con sus completas y múltiples opciones. Ahora supongamos que queremos ir al directorio superior en la barra de trabajo, tanto en linux como en windows usaremos "cd .." (con un espacio entre "cd" y ".."). El directorio superior, es el anterior en la jerarquía, si por ejemplo estamos en "C:\Juegos\Quake", el directorio superior sería "Juegos", y si estamos en "C:\Juegos" el superior sería "C:\", más allá de C:\ no podemos "subir" (en linux no podemos subir más allá de "/"), aunque en windows, para cambiar de unidad, podemos usar "cd letradeunidad:", ejemplo "cd D:\". Para meternos en una carpeta dentro de la carpeta de la ruta de trabajo actual usaremos "cd nombredelacarpeta". Si estamos en "C:\Juegos" y usamos "cd Quake" nos meteremos en la carpeta Quake dentro de juegos (si existe, claro). Con esto deberíais hacer algunas pruebas para moveros por las carpetas que queráis y ver su contenido. Es importante practicar para perder el miedo. Segunda fase: Una vez dominado lo anterior, vamos con algunos trucos. Si dentro de la carpeta actual hay una carpeta llamada "carpeta jodida de nombre super largo y extraño" escribir 'cd "carpeta jodi..."' es largo y lioso (nota, si las carpetas tienen espacios hay que encerrar su nombre entre comillas"). Así que si escribimos "cd car" y pulsamos tabulador, el sistema detectará que la única carpeta que empieza por "car" es la del nombre largo y jodido y nos escribirá el comando entero. ¿Y si hay dos carpetas que empiezan por "car"?, pues en windows podremos ir pulsando tab e irá cambiando el comando por todas las posibilidades posibles, en linux habrá que pulsar tab dos veces seguidas y veremos las opciones posibles sin que el comando se complete hasta que sigamos escribiendo para la diferenciación. ¿Algo más chulo que ver qué hay en cada carpeta y cambiar la carpeta actual?, por supuesto, aunque ese no es el objetivo de esta guía. Pero si soys curiosos podéis usar el comando ping de la siguiente forma: "ping www.log85.com" (sin las comillas): esto hará un ping al server de log85 y podréis saber la latencia entre vuestra máquina y la mía (osea, entre la vuestra y el server de log85). La latencia es el tiempo que tarda un mensaje en ir y venir de vuestra máquina al server. No vamos a hacer nada chulo de verdad con la consola porque llevaría varias páginas y porque la consola de windows es una putísima mierda (si las consolas fueran vehículos, la de windows sería un triciclo y bash sería una nave espacial intergaláctica capaz de viajar a velocidad luz e incluso en el tiempo (no exagero)), pero de momento lo importante es: a) entender que es la ruta de trabajo y saber cambiarla. b) Perderle el miedo a la consola y entender qué es un comando. Con todo eso, en la próxima página nos meteremos de verdad a usar GNU/Linux. Archivado en: Spanish, System.
|
Páginas
Puntuación
WARNING!!! About... Estadísticas
5671 Días
2603 Visitas
12 Posts
Postea una de
cada 217 visitas Licencia
|