Servidor FTP corriendo bajo DSLinux

Pregunté por esto mismo en los foros de DSLinux, pero ya que llevan varios días caidos "Could not determine your IP address" me pone, pregunto aquí a ver si hay alguna manera de montar un servidor ftp en el DSLinux. Según me comentaron en los foros oficiales ya hace tiempo que está implementado, y de hecho hay una aplicación llamada ftpd (supongo que demonio ftp), pero una vez lo ejecuto, no se carga en memoria.

Me interesa principalmente para no andar todo el día sacando y metiendo la MicroSD del R4, porque al paso que va cualquier día de estos me quedo sin tarjeta de memoria. Además, el DSFTP no me gusta (se bloquea y la última vez que lo usé "mancilló" la FAT).

¿Alguien ha conseguido correr un servidor ftp bajo DSLinux? ¿Podría explicar cómo?
Existe el homebrew DSFTP, que te servirá = que para lo que quieres.

Hay gente al cual se le corrompe la tarjeta y otros que no. primero copia todo su contenido en tu disco duro, y luego empieza a hacer pruebas con archivos grandes.
No sé si has leído lo que he escrito. Ya sé que existe, pero a partir de la quinta vez que lo usé, se me bloqueó y se cepilló la tarjeta, no quiero usarlo ni harto de vino.
[DoodoM] escribió:Además, el DSFTP no me gusta (se bloquea y la última vez que lo usé "mancilló" la FAT).
Y creo que ya he hecho las pruebas suficientes: tarde o temprano se me acaba bloqueando. Por eso pregunto por un servidor para DSLinux.
Perdón perdón, no te había leído entero ^^U .

Haver he estado buscando porque me interesaa, a ver si no me mata la trageta como el DSFTP.

He encontrado que el programa es ftpd, pero no se susarlo.
Al ponerlo en la consola lo accepta como programa pero no pide nada mas -.-

y el help no ayuda mucho.
[DoodoM] escribió:Según me comentaron en los foros oficiales ya hace tiempo que está implementado, y de hecho hay una aplicación llamada ftpd (supongo que demonio ftp), pero una vez lo ejecuto, no se carga en memoria.
lovechii5 escribió:Perdón perdón, no te había leído entero ^^U .

Haver he estado buscando porque me interesaa, a ver si no me mata la trageta como el DSFTP.

He encontrado que el programa es ftpd, pero no se susarlo.
Al ponerlo en la consola lo accepta como programa pero no pide nada mas -.-

y el help no ayuda mucho.
Macho, se nota que no lo habías leído entero.

Y creo que todavía sigues sin haberlo leído entero, porque eso mismo dije yo en el primer mensaje.
No no, si había leído, quería decir que he encontrado que hablan del programa, pero nada de usarlo.

He probado de todas maneras pero filezilla no conecta ò.o, ni da señales de ser un servidor ftp.
¡Sí! ¡Lo he conseguido! [tomaaa]

En DSLinux cogemos el fichero /etc/rc.defaults y lo copiamos como /etc/rc.conf
# cp /etc/rc.defaults /etc/rc.conf

Editamos el archivo con nano:
# nano /etc/rc.conf

Y dejamos las siguientes líneas de este modo:

enable_network_on_boot="NO"
-->
enable_network_on_boot="YES"


wfc_config=""
-->
wfc_config="1"


Aquí ponemos el número de perfil (1,2,3) del CWF de Nintendo que queremos asignarle. Es aconsejable haber configurado los parámetros de dicho perfil de manera manual así como de que la red inalámbrica esté emitiendo en el canal 10 y no tenga clave de ningún tipo.

start_inetd="NO"
-->
start_inetd="YES"


Guardamos los cambios: CTRL + X, Y (Yes), ENTER.

Cogemos el archivo /etc/inetd.conf.examples y lo copiamos como /etc/inetd.conf
# cp /etc/inetd.conf.example /etc/inetd.conf

Editamos el archivo con nano:
# nano /etc/inetd.conf

Y borramos el primer carácter de la segunda línea, de modo que debería quedarnos así:

#ssh stream tcp nowait root /bin/dropbear -i
ftp stream tcp nowait root /usr/bin/ftpd -l
#advent4 stream tcp nowait root /usr/games/advent4
#dungeon stream tcp nowait root /usr/games/dungeon


De este modo estamos activando el ftp.

Guardamos los cambios: CTRL + X, Y (Yes), ENTER.

