如何将 Grub 完全移动到新分区?当我安装 Ubuntu (Kubuntu) 时,我只为/boot
分区分配了 256 MiB,这似乎还不够。每次安装新内核时,由于空间不足,安装会中途失败,因此我必须手动干预。因此,我试图将 grub 从我的旧引导分区 . 移动/dev/sdb5
到我的新 512 MiB 分区/dev/sdb7
.
我编辑/etc/fstab
点使用新的引导分区。
# /boot was on /dev/sdb5 during installation
#UUID=f1fcbfbe-7943-4e48-9796-8d0c42076c0b /boot ext4 defaults 0 2
# /boot is now on /dev/sdb7
UUID=70d8be3a-6b6c-4722-ab0d-e79d93e6dd1c /boot ext4 defaults 0 2
我卸载了/boot/efi
( /dev/sdb2
) 和/boot
( /dev/sdb5
)。然后挂载/dev/sdb7
为/boot
,重新挂载/boot/efi
,重新挂载/dev/sdb5
为/mnt/boot
。
我跑了:
$ sudo grub-install /dev/sdb7
Installing for x86_64-efi platform.
Installation finished. No error reported.
和:
$ sudo update-grub
Generating grub configuration file ...
Found Windows Boot Manager on /dev/sdb2@/EFI/Microsoft/Boot/bootmgfw.efi
Adding boot menu entry for EFI firmware configuration
done
但是,Linux 映像缺少/boot
:
$ ls -1 /boot
efi
grub
lost+found
虽然旧/boot
有:
$ ls -1 /mnt/boot/
abi-4.15.0-32-generic
abi-4.15.0-33-generic
config-4.15.0-32-generic
config-4.15.0-33-generic
efi
grub
initrd.img-4.15.0-33-generic
lost+found
memtest86+.bin
memtest86+.elf
memtest86+_multiboot.bin
retpoline-4.15.0-32-generic
retpoline-4.15.0-33-generic
System.map-4.15.0-32-generic
System.map-4.15.0-33-generic
vmlinuz-4.15.0-33-generic
我一定是错过了一步。执行此操作的正确过程是什么?我是否缺少重建 Linux 映像的命令?
注意:我想/boot
成为一个单独的分区的/
原因是因为/
它是一个 LUKS 加密的 ext4 分区。
输出sudo fdisk -l
:
Disk /dev/sda: 931.5 GiB, 1000204886016 bytes, 1953525168 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: gpt
Disk identifier: CFE364AE-6B98-4A85-BE10-7E8A8833426F
Device Start End Sectors Size Type
/dev/sda1 2048 976762879 976760832 465.8G Microsoft basic data
/dev/sda2 976762880 977287167 524288 256M Linux filesystem
Disk /dev/sdb: 931.5 GiB, 1000204886016 bytes, 1953525168 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 1AB601E6-CACA-4A3F-828A-A334CC3564DF
Device Start End Sectors Size Type
/dev/sdb1 2048 923647 921600 450M Windows recovery environment
/dev/sdb2 923648 1128447 204800 100M EFI System
/dev/sdb3 1128448 1161215 32768 16M Microsoft reserved
/dev/sdb4 1161216 1534093311 1532932096 731G Microsoft basic data
/dev/sdb5 1534093312 1534617599 524288 256M Linux filesystem
/dev/sdb6 1534617600 1952475135 417857536 199.3G Linux filesystem
/dev/sdb7 1952475136 1953523711 1048576 512M Linux filesystem
Disk /dev/mapper/sdb6_crypt: 199.3 GiB, 213940961280 bytes, 417853440 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
输出lsblk -lf
:
NAME FSTYPE LABEL UUID MOUNTPOINT
sda
sda1 ntfs Extra Disk 54186D8E186D7042
sda2 ext4 fae6b821-6644-4883-a2f1-da5c42485431
sdb
sdb1 ntfs Recovery 44F21BC7F21BBC5C
sdb2 vfat 941C-5A1E /boot/efi
sdb3
sdb4 ntfs 6C32289F3228706E
sdb5 ext4 Linux Boot Old f1fcbfbe-7943-4e48-9796-8d0c42076c0b /boot
sdb6 crypto_LUKS b2d73541-783b-4336-a62c-1e11d0cc2b47
sdb7 ext4 Linux Boot 70d8be3a-6b6c-4722-ab0d-e79d93e6dd1c
sr0
sdb6_crypt ext4 Linux Root 1e8b2b29-1857-4b38-84ee-d3c386f5085e /
我可以通过以下方式实现它。
下面是我将
/boot
分区从 sda7 更改为 sda9时的实际命令行视图登录“试用 Kubuntu”之前需要了解的事项。
/dev/sda8
。/dev/sda2
。/boot
旧分区;就我而言,它是/dev/sda7
。/boot
分区;就我而言,它是/dev/sda9
。我要将启动分区从 sda7 更改为 sda9
使用 Kubuntu 18.04 “试用 Kubuntu”会话登录。
打开 Konsole 并运行命令
sudo blkid
并复制将成为新 /boot 分区的分区的 UUID,即 sda9sudo mount /dev/sda8 /mnt
# 挂载根分区sudo mount /dev/sda9 /mnt/boot
# 挂载新的 /boot 分区sudo chroot /mnt
nano /etc/fstab
# 打开 fstab 文件通过箭头键手动向下滚动到文件
/boot
中的 UUID 部分。/etc/fstab
通过删除旧引导分区的 UUID 粘贴复制的 UUID(来自步骤 1)。
要保存文件,请按 Ctrl+ X,Y然后Enter
exit
# 退出 chroot在挂载
/boot/efi
分区之前,我们必须将旧引导分区中的数据复制到新引导分区。sudo mkdir /mnt/home/OBP
# 创建用于挂载旧引导分区的文件夹sudo mount /dev/sda7 /mnt/home/OBP
# 旧引导分区挂载sudo cp -r /mnt/home/OBP/* /mnt/boot/
sudo mount /dev/sda2 /mnt/boot/efi
for i in /sys /proc /dev /run; do sudo mount --bind "$i" "/mnt$i"; done
sudo chroot /mnt
update-grub
grub-install /dev/sda
update-grub
exit
shutdown now
重新启动系统,您现在可以删除旧的引导分区。
256 MB
/boot
和 200 GB/
你有很多空间,但
/boot
目录是“空间挑战”。我建议/boot
从sdb5
转到/
onsdb6
。您当前移动到只有 512 MB
/boot
的新分区的计划似乎有限。如果我正在测试多个内核,sdb7
有时我可能会有很多 GB。/boot
如何移动
/boot
到/
这里已经有答案了:
对的,这是可能的。也不容易。如果您打算移动单独的 /boot 分区和/或 / 分区,则应首先考虑更改 fstab 条目。
如果要将文件移动到新分区,请不要忘记
cp -p
在复制时使用以保留权限。然后调整/etc/fstab
您将使用的新 UUID 分区。blkid /dev/sdXn
您可以通过运行其中 X 是驱动器名称和 n 个分区数来获取分区 uuid 。您还可以使用 blkid 将标签附加到您的分区,然后通过标签进行挂载,这更容易阅读
man blkid
以了解更多信息。更改分区并调整 /etc/fstab 后,您应该运行
update-grub
- available on Debian/Ubuntu 脚本或grub-mkconfig -o /boot/grub/grub.cfg
生成新的配置文件,然后将 grub 重新安装到您启动机器人的第一个硬盘中。grub-install --recheck /dev/sdb
当然不要忘记,在 /mnt 上复制挂载一个新的 / 或 /boot 分区并在复制所有文件后将它们挂载为 / 和 /boot chroot ,然后才运行更新 grub 如果你希望事情正确完成.
所以,我想你只需要将所有内核文件从旧目录移动/复制到新目录,然后更新 grub。尝试:
sudo cp /mnt/boot/* /boot && sudo update-grub