Как исправить, когда установка Fedora 26 не обнаружена / не указана в меню Ubuntu-grub

Нет, не можете.

Если вы хотите использовать функцию в текущей оболочке, просто определив ее, а затем используйте ее позже:

$ foo() { echo "Inside function"; }
$ foo
Inside function

До дня Shellshock вы можете сохранить функцию внутри переменной, экспортировать переменную и использовать функцию в подпрограмме. -shell, поскольку bash поддерживает функцию экспорта, bash поместит определение функции в переменную среды , например:

foo=() {
  echo "Inside function"
}

, затем интерпретирует функцию, заменив = с пробелом. Нет намерения помещать функцию в переменную, и ссылка на переменную будет выполнять функцию.

Теперь, после того, как Стефан Шазелас обнаружил ошибку, эта функция была удалена , определение функции больше не хранится в простой переменной среды. Теперь экспортируемые функции будут кодироваться добавлением префикса BASH_FUNC_ и суффикса %% , чтобы избежать конфликтов с переменными среды. Интерпретатор bash теперь может определять, являются ли они функцией оболочки, независимо от содержимого переменных. Вам также необходимо определить функцию и явно экспортировать ее, чтобы использовать в суб-оболочке:

$ foo() { echo "Inside function"; }
$ export -f foo
$ bash -c foo
Inside function

В любом случае, если ваш пример работал с вашим текущим bash , значит, вы используете уязвимую версию.

0
27.04.2018, 17:08
1 ответ

Fedora 26 использует Anaconda в качестве установщика. Anaconda не делает различий между двумя этапами GRUB2 при установке загрузчика; Вы либо устанавливаете GRUB2 полностью, либо не устанавливаете вообще:

If you choose not to install a boot loader for any reason, you will not be able to boot the system directly, and you must use another boot method, such as a stand-alone commercial boot loader application. Use this option only if you are sure you have another way to boot your system. - Source https://docs.fedoraproject.org/f26/install-guide/install/Installing_Using_Anaconda.html#sect-installation-gui-storage-partitioning-bootloader

Короче говоря, если вы не установите GRUB2 из Fedora/Anaconda, вам будет очень больно. Вот ваш лучший выбор:

  1. Переустановите Fedora 26 с загрузчиком. Это принесет в жертву GRUB2 stage1, установленный Ubuntu, но тогда Fedora загрузится; Убунту не будет. Убедитесь, что вы используете отдельный загрузочный раздел для Fedora, как вы это уже делали.
  2. Используйте возможность GRUB2 загружать другую конфигурацию, чтобы создать пункт меню, загружающий конфигурацию GRUB2 Ubuntu.

Другими словами, вы делегируете право собственности на процесс загрузки Fedora.

Загрузка меню Ubuntu GRUB2 из Fedora

Вот примерно как выполнить второй шаг:

  1. Ботинок Fedora
  2. Смонтируйте раздел /boot, если он еще не смонтирован:mount /boot
  3. Обновление /etc/fstabдля автоматического монтирования загрузочного раздела Ubuntu:

mkdir /mnt/ubuntu echo "/dev/sda5 /mnt/ubuntu ext4 defaults,ro 0 0" >> /etc/fstab

  1. Смонтировать загрузочный раздел Ubuntu:mount -t ext4 /dev/sda5 /mnt/ubuntu
  2. Создайте пользовательский пункт меню, который просто загружает конфигурацию Ubuntu GRUB2. Добавьте следующее к/etc/grub.d/40_custom:

menuentry 'Ubuntu' --class gnu-linux --class gnu --class os $menuentry_id_option 'ubuntu-xyz' { set root='hd0,msdos5' configfile /mnt/ubuntu/grub2/grub.cfg }

  1. Обновите конфигурацию Fedora GRUB2, чтобы добавить новое меню:grub2-mkconfig -o /boot/grub2/grub.cfg
  2. Перезагрузите и скрестите искатели.

Предупреждение

Этот процесс является деликатной процедурой. Это лучшее -решение, учитывая, что передо мной нет вашего компьютера. Не удивляйтесь, если это не сработает . Сделайте все необходимые резервные копии и продолжайте с полным признанием того, что все может пойти еще хуже; Возможно, вам придется стереть диск и начать заново.

0
28.01.2020, 04:24

Теги

Похожие вопросы