Ahora apagamos la consola:

# poweroff

Y volvemos a iniciar DSLinux.

Una vez nos cargue el sistema tecleamos:

# ftpd -l

Y si tenemos bien configurada la red habremos lanzado el servidor ftp y podremos acceder a nuestros archivos desde cualquier punto de la red inalámbrica a la que estemos conectados.

Después para loguearnos desde nuestro ordenador por ejemplo desde una terminal de GNU/Linux, escribimos:

$ ftp

ftp> open 192.168.10.123

La IP es la que asignamos a nuestra consola en el CWF de Nintendo.

Nos debería salir lo siguiente:

220 NintendoDS FTP server (GNU inetutils 1.4.1) ready.
Name (192.168.10.123:usuario):
331 Password required for root.
Password:


Aquí introducimos "root" (sin comillas) y como clave "uClinux" (sin comillas y con C mayúscula).

Ya estamos logueados con el ftp dentro de nuestra consola. Ahora si queremos ver en qué directorio de la consola estamos, escribimos:

ftp> pwd

Para subir archivos:

ftp> put (archivo local) (archivo remoto)

Por ejemplo:

ftp> put /home/doodom/hola.txt /media/hola.txt

Es recomendable escribir las rutas absolutas de origen y destino.

Para subir al directorio superior:

ftp> cd ..

Para entrar en un directorio:

ftp> cd /media

Para mostrar el contenido de un directorio:

ftp> ls /media

Etc...

Y por úlitmo para quitar:

ftp> quit

Y después en nuestra consola escribimos:

# poweroff

Si queremos apagar.

Y eso es todo. Lo que todavía no se es como se suben directorios enteros con todo lo que hay dentro.

Yo ya he subido el navegador Bunjalloo gracias al ftpd (así que funciona de putísima madre, no como el DSFTP, y además a una velocidad pasmosa), solo que he tenido que crear el directorio data y sus subdirectorios de manera manual con el comando mkdir.

Saludos. :)

ACTUALIZADO:

Para subir y bajar directorios completos utilizar lftp en GNU/Linux. Más información:
http://www.desarrolloweb.com/articulos/2319.php
http://www.cristalab.com/tips/28355/ftp-desde-consola-de-linux-lftp-

$ lftp root@192.168.10.123
Clave: uClinux


Los comandos a utilizar en lftp son:

lftp root@192.168.10.123:~> mirror -v /media/carpeta

Para bajar un directorio de la tarjeta al directorio local activo.

lftp root@192.168.10.123:~> mirror -R /home/doodom/carpeta

Para subir un directorio local al directorio remoto activo.
Dios tio, muchas gracias, cuando por la noche vuelva a casa lo pruebo ><
Lo voy a probar. Se agradece.

___
FUNCIONA PERFECTAMENTE.
[DoodoM] gracias por la información y me alegro que hayas encontrado solución a lo que buscabas :-) pero perdóname por el pequeño offtopic al prenguntarte si sabes si existe algún compilador de C para el DSLinux, a fin de poder programar desde la DS... Gracias
"Wonder_Boy" escribió:[DoodoM] gracias por la información y me alegro que hayas encontrado solución a lo que buscabas :-) pero perdóname por el pequeño offtopic al prenguntarte si sabes si existe algún compilador de C para el DSLinux, a fin de poder programar desde la DS... Gracias

¿Un compilador de C para DSLinux? :-O

Yo creo que para programar es conveniente usar el PC, no solo por la comodidad, rapidez y recursos con lo que puedes hacerlo, sino porque no veo a la Nintendo DS como plataforma para programar, tanto por su escaso potencial de proceso como por lo incómodo de teclear con el stylus y por el gasto absurdo de batería.

Mi consejo es que si vas a programar o a portar algo para el DSLinux lo hagas a través de un ordenador y lo pases posteriormente al DSLinux por el ftp. La Nintendo DS podrá tener dos procesadores, pero no creo que tenga la suficiente capacidad de proceso como para correr un compilador y no bloquear la consola en el intento.
[DoodoM] escribió:¿Un compilador para C en DSLinux? :-O

Yo creo que para programar es conveniente usar el PC, no solo por la comodidad, rapidez y recursos con lo que puedes hacerlo, sino porque no veo a la Nintendo DS como plataforma para programar, tanto por su escaso potencial de proceso como por lo incómodo de teclear con el stylus y por el gasto absurdo de batería.

