2 votos

Error "Función no implementada" al crear un enlace simbólico

Estoy tratando de ejecutar este comando busybox ln -s "mydir/" "$PWD"/mylink para crear un enlace simbólico desde mydir; sin embargo, estoy recibiendo el siguiente error ln: /mnt/shell/emulated/0/mylink: Función no implementada! He intentado esto tanto en adb shell como en Android Terminal Emulator pero sin éxito.

Actualización:

Sistema de archivos     1K-bloques  Usados Disponibles Uso% Montado en
tmpfs                   496976        64    496912   0% /dev
devpts                       0         0         0   0% /dev/pts
proc                         0         0         0   0% /proc
sysfs                        0         0         0   0% /sys
selinuxfs                    0         0         0   0% /sys/fs/selinux
debugfs                      0         0         0   0% /sys/kernel/debug
none                         0         0         0   0% /acct
tmpfs                   496976         0    496976   0% /mnt/secure
tmpfs                   496976         0    496976   0% /mnt/asec
tmpfs                   496976         0    496976   0% /mnt/obb
tmpfs                   496976         0    496976   0% /mnt/fuse
none                         0         0         0   0% /dev/cpuctl
/dev/block/mmcblk0p1    774064    420392    353672  54% /system
/dev/block/mmcblk0p2    431368     94172    337196  22% /cache
/dev/block/mmcblk0p8  59034284   5817516  53216768  10% /data
/dev/fuse             59034284   5817516  53216768  10% /mnt/shell/emulated
/dev/block/vold/179:49
                      31632380  25335912   6296468  80% /storage/sdcard1
//192.168.0.1/sdcard  30584780  23082428  7502352   75% /mnt/routersd
//192.168.0.1/sdcard  30584780  23082428  7502352   75% /mnt/shell/emulated/0/routersd

7voto

Andy Brudtkuhl Puntos 1714

El sistema de archivos en el que estás intentando crear el enlace simbólico no admite enlaces simbólicos. Todos los sistemas de archivos nativos de Linux (ext2-4) admiten enlaces simbólicos, pero el sistema de archivos DOS utilizado en las tarjetas SD no lo hace, y varios otros tampoco. Para un sistema de archivos implementado con FUSE (como en este caso), depende por completo del controlador del sistema de archivos, por lo que no puedes saber si admite enlaces simbólicos o no sin probar. No podrás crear enlaces simbólicos en esos sistemas de archivos.

0 votos

Eso no es una tarjeta SD externa (fat/fat32) sino el almacenamiento interno; supuestamente con ext2-4.

0 votos

@DavidDe Es diferente de un teléfono a otro, pero estoy bastante seguro de que cualquier cosa en /mnt/*/emulated va a ser su propio sistema de archivos, probablemente usando vfat o algún formato de disco RAM. Puedes verificarlo ejecutando mount y buscando esa ruta.

0 votos

Ver sección ACTUALIZADA; ese es el resultado de busybox df -a

0voto

EDllT Puntos 11

Encontré una solución inteligente para evitar este problema

  • Primero, tenemos dos entornos (los mencionaré más adelante)

    • El entorno de Android

    • El entorno chroot

  • Queremos crear un enlace simbólico desde el chroot hasta el entorno de Android

  • No podemos hacerlo directamente, así que en su lugar creamos un directorio dentro del entorno chroot llamado sym_links. Este directorio contendrá enlaces simbólicos

  • También le di al directorio sym_links todos los permisos y lo hice propiedad de todos para evitar complicaciones de permisos

    chown 9997:9997 /RUTA/A/sym_links -R chmod 777 /RUTA/A/sym_links -R

  • Luego crearemos un enlace simbólico a nuestro archivo deseado estando en el entorno de Android y luego colocaremos ese enlace simbólico recién creado dentro del directorio sym_links.

  • Luego, en el entorno de Android, montaremos enlazando el directorio sym_links a un directorio vacío dentro de la tarjeta sd asegurándonos de ejecutar esto desde un espacio de montaje global como root

    su -mm

    ejecutar comandos de montaje aquí

Y listo, has creado un enlace simbólico dentro de la tarjeta sd

Cómo crear un montaje bind

mount -o bind /RUTA/A/DIRECTORIO_ORIGEN /RUTA/A/DIRECTORIO_DESTINO

Cómo acceder al espacio global de montaje (usando el su de magisk)

su -mm

TL;DR: Crea un enlace simbólico que apunte a tu archivo deseado desde un entorno de Android, coloca el enlace simbólico recién creado en un entorno que pueda manejar enlaces simbólicos, por ejemplo, el entorno chroot (o cualquier otra ruta siempre que no esté dentro de la tarjeta sd). Accede al espacio global de montaje y luego crea un montaje bind desde el directorio que contiene el enlace simbólico a un directorio dentro de la tarjeta sd

PreguntAndroid.com

PreguntAndroid es una comunidad de usuarios de Android en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X