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成功安装并更新,启动验证成功没问题。
没想到这么简单,我还以为会非常麻烦,还算不错。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具