共计 2835 个字符,预计需要花费 8 分钟才能阅读完成。
开始前
1. 开始转换前,请用 Diskgen(或同类软件)将分区表和所有分区备份,转换磁盘格式是危险操作,转换为 BTRFS 时失败或数据失落案例很多。
2. 若不理解 BTRFS,请浏览“https://wiki.archlinux.org/ti…”。
3. 笔者是 Manjaro(arch)+Win10,别离在不同硬盘。
步骤
1. 进入 LiveCD 环境
2. 查错并转换
su root
fsck.ext4 /dev/{Linux 主磁盘} #查看分区问题。
btrfs-convert /dev/{Linux 主磁盘} #转换分区为 BTRFS,请确保曾经备份分区表和所有分区。
“conversion complete”即“转换实现”。
3. 批改 fstab
mount /dev/{Linux 主磁盘} /mnt #为了使你间接复制命令,挂载分区到 /mnt。
lsblk -f #获得所有磁盘的 UUID。
blkid /dev/{Linux 主磁盘} #获得某磁盘的 UUID。
vim /mnt/etc/fstab #批改 fstab,将 UUID 改为 {Linux 主磁盘} 的{新 UUID}。
格局
UUID={新 UUID} / btrfs compress=zstd,discard,ssd,defaults,rw,relatime,space_cache=v2,subvol=/@ 0 0
“SSD”即“固态硬盘优化”,“discard”即“关上 Trim”,肯定要保障 SSD 反对 TRIM,否则将会失落数据。应用 lsblk –discard 查看,DISC-GRAN (discard granularity) 和 DISC-MAX (discard max bytes) 列非 0 示意该 SSD 反对 TRIM 性能。“compress=zstd”即应用 ZSTD 压缩,这是比 ZLIB 性能更强的算法。
4. 进入原零碎环境
mount -t proc none /mnt/proc
mount -t sysfs none /mnt/sys
mount -o bind /dev /mnt/dev
chroot /mnt bash
5. 重建初始化内存盘
mkinitcpio –preset linux
若“Fail to load preset”,则 vim /etc/mkinitcpio.d 后 wq
退出 chroot
6. 压缩新磁盘
btrfs filesystem defragment -r -v -czstd /mnt #应用 zstd 压缩磁盘
btrfs subvolume delete /mnt/ext2_saved #删除备份子卷
btrfs balance start /mnt #用 Balance 回收数据
btrfs balance status /mnt
7. 重建 GRUB
chroot /mnt bash #再次进入 chroot
mount /dev/nvme0n1p1 /mnt #将 EFI 分区挂载为分区,有人用 –efi-directory=/boot 间接重建,自己失败,报错“/boot doesn’t look like an EFI partition(/boot 看起来不像 EFI 分区)”
grub-install –target=x86_64-efi –bootloader-id=GRUB –efi-directory=/mnt –no-nvram –removable
grub-mkconfig -o /boot/grub/grub.cfg
umount /mnt
GRUB 重建实现,出错请按 Troubleshots 排查。非双系统至此完结。
8. 重建 Win10 的 EFI 疏导
pikaur -S woeusb-gui #GUI 版
yay -S woeusb #装置 woeusb 命令行版,以创立 win10 装置 U 盘
sudo woeusb –device Win10_64_21H1.iso /dev/{U 盘} –tgt-fs NTFS #写入 WIN10 官网装置镜像。–device 即全盘写入。
U 盘启动后进入命令行界面
bcdboot C:\windows
尔后可重启主动进入 WIN10
8.1 上面咱们将启动信息增加至 GRUB
8.1a 手动
vim /boot/grub/grub.cfg
找到 ### BEGIN /etc/grub.d/30_os-prober ### 和 ### END /etc/grub.d/30_os-prober ###
如下插入
menuentry ‘Microsoft Windows 10’ {
insmod part_gpt ## -> 当初个别是 gpt 格局的硬盘
insmod fat
insmod chain
search --fs-uuid --no-floopy --set=root UUID ## {EFI 分区 UUID}
chainloader /EFI/Microsoft/Boot/bootmgfw.efi
}
8.2b 主动
su root
pacman -S os-prober
sudo os-prober
grub-mkconfig -o /boot/grub/grub.cfg
9. 喝杯咖啡劳动一会儿吧,全副实现!
Troubleshots
转换失败
应用全盘备份镜像和分区表进行复原,或应用转换时生成的备份子卷 /ext2_saved 进行复原。
btrfs-convert -r /dev/target_partition #复原
error-unknown-filesystem-type-btrfs
mkinitcpio -P
仍然无奈解决请参考(若死链,请 archive.website)
https://archived.forum.manjar…
error: /boot doesn’t look like an EFI partition.
chroot /mnt bash #进入原零碎
mount /dev/{EFI 分区} /mnt
grub-install –target=x86_64-efi –bootloader-id=GRUB –efi-directory=/mnt –no-nvram –removable
GRUB 没有图形界面
vim /etc/default/grub
GRUB_TIMEOUT_STYLE=menu #显示菜单
error: sparse file not allowed
vim /etc/default/grub
GRUB_SAVEDEFAULT=false
GRUB_DEFAULT=0
rm /boot/grub/grubenv
grub-editenv /boot/grub/grubenv create
grub-install
update-grub
参考资料
https://blog.samchu.cn/posts/…
https://wiki.archlinux.org/ti…
https://qsdrqs.site/2021/01/e…
自我介绍
如果想理解我,就请以我所有的信息为原料进行推理吧。
If you wish to understand me, please inference from all information on my blog.
https://oynos.gitbook.io/
2021.8.18