总体感受
AI真的屌爆了,他很会,而且几乎不出错。什么样的异常它都能处理
故事背景
我需要备份一个ubuntu的系统,安装了一大堆软件,还有系统配置什么的。
新拿到一个空的固态盘 ,目标拷贝到这个盘里,然后这个盘能作为系统启动盘启动,和原先的盘起来后一毛一样。
可是,原先的系统,盘大小960G(使用空间85G),新盘大小 240G。
我的困难
既不太懂什么磁盘分区,也不太懂什么系统引导,启动EFI , Boot. 网上看到说直接dd命令拷贝,但是目的盘太小, 不能保证数据不丢。
所以需要格式化新盘,创建系统分区,挂载文件系统,然后通过文件系统拷贝方式考到目的盘上。然后修改一下它的启动标记什么的,让他能作为系统盘启动。(AI讲的)
我的操作
- lsblk -f 显示原始盘,目标盘
- 对目标盘分区,格式化,设置文件系统的格式
sudo fdisk /dev/sdb # 创建GPT分区表,依次添加上述分区 交互参数指定分区大小
sudo mkfs.ext4 /dev/sdb2 # 格式化根分区
sudo mkfs.vfat /dev/sdb1 # 格式化EFI分区
- 重新挂载分区
# 创建临时挂载目录
sudo mkdir -p /mnt/{src_root,src_efi,dst_root,dst_efi}
# 挂载源盘分区
sudo mount /dev/sda2 /mnt/src_root # 挂载源根分区
sudo mount /dev/sda1 /mnt/src_efi # 挂载源EFI分区
# 挂载目标盘分区
sudo mount /dev/sdb2 /mnt/dst_root # 挂载目标根分区
sudo mount /dev/sdb1 /mnt/dst_efi # 挂载目标EFI分区
- 使用rsync克隆文件
sudo rsync -aAXv --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/lost+found","/boot/efi/*"} /mnt/src_root/ /mnt/dst_root/
# 单独克隆EFI分区内容
sudo rsync -aAXv /mnt/src_efi/ /mnt/dst_efi/
- 修改为启动盘
sudo mount /dev/sdb1 /mnt/dst_efi
sudo mkdir -p /mnt/dst_efi/EFI
sudo mount --bind /dev /mnt/dst_root/dev
sudo mount --bind /proc /mnt/dst_root/proc
sudo mount --bind /sys /mnt/dst_root/sys
sudo mount --bind /run /mnt/dst_root/run # 关键:解决"/cow"错误
sudo chroot /mnt/dst_root
# 确保EFI目录在Chroot环境中的路径正确
mkdir -p /boot/efi
mount /dev/sdb1 /boot/efi # 在Chroot内挂载EFI分区
# 安装GRUB
grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=Ubuntu
update-grub
# 退出前卸载
umount /boot/efi
exit
sudo parted /dev/sdb print
sudo parted /dev/sdb set 1 esp on
sudo parted /dev/sdb set 1 boot on
- 完成 验证
ls /mnt/dst_efi/EFI/ubuntu # 应包含grubx64.efi等文件
然后拿着新盘去启动,进bios然后选择这个 bootloader-id=Ubuntu 启动项
然后依次启动就搞定了
再次感慨
这让我去网上搜索,都是什么dd 什么的垃圾指导。既浪费时间,又误导观众。
直接不需要什么搜索引擎了,以后就是智能问答了。 再加上娱乐新闻什么的。 词条搜索什么的,吃灰吧