Настройка приглашения Zsh/вставка пользовательских символов без внешних команд

Вы говорите: «GRUB2 бросает меня в подсказку, потому что он не может смонтировать /dev/mapper/cryptolvm-archв /», но это не похоже на подсказку GRUB. Вводимые вами команды являются не командами GRUB, а (Arch )командами Linux. Вы уже прошли EFI и GRUB, и, по-видимому, в Arch initramfs.

Приглашение выглядит как приглашение аварийной оболочки на основе initramfs -. Работа GRUB заключается в загрузке двух вещей :ядра и файла initramfs. Как только GRUB сделал это и передал управление ядру, работа GRUB выполнена . Команда cryptomountуказывает GRUB разблокировать зашифрованный диск для этой цели, но GRUB не может передать это разблокированное состояние или даже кодовую фразу шифрования ядру.

После запуска ядра initramfsдолжны быть все необходимые инструменты, чтобы снова разблокировать шифрование диска, либо повторно запросив парольную фразу, либо сохранив парольную фразу в файле initramfs; поскольку в вашем случае файл initramfs хранится на зашифрованном диске, это может быть приемлемо.

Кроме того, обратите внимание, что вы сказали «... потому что он не может монтировать /dev/mapper/cryptolvm-archв /». Если сообщение об ошибке говорит именно так, проблема может заключаться в том, что initramfs по какой-то причине пытается подключиться непосредственно к /. Вы не можете этого сделать. Вместо этого новую корневую файловую систему необходимо сначала смонтировать в другом месте (, например /new_root), а затем специальная команда в initramfs переключит новую корневую файловую систему на место.

Вместо того, чтобы смотреть на EFI и GRUB, вам, возможно, следует сосредоточиться на содержимом файла Arch initramfs. Он должен выполнять именно те две команды, которые вы вводите вручную (, возможно, заменяя /dev/nvme0n1p4синтаксисом UUID=), но по какой-то причине этого не происходит. Узнайте, почему, и вы найдете причину своих проблем.

0
30.10.2020, 17:50
1 ответ

Вы можете использовать $'\uxxxx' or $'\Uxxxxxxxx'здесь (, в то время как кавычки $'...'взяты из ksh93, интерпретация \u/ \Uфактически была введена zshи скопирована несколькими другими оболочками. так как, хотя и с вариациями ).

Так:

PS1="...."$'\ue0b2'"...."

Или:

myChar=$'\ue0b2'
PS1="...$myChar..."

или

typeset -A powerline=(
  branch        $'\uE0A0'
  ln            $'\uE0A1'
  padlock       $'\uE0A2'
  'solid right' $'\uE0B0'
  right         $'\uE0B1'
  'solid left'  $'\uE0B2'
  left          $'\uE0B3'
)

и используйте, например, $poweline[solid right].

\[и \]— это синтаксис bash для ввода данных ширины 0 -.

Эквивалентом zshбудет %{...%}, но здесь эти символы имеют ширину в один столбец, поэтому вы не хотите использовать это. В моей системе по крайней мере символы в области частного использования (, используемой Powerline здесь ), уже имеют ширину 1 (в соответствии с wcwidth(), используемой zsh для определения ширины символов ). ]. Если бы wcwidth()возвращал для них 0, вы всегда могли бы вставить %G, чтобы сообщить zsh, что их ширина равна 1.

2
18.03.2021, 22:53

Теги

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