Вопрос или проблема
Я нахожусь в схожей ситуации с автором этого вопроса (за исключением того, что у меня не хватает около 60 МБ в моем ESP, просто перемещение шрифтов кажется недостаточным) и я попробовал следовать инструкциям принятого ответа.
Изначально у меня был один диск /dev/nvme0n1
с шестью разделами, и загрузочный раздел был /dev/nvme0n1p1
.
Итак, я изменил размер большого “основного раздела данных” (родной метки ‘OS’), чтобы освободить место для седьмого раздела, /dev/nvme0n1p7
.
Затем я скопировал все данные с исходного загрузочного раздела (/dev/nvme0n1p1
) в этот новый раздел /dev/nvme0n1p7
.
Я добавил отдельные загрузочные записи Windows и Ubuntu в efibootmgr, используя две команды (в этом порядке)
sudo efibootmgr -c -d /dev/nvme0n1 -p 7 -l /EFI/Microsoft/Boot/bootmgfw.efi -L "Windows boot loader"
sudo efibootmgr -c -d /dev/nvme0n1 -p 7 -l /EFI/ubuntu/shimx64.efi -L "ubuntu 2"
Затем я отметил результаты efibootmgr
:
BootOrder: 0008,0007,0005,0006,0003,0000,0001,0002,0004
Boot0000* UEFI RST BC711 NVMe SK hynix 512GB NA9N616312709Q0J HD(1,GPT,bcc78a1f-b4cc-4e11-bc5a-3e59305a8d80,0x800,0x4b000)/File(\EFI\Boot\BootX64.efi){auto_created_boot_option}
Boot0001* ONBOARD NIC (IPV4) PciRoot(0x0)/Pci(0x1f,0x6)/MAC(b44506334875,0)/IPv4(0.0.0.00.0.0.0,0,0){auto_created_boot_option}
Boot0002* ONBOARD NIC (IPV6) PciRoot(0x0)/Pci(0x1f,0x6)/MAC(b44506334875,0)/IPv6([::]:<->[::]:,0,0){auto_created_boot_option}
Boot0003* UEFI HTTPs Boot PciRoot(0x0)/Pci(0x1f,0x6)/MAC(b44506334875,0)/IPv4(0.0.0.00.0.0.0,0,0)/Uri(){auto_created_boot_option}
Boot0004* Linux Firmware Updater HD(1,GPT,bcc78a1f-b4cc-4e11-bc5a-3e59305a8d80,0x800,0x4b000)/File(\EFI\ubuntu\shimx64.efi) File(.\fwupdx64.efi)
Boot0005* Ubuntu HD(1,GPT,bcc78a1f-b4cc-4e11-bc5a-3e59305a8d80,0x800,0x4b000)/File(\EFI\ubuntu\shimx64.efi)
Boot0006* Windows Boot Manager HD(1,GPT,bcc78a1f-b4cc-4e11-bc5a-3e59305a8d80,0x800,0x4b000)/File(\EFI\Microsoft\Boot\bootmgfw.efi)57494e444f5753000100000088000000780000004200430044004f0042004a004500430054003d007b00390064006500610038003600320063002d0035006300640064002d0034006500370030002d0061006300630031002d006600330032006200330034003400640034003700390035007d00000048000100000010000000040000007fff0400
Boot0007* Windows boot loader HD(7,GPT,7d2e14c7-1c88-48ab-9f6b-b739859e9717,0x233fc000,0x121000)/File(\EFI\Microsoft\Boot\bootmgfw.efi)
Boot0008* ubuntu 2 HD(7,GPT,7d2e14c7-1c88-48ab-9f6b-b739859e9717,0x233fc000,0x121000)/File(\EFI\ubuntu\shimx64.efi)
Затем я восстановил UUIDы /dev/nvme0n1p1
и /dev/nvme0n1p7
, и поставил последний вместо первого в /etc/fstab
.
Итак, в общем и целом, я достиг судьбоносного шага 11, где
[если я] сделал всё точно правильно, компьютер должен загрузиться с нового ESP и смонтировать новый ESP в
/boot/efi
.
Ответ предлагает проверить две вещи:
- Введите
df /boot/efi
, чтобы проверить, что новый ESP смонтирован там.- Введите
efibootmgr
и проверьте переменнуюBootCurrent
. Она должна соответствовать новой записиubuntu 2
, которую вы создали.
Результат df /boot/efi
:
Sys. de fichiers blocs de 1K Utilisé Disponible Uti% Monté sur
/dev/nvme0n1p7 590696 135964 454732 24% /boot/efi
Так что это должно работать.
Однако вывод efibootmgr
начинается с
BootCurrent: 0005
Timeout: 0 seconds
Так что я загружаюсь на оригинальную версию Ubuntu (используя то, что находится в /dev/nvme0n1p1
), а затем монтирую раздел /dev/nvme0n1p7
в /boot/efi
?
В любом случае, это не тот результат, который я хотел, и я боюсь следовать инструкциям дальше (и начинать обновление Grub, который я даже поверхностно не могу понять). Так как мне выправить курс отсюда?
Для справки, вывод lsblk -e 7 -o name,fstype,size,fsused,label,partlabel,mountpoint
:
NAME FSTYPE SIZE FSUSED LABEL PARTLABEL MOUNTPOINT
nvme0n1 476,9G
├─nvme0n1p1
│ vfat 150M ESP EFI system partition
├─nvme0n1p2
│ 128M Microsoft reserved partition
├─nvme0n1p3
│ ntfs 281,7G OS Basic data partition
├─nvme0n1p4
│ ntfs 990M WINRETOOLS
├─nvme0n1p5
│ ntfs 1,4G DELLSUPPORT
├─nvme0n1p6
│ ext4 192G 70,2G /
└─nvme0n1p7
vfat 578M 132,8M ESP EFI system partition new /boot/efi
и вывод sudo fdisk -lu
(помимо множества /dev/loopX
с X, варьирующимся от 0 до 34, размером обычно от 50 до 500МБ, которых я не касался) — извините за французский:
Disque /dev/nvme0n1 : 476,94 GiB, 512110190592 octets, 1000215216 secteurs
Disk model: BC711 NVMe SK hynix 512GB
Unités : secteur de 1 × 512 = 512 octets
Taille de secteur (logique / physique) : 512 octets / 512 octets
taille d'E/S (minimale / optimale) : 512 octets / 512 octets
Type d'étiquette de disque : gpt
Identifiant de disque : 758D50FC-6A8D-421F-9AAE-A6167B2F4CED
Périphérique Début Fin Secteurs Taille Type
/dev/nvme0n1p1 2048 309247 307200 150M Système EFI
/dev/nvme0n1p2 309248 571391 262144 128M Réservé Microsoft
/dev/nvme0n1p3 571392 591380479 590809088 281,7G Données de base Microsoft
/dev/nvme0n1p4 995217408 997244927 2027520 990M Environnement de récupération Windows
/dev/nvme0n1p5 997246976 1000187903 2940928 1,4G Environnement de récupération Windows
/dev/nvme0n1p6 592564224 995217407 402653184 192G Système de fichiers Linux
/dev/nvme0n1p7 591380480 592564223 1183744 578M Données de base Microsoft
Les entrées de la table de partitions ne sont pas dans l'ordre du disque.
Ещё одно удивительное явление заключается в том, что по каким-то причинам, как отметил автор в комментарии, папка efi
, содержащая все данные из раздела /dev/nvme0n1p7
, казалось, появилась, дав путь /boot/efi/efi/EFI/Microsoft/Boot/bootmgfw.efi
.
Это как-то связано с остальной проблемой (возможно, этот изменённый путь — причина, по которой мой компьютер не может загружаться на ubuntu 2
или Windows Boot Loader
и по умолчанию использует позиции ниже по порядку загрузки)? Как я могу это исправить?
Обновление: изменив файлы efibootmgr
(чтобы включить в их пути вновь появившуюся efi/
), я могу заставить компьютер загружаться на “ubuntu 2”, как показано в efibootmgr
(текущая загрузка правильная). Однако флаги boot,esp, как показано в gparted, всё ещё находятся на p1. Тем не менее, я предполагаю, что в инструкциях на которые я ссылаюсь, это тот момент, когда я должен запустить update-grub
и продолжить их выполнение?
Есть ли способ избавиться от вторичной папки `/efi/`, которая, по сути, появилась из ниоткуда?
В любом случае, вот вывод lsblk -e 7 -o name,fstype,size,fsused,label,partlabel,mountpoint,uuid,partuuid
, как просили в комментарии:
NAME FSTYPE SIZE FSUSED LABEL PARTLABEL MOUNTPOINT UUID PARTUUID
nvme0n1
│ 476,9G
├─nvme0n1p1
│ vfat 150M ESP EFI system partition C81C-2A4E bcc78a1f-b4cc-4e11-bc5a-3e59305a8d80
├─nvme0n1p2
│ 128M Microsoft reserved partition 30055dad-41ea-44cc-888c-113ce80d88cd
├─nvme0n1p3
│ ntfs 281,7G OS Basic data partition 98761E2C761E0C1E 14691571-e933-4851-b4ec-913e849d7f18
├─nvme0n1p4
│ ntfs 990M WINRETOOLS 40D4AE8AD4AE81B0 056dea87-8861-4c91-a7ef-c843b346e6e5
├─nvme0n1p5
│ ntfs 1,4G DELLSUPPORT E6C6A958C6A92A2F 7aeaadcf-d160-4145-bbb4-ecdf4b13f8b8
├─nvme0n1p6
│ ext4 192G 70,2G / 1f3bdc9f-ec2e-4570-ab28-c483d957b09b 5c3b5dbf-ed72-4aca-91ae-674c12363b33
└─nvme0n1p7
vfat 578M 132,8M ESP EFI system partition new /boot/efi FA8A-9254 7d2e14c7-1c88-48ab-9f6b-b739859e9717
Ответ или решение
Проблема, с которой вы столкнулись, связана с изменением размера EFI System Partition (ESP) и попыткой загрузить Ubuntu с новой разделенной области. Это достаточно сложная задача, и для ее решения требуется тщательное соблюдение последовательности действий и понимание работы загрузочного процесса системы. Давайте разберемся в вашей ситуации и пройдемся по шагам, которые помогут устранить возникшие трудности.
Четкое понимание текущей ситуации
Вы создали новый раздел /dev/nvme0n1p7
для вашего ESP, скопировали туда данные из оригинального ESP /dev/nvme0n1p1
, установили новые записи загрузки через efibootmgr
и обновили файл /etc/fstab
с указанием нового UUID. Несмотря на это, система по-прежнему загружается с оригинального раздела.
Анализ текущего положения
-
Команда
df /boot/efi
указала, что ваш новый раздел действительно смонтирован на/boot/efi
, что подтверждает правильное изменение монтируемого раздела. -
Команда
efibootmgr
показывает, что текущая загрузка осуществляется с известной старой версии Ubuntu, что указывает на то, что измененные записи вefibootmgr
пока не вступили в силу. -
Проблемы с лишней папкой
/efi/
возможно связаны с путанием в путях при настройке новых загрузочных записей.
Шаги по исправлению ситуации
-
Проверка и обновление
efibootmgr
:Убедитесь, что записи в
efibootmgr
указывают на правильный путь в вашем новом ESP. Поскольку вы упомянули, что изменение пути помогло вам загрузиться с "ubuntu 2", убедитесь, что корректировки были внесены правильно во все записи. Повторите командыefibootmgr
, обновив пути:sudo efibootmgr -c -d /dev/nvme0n1 -p 7 -l /EFI/efi/ubuntu/shimx64.efi -L "ubuntu 2"
-
Обновление GRUB:
После устранения проблемы с записью, выполните обновление загрузчика GRUB. Используйте команду:
sudo update-grub
Это позволит загрузчику систем понять, где находятся ядра операционной системы.
-
Проверка флагов разделов:
Убедитесь, что новый раздел (
/dev/nvme0n1p7
) имеет соответствующие флаги, такие какboot
иesp
, с помощью инструментов, какgparted
. -
Рассмотрение скрытых проблем:
Причиной оставшихся проблем могут быть недоразумения или ошибки в записи дисковых UUID в
fstab
или биос композиторе. Перепроверьте UUID для/dev/nvme0n1p7
. -
Очистка лишних папок:
Переместите или удалите лишнюю структуру папок (
/efi
), чтобы избежать дублирования и путаницы.
Дополнительные рекомендации
Убедитесь, что ваш BIOS/UEFI правильно настроен и распознает ваш новый ESP как загрузочный. Иногда может потребоваться сброс настроек BIOS или обновление прошивки BIOS/UEFI.
Заключение
Процесс переноса ESP и последующего изменения загрузочной конфигурации требует внимательного подхода и точности. Если все вышеописанные шаги выполнены корректно, ваша система должна начать загрузку с нового ESP. Поскольку это сложный процесс, всегда рекомендуется делать резервное копирование важных данных перед внесением значительных изменений в конфигурацию системы.