Глядя на исходный файл, кажется, что этот скрипт запускается git clone https://github.com/zplug/zplug.git $ZPLUG_HOME
в фоновом режиме через функцию execute()
и, не дожидаясь завершения этого процесса, объявляет сообщение SUCCEEDED
и завершает работу.
В основном у вас есть два варианта:
подождите, пока скрипт создаст файл, например, добавив цикл while, что-то вроде
while [[ ! -f ~/.zplug/init.zsh ]]; do
sleep 1
done
Проверьте свою sleep
реализацию, если она поддерживает числа с плавающей запятой, попробуйте sleep 0.1
, если время является проблемой, или даже подождите с inotify, чтобы быть немного (незначительно )более эффективным.
измените этот сценарий установки, чтобы он ожидал внутренних заданий. Он находится на git, так что вы можете его разветвить или попросить автора сделать это.
При устранении проблем с ранней загрузкой в VMware может оказаться полезным настроить ядро на использование последовательного порта в качестве консоли. В вашем случае вам понадобятся параметры загрузки ядра для этого :, единственные способы указать их могут быть через параметр конфигурации ядра CONFIG_CMDLINE
или с переменной окружения FDARGS="..."
во время сборки ядра, аналогично использованию FDINITRD=
, чтобы указать файл initramfs при использовании make isoimage
.
В вашем случае, вероятно, потребуется добавить параметры console=ttyS0,115200 console=tty0
, а затем настроить VMware для сохранения любого вывода на виртуальный последовательный порт COM1 в файл. Таким образом, вы должны получить полный список загрузочных сообщений ядра Linux в файл.
(Часть console=tty0
гарантирует, что вы также получите вывод консоли в окно консоли VMware; без него вывод консоли шел бы на последовательный порт только , оставляя виртуальный дисплей VGA совершенно неиспользуемым.)
Чтобы успешно использовать такие последовательные порты, вам также потребуются параметры конфигурации ядра CONFIG_SERIAL_8250=y
и CONFIG_SERIAL_8250_CONSOLE=y
.
Я думаю, что CONFIG_DUMMY_CONSOLE_ROWS
и CONFIG_DUMMY_CONSOLE_COLUMNS
влияют только на виртуальное «фиктивное» консольное устройство, которое действует только до тех пор, пока реальный драйвер консольного устройства не вступит во владение. Настоящий драйвер консоли установит строки/столбцы в соответствии с режимом отображения, используемым на консоли.
Комментарий в начале drivers/video/console/dummycon.c
, кажется, подтверждает это:
// SPDX-License-Identifier: GPL-2.0-only
/*
* linux/drivers/video/dummycon.c -- A dummy console driver
*
* To be used if there's no other console driver (e.g. for plain VGA text)
* available, usually until fbcon takes console over.
*/
Кроме того, drivers/video/console/vgacon.c
(, то есть реальный драйвер текстового режима консоли VGA ), вообще не использует CONFIG_DUMMY_CONSOLE_ROWS
.
Если вы используете классическую текстовую консоль VGA (vgacon.c
, упомянутую выше, настроенную с помощью CONFIG_VGA_CONSOLE=y
), затем параметр загрузки ядраvga=ask
(и, как только вы увидите результирующий вывод и выберите подходящий (S )Номер текстового режима VGA, vga=<mode number>
), предложенный Артемом С. Ташкиновым в комментариях к вопросу, будет уместным.
Современные дистрибутивы Linux вместо этого используют CONFIG_FRAMEBUFFER_CONSOLE=y
и обычно загружают соответствующий драйвер устройства кадрового буфера из initramfs,потому что он будет иметь более высокие режимы разрешения -, чем старый добрый VGA. Но поскольку вы устраняете проблему с ранней загрузкой, вам необходимо иметь ее в ядре для вывода на дисплей (окно дисплея VMware ). Если вы загружаете виртуальную машину, используя традиционный стиль BIOS (, который, вероятно, make isoimage
делает ), рассматриваемый драйвер будет CONFIG_FB_VESA=y
; если вы используете загрузку в стиле UEFI -, хорошей идеей будет CONFIG_FB_EFI=y
.
CONFIG_FB_VESA
также использует параметр загрузки vga=
для установки начального разрешения экрана консоли по устаревшим причинам, но режимы могут не быть перечислены с vga=ask
; см. Documentation/fb/vesafb.rst здесь или в дереве исходного кода ядра для получения дополнительной информации и списка режимов на выбор.
При использовании UEFI (или любого другого драйвера консоли кадрового буфера, отличного от CONFIG_FB_VESA
), вам нужно будет вместо этого указать желаемый режим отображения, используя параметр загрузки video=
; подробности см. вDocumentation/fb/modedb.rst
в дереве исходных текстов ядра .
Вкратце, параметр выбора видеорежима для CONFIG_FB_EFI
(, аналогичный любой консоли без -VESA кадрового буфера, на самом деле )может выглядеть так:
video=efifb:1280x1024@60
При этом будет автоматически выбрано подходящее разрешение текста для видеорежима.