rsync:[generator] 无法设置权限:操作不受支持(95)

rsync:[generator] 无法设置权限:操作不受支持(95)

我想使用 ubuntu 18.04 上的 qemu 和 kvm 在我的 Jetson nano (arm64) 上正确虚拟化 Android 10。这是我正在关注的教程:

https://github.com/antmicro/kvm-aosp-jetson-nano

一切顺利,直到出现这个命令:

sudo rsync -avxHAX system-r{o,w}/

有些事情不太好,因为当我将文件和权限从源路径转移到目标路径时出现很多错误(两者都在同一个磁盘和同一个 ext4 分区上。您可以在此处查看包含错误的完整日志:

https://pastebin.ubuntu.com/p/W9GjPCt8G4/

这些错误的后果是,当我尝试使用 qemu 模拟 android 时,如下所示:

qemu-system-aarch64 \
-enable-kvm \
-smp 4 \
-m 2048 \
-cpu host \
-M virt \
-device virtio-gpu-pci \
-device usb-ehci \
-device usb-kbd \
-device virtio-tablet-pci \
-usb \
-serial stdio \
-display sdl,gl=on \
-kernel aosp/Image \
-initrd aosp/ramdisk.img \
-drive index=0,if=none,id=system,file=aosp/system.img \
-device virtio-blk-pci,drive=system \
-drive index=1,if=none,id=vendor,file=aosp/vendor.img \
-device virtio-blk-pci,drive=vendor \
-drive index=2,if=none,id=userdata,file=aosp/userdata.img \
-device virtio-blk-pci,drive=userdata \
-full-screen \
-append "console=ttyAMA0,38400 earlycon=pl011,0x09000000 drm.debug=0x0 rootwait rootdelay=5 androidboot.hardware=ranchu androidboot.selinux=permissive security=selinux selinux=1 androidboot.qemu.hw.mainkeys=0 androidboot.lcd.density=160"

这是我收到的错误:

[ 2.532754] init: init first stage started!
[ 2.535936] init: [libfs_mgr]ReadFstabFromDt(): failed to read fstab from dt
[ 2.540632] init: [libfs_mgr]ReadDefaultFstab(): failed to find device default fstab
[ 2.546246] init: Failed to fstab for first stage mount
[ 2.549616] init: Using Android DT directory /proc/device-tree/firmware/android/
[ 2.555116] init: [libfs_mgr]ReadDefaultFstab(): failed to find device default fstab
[ 2.560762] init: First stage mount skipped (missing/incompatible/empty fstab in device tree)
[ 2.566906] init: Skipped setting INIT_AVB_VERSION (not in recovery mode)
[ 2.571227] init: execv("/system/bin/init") failed: No such file or directory
[ 2.593768] init: #00 pc 00000000000e90a0 /init
[ 2.599958] reboot: Restarting system with command 'bootloader'

我刚刚编辑了我的 /etc/fstab 文件,如下所示:

UUID=84d024e0-c8c7-42c0-ad3e-c3e0c1cacdb7 / ext4 acl,user_xattr,noatime,errors=remount-ro 0 1

还有这样的:

UUID=84d024e0-c8c7-42c0-ad3e-c3e0c1cacdb7 / ext4 defaults,acl,user_xattr,noatime,errors=remount-ro 0 1

但错误仍然存​​在:

sending incremental file list
rsync: [generator] failed to set permissions on "/home/ziomario/Scrivania/antmicro/aosp_images/system-rw/bin": Operation not supported (95)
rsync: [generator] failed to set permissions on "/home/ziomario/Scrivania/antmicro/aosp_images/system-rw/bugreports": Operation not supported (95)
rsync: [generator] failed to set permissions on "/home/ziomario/Scrivania/antmicro/aosp_images/system-rw/charger": Operation not supported (95)
rsync: [generator] failed to set permissions on "/home/ziomario/Scrivania/antmicro/aosp_images/system-rw/d": Operation not supported (95)
.....
rsync: [generator] failed to set permissions on "/home/ziomario/Scrivania/antmicro/aosp_images/system-rw/system/usr/icu": Operation not supported (95)

sent 109,493 bytes received 1,223 bytes 221,432.00 bytes/sec
total size is 1,354,488,586 speedup is 12,233.90
rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1330) [sender=3.2.3]

