manjaro交换系统的opt分区和根分区

  由于三年前安装Linux时的计划失误,给home分区160G,/分区50G,/OPT分区90G,想着把大型软件安装到opt分区就行了,哪知道,造成随便更新动辄提醒空间不足,到今天终于是不能更新了。当前的情况是opt分区根本用不完,还有50G空间,而/分区占用了47G,唯一庆幸的是opt的分区足够大,满足以下的操作条件。目标是将根分区和opt分区交换,操作过程如下:

1. 查看/etc/fstab文件获取分区信息如下:

UUID=6436-456A                            /boot/efi      vfat    umask=0077 0 2
     UUID=91aca89c-c960-457a-8370-d35f8302a539 /home          ext4    defaults,noatime 0 2
     UUID=d1c5d134-e413-4891-89dc-ca8b17de6323 /              ext4    defaults,noatime 0 1
     UUID=d6507961-a18d-41a0-b3b4-0677f7a9f557 /opt           ext4    defaults,noatime 0 2

2. 将/分区文件复制到opt分区,我借助了一个manjaro的usb live cd,启动进入系统

3. 先将opt分区的(主要是安装的一些大型软件)归拢,切换到opt分区后,

sudo mkdir oldopt ;  
sudo mv fileName oldopt\

4. 用命令sudo cp -a \根分区的信息(一般是UUID)  \opt(UUID) 

5. 修改新根分区的/etc/fstab,

UUID=6436-456A                            /boot/efi      vfat    umask=0077 0 2
     UUID=91aca89c-c960-457a-8370-d35f8302a539 /home          ext4    defaults,noatime 0 2
     UUID=d1c5d134-e413-4891-89dc-ca8b17de6323 /opt              ext4    defaults,noatime 0 2
     UUID=d6507961-a18d-41a0-b3b4-0677f7a9f557 /           ext4    defaults,noatime 0 1

6. 修改grub文件

复制代码
### BEGIN /etc/grub.d/40_custom_proxy ###

menuentry "Manjaro LinuxN (24.2.1) (位于 /dev/nvme1n1p9) (位于 /dev/nvme0n1p8)" --class gnu-linux --class gnu --class os $menuentry_id_option 'osprober-gnulinux-/boot/vmlinuz-6.12-x86_64--d1c5d134-e413-4891-89dc-ca8b17de6323' {
                savedefault
                insmod part_gpt
                insmod ext2
                search --no-floppy --fs-uuid --set=root d6507961-a18d-41a0-b3b4-0677f7a9f557
                linux /boot/vmlinuz-6.12-x86_64 root=UUID=d6507961-a18d-41a0-b3b4-0677f7a9f557 rw acpi=force quiet apparmor=1 security=apparmor udev.log_priority=3
                initrd /boot/intel-ucode.img /boot/initramfs-6.12-x86_64.img
}
### END /etc/grub.d/40_custom_proxy ###

### BEGIN /etc/grub.d/41_os-prober_proxy ###
menuentry "Manjaro Linux (24.2.1) (位于 /dev/nvme0n1p8)" --class manjarolinux --class gnu-linux --class gnu --class os $menuentry_id_option 'osprober-gnulinux-simple-d1c5d134-e413-4891-89dc-ca8b17de6323' {
        savedefault
        insmod part_gpt
        insmod ext2
        search --no-floppy --fs-uuid --set=root d1c5d134-e413-4891-89dc-ca8b17de6323
        linux /boot/vmlinuz-6.12-x86_64 root=UUID=d1c5d134-e413-4891-89dc-ca8b17de6323 rw acpi=force quiet apparmor=1 security=apparmor udev.log_priority=3
        initrd /boot/intel-ucode.img /boot/initramfs-6.12-x86_64.img
}
### END /etc/grub.d/41_os-prober_proxy ###
复制代码

v发现就是grub启动的两个选项,上半部分是我根据下半部分修改的,其实就是修改启动是boot和root的UUID,记得更新下grub.

7. 启动后就可以了,应该是交换成功了,剩下的扫尾工作就是将原来根分区的内容删除,将原来的opt分区内容移动原来的根分区就很简单了,不再赘述。

8. 哪知道,启动后出现了

error: file '/boot/grub/x86_64-efi/normal.mod' not found.
Entering rescue mode...
grub rescue> _

9. 参考https://www.cnblogs.com/guochaoxxl/p/17500405.html,可以启动,但是每次都这样也不行

10. 需要重新将grub安装到efi分区,df之后找到efi分区的信息,

/dev/nvme0n1p8   49G   28G   20G   59% /opt
/dev/nvme0n1p7  157G  144G  4.7G   97% /home
/dev/nvme0n1p1   96M   46M   51M   48% /boot/efi

11. 安装grub

sudo grub-install /dev/nvme0n1p1 
[sudo] nication 的密码:
正在为 x86_64-efi 平台进行安装。
安装完成。没有报告错误。

说明,grub成功安装并更新,启动验证成功没问题。

 

没想到这么简单,我还以为会非常麻烦,还算不错。

posted @   叕叒双又  阅读(21)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示