系统盘分区

系统盘分区

我有一块安装了 Ubuntu 16.04 的硬盘,现在我需要安装 Windows 作为第二个操作系统,而不会丢失 Linux 中的任何数据。如果我理解正确的话,可以通过创建一个分区并在新分区上安装 Windows 来完成。但是,我不知道如何在 ext4 文件系统中创建分区表,尤其是当它是系统磁盘时。

GParted 屏幕

我还尝试通过从闪存驱动器启动并卸载 sda3 来创建新的分区表以创建分区,但没有成功。

如何在不丢失任何数据和 Linux 稳定性的情况下创建分区表?也欢迎使用其他方法。

答案1

您无法在 ext4 文件系统上创建分区。磁盘的开头有一个分区表(传统 BIOS 类型或 GTP),它描述了磁盘上有多少个分区以及分区大小。文件系统在这些分区上创建。(Windows 为 NTFS 文件系统,Linux 为 EXT4 或其他几种类型。

对于你的情况你必须这样做:

  1. 首先备份你的重要数据。这很重要。
  2. 从 U 盘启动 Linux(或任何来源,除了系统盘)
  3. 调整 ext4 分区的大小(缩小)。您无法缩小已安装的分区,因此您必须从外部源启动。
  4. 调整系统虚拟分区的大小,使其与缩小后的 ext4 大小相匹配。为了安全起见,我建议您使用比 ext4 大小稍大一点的大小。因为您使用的是 lvm,所以您可以使用 lvresize 来执行此操作。您甚至可以使用 lvresize --resizefs 选项一次执行步骤 3.+4.,这是最安全的选项。
  5. 现在您必须使用 pvresize 来减小物理卷。选择所有未来 Linux 分区所需的大小(您可以使用 lvm 动态创建分区)。
  6. 现在删除并重新创建底层 GPT 分区。如果您删除并重新创建分区,则必须从新分区开始相同的扇区位置比您删除的分区要高,否则您将丢失 lvm 数据(很可能是您的文件系统)。
  7. 现在您可以为 Windows 创建一个新分区(或者您可以让它创建)。(在此之前,我会检查是否可以启动 Linux)。

关键命令是(全部以 root 身份运行,或以 sudo 开始):

# to list your logical volumes with phyisical pv-s
lvs -o +devices
# if you want 20G linux  system disk 
lvresize -r /dev/ubuntu-gnome-vg/your-system-lv-name 20G
# if you want preserve 500G for linux (you can use this space for anything)
pvresize --setphysicalvolumesize 500G /dev/sda3
# now resize the 3rd partition on disk1 to 500G (maybe a bit bigger for safety)
fdisk/parted/gparted
# after a reboot you can match up your pv exactly with the physical partition with (this is useful if you used the safe method and created a bit bigger partition eg.510G)
pvresize /dev/sda3

虽然它运行完美(我做过几次),但这种方法有点高级,不适合初学者。如果您对 lvm/gpt 不太熟悉,备份您的 linux 文件系统可能更简单(从启动 cd 安装它,tar+gzip 整个文件系统并复制到 pendrive/外部 hdd 上)然后创建两个分区(实际上是三个,保留小的 efi,一个分区用于 win,一个分区用于 linux),安装 windows,然后从 tar.gz 重新创建您的 linux 文件系统。无论如何您都应该备份,所以即使您选择前一种方法,这也可以作为您的备份计划!

其他注意事项:您的 Windows 可能会(而且很有可能)覆盖您的启动管理器(例如 grub),并且您的 Linux 将无法启动。如果是 UEFI/GPT,您可以选择您的操作系统,在旧系统上,您必须重新安装 grub。这很简单,只需从 usb 启动,chroot 到系统文件系统并 grub-install /dev/yourharddiskdevname。许多安装 usb(debian、ubuntu)可以从您的磁盘启动(您不必 chroot)。

答案2

根据我的经验,先安装 Windows 然后再安装 Linux 更容易。

但是,Windows 通常需要一个NTFS分区。Windows 会覆盖grub2 启动管理器有自己的窗户引导加载程序。虽然grub2可以处理启动 Windows 和 Linux(选择菜单和 < n > 秒后的默认启动),但 Windows 引导加载程序只加载 Windows 操作系统。

  1. 备份系统
  2. 调整 Linux 分区的大小
  3. NTFS创建新分区并使用文件系统格式化它
  4. NTFS从 Windows 安装程序媒体 (dvd/usb) 启动并在分区上安装 Windows
  5. 启动 Linux Live 安装程序媒体
  6. chroot 你的 linux 分区并修复 grub2(更新/重新安装)

完毕

相关内容