Mi consejo es que si vas a programar o a portar algo para el DSLinux lo hagas a través de un ordenador y lo pases posteriormente al DSLinux por el ftp. La Nintendo DS podrá tener dos procesadores, pero no creo que tenga la suficiente capacidad de proceso como para correr un compilador y no bloquear la consola en el intento.
Ya hombre, y de hecho lo hago desde el PC, pero tampoco me interesa programar para Linux, era simplemente por si existía algún intento de compilador parcial o algo en el DSLinux para como decia, programar alguna cosilla en la consola, pero que está claro que no vas a desarrolar ahí la aplicación del año de PCWORLD X-D y lo preguntaba porque ya he visto a gente interesada en tal tema...

En fin, gracias y un saludo.
[DoodoM] escribió:¡Sí! ¡Lo he conseguido! [tomaaa]

En DSLinux cogemos el fichero /etc/rc.defaults y lo copiamos como /etc/rc.conf
# cp /etc/rc.defaults /etc/rc.conf

Editamos el archivo con nano:
# nano /etc/rc.conf

Y dejamos las siguientes líneas de este modo:

enable_network_on_boot="NO"
-->
enable_network_on_boot="YES"


wfc_config=""
-->
wfc_config="1"


Aquí ponemos el número de perfil (1,2,3) del CWF de Nintendo que queremos asignarle. Es aconsejable haber configurado los parámetros de dicho perfil de manera manual así como de que la red inalámbrica esté emitiendo en el canal 10 y no tenga clave de ningún tipo.

start_inetd="NO"
-->
start_inetd="YES"


Guardamos los cambios: CTRL + X, Y (Yes), ENTER.

Cogemos el archivo /etc/inetd.conf.examples y lo copiamos como /etc/inetd.conf
# cp /etc/inetd.conf.example /etc/inetd.conf

Editamos el archivo con nano:
# nano /etc/inetd.conf

Y borramos el primer carácter de la segunda línea, de modo que debería quedarnos así:

#ssh stream tcp nowait root /bin/dropbear -i
ftp stream tcp nowait root /usr/bin/ftpd -l
#advent4 stream tcp nowait root /usr/games/advent4
#dungeon stream tcp nowait root /usr/games/dungeon


De este modo estamos activando el ftp.

Guardamos los cambios: CTRL + X, Y (Yes), ENTER.

Ahora apagamos la consola:

# poweroff

Y volvemos a iniciar DSLinux.

Una vez nos cargue el sistema tecleamos:

# ftpd -l

Y si tenemos bien configurada la red habremos lanzado el servidor ftp y podremos acceder a nuestros archivos desde cualquier punto de la red inalámbrica a la que estemos conectados.

Después para loguearnos desde nuestro ordenador por ejemplo desde una terminal de GNU/Linux, escribimos:

$ ftp

ftp> open 192.168.10.123

La IP es la que asignamos a nuestra consola en el CWF de Nintendo.

Nos debería salir lo siguiente:

220 NintendoDS FTP server (GNU inetutils 1.4.1) ready.
Name (192.168.10.123:usuario):
331 Password required for root.
Password:


Aquí introducimos "root" (sin comillas) y como clave "uClinux" (sin comillas y con C mayúscula).

Ya estamos logueados con el ftp dentro de nuestra consola. Ahora si queremos ver en qué directorio de la consola estamos, escribimos:

ftp> pwd

Para subir archivos:

ftp> put (archivo local) (archivo remoto)

Por ejemplo:

ftp> put /home/doodom/hola.txt /media/hola.txt

Es recomendable escribir las rutas absolutas de origen y destino.

Para subir al directorio superior:

ftp> cd ..

Para entrar en un directorio:

ftp> cd /media

Para mostrar el contenido de un directorio:

ftp> ls /media

Etc...

Y por úlitmo para quitar:

ftp> quit

Y después en nuestra consola escribimos:

# poweroff

Si queremos apagar.

Y eso es todo. Lo que todavía no se es como se suben directorios enteros con todo lo que hay dentro.

Yo ya he subido el navegador Bunjalloo gracias al ftpd (así que funciona de putísima madre, no como el DSFTP, y además a una velocidad pasmosa), solo que he tenido que crear el directorio data y sus subdirectorios de manera manual con el comando mkdir.

Saludos. :)

ACTUALIZADO:

