Remove Windows dual system
Table of Contents
Preface
我想所有人的电脑启蒙都是 Windows,我也不例外。之后开始正式学习计算机难免不会开始接触 Linux 系统,于是大多数人的电脑都是双系统了。我也使用了很久的双系统,不过我发现我已经几乎不会打开 Windows 的系统了,于是决定找一个时间把 Windows 系统完全删除。就算是意外情况需要使用 Windows 系统,也有 kvm 虚拟机可以替代。特此记录一下折腾的过程。
Main
informations
我的情况可能有一点特殊,我的两个电脑系统是安装在了两个不同的固态硬盘之上的。原有的硬盘是 512G,新的硬盘是 1T,所以我更加倾向于彻底格式化原来的硬盘。因此我需要把 efi 分区更新到新的硬盘上面来。不过我想绝大部分的过程都是一致的。
update EFI
EFI 分区是电脑从 bios 启动之后,选择操作系统的入口。所以我们第一步就是要把 EFI 分区从原来的硬盘移动到新硬盘上面。
在移动之前,我们需要进行分区操作。我们需要在新的硬盘头分出一个空区域,用来作为 EFI。所幸,我的系统第一个分区是 swap 分区,而不是系统的根目录,我们操作分区可以不必那么小心了。
首先需要使用命令查看自己电脑的硬盘情况。
lsblk -o NAME,FSTYPE,MOUNTPOINT,PARTTYPENAME,SIZE
确认好硬盘情况之后,我们就可以正式开始操作了。
# 所有的硬盘都作为一个文件放在了 /dev 之下 sudo swapoff /dev/nvme1n1p1 # 关闭 swap
sudo fdisk /dev/nvme1n1
接下来我们进入了一个交互界面,所有的操作在输入 w 之前都是不会实际发生的。
p打印分区表d 1删除旧的 swap 分区n 1新建分区,起始扇区使用默认(2048), 结束扇区+512Mt 1 1更改刚刚新建的分区的类型为 EFIn新建 swap 分区,全部使用默认,会使用所有剩下的空间。w保存并退出。
格式化新分区
sudo mkfs.vfat -F 32 /dev/nvme1n1p1 sudo mkswap /dev/nvme1n1p4 # 假设新 swap 编号是 4 sudo swapon /dev/nvme1n1p4
迁移引导文件
sudo mkdir /mnt/new_efi sudo mount /dev/nvme1n1p1 /mnt/new_efi sudo rsync -av /boot/efi/ /mnt/new_efi/
接下来我们需要修改 /etc/fstab ,让默认挂载的分区变成我们新修改的分区。我们修改了 EFI 和 swap,因此我们需要更新他们的 UUID。使用 lsblk -f 获取对应分区的 UUID。
刷新配置
sudo umount /boot/efi sudo mount /boot/efi # 此时它会根据 fstab 挂载到 nvme1n1p1 sudo grub-install /dev/nvme1n1 sudo update-grub sudo umount /mnt/new_efi/ sudo rm /mnt/new_efi/ -r
对于我是用的 Debian 系统还需要更新 /etc/initramfs-tools/conf.d/resume ,把 UUID 换成新的 swap 分区,然后 update-initramfs -u.
接下来就是重启测试了。
remove Windows
sudo umount /dev/nvme0n1?* # 取消挂载分区 sudo wipefs -a /dev/nvme0n1 sudo fdisk /dev/nvme0n1 # 创建新分区 注意第一个命令应该输入 g 以创建2现代的 GPT 分区表 sudo mkfs.ext4 /dev/nvme0n1p* # 格式化新分区
我希望在旧的硬盘里面分出大概一半的空间用来备份数据。因此我在分区之后还需要设置好硬盘的自动挂载,还要修改 /etc/fstab ,增加:
UUID=你的UUID /home/user/Backup ext4 defaults,noatime,nofail,x-systemd.device-timeout=30s 0 2
挂载分区
sudo mount -a sudo chown -R user:user /home/user/Backup
UUID=你的UUID /home/kazure/Backup ext4 defaults,noatime 0 2
TODO update grub
很神奇的是清理失败了。
接下来就是需要清理 grub 了,使用这个命令输出当前的 UEFI 启动项。
efibootmgr
找到想删除的系统 BootOrder, sudo efibootmgr -b <BootOrder> -B