This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] AM625:FAT32文件时间信息在解析操作系统中不一致

Guru**** 1630180 points
Other Parts Discussed in Thread: SK-AM62
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1342204/am625-fat32-file-time-information-inconsistent-in-deffierent-os

器件型号:AM625
主题中讨论的其他器件:SK-AM62

您好、TI!
     我们在 AM62中使用 FAT32 USB 存储。 我们将文件存储在  USB 存储中。 发现 Windows 和 Linux 中的 USB 存储文件时间信息 不一致。
     初步了解似乎是 am62只使用 UTC 时间保存 FAT32文件?
     您可以帮助添加功能让 FAT32 USB 存储 文件在 windows 和 am62中的时间信息是相同的?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    大家好、Mars

    请提供日志或更多详细信息以显示问题。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Bin、
    我们将文件从 ext4文件系统复制到 FAT32 USB 存储中。 我们不能使用从 ext4到 FAT32 USB 存储器的 cp -p 复制文件。
    它有错误。
    CP:无法保留"./awk"的所有权:不允许操作
    我们希望复制文件的修改时间与源文件相同。 但现在我们只能使用 CP 复制文件,修改时间是不同的。
    有方法来完成它?
    我只知道可以用 touch -t 来后期处理拷贝文件修改时间,但这不是一个好主意。
    TI 可以解决此问题?

    我们的目的是 Linux 文件或 Windows 文件存储在 FAT32 USB 存储中,文件时间信息(如修改时间)。 可以在 Windows show 或 Linux show 中相同,即使它们在不同的时区。
    已出席的错误日志如下所示:

    root@am62xx-evm:/DiskC# mount
    /dev/mmcblk0p4 on / type ext4 (rw,relatime)
    devtmpfs on /dev type devtmpfs (rw,relatime,size=922064k,nr_inodes=230516,mode=755)
    proc on /proc type proc (rw,relatime)
    sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime)
    securityfs on /sys/kernel/security type securityfs (rw,nosuid,nodev,noexec,relatime)
    tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev)
    devpts on /dev/pts type devpts (rw,relatime,gid=5,mode=620,ptmxmode=000)
    tmpfs on /run type tmpfs (rw,nosuid,nodev,size=395412k,nr_inodes=819200,mode=755)
    tmpfs on /sys/fs/cgroup type tmpfs (ro,nosuid,nodev,noexec,size=4096k,nr_inodes=1024,mode=755)
    cgroup2 on /sys/fs/cgroup/unified type cgroup2 (rw,nosuid,nodev,noexec,relatime,nsdelegate)
    cgroup on /sys/fs/cgroup/systemd type cgroup (rw,nosuid,nodev,noexec,relatime,xattr,name=systemd)
    pstore on /sys/fs/pstore type pstore (rw,nosuid,nodev,noexec,relatime)
    cgroup on /sys/fs/cgroup/net_cls,net_prio type cgroup (rw,nosuid,nodev,noexec,relatime,net_cls,net_prio)
    hugetlbfs on /dev/hugepages type hugetlbfs (rw,relatime,pagesize=2M)
    mqueue on /dev/mqueue type mqueue (rw,nosuid,nodev,noexec,relatime)
    debugfs on /sys/kernel/debug type debugfs (rw,nosuid,nodev,noexec,relatime)
    tmpfs on /tmp type tmpfs (rw,nosuid,nodev,size=988532k,nr_inodes=1048576)
    fusectl on /sys/fs/fuse/connections type fusectl (rw,nosuid,nodev,noexec,relatime)
    configfs on /sys/kernel/config type configfs (rw,nosuid,nodev,noexec,relatime)
    tmpfs on /media/ram type tmpfs (rw,relatime,size=16384k)
    tmpfs on /var/volatile type tmpfs (rw,relatime,size=51200k)
    /dev/mmcblk0p3 on /run/media/mmcblk0p3 type ext4 (rw,relatime)
    /dev/mmcblk0p1 on /run/media/mmcblk0p1 type ext4 (rw,relatime)
    /dev/mmcblk0p2 on /run/media/mmcblk0p2 type ext4 (rw,relatime)
    /dev/mmcblk0p5 on /run/media/mmcblk0p5 type ext4 (rw,relatime,sync)
    tmpfs on /run/user/0 type tmpfs (rw,nosuid,nodev,relatime,size=197704k,nr_inodes=49426,mode=700)
    /dev/sda1 on /run/media/sda1 type vfat (rw,relatime,gid=6,fmask=0007,dmask=0007,allow_utime=0020,codepage=437,iocharset=utf8,shortname=mixed,errors=remount-ro)
    root@am62xx-evm:/run/media/sda1# cp -p /usr/bin/awk .
    cp: can't preserve ownership of './awk': Operation not permitted
    root@am62xx-evm:/run/media/sda1#
    root@am62xx-evm:/run/media/sda1# stat /usr/bin/awk
      File: '/usr/bin/awk' -> '/bin/busybox.nosuid'
      Size: 19              Blocks: 0          IO Block: 4096   symbolic link
    Device: b304h/45828d    Inode: 2489        Links: 1
    Access: (0777/lrwxrwxrwx)  Uid: (    0/    root)   Gid: (    0/    root)
    Access: 2024-04-10 10:42:53.000000000 +0900
    Modify: 2018-03-09 21:34:56.000000000 +0900
    Change: 2024-04-10 10:42:52.000000000 +0900
    root@am62xx-evm:/run/media/sda1# cp /usr/bin/awk .
    root@am62xx-evm:/run/media/sda1# stat awk
      File: awk
      Size: 791896          Blocks: 1552       IO Block: 8192   regular file
    Device: 801h/2049d      Inode: 188         Links: 1
    Access: (0770/-rwxrwx---)  Uid: (    0/    root)   Gid: (    6/    disk)
    Access: 2022-10-03 09:00:00.000000000 +0900
    Modify: 2022-10-04 01:12:22.000000000 +0900
    Change: 2022-10-04 01:12:22.000000000 +0900

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    大家好、Mars

    非常感谢您的详细信息。 我明天会不在办公室,但我会在下周研究它,并回到你。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    大家好、Mars

    我在我的 SK-AM62上尝试了"cp -p "、没有看到任何问题。

    root@am62xx-evm:~# date                    
    Thu Apr 28 17:42:50 UTC 2022
    root@am62xx-evm:~# df
    Filesystem                            1K-blocks      Used Available Use% Mounted on
    10.0.0.110:/home/lb/opt/filesys.am62x 894744152 576751800 272468180  68% /
    devtmpfs                                 967560         4    967556   1% /dev                                              
    tmpfs                                    986920         0    986920   0% /dev/shm
    tmpfs                                    394768       768    394000   1% /run
    tmpfs                                      4096         0      4096   0% /sys/fs/cgroup
    tmpfs                                    986920        12    986908   1% /tmp
    tmpfs                                     16384         0     16384   0% /media/ram
    tmpfs                                     51200         0     51200   0% /var/volatile
    /dev/mmcblk0p1                            25844        14     23537   1% /run/media/mmcblk0p1
    /dev/mmcblk1p2                         14839880   6387008   7725080  46% /run/media/root-mmcblk1p2
    /dev/mmcblk1p1                           130798      4108    126690   4% /run/media/boot-mmcblk1p1
    root@am62xx-evm:~# cd /run/media/root-mmcblk1p2
    root@am62xx-evm:root-mmcblk1p2# ls -l /run/media/boot-mmcblk1p1
    total 4108
    -rwxrwx--- 1 root disk 328106 Mar 19  2024 tiboot3.bin
    -rwxrwx--- 1 root disk 935800 Mar 19  2024 tispl.bin
    -rwxrwx--- 1 root disk 847744 Mar 19  2024 u-boot.img
    -rwxrwx--- 1 root disk   1124 Mar 19  2024 uEnv.txt
    root@am62xx-evm:root-mmcblk1p2# cp /run/media/boot-mmcblk1p1/uEnv.txt .
    root@am62xx-evm:root-mmcblk1p2# ls -l uEnv.txt
    -rwxr-x--- 1 root root 1124 Apr 28 17:54 uEnv.txt
    root@am62xx-evm:root-mmcblk1p2# rm -f uEnv.txt
    root@am62xx-evm:root-mmcblk1p2# cp -p /run/media/boot-mmcblk1p1/uEnv.txt .
    root@am62xx-evm:root-mmcblk1p2# ls -l uEnv.txt
    -rwxrwx--- 1 root disk 1124 Mar 19  2024 uEnv.txt
    root@am62xx-evm:root-mmcblk1p2# stat /run/media/boot-mmcblk1p1/uEnv.txt
      File: /run/media/boot-mmcblk1p1/uEnv.txt
      Size: 1124            Blocks: 4          IO Block: 2048   regular file
    Device: 179,1   Inode: 13          Links: 1
    Access: (0770/-rwxrwx---)  Uid: (    0/    root)   Gid: (    6/    disk)
    Access: 2022-04-28 00:00:00.000000000 +0000
    Modify: 2024-03-19 18:44:48.000000000 +0000
    Change: 2024-03-19 18:44:48.860000000 +0000
     Birth: -
    root@am62xx-evm:root-mmcblk1p2# stat uEnv.txt
      File: uEnv.txt
      Size: 1124            Blocks: 8          IO Block: 4096   regular file
    Device: 179,2   Inode: 115600      Links: 1
    Access: (0770/-rwxrwx---)  Uid: (    0/    root)   Gid: (    6/    disk)
    Access: 2022-04-28 00:00:00.000000000 +0000
    Modify: 2024-03-19 18:44:48.000000000 +0000
    Change: 2022-04-28 17:55:03.724000000 +0000
     Birth: 2022-04-28 17:55:03.724000000 +0000
    root@am62xx-evm:root-mmcblk1p2#
    root@am62xx-evm:root-mmcblk1p2# uname -a
    Linux am62xx-evm 5.10.168-00001-g666ee99fe17a-dirty #48 SMP PREEMPT Mon Apr 29 08:34:20 CDT 2024 aarch64 aarch64 aarch64 GNU/Linux

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Bin、

          CP -p 从 ext4 文件系统到 USB 闪存驱动器(FAT32文件系统)吗?
          根据我的测试,这个问题发生从 ext4副本到 FAT32文件系统。
          如果使用从 FAT32到 FAT32的 cp -p,或者 ext4到 ext4文件系统应该不存在此问题。
          您可以看到我的错误日志,我的  USB 闪存驱动器(/run/media/sda1 )被安装为 vfat formate。
          

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    顺便说一下,我们使用 SDK: 09_01_00_08 ,内核版本: 6.1.46-rt13在我们的定制板上。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    大家好、Mars

    我正在从 FAT32复制到 ext4。

    明天我将尝试从 ext4复制到 FAT32,让您知道。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    大家好、Mars

    从 ext4复制到 FAT32时、我没有任何时间戳问题。  仍保留原始时间戳"Feb 24 2023"。

    root@am62xx-evm:~# df
    Filesystem                            1K-blocks      Used Available Use% Mounted on
    10.0.0.110:/home/lb/opt/filesys.am62x 894744152 576778600 272441380  68% /
    devtmpfs                                 966368         4    966364   1% /dev
    tmpfs                                    984672         0    984672   0% /dev/shm
    tmpfs                                    393872       896    392976   1% /run
    tmpfs                                      4096         0      4096   0% /sys/fs/cgroup
    tmpfs                                    984676        20    984656   1% /tmp
    tmpfs                                     16384         0     16384   0% /media/ram
    tmpfs                                     51200         0     51200   0% /var/volatile
    /dev/mmcblk1p1                           130798      4108    126690   4% /run/media/boot-mmcblk1p1
    /dev/mmcblk0p1                            25844        14     23537   1% /run/media/mmcblk0p1
    /dev/mmcblk1p2                         14839880   6387012   7725076  46% /run/media/root-mmcblk1p2
    /dev/sda2                                305191    163492    121318  58% /run/media/root-sda2
    /dev/sda1                                136604      2480    134124   2% /run/media/boot-sda1
    root@am62xx-evm:~# cd /run/media/boot-sda1
    root@am62xx-evm:boot-sda1# ls -l /run/media/root-sda2/boot/k3-am625-sk.dtb
    -rw-r--r-- 1 root root 55666 Feb 24  2023 /run/media/root-sda2/boot/k3-am625-sk.dtb
    root@am62xx-evm:boot-sda1# cp -p /run/media/root-sda2/boot/k3-am625-sk.dtb .
    cp: failed to preserve ownership for './k3-am625-sk.dtb': Operation not permitted
    root@am62xx-evm:boot-sda1# ls -l k3-am625-sk.dtb
    -rwxrwx--- 1 root disk 55666 Feb 24  2023 k3-am625-sk.dtb
    root@am62xx-evm:boot-sda1# date
    Thu Apr 28 17:47:16 UTC 2022

    顺便说一下,在原始的控制台日志中,在用"-p"复制后,没有显示'awk'的时间戳。 因此日志不会显示时间戳是否已保留。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Bin、
         我再次尝试测试。  
         cp -p 可以将 修改 时间戳 从 ext4复制到 FAT32 USB 闪存驱动器。  

          即使它 有一条错误消息、 CP:无法保留"/run/media/sda1/marstest1 "的所有权:操作不允许。
         两个文件修改时间戳 在第二个文件中略有不同。
         一个是 修改:2022年10月09日23:37:01.517000000 +0900,
       Anthor is  Modify: 2022年10月09日23:37:00.000000000 +0900。

    以下列方式登录:

    root@am62xx-evm:~# stat /home/root/marstest1
      File: /home/root/marstest1
      Size: 0               Blocks: 0          IO Block: 4096   regular empty file
    Device: b304h/45828d    Inode: 24839       Links: 1
    Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
    Access: 2022-10-09 23:37:35.301000000 +0900
    Modify: 2022-10-09 23:37:01.517000000 +0900
    Change: 2022-10-09 23:37:01.517000000 +0900
    root@am62xx-evm:~#
    root@am62xx-evm:~# cp -p /home/root/marstest1 /run/media/sda1/
    cp: can't preserve ownership of '/run/media/sda1/marstest1': Operation not permitted
    root@am62xx-evm:~#
    root@am62xx-evm:~# stat /run/media/sda1/marstest1
      File: /run/media/sda1/marstest1
      Size: 0               Blocks: 0          IO Block: 8192   regular empty file
    Device: 801h/2049d      Inode: 192         Links: 1
    Access: (0770/-rwxrwx---)  Uid: (    0/    root)   Gid: (    6/    disk)
    Access: 2022-10-09 09:00:00.000000000 +0900
    Modify: 2022-10-09 23:37:00.000000000 +0900
    Change: 2022-10-09 23:37:00.000000000 +0900
    root@am62xx-evm:~#
    root@am62xx-evm:~# mount
    /dev/mmcblk0p4 on / type ext4 (rw,relatime)
    devtmpfs on /dev type devtmpfs (rw,relatime,size=922064k,nr_inodes=230516,mode=755)
    proc on /proc type proc (rw,relatime)
    sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime)
    securityfs on /sys/kernel/security type securityfs (rw,nosuid,nodev,noexec,relatime)
    tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev)
    devpts on /dev/pts type devpts (rw,relatime,gid=5,mode=620,ptmxmode=000)
    tmpfs on /run type tmpfs (rw,nosuid,nodev,size=395412k,nr_inodes=819200,mode=755)
    tmpfs on /sys/fs/cgroup type tmpfs (ro,nosuid,nodev,noexec,size=4096k,nr_inodes=1024,mode=755)
    cgroup2 on /sys/fs/cgroup/unified type cgroup2 (rw,nosuid,nodev,noexec,relatime,nsdelegate)
    cgroup on /sys/fs/cgroup/systemd type cgroup (rw,nosuid,nodev,noexec,relatime,xattr,name=systemd)
    pstore on /sys/fs/pstore type pstore (rw,nosuid,nodev,noexec,relatime)
    cgroup on /sys/fs/cgroup/net_cls,net_prio type cgroup (rw,nosuid,nodev,noexec,relatime,net_cls,net_prio)
    mqueue on /dev/mqueue type mqueue (rw,nosuid,nodev,noexec,relatime)
    hugetlbfs on /dev/hugepages type hugetlbfs (rw,relatime,pagesize=2M)
    debugfs on /sys/kernel/debug type debugfs (rw,nosuid,nodev,noexec,relatime)
    tmpfs on /tmp type tmpfs (rw,nosuid,nodev,size=988532k,nr_inodes=1048576)
    fusectl on /sys/fs/fuse/connections type fusectl (rw,nosuid,nodev,noexec,relatime)
    configfs on /sys/kernel/config type configfs (rw,nosuid,nodev,noexec,relatime)
    tmpfs on /media/ram type tmpfs (rw,relatime,size=16384k)
    tmpfs on /var/volatile type tmpfs (rw,relatime,size=51200k)
    /dev/mmcblk0p1 on /run/media/mmcblk0p1 type ext4 (rw,relatime)
    /dev/mmcblk0p2 on /run/media/mmcblk0p2 type ext4 (rw,relatime)
    /dev/mmcblk0p5 on /run/media/mmcblk0p5 type ext4 (rw,relatime,sync)
    /dev/mmcblk0p3 on /run/media/mmcblk0p3 type ext4 (rw,relatime)
    /dev/sda1 on /run/media/sda1 type vfat (rw,relatime,gid=6,fmask=0007,dmask=0007,allow_utime=0020,codepage=437,iocharset=utf8,shortname=mixed,errors=remount-ro)
    tmpfs on /run/user/0 type tmpfs (rw,nosuid,nodev,relatime,size=197704k,nr_inodes=49426,mode=700)
    root@am62xx-evm:~#

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    大家好、Mars

          即使它 有一条错误消息 :cp:无法保留"/run/media/sda1/marstest1 "的所有权:不允许操作。

    此消息是预期的,因为 FAT32没有文件所有权。

         两个文件修改时间戳 在第二个文件中略有不同。
         一个是 修改:2022年10月09日23:37:01.517000000 +0900,
       Anthor is Modify:  2022年10月09日23:37:00.000000000 +0900.

    您是否在 SK-AM62上看到了问题? 您使用 RT SDK9.1中的哪个文件系统映像?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Bin、
         我使用 tisdk-base-image。  
          

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您是否在 SK-AM62 EVM 上看到了问题?  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Bin、
         我重申我的问题。
         我 在不同的操作系统中测试不同的时区。
         在 Linux 中, 我的时区是+9,我的文件 TTT.txt  修改 时间状态是2022年10月18日06:50:45。
         我使用 cp -p copy  TTT.txt 到闪存驱动器 t3.txt。 我使用 CP copy  TTT.txt 到 USB 闪存驱动器 T4.txt
         在 windows 中、 我的时区是+8。
         然后  T3.txt 在窗口中修改时间为2022年10月17日 pm 09:50:44。
         Linux 和  Windows 显示不同的时间、因为 时区不同。
         我们希望文件显示 时间信息可以在 Windows show 或 Linux show 中相同,即使它们在不同的时区。
         测试细节如下图所示:

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    大家好、Mars

    Linux 控制台日志未完成。

    请对原始 TTT.txt、t3.txt 和 t4.txt 运行 stat 命令。 我想查看全部3个文件的时间戳。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Bin、

           在图片中添加控制台日志。  
          我们可以看到在不同的操作系统时区,文件时间信息是不同的。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    大家好、Mars

    好了、现在我知道您的问题不是"cp -p "保存时间戳、而是 Linux 和 Windows 中相同的时间戳显示方式不同。 我认为这是因为 Linux 在 UTC 处理时间戳、而 Windows 在当地时区处理 VFAT 时间戳。

    请尝试使用参数' tz = UTC '当使用 mount 命令在 Linux 中装载 VFAT 设备时、以查看这是否可解决时间戳问题。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Bin、
        1. 我使用 cmd ( mount -o remount,usc=UTC /dev/sda1 /run/media/sda1 )重新安装 tz  闪存驱动器
           然后再次进行复制测试。  
          但结果与之前相同(在不同的操作系统时区,文件时间 infomataion 是不同的)。
         2.据我所知,tz 选项只是临时更改当前文件夹时区。
           即使它成功了、我认为它的 时间戳 仍然与原始的 TTT.txt 不同。 因为一个在+9 时区,一个在 UTC+0时区   。
          
          

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    大家好、Mars

    那么我不知道是否有解决方案。 问题是因为不同的操作系统以不同的方式实现了 VFAT 时间戳。