这也很有趣:

root@Z390-AORUS-PRO:/home/ziomario/Scrivania/antmicro/aosp_images# sudo mount -o remount,acl /

root@Z390-AORUS-PRO:/home/ziomario/Scrivania/antmicro/aosp_images# sudo rsync -avxHAX system-r{o,w}/

sending incremental file list
rsync: [generator] failed to set permissions on "/home/ziomario/Scrivania/antmicro/aosp_images/system-rw/bin": Operation not supported (95)
rsync: [generator] failed to set permissions on "/home/ziomario/Scrivania/antmicro/aosp_images/system-rw/bugreports": Operation not supported (95)
rsync: [generator] failed to set permissions on "/home/ziomario/Scrivania/antmicro/aosp_images/system-rw/charger": Operation not supported (95)

等等。

有人知道我为什么会收到这些错误以及如何修复它们?谢谢。

答案1

经过数小时的搜索,我发现了以下问题:

由于 rsync 3.2.3 / glibc 错误,使用 rsyncd 恢复的文件的所有者、组和权限不正确。

Ubuntu 20.04 中的 rsync 3.1.3 工作正常,而 Ubuntu 20.10、21.04 中的 rsync 3.2.3 出现此问题:

rsync.log: 
rsync: [receiver] failed to set permissions on "/some_file": Operation not supported (95)

这是由于 Ubuntu 20.10、21.04、Fedora 33 beta 等中的 glibc 错误造成的。

如果你遇到此类错误,请将 rsync 从 3.2.3 升级到(截至本文撰写之日 2021 年 7 月 3 日)至少 3.2.4dev

也可以看看:rsync github 问题 109

您可以在这里下载最新版本的 rsync: rsync 源代码

这里是安装说明: rsync 安装

此致

比特兰诺

答案2

经过几个小时的处理,我终于找到了解决办法。对我来说,这个办法很管用,希望其他人也能从中受益。

顺便说一句,我在 2021 年的 Apple Silicon 上的 Ubunutu 21.04 上运行了它。

cd ~ && \
    mkdir tmp && \
    cd tmp && \
    python3 -mpip install --user commonmark && \
    wget https://github.com/WayneD/rsync/archive/be3d6c0fbbd07781bbae6261cda109f8f08c031b.zip && \
    unzip be3d6c0fbbd07781bbae6261cda109f8f08c031b.zip && \
    cd rsync-be3d6c0fbbd07781bbae6261cda109f8f08c031b && \
    ./md2man --test rsync-ssl.1.md
sudo apt install -y gcc=4:10.3.0-1ubuntu1 && \
    sudo apt install -y g++=4:10.3.0-1ubuntu1 && \
    sudo apt install -y gawk=1:5.1.0-1build1 && \
    sudo apt install -y autoconf=2.69-14 && \
    sudo apt install -y automake=1:1.16.3-2ubuntu1 && \
    sudo apt install -y python3-cmarkgfm=0.4.2-1build3 && \
    sudo apt install -y xxhash=0.8.0-2 && \
    sudo apt install -y zstd=1.4.8+dfsg-2build2 && \
    sudo apt install -y lz4=1.9.3-1ubuntu0.1 && \
    sudo apt install -y acl=2.2.53-10ubuntu1 && \
    sudo apt install -y libacl1-dev=2.2.53-10ubuntu1 && \
    sudo apt install -y attr=1:2.4.48-6build1 && \
    sudo apt install -y libattr1-dev=1:2.4.48-6build1 && \
    sudo apt install -y libxxhash-dev=0.8.0-2 && \
    sudo apt install -y libzstd-dev=1.4.8+dfsg-2build2 && \
    sudo apt install -y liblz4-dev=1.9.3-1ubuntu0.1 && \
    sudo apt install -y libssl-dev=1.1.1j-1ubuntu3.5
 ./configure
 make
 sudo make install
cd ../ && \
    cd ../ && \
    rm -rf tmp/

这将安装所有依赖项以使rsync版本3.2.4dev在 Ubuntu 上运行21.04

感谢大家通过帖子和评论给予的指导:)

相关内容