由于 /usr 太大,将其移动到另一个磁盘,但现在我的系统无法启动?

由于 /usr 太大,将其移动到另一个磁盘,但现在我的系统无法启动?

目前,我已经安装了 arch 安装(纯 arch + hyprland),因此我的 /(根目录)位于我的 NVME SSD 上(由于 Windows 双启动,空间很小),但我的 /home 目录位于我的 SSHD 上(SSD 和 HDD 的混合,但可以安全地将其视为 HDD),因为它具有更大的存储空间。但是,由于安装了更多软件包、驱动程序等,它变得太大而无法放在我的 SSD 上,因此我遵循了一些指南问库本图超级用户以及其他一些基本上说了同样事情的网站。按照他们的说法,我启动了一个活动磁盘,安装了两个驱动器。以下是系统上的所有驱动器和分区供参考(root 是 nvme0n1p8,home 是 sda5,usr 的目标是 sda6)运行rsync -avh "/mnt/usr/" "sda6mnt/",编辑 etc/fstab 并重新启动。但是重启后我得到了这个屏幕

为了解决这个问题,我回到了活动磁盘,但这次安装了所有驱动器像这样(即,所有操作完成后它们应该如何)。然后运行genfstab -U /mnt >> /mnt/etc/fstabvim进入 fstab 并对其进行编辑以删除之前的设置,最后得到我觉得它看起来不错,所以我重新启动了,但遇到了与之前相同的错误。

所以是的,我希望有人能帮助我找出这里出了什么问题,或者我在分区或创建 fstab 时犯了一些错误,提前谢谢!

附言:对于图片,我感到很抱歉,但是我没有采集卡,而且显然无法在 Arch 恢复外壳中截取屏幕截图 :)

答案1

由于 /usr 包含大部分主操作系统,因此无法真正挂载经过同一操作系统(例如,您还没有 /usr/bin/mount),而是必须在启动过程的早期由 initramfs 挂载。虽然发行版过去支持通过常规 fstab 稍后挂载 /usr,但 Arch(或 Debian、Gentoo 或 Fedora)不再如此。

使用常规 Arch mkinitcpio,编辑/etc/mkinitcpio.conf以启用usr钩子;然后使用重建 initramfs mkinitcpio -P。请参阅文章. (尽管由于您正在使用 Btrfs,您可能通常希望将 initramfs 完全切换到“systemd”。)

(但实际上,我认为将 / 的其余部分保留在 SSD 中没有什么意义。没有 /usr,SSD 上只剩下 /var 和 /etc,这两个文件都很小而且很少使用——在台式电脑上,将 /var 存储在最快的磁盘上似乎是一种浪费;基本上它只有日志。我宁愿投资购买更大的 NVMe SSD——现在你几乎可以以同样的价格买到 2TB——或者缩小 Windows 安装以腾出空间给 /usr。)

还请记住,rsync -a不会复制所有元数据;您还需要-HAX保留硬链接、文件 ACL 和扩展属性。(例如,有几个“setuid 类”二进制文件已分配文件功能。)

相关内容