乐趣区

关于Manjaro:ManjaroWin10双系统转换Linux主磁盘为BTRFS

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 chain
search --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…

退出移动版