После установки Ubuntu Linux на внешний диск невозможно перезагрузиться на внутренний диск без внешнего диска

Текущее имя файла доступно через специальное %имя(:help cmdline-special); вы можете изменить его на полный путь, а затем отрезать само имя файла, чтобы получить путь :%:p:h, cp.:help filename-modifiers.

Это можно было бы напрямую передать в build -в таких командах, как :edit, но, к сожалению, не в :NERDTree. Для этого мы должны явно expand()это, а затем интерполировать результат в строку команды -через :execute(, что в вашем вопросе не нужно было бы использовать):

autocmd FileType go execute 'NERDTree' expand('%:p:h')

Кроме того, вы также можете просто :set autochdir, чтобы Vim автоматически переключал каталоги.

autocmd FileType плохо масштабируется

Я бы порекомендовал помещать любые настройки, сопоставления и типы файлов -в автокоманды~/.vim/ftplugin/{filetype}_whatever.vim(или {filetype}/whatever.vim; ср.:help ftplugin-name)вместо определения лотов :autocmd FileType {filetype}; он чище и лучше масштабируется; однако требует наличия :filetype plugin on. Настройки, которые переопределяют вещи в плагинах типов файлов по умолчанию, должны вместо этого войти в ~/.vim/after/ftplugin/{filetype}.vim.

2
26.05.2020, 01:07
1 ответ

Возможно, по какой-то причине GRUB на внутреннем диске был перезаписан так, что теперь он пытается загрузить свою конфигурацию с внешнего диска.

Во-первых, убедитесь, что на внешнем диске есть полностью -заполненный системный раздел EFI и что /etc/fstabправильно монтирует ESP внешнего диска в /boot/efi. Если чего-то не хватает, используйте grub-install --force-extra-removable /dev/sd<external disk>для переустановки GRUB на внешний диск -, но сначала убедитесь, что правильный ESP смонтирован на /boot/efi.

Перезагрузите и используйте efibootmgr -v. Проверьте значение BootCurrent и соответствующую загрузочную запись, чтобы убедиться, что система действительно полностью загрузилась с внешнего диска и не вернулась к загрузчику на внутреннем. Теперь вы знаете, что у вас есть полностью работающий GRUB на внешнем диске, который должен быть полностью независимым от внутреннего диска.

Затем смонтируйте раздел ESP внутреннего диска (, если он еще не смонтирован ), и проверьте содержимое <mountpoint of internal ESP>/EFI/ubuntu/grub.cfg. Это должен быть небольшой файл конфигурации GRUB, содержащий всего около трех строк.рассказывая, откуда загрузить основной файл конфигурации GRUB. Обычно это относится к файловой системе по UUID. Это должно быть что-то вроде этого:

serch.fs_uuid <UUID of the filesystem containing /boot> root
set prefix=($root)'/grub'
configfile $prefix/grub.cfg

Да, несмотря на то, что в первой строке упоминается root, это не обязательно означает корневую файловую систему Linux -, это относится к корню GRUB, который является файловой системой, содержащей основной файл конфигурации GRUB и каталог модулей GRUB. В Debian/Ubuntu это может быть корневая файловая система Linux или отдельная /bootфайловая система (, если /boot— это отдельная файловая система ).

Если каталог /bootсодержится в корневой файловой системе Linux, то вторая строка может быть вместо set prefix=$(root)'/boot/grub'. Как только переменная prefixустановлена ​​правильно, GRUB сможет автоматически -загружать модули GRUB (, например. поддержка других типов файловых систем ).

Этого может быть достаточно, чтобы исправить неисправный GRUB на внутреннем диске. Если это не помогает, вы можете загрузиться с внешнего диска, смонтировать корневую файловую систему внутреннего диска в /mnt, /bootвнутреннего диска (, если он существует как отдельная файловая система ), чтобы /mnt/boot, ESP внутреннего диска на /mnt/boot/efiи т. д., пока не будет смонтировано полное дерево файловой системы внутреннего диска под /mnt. Затем выполните chroot:

mount -o rbind /dev /mnt/dev
mount -o bind /proc /mnt/proc
mount -o rbind /sys /mnt/sys
chroot /mnt /bin/bash

Теперь вы сможете использовать grub-install /dev/sd<internal disk>для повторной -установки GRUB на внутренний диск. После этого система должна снова загружаться с отключенным внешним диском.

Избавление от GRUB технически возможно, но отсутствие загрузчика вообще (, т. е. использование заглушки UEFI, встроенной в ядро ​​), сделает использование любых вариантов загрузки ядра крайне неудобным. Сначала вам нужно загрузиться во что-то, что может редактировать загрузочные записи UEFI, добавлять/изменять нужные вам параметры загрузки, а затем снова загружаться в «беззагрузочный» Linux. Вместо этого вы можете проверить некоторые из альтернативных загрузчиков, например rEFIndили systemd-boot.

2
18.03.2021, 23:33

Теги

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