Debian установлен вместе с Windows 10, но GRUB не отображается.

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

ip_usage() { sudo grep "$1" /srv/logs/httpd/chris-server.com/access.log; }

Документация

Изman bash:

Aliases allow a string to be substituted for a word when it is used as the first word of a simple command.

Другими словами, псевдонимы выполняют подстановку строк. Они не поддерживают манипулирование аргументами. Таким образом, ссылка на первый аргумент внутри псевдонима через $1не поддерживается.

Также изman bash:

A shell function, defined as described above under SHELL GRAMMAR, stores a series of commands for later execution. When the name of a shell function is used as a simple command name, the list of commands associated with that function name is executed. Functions are executed in the context of the current shell; no new process is created to interpret them (contrast this with the execution of a shell script). When a function is executed, the arguments to the function become the positional parameters during its execution. The special parameter # is updated to reflect the change. Special parameter 0 is unchanged. The first element of the FUNCNAME variable is set to the name of the function while the function is executing.

Другими словами, функции bash поддерживают позиционные аргументы.

В сторону :Почему может показаться, что псевдоним с $1 в конце работает

Определим псевдоним

$ alias e='echo $1'

Теперь давайте очистим позиционный аргумент оболочки и запустим псевдоним:

$ set -- 
$ e a b c
a b c

Это делает то, на что можно было бы надеяться.

Обратите внимание, однако, что есть ловушка. Давайте установим первый позиционный аргумент оболочки:

$ set -- First
$ echo "$1"
First

Теперь снова запустим нашу команду:

$ e a b c
First a b c

Здесь ясно, что $1в псевдониме относится к первому аргументу первой оболочки, а не к первому аргументу псевдонима.

0
09.01.2020, 01:48
2 ответа

Если в вашем BIOS есть опция загрузки, которая буквально говорит «Диспетчер загрузки Windows», это довольно убедительный признак того, что ваша Windows была установлена ​​в стиле UEFI. Тот факт, что установщик Debian даже предлагает записать GRUB в MBR, указывает установщик Debian был загружен в устаревшем стиле BIOS.

16 -битный устаревший загрузчик BIOS не может загружать по цепочке загрузчик UEFI (без предварительного перехода в 32 -или 64 -битный режим и настройки среды UEFI, которая своего рода поражение цели в устаревшем 16 -битном режиме в первую очередь ).

Обычно режим загрузки (BIOS и UEFI ), который вы используете для загрузки установщика ОС, автоматически определяет, какой режим будет использовать новая устанавливаемая ОС. Установщик ОС, работающий в режиме UEFI , может технически установить загрузчик на основе BIOS -вместо загрузчика на основе UEFI -, но обратное, как правило, невозможно, поскольку активация совместимости с устаревшим BIOS требует отключения среды выполнения UEFI. Сервисный интерфейс, который необходим для записи параметров загрузки в системную NVRAM (, например этот текст «Диспетчер загрузки Windows» в настройках BIOS)-и это требование для завершения установки загрузчика UEFI.

Похоже, что ваш ноутбук в настоящее время может предпочесть загрузку в устаревшем режиме BIOS, а не в UEFI, если на загрузочном носителе доступны обе опции, а на установочном носителе Debian 10 действительно есть обе опции. Таким образом, он мог загрузить установщик Debian в режиме BIOS и, таким образом, не смог завершить установку загрузчика UEFI стандартным способом. В режиме BIOS установщик также не сообщит вам, что для установки загрузчика UEFI требуется наличие системного раздела ESP (EFI )на диске, на который вы хотите установить загрузчик UEFI. Если вы не решили создать его на своем жестком диске, не было подходящего места для установки загрузчика UEFI.

Также существует проблема, заключающаяся в том, что некоторые реализации прошивки UEFI содержат ошибки и/или ориентированы на Windows -. Как говорится в Debian Wiki:

Many UEFI firmware implementations are unfortunately buggy, as mentioned earlier. Despite the specification for boot entries and boot order being quite clear about how things should work, there are lots of systems in the wild which get it wrong. Some systems simply ignore valid requests to add new boot entries. Others will accept those requests, but will refuse to use them unless they describe themselves as "Windows" or similar. There are lots of other similar bugs out there, suggesting that many system vendors have done very little testing beyond "does it work with Windows?"

