如何在 BIOS 启动的 Debian 虚拟机中将根目录转移到 /dev/sda 设备上?本文将从硬盘分区,根目录复制,重新启动等几个方面介绍。
硬盘分区
1.检查磁盘:查看当前的磁盘和分区情况,确认新添加的磁盘设备名称。
sh
parted -l
2.创建分区表:
进入parted环境
sh
parted /dev/sda
进入后出现(parted)提示
3.查看当前分区表
print
清除旧分区表(如果需要)
mklabel msdos
创建 GPT 分区表
mklabel gpt
4.创建分区
创建启动分区(/boot)
mkpart primary ext4 1MB 513MB
创建根分区(/)
mkpart primary ext4 513MB 100%
5.设置启动标志
设置第一个分区(/boot)为启动分区
set 1 boot on
6.退出 parted
quit
7.格式化分区
格式化启动分区
sh
sudo mkfs.ext4 /dev/sda1
格式化根分区
sh
sudo mkfs.ext4 /dev/sda2
8.挂载分区:
创建一个临时挂载点
sh
mkdir /mnt/newroot
挂载分区
sh
mount /dev/sda2 /mnt/newroot
mount /dev/sda1 /mnt/newroot/boot
复制根目录
1.复制
sh
rsync -aAXv --exclude={"dev/*","proc/*","sys/*","tmp/*","run/*","mnt/*","media/*"} / /mnt/newroot/
这个命令会同步所有文件和目录,但排除了一些动态挂载的系统目录。
2.更新 /etc/fstab:
• 编辑 /etc/fstab 文件,将根目录的挂载点从原来的设备指向 /dev/sda1。可以使用 blkid 命令获取新分区的 UUID,然后在 /etc/fstab 中更新对应的 UUID。
sh
blkid /dev/sda1
blkid /dev/sda2
sh
vim /etc/fstab
UUID=<新分区的UUID> / ext4 defaults 0 1
替换<新分区的UUID>
3.安装 GRUB 引导程序
更新 GRUB 配置
sh
mount --bind /dev /mnt/newroot/dev
mount --bind /proc /mnt/newroot/proc
mount --bind /sys /mnt/newroot/sys
sh
chroot /mnt/newroot
grub-install /dev/sda
update-grub
这些命令会将 GRUB 安装到 /dev/sda 上,并更新 GRUB 配置文件。
退出 chroot 环境
sh
exit
umount /mnt/newroot/dev
umount /mnt/newroot/proc
umount /mnt/newroot/sys
umount /mnt/newroot/boot
umount /mnt/newroot
重启虚拟机
sh
sudo reboot
验证
sh
mount | grep /
确认根目录已经正确挂载到 /dev/sda1 上。