%20%D0%BD%D0%B0%20%D0%BA%D0%BE%D0%BC%D0%BF%D1%8C%D1%8E%D1%82%D0%B5%D1%80%D0%B5%20%D1%81%20UEFI%3F.png)
Проблема: после установки Kubuntu на внешний SSD (Transcend ESD400 512 Гб) на компьютере UEFI я не могу использовать его на другом. Я сделал несколько попыток, но все они были безуспешными.
Мой компьютер: UEFI, Core i7 - 4 ядра, Windows 7 Ultimate 64bit, 2 внутренних диска с GPT, внешний SSD с GPT.
Дистрибутив Kubuntu: LiveUSB, созданный с помощью Universal USB Installer 1.9.5.4, Kubuntu 14.04 LTS
Внешний SSD-диск был размечен с помощью GParted, разделы выровнены.
После каждой установки SSD форматировался и переразмечался. Проверялся GRUB: версия 2.02, EFI (не grub-pc).
Попытка 1: с подключенными внутренними дисками.
Я загрузился с LiveUSB. Выполняю обычную установку. Моя таблица разделов:
512Mb - EFI - fat32
30Gb - / - ext4
100Gb - /home - ext4
50Gb - /usr - ext4
50Gb - /opt - ext4
Загрузчик был установлен на внешний SSD (/dev/sdc). После перезагрузки я обнаружил 2 загрузочные записи ubuntu
в UEFI. Если мой внешний SSD подключен и я выбираю каждую из этих 2 записей - все работает хорошо: Kubuntu запускается и работает. Если внешний SSD выключен - появляется черный экран Minimal BASH-like line editing is supported
. Если я выбираю UEFI TS512...
(загрузочная запись с меткой внешнего SSD), похоже, работает следующая запись ( Windows Boot Manager
).
Попытка 2: с отключенными внутренними дисками.
Процедура установки была такой же. После перезагрузки система запустилась и работала. Но после подключения внутренних дисков при загрузке с внешних (как ubuntu
и UEFI TS512...
с внешних) появляется черный экран с мигающим текстовым курсором и ничего не хочет запускаться. Если выбрать Windows Boot Manager
Windows, то запускается нормально.
Попытка 3: попытка изменить файлы efi.
Скопировано grubx64.efi
из /dev/sda1
в dev/sdc1
и переименовано в bootx64.efi
. Ничего нового — он идет вниз по списку записей до Windows Boot Manager
.
Попытка 4: попытался изменить grub.cfg
и fstab
.
В /boot/grub/grub.cfg
заменяет все hd2
на hd0
. А в fstab
я изменил UUID раздела EFI: раньше он указывал на /dev/sda1
, теперь он указывает на /dev/sdc1
.
Так как же мне создать портативную систему на внешнем SSD-накопителе, которая будет загружаться на любом компьютере UEFI, а не только на моем?
решение1
Ваша проблема в том, что процесс загрузки EFI сохраняет данные о местоположении загрузчика в NVRAM, поэтому, когда вы устанавливаете на один компьютер, а затем перемещаете диск на другой компьютер, второй компьютер не знает, где искать загрузчик. Обычный способ обойти эту проблему — использовать имя файла загрузчика по умолчанию/резервного варианта, , EFI/BOOT/bootx64.efi
на системном разделе EFI (ESP; это ваш раздел FAT32). Прошивка ищет это имя файла на съемных дисках. Большое предостережение заключается в том, что вам может потребоваться использовать встроенный в прошивку менеджер загрузки, чтобы выбрать этот диск, и подробности того, как получить доступ к этому менеджеру загрузки, различаются от одного компьютера к другому.
Вы можете вручную скопировать загрузчик в это место. Наиболее вероятный способ, который сработает из работающей установки Ubuntu, следующий:
cd /boot/efi/EFI
sudo mkdir -p BOOT
sudo cp ubuntu/shimx64.efi BOOT/bootx64.efi
sudo cp ubuntu/grubx64.efi BOOT/grubx64.efi
Обратите внимание, что эти команды перезапишут любой существующий EFI/BOOT/bootx64.efi
загрузчик. Возможно, у вас сейчас нет его на внешнем диске, но вы можете это перепроверить. Также это предполагает, что ESP навнешнийдиск смонтирован в /boot/efi
. Вам определенно следует дважды проверить это, df
прежде чем продолжить. Вы не хотите перезаписать загрузчик на вашемвнутреннийдиск случайно!
Если вы уверены, что будете загружаться с отключенной функцией Secure Boot, вы можете скопировать EFI/ubuntu/grubx64.efi
в EFI/BOOT/bootx64.efi
, но это не сработает, если на целевом компьютере включена функция Secure Boot.