К счастью, иногда производители систем исправляют ошибки встроенного ПО. Итак, в качестве первого шага посмотрите, есть ли у Lenovo обновленная прошивка («обновление BIOS» ), доступное для вашей модели, и установите его, если оно есть. Это может упростить установку конфигурации с двойной загрузкой -.

В качестве второго шага вам, вероятно, следует отключить устаревшую функцию совместимости с BIOS, если это возможно. Если вы найдете параметр «BIOS», который позволяет принудительно использовать только UEFI, выберите этот параметр; или есть параметр, в котором упоминается CSM («Модуль поддержки совместимости» ), отключите его. Теперь должно быть проще заставить установщик Debian загружаться в режиме UEFI, как это делает ваша существующая установка Windows. Это заставит его установить правильный тип загрузчика.

В качестве третьего шага обратите внимание на требование наличия ESP (Системного раздела EFI ). По сути, это небольшой раздел FAT32 (256M достаточно только для Debian 10 ), который в Debian должен быть смонтирован на /boot/efi. Если вы используете разбиение MBR, оно должно иметь специальный код типа раздела 0xef; при использовании разделов GPT опция разделителя, чтобы пометить раздел как «загрузочный» и / или «ESP», должна работать правильно. Наличие ESP на вашем жестком диске позволит вам переместить жесткий диск в другую систему и загрузить с него существующую установку Debian, если вы захотите сделать это позже.

Альтернативой созданию отдельного ESP на жестком диске для Debian является выбор ESP Windows на SSD при настройке разбиения, выберите не форматирование , а монтирование с существующей файловой системой как /boot/efi. Стандартизированная структура каталогов в ESP предназначена для работы с загрузчиками нескольких ОС в одном и том же ESP.Загрузчик UEFI Debian 10 должен хорошо вписаться в стандартный Windows 10 ESP с запасом места, если вы выберете этот вариант. Но вам, возможно, придется перейти к «расширенным / ручным» параметрам разбиения, чтобы сделать это.

Если после этого проблемы не исчезнут, я рекомендую прочитать текст Родерика В. Смита о проблемах с загрузчиками UEFI. Он написан для загрузчика rEFInd, но многие вещи, описанные в нем, применимы и к UEFI-версии GRUB.


После того, как обе ОС загрузятся в стиле UEFI:

Если ваш SSD относится к типу NVMe, то в Linux он может отображаться как /dev/nvme0n1(, а его разделы — как /dev/nvme0n1pN, N = номер раздела ). Убедитесь, что Linux видит ваш SSD, затем запустите update-grubот имени пользователя root.

Если он не говорит, что обнаружил Windows, запустите blkidот имени пользователя root :он должен сообщить UUID всех ваших файловых систем и разделов. Найдите UUID файловой системы Windows ESP на SSD. Если Windows ESP использует стандартный тип файловой системы FAT32, он должен быть указан в форме UUID="xxxx-xxxx"(, это фактически серийный номер файловой системы FAT32 ).

Зная UUID, вы можете настроить собственный пункт меню GRUB для Windows, добавив эти строки в конец/etc/grub.d/40_custom:

menuentry 'Whatever you want the Windows 10 boot menu entry to say' {
    insmod part_gpt
    insmod fat
    search --no-floppy --fs-uuid --set=root xxxx-xxxx
    chainloader /EFI/Microsoft/Boot/bootmgfw.efi
}

Это должна быть простая -запись цепного загрузчика UEFI для Windows. Просто замените xxxx-xxxxфактическим UUID файловой системы Windows ESP. После редактирования файла запустите update-grubот имени пользователя root. Затем установите параметр загрузки по умолчанию на debian, и у вас должно появиться меню загрузки.

Возможно, компания Lenovo решила выйти за рамки требований спецификации UEFI и реализовала поддержку файловой системы NTFS в своей прошивке UEFI, а также предоставила установку Windows, использующую NTFS на ESP. В этом случае замените insmod fatна insmod ntfs, и UUID файловой системы будет иметь другой формат :в выводе blkid, который будет выглядеть примерно так UUID="A268B58668B559AD".

Примечание. :проверьте команду efibootmgr. Вы можете использовать его для управления настройками загрузки встроенного ПО в Linux, не входя в меню настроек BIOS. В Windows bcdeditможет делать то же самое, хотя, на мой взгляд, его пользовательский интерфейс более неуклюж.

3
28.01.2020, 02:38

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

Вам нужно перейти к настройкам BIOS и изменить загрузочное устройство с SSD на жесткий диск.

0
28.01.2020, 02:38

Теги

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