Manjaro+Win10双系统,转换Linux主磁盘为BTRFS
开始前
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
6.压缩新磁盘
退出chroot
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
重建实现,若笔者仍然出错,请妳按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
上面咱们将启动信息增加至GRUB
手动
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 chainsearch --fs-uuid --no-floopy --set=root UUID ## {EFI分区 UUID}chainloader /EFI/Microsoft/Boot/bootmgfw.efi
}
主动
su root
pacman -S 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...