我有一台笔记本电脑(华硕 harman/kardon),有两个驱动器,一个小型 SSD 和 1TB HDD。它自带的 Windows 安装在 SSD 上,而我在 HDD 上安装了 linux。
由于我几乎只使用 linux 分区,有没有办法可以简单地将 linux 分区切换到另一个驱动器并将 Windows 放在 HDD 上(我不想丢失我的 Windows 许可证)。
我想保持 Linux 映像的原样,如果我必须从头开始恢复 Windows,那就没问题了。
我知道我可能需要额外的空间,并且我有一个足够大的外部驱动器来容纳这两个分区。
那么,是否可以将 Linux 交换到 SSD 并将 Windows 交换到 HDD,而不必重新开始?
尝试 1
我缩小了硬盘上的 Linux 分区,为 Windows 分区腾出空间。然后我创建了一个 Windows 安装盘,用于在硬盘上安装 Windows。不幸的是,这个安装盘会拾取其他 Windows 安装。它还只给我一个“立即安装”按钮,这很没用,因为我不知道它会安装在哪里。
看来我必须物理移除 SSD,将我的 Linux 内容从 HDD 保存到其他地方,然后运行 Windows 安装并让其控制(因为无论如何哪种用户都需要控制操作系统?)。还有其他想法吗?有没有办法强制 Windows 安装在特定位置?
更新
我在 HDD 上创建了一个分区,并设法在上面安装了 Windows。然后我重新格式化了 SSD(保留启动分区不变),并使用 rsync(来自链接的问题)将所有数据从旧驱动器复制到新驱动器。
然后我运行了sudo grub-install <SSD>
,但在启动时,grub 只拾取了 HDD 上的安装(以及它始终具有的 Windows 启动管理器)。我是否漏掉了某个步骤?从新的“安装”启动时,我是否需要以某种方式运行 grub-install?如果是这样,我该如何从它启动?
编辑:看来我需要切换到新的“安装”。但是,执行此操作时,我丢失了要安装 grub 的磁盘 (/dev/nvme0n1)。有没有办法设置 grub,以便当它启动并且此磁盘存在(我知道它会存在)时,它会工作?
答案1
所以我终于成功了,这确实花了很多功夫,但已经完成了,而且似乎运行良好(而且速度快得多)。剩下唯一要做的事情就是处理交换,它仍然在硬盘上。
步骤1:
制作一个 Linux 实时磁盘,启动它并缩小硬盘空间以留出足够的空间安装 Windows(不必担心确切的大小,因为分区最终会调整大小)。我使用 Linux 实时磁盘是因为我喜欢 gparted,我无法在正在运行的 Linux 系统上执行此操作,因为该驱动器已安装并且无法调整大小。
注意 - 安装 Windows 后,您无法移动 Windows 分区。我假设您可以。这意味着如果 Linux 分区位于硬盘的开头(就像我的情况一样),那么该空间最终会被浪费。我建议将所有内容移动到驱动器的末尾,然后将 Windows 分区放在开头,因为它始终可以扩展(但这需要相当长的时间)
第2步:
制作 Windows 启动盘 - 可以做到在 Windows 网站上理想情况下,这应该放在第二个闪存驱动器上,因为当(不是如果)出现问题并且您必须重新开始时,您不必制作新的 Linux 磁盘。
步骤3:
安装 Windows,单击“立即安装”,然后继续操作直到它让您选择一个分区,选择您在调整硬盘大小时创建的分区(它甚至不必格式化,Windows 会利用驱动器上的可用空间完成其工作)。让 Windows 完成其工作。当您首次登录新的 Windows 安装时,它将验证许可证密钥。
步骤4:
从原始 Windows 安装中复制您想要的所有内容。
步骤5:
从您的实时磁盘(不是安装在 HDD 上的磁盘)重新启动 Linux。销毁 SSD 并创建一个 ext4 分区。确保一开始不要触碰 FAT32 分区,这是启动分区,非常重要。
第 6 步:
将所有内容 rsync 到新驱动器。这涉及安装旧磁盘和新磁盘并同步所有内容(某些内容可能会失败,例如 /proc/devices,这没关系,但请确保您是 root 用户)。这看起来像:
mount /dev/sda2 oldDisk/ #the existing linux partition
mount /dev/nvme0n1p2 newDisk/ #The new, empty partition on SSD
rsync -avz oldDisk/ newDisk
步骤7:
重新启动到您原来的 Linux 安装(这可能也适用于实时闪存驱动器)。
mount /dev/nvme0n1p2 /mnt #Mount the new drive somewhere
mount --bind /dev /mnt/dev/
grub-install --boot-device=/mnt /dev/nvme0n1 #note this is the whole device, not just the patition (akin to /dev/sda)
update-grub #so the new stuff is picked up.
这是概述这里。
这应该就是全部了。我已经清理了 Linux 安装。Windows 启动管理器看起来终于可以正常工作了(我猜只需要几个重启周期)。
它留下了旧的 Linux 安装,我还没有清理。我也不知道如何清理 Windows 启动管理器,因为它也因缺少 Windows 安装而有点混乱,但至少它可以启动。