Para subir y bajar directorios completos utilizar lftp en GNU/Linux. Más información:
http://www.desarrolloweb.com/articulos/2319.php
http://www.cristalab.com/tips/28355/ftp-desde-consola-de-linux-lftp-

$ lftp root@192.168.10.123
Clave: uClinux


Los comandos a utilizar en lftp son:

lftp root@192.168.10.123:~> mirror -v /media/carpeta

Para bajar un directorio de la tarjeta al directorio local activo.

lftp root@192.168.10.123:~> mirror -R /home/doodom/carpeta

Para subir un directorio local al directorio remoto activo.



fantastico aporte. yo llevo un tiempo intentando hacerlo rular y no lo conseguí, con tu metodo me ocurre lo siguiente:

tengo el m3 lite micro sd y el linux ke cuelgan en la pagina oficial ke se llama "dslinux_dldi" o algo asi, este no pide user y pass cuando inicia linux

total, que lo hago todo como dices, exceptuando ke configuro la red manualmente (con wep y todo lo demas, ke viene muy clarito en el mismo archivo) pero cuando inicio linux me dice ke no pudo correr inetd porke la red estaba caida (down).

tambien tengo ke decir ke me hice un ejecutable con la configuracion de mi red ke cuando lo ejecuto dispongo de red e internet sin ningun problema

como puedo hacer para ke la red esté levantada antes de ejecutar el inetd??

gracias por el tuto de todas formas, es un puntazo ke te rule :)
Lo normal sería que te levantase primero la red, y a continuación ejecutase inetd. Si te dice que no hay conexión de red, es que algo raro hay (y más aún si después no tienes problema alguno en levantar la red).

Y lo del tutorial yo también lo hice con la DLDI Build del DSLinux en un R4, así que no creo que tenga mucho que ver. Por otro lado he de decir, que dejando las particularidades de la Nintendo DS a parte, con clave WEP nunca he podido conectarme a redes desde aplicaciones homebrew.

De todos modos creo que se podría hacer un pequeño script que se cargase en la ejecución del sistema, lo que no se muy bien es en qué directorio colocarlo (¿tal vez en /etc/rc.d ?). Tú tal vez sepas mejor donde ponerlo. Es decir, podrías escribir a mano todos los comandos que el DSLinux se supone que debería poner en marcha de manera automática.

Sería algo así (no estoy muy seguro de que funcione tal y como lo he escrito yo):
#!/bin/sh
# Levantamos la red
/etc/rc.d/network start
# Asignamos IP, máscara de red, broadcast, etc..
ifconfig nds 192.168.1.1 netmask 255.255.255.0 broadcast 192.168.1.255 up
# Se lo asigamos a una red inalámbrica
iwconfig nds essid router@ds
iwconfig nds key restricted
iwconfig nds key 7412546790
# Arrancamos el inetd
/etc/rc.d/inetd start
# Ejecutamos el servidor de telnet
telnetd
# Ejecutamos el servidor ftp
ftpd -l
Y después le damos permisos de ejecución:

# chmod +x /etc/rc.d/autorun.sh

No tengo ni idea de si te servirá. Pero ya es algo.

Saludos.

EDITADO: Ahora que lo pienso... ¿me dijiste que creaste un ejecutable no? ¿Por qué no quitas el autoarranque del inetd del /etc/rc.conf y añades la orden "/etc/rc.d/inetd start" al ejecutable que creaste, justo después de donde están los comandos que te configuran y levantan la red? Lo mío de arriba ha sido una paranoia, así que es muy probable que sirva para poco, pero si añades el comando para levantar el inetd a tu ejecutable en la línea adecuada seguro que se ejecuta justo cuando necesitas y no antes.
ya me funciona usando el script mio y añadiendole lo del ftp. lo ke no entiendo muy bien es para ke ejecutas arriba el telnetd...

lo ke si digo es ke la velocidad es muy variable al igual ke penosa:

de 10 a 20 k's totalmente variable

y eso ke el ordenador está por cable y lo unico ke es wifi es la ds

será el protocolo ke no está muy depurado? o a todos os va igual?

salu2 y gracias
Bueno lo del telnet no es necesario (pero sí muy util para configurar el DSLinux desde el ordenador), y con respecto a lo de la velocidad me va a algo más de 100 kb/s como máxima. De todos modos puede ser que tu router tenga algún firewall o antivirus interno que esté haciendo cuello de botella en el pico de transferencia.
A mi no me rula bien eso de arrancar internet solo de encender DSLinux.

