将 /home 移动到同一驱动器上的不同分区后程序无法运行

将 /home 移动到同一驱动器上的不同分区后程序无法运行

我正在运行 Arch,并且没有遇到任何困难,直到我将我的主目录移动到同一驱动器上的不同分区。事件的顺序:

  1. 将其他分区格式化为ext4;将其挂载到/mnt
  2. 将 /home 的内容移动到 /mnt
  3. 将新分区添加到fstab,挂载到/home
  4. 注销,然后重新登录。
  5. 所有文件占

最初,当我跑步时,我感到有些奇怪startxxauth尝试锁定超时Xsession,但这似乎已自行解决。我的主目录中有几个程序(游戏)在移动之前运行良好,但现在根本无法运行。没有错误,没有闪点/打嗝。没有什么。

这是一个strace

$ strace ./FTL
execve("./FTL", ["./FTL"], 0x7ffde9035740 /* 29 vars */) = -1 ENOEXEC (Exec format error)
openat(AT_FDCWD, "/usr/share/locale/locale.alias", O_RDONLY|O_CLOEXEC) = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=2997, ...}) = 0
read(3, "# Locale name alias data base.\n#"..., 4096) = 2997
read(3, "", 4096)                       = 0
close(3)                                = 0
openat(AT_FDCWD, "/usr/share/locale/en_US.UTF-8/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/share/locale/en_US.utf8/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/share/locale/en_US/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/share/locale/en.UTF-8/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/share/locale/en.utf8/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/share/locale/en/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
fstat(2, {st_mode=S_IFREG|0644, st_size=1076, ...}) = 0
write(2, "strace: exec: Exec format error\n", 32strace: exec: Exec format error
) = 32
getpid()                                = 11516
exit_group(1)                           = ?
+++ exited with 1 +++

我不确定问题是什么。看起来,如果文件在移动后仍然存在,那么一切都应该没问题。还有其他人看到问题是什么或者对问题可能是什么有其他想法吗?


有几个程序正在执行此操作,但我的主目录中也有其他程序运行得很好。


更新: 我发现了这个问题,但我不明白发生了什么。也许有人可以解释,或者提出一个合理的理论。

搬家并没有我希望的那么顺利,所以我做了很多diff检查。所有文件都存在(或仅在新分区上),所以我认为我可以继续了。今天查看,发现很多文件都是0字节。

mount /dev/sda6 /mnt
mkdir /mnt/allen
cd /home/allen
mv * /mnt/allen/
# got some "target dir is not empty" errors, so tried rsync
cd ..
rsync -var allen /mnt/
# did extensive diff'ing and file names look good; thumbs up?
sync
umount /mnt/
mount /dev/sda6 /home

这大致就是我所做的。我没看到它横到哪里去了。我现在已恢复并运行,没有任何问题,但如果有人看到导致某些文件为 0 字节的原因,我很乐意学习新的东西。

相关内容