/bin/nash

Iniciado por Eye del Cul, Diciembre 15, 2005, 01:10:18 AM

Tema anterior - Siguiente tema

Eye del Cul

Bueno, a ver si alguno de los linuxeros del foro puede ayudarme.

El caso es que llevo algunos días muy entretenido instalando Linux en mi portátil. En realidad es un trabajillo bastante especial, puesto que cuando todo vaya como debe, Linux se iniciará directamente desde un disco duro externo (USB) cuando se encienda el ordenador. El tema es que el disco interno es, además de pequeño, "intocable", puesto que en él guardo todo lo relacionado con Arcades 3D... Y claro, no tengo ganas de jugar con él a la lotería cambiando particiones :moriras:.

Y en eso estoy. Linux está ya instalado en el disco USB. Grub también y funciona perfectamente... Sólo me queda crear una imagen de arranque (initrd.gz), puesto que el kernel no puede arrancar así sin más desde una unidad USB.
En realidad la tengo casi terminada, salvo por un detalle... Necesito el intérprete de comandos nash, pero no puedorr, no viene en ninguna de las distribuciones que tengo... Y no lo encuentro por ningún lado -¿ande andará?-. Así que si alguno de vosotros lo tiene, le agradecería un montón que me lo mandase por mail.
Si no me equivoco, se trata de un archivo cuya ruta debería ser /bin/nash -o quizás /sbin/nash, o /usr/bin/nash, aunque no creo-. Y me parece que en Fedora Core viene incluido por defecto...

Y nada, saludos y gracias por adelantado...
«Porque buscar a alguien patético en Internet es como buscar caballos en un establo: encontrarás alguno, seguramente» -- Phobos Anomaly

MR. NALI

Yo lo tengo, envíame tu mail por privado,  :wink:
Perl (usualmente con Gtk2) Coder.
Dream Theater Fan.
Linux user Nº401597

Karnizero

Pues la verdad nunca he oido hablar de ese Shell.

Aun asi, te recomiendo que lo busques en los repositorios oficiales de la distribucion que uses. Mira las dependencias que tiene (si es que las tiene). Tambien tendras que tener en cuenta que el Shell, no es solo el ejecutable, osea, al comtrario de lo que ocurre con MS-DoS.

MS-DoS tiene un programa que hace de interprete de comandos, y a la vez los almacena en su interior. Se trata del famoso Command.com.

Sin embargo en Linux es distinto. El Shell tiene un ejecutable que interpreta las ordenes de los comandos, pero al contrario de MSDoS, esos comandos no estan almacenados en el propio ejecutable del shell (que en tu caso seria nash), si no que cada comando es un pequeño programa que esta aparte. Por ejemplo, cuando ejecutas el comando ls, este es un programilla que se encuentra por ahi flotando.

Por eso hay una variable de entorno que define en donde buscar los ejecutables que el usuario teclee por teclado, y que no comiencen por ./. Esa variable se llama PATH (en mayusculas). Si escribes echo (simbolodolar)PATH te mostrara todos los directorios en los que el sistema buscara ejecutables o cosas que se puedan ejecutar (por ejemplo, links a aplicaciones).

Y bueno, lo que te quiero decir con todo esto, es que si te copias el nash asi sin mas, cuando lo ejecutes, no se si ya ni te funcionara, ya que no tiene ningun comando/programa para poder ejecutar. Por lo tanto tendras que copiar todos los comandos a parte del  nash.
Ademas hay shells que a parte de los comandos tienen mas cosas...

Eye del Cul

Bueno, pues ya lo tengo... Al final nash viene con el paquete mkinitrd, así que me bajé el código fuente de Internet y lo compilé en mi ordenador.

Cita de: "Karnizero"Tambien tendras que tener en cuenta que el Shell, no es solo el ejecutable, osea, al comtrario de lo que ocurre con MS-DoS.

No sé si me equivoco y estoy confundiendo cosas, pero por ejemplo Busybox sí que contiene los comandos que interpreta. Lo único que necesitas es una copia del archivo -en bin/busybox- y enlaces simbólicos referidos a él para cada orden soportada -ls, chmod, mount...-.
Nash es similar, pero tiene una utilidad muy concreta. Por lo que he visto, parece que se usa en las imágenes de arranque -initrd.gz y similares- para montar dispositivos antes de que se inicie el sistema. Por ejemplo, si queremos hacer cosas extrañas como arrancar Linux directamente desde un disco USB, como es mi caso... :).
«Porque buscar a alguien patético en Internet es como buscar caballos en un establo: encontrarás alguno, seguramente» -- Phobos Anomaly

Karnizero

Cita de: "Eye del Cul"No sé si me equivoco y estoy confundiendo cosas, pero por ejemplo Busybox sí que contiene los comandos que interpreta. Lo único que necesitas es una copia del archivo -en bin/busybox- y enlaces simbólicos referidos a él para cada orden soportada -ls, chmod, mount...-

No se si he entendido exactamente lo que dices, pero si tienes, en tu caso, el Busybox, y los enlaces simbólicos, pero no tienes el objeto enlazado, de poco te sirve el enlace.

Sería algo así como:

Supongamos que tenemos el ejecutable de bash en /bin/bash; los enlaces simbólicos a los comandos en /bin/bash; y los comandos en sí (osea, los ejecutables en /usr/bin, por ejemplo). Si sólo copias el ejecutable de bin y los enlaces simbólicos, pero no copias los ejecutables de los comandos (osea, lo de /usr/bin, en nuestro ejemplo), cuando le escribas una orden a bash, este leerá el enlace simbólico, pero este no tiene destinatario.

Aunque en realidad no se cómo tienes tu el sistema instalado, pero si ya tienes todos los ejecutables de los comandos, pues efectivamente, solamente tendras que copiar el ejecutable del Shell y los enlaces simbólicos. Sin embargo, tendras que comprobar que tienes los enlaces sibólicos apuntando realmente a los ejecutables de los comandos.

Ahora bién, te puedes ahorrar todo este embrollo, simplemente copiando el ejecutable de tu Shell (osea /bin/nash) y añadir a la variable de entorno PATH el directorio en donde tienes los ejecutables de los comandos.

Aún así, si dices que tu Shell ya trae incorporados los comandos, pues mejor que mejor, te ahorras todo este jaleo.

Y suerte con tu HDD USB. Ya nos contarás si te funciona la cosa :D