Buildroot执行make时rsync报Function not implemented(38)错误如何解决
问题原因分析
你的操作流程不存在错误,该报错和你使用的Kali 5.9内核版本没有直接关联,核心触发原因是rsync无法对目标目录执行权限设置操作,常见有两类诱因:
- 你使用root用户执行Buildroot编译操作,Buildroot官方明确不推荐使用root权限编译,root环境下的默认权限策略会拦截rsync的批量chmod操作
- 你的Buildroot工作目录所在的文件系统不支持标准Unix权限位设置,比如目录放在NTFS/FAT32挂载分区,或者分区挂载时加了
noacl/fmask/dmask等强制覆盖权限的参数
修复步骤
- 切换为普通用户执行编译操作,将现有编译目录转移到普通用户家目录下,执行以下命令(root权限下操作):
useradd -m builduser mv /root/buildroot /home/builduser/ chown -R builduser:builduser /home/builduser/buildroot su - builduser cd buildroot
- 确认当前目录所在文件系统为ext4/xfs等标准Linux文件系统,执行
mount | grep $(df . | awk 'NR==2{print $1}')查看挂载参数,确保输出中没有noacl、fmask、dmask这类强制修改权限的配置 - 清理历史编译缓存,重新执行编译流程:
make clean make qemu_x86_64_defconfig make
后续兼容问题说明
修复该问题后基本不会出现同类兼容问题,Kali作为Debian衍生发行版完全满足Buildroot的编译环境要求,你可以提前安装全量编译依赖避免后续出现依赖缺失报错,执行以下命令(root权限下操作):
apt install -y build-essential libncurses-dev bison flex libssl-dev libelf-dev wget cpio unzip rsync bc
内容的提问来源于stack exchange,提问作者ledoux
相关产品推荐
相关产品推荐

