无法修改BIOS情况下Linux切换根目录到其他磁盘

最近在阿里云机器上面做实验,遇到在进不了BIOS情况下,需要修改根目录到另外个数据盘的问题。特此记录一下解决方案。

PS: 数据盘的数据直接从之前机器系统盘的快照建立而来。

前景假定: 当前挂载根目录磁盘分区为/dev/vda3,希望挂载的目标数据磁盘分区为/dev/vdb3

方案一: 直接修改fstab方式

修改当前系统vda3分区根目录的/etc/fstab,将对应的根目录/挂载点的分区UUID改为目标磁盘vdb3的UUID,所有磁盘分区的UUID可以通过blkid命令查看。

经过尝试,方案一在Ubuntu 22.04 LTS系统上无法生效,所以转入方案二。

方案二: 修改grub启动

直接修改grub的启动配置,让grub挂载根目录到vdb3分区。

grub的相关文件: grub默认配置文件/etc/default/grub, grub相关脚本/etc/grub.d,grub启动生效文件/boot/grub/grub.cfg。其中/boot/grub/grub.cfg是通过命令update-grub2自动生成的,update-grub2命令会结合当前执行命令环境的根目录将其更新到grub.cfg文件中。

那么我们可以得到以下的逻辑来生成对应vdb3的grub.cfg文件: 利用chroot命令将根目录切换到vdb3分区,然后执行update-grub2命令得到对应的grub.cfg文件,然后将其复制到vda3分区的/boot/grub/用于替换原来的cfg文件,实现根目录的切换。以下是具体实现命令(以下命令均需要root用户权限操作)。


# 利用chroot命令切换根目录环境
mount /dev/vdb3 /mnt/              # 挂载vdb3分区
mount --rbind /proc /mnt/proc      # 挂载proc, sys, dev到/mnt下,从而实现环境切换
mount --rbind /sys /mnt/sys
mount --rbind /dev /mnt/dev
chroot /mnt/                       # 切换根目录环境到/mnt
update-grub                        # 更新grub.cfg,注意当前生成的grub.cfg已经变为了/vdb3分区为根目录,文件位于外部环境的/mnt/boot/grub/grub.cfg
exit                               # 退出/mnt的根目录环境

cd /boot/grub                      # 进入当前vda3分区的grub启动配置文件夹
cp grub.cfg grub.cfg.bak           # 备份当前grub.cfg文件
cp /mnt/boot/grub/grub.cfg .       # 将当前grub.cfg文件替换为根目录是vdb3的cfg文件,实现最终目标
reboot                             # 重启
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值