Lo que se debe hacer es cargar internet y luego arrancar inetd ? y finalmente ftpd -l ?
Exactamente en ese orden.
no...mi router no tiene activado ningun firewall...

lo que no se es si tengo que redirigir el puerto 21 a la ip de la DS o al pc-...aunque tampoco tiene mucho sentido porque si no, ni me conectaria no?

lo que si te digo es que no pasaba de 20 k's de pico...y casi siempre a 10 k's. crees que tengo ke abrir los puertos?

en el ordenador lo que tengo es el firewall de mocosoft (que unido a nod 32 la verdad es que no tengo mayores problemas). asi que no se el por ké de esa transferencia tan baja.
me parece muy interesante el correr el servidor ftp bajo dslinux como alternativa a DSFTP, sobretodo porque con mi Cyclods evolution el DSFTP se cuelga y me corrompe la fat de la tarjeta... y no hay modo de conseguir un ftp de otra forma xD

queria haceros una pregunta sobre dslinux... he probado dos versiones: una es muy muy reducida, con los comandos justos para hacer nada, nisiquiera necesita ponerle el directorio /linux/ para que tire, pero funciona. el otro es mas completo, tiene el server ftpd, ssh y demas, pero no me funciona bien... al ejecutar cualquier binario suelta mensajes de error

do_translation_fault? : arch/arm/mm/fault.c 374

hasta pararlo a control-c

la pregunta es: dslinux puede funcionar bien sin un slot2 que le de mas ram?
cual usariais para cyclods evo? (solo hace 3 dias que sacaron el firmware 1.2B con soporte para dslinux)

Saludos
stans escribió:me parece muy interesante el correr el servidor ftp bajo dslinux como alternativa a DSFTP, sobretodo porque con mi Cyclods evolution el DSFTP se cuelga y me corrompe la fat de la tarjeta... y no hay modo de conseguir un ftp de otra forma xD

queria haceros una pregunta sobre dslinux... he probado dos versiones: una es muy muy reducida, con los comandos justos para hacer nada, nisiquiera necesita ponerle el directorio /linux/ para que tire, pero funciona. el otro es mas completo, tiene el server ftpd, ssh y demas, pero no me funciona bien... al ejecutar cualquier binario suelta mensajes de error

do_translation_fault? : arch/arm/mm/fault.c 374

hasta pararlo a control-c

la pregunta es: dslinux puede funcionar bien sin un slot2 que le de mas ram?
cual usariais para cyclods evo? (solo hace 3 dias que sacaron el firmware 1.2B con soporte para dslinux)

Saludos


http://www.dslinux.org/bugs/?do=details&id=4

nose si te servira de algo, pero ahi hablan de ese error.
Bueno yo ya lo he probado y funciona perfectamente.

Ahora tiene un problema, no da el listado de carpetas. Uso como cliente ftp fileZilla y puedo pasar las cosas sin ningun problema, acceder a qualquier carpeta sin ningun problema tambien, pero no me da un listado de archivos y capetas.
lovechii5 escribió:Bueno yo ya lo he probado y funciona perfectamente.

Ahora tiene un problema, no da el listado de carpetas. Uso como cliente ftp fileZilla y puedo pasar las cosas sin ningun problema, acceder a qualquier carpeta sin ningun problema tambien, pero no me da un listado de archivos y capetas.


podrias especificar un poco mas? slot1? cual? build? algo en slot2? donde no te lista carpetas, en el ftp o en la ds?
Tengo m3 lite.

El problema es que desde el Filezilla o des flashftx no me hace correctamente ls, es decir, no me salen los archivos que hay en la ds, en cualquier carpeta. Eso si puedo acceder a cualquiera de ellas, sabiendo el nombre.
diria que es por falta del flag +r en los directorios si no fuese q en fat16 o 32 no hay tales protecciones de archivos...
pues sera la configuracion del ftpd, proftpd o el q uses.
Gracias por el tutorial, DoodoM, está curradísimo.

Escribo por que tengo el mismo problema que lovechii5. Tengo un M3 Lite y como cliente ftp uso el Filezilla. Al conectar al servidor de la DS, me aparece parte del arbol de directorios, completamente vacíos. Si hago click en algún directorio superior, se pierde todo el arbol de direcciones. ¿Alguno conoce una solución a este problema?.
25 respuestas