В дополнение к проверке того, соответствует ли путь доступному каталогу, исполняемый файл cd
будет обрабатывать и использовать переменную CDPATH
и распечатывать абсолютный путь разрешенного каталога, если он был успешно использован.
$ export CDPATH=/usr
$ echo bin lib | xargs -n 1 cd
/usr/bin
/usr/lib
Это полезно только в очень редких случаях, но избавит от повторной реализации той же логики для поиска совпадающих каталогов. Конкретным вариантом использования является поиск первого существующего каталога с определенным именем среди нескольких возможных родителей.
cd
также обрабатывает OLDPWD
для cd -
, но это менее полезно, так как переменная окружения уже была бы доступна.
Подводя итог :вы хотите поместить загрузчик на поддержку USB, чтобы сделать его необходимым для запуска вашей Linux-системы И В ТО ЖЕ ВРЕМЯ сделать возможным запуск вашей системы Windows без USB-диска, содержащего загрузчик. Это НЕВОЗМОЖНО сделать. Действительно, это загрузчик, который загрузит систему GNU Linux И систему MS Windows. Если нет загрузчика, вы не загрузите ОС MS Windows
Поскольку (в соответствии с комментариями )у вас есть система UEFI, миграция только загрузчика может быть довольно простой.
Отформатируйте USB-диск в файловой системе FAT32. Если он смонтирован, например. /media/usbdisk
, создайте каталог /media/usbdisk/EFI
. Затем скопируйте все содержимое каталога /boot/efi/EFI/fedora
в/media/usbdisk/EFI
:
cp -r /boot/efi/EFI/fedora /media/usbdisk/EFI/
Сделайте вторую копию каталога fedora
как boot
и в нем переименуйте shim.efi
вbootx64.efi
:
cd /media/usbdisk/EFI
cp -r fedora boot
cd boot
mv shim.efi bootx64.efi
Теперь ваш USB-диск должен быть способен загрузить установку Linux на -диске! На этом этапе вы можете протестировать его. Если это работает, вы можете изменить свой /etc/fstab
, чтобы смонтировать USB-диск как /boot/efi
вместо существующего системного раздела EFI.
Остается одна возможная проблема, хотя :всякий раз, когда вы устанавливаете новый пакет ядра, менеджер пакетов обновляет конфигурацию загрузчика (на USB-диске )в /boot/efi/EFI/fedora/grub.cfg
, но файл конфигурации, фактически используемый в время загрузки, вероятно, будет /boot/efi/EFI/boot/grub.cfg
. Если выяснится, что у вас есть эта проблема, вы можете заменить /boot/efi/EFI/boot/grub.cfg
«фиктивным» файлом конфигурации, который состоит всего из одной строки :
configfile /EFI/fedora/grub.cfg
Результирующая последовательность событий при загрузке будет:
/EFI/boot/bootx64.efi
(относительно корня файловой системы USB-диска)bootx64.efi
на самом деле shim.efi
, который обрабатывает проблемы с безопасной загрузкой, а затем запускает grubx64.efi
в том же каталоге grubx64.efi
читает манекен grub.cfg
в том же каталоге. configfile /EFI/fedora/grub.cfg
сообщает ему, что вместо этого следует читать фактический файл конфигурации из каталога /EFI/fedora
на USB-накопителе. grubx64.efi
читает фактический файл конфигурации GRUB. Поскольку используется оболочка безопасной загрузки, grubx64.efi
должна быть полностью автономной -версией, поэтому все необходимые модули GRUB будут встроены -.Таким образом, он может использовать ту же конфигурацию, что и установленная версия SSD -, для загрузки файлов ядра и initramfs, где бы они ни находились на SSD (, зашифрованы они или нет ). grubx64.efi
загружает ядро Fedora и initramfs, и работа загрузчика выполнена. /boot/efi
в соответствии с /etc/fstab
, поэтому любые будущие обновления ядра будут автоматически обновлять /boot/efi/EFI/fedora/grub.cfg
на USB-диске. Если у вас есть отдельный раздел /boot
и вы специально хотите переместить его на USB-диск, вам понадобятся два раздела на USB-диске :один раздел FAT32 (, который будет смонтирован как/boot/efi
)и один раздел Linux (для монтирования как /boot
). В этом случае та же конфигурация GRUB, что и в случае загрузки SSD -, больше не будет работать; однако, если вы настроите все остальное перед запуском grub2-mkconfig
, он все равно сможет создать для вас подходящий файл конфигурации.