Рейтинг:0

Некоторые команды (например, modprobe или usermod) не работают как поздние команды в автоустановке Ubuntu.

флаг pt

я пытаюсь настроить контейнер для кубернетов через Механизм автоустановки Ubuntu (для Ubuntu 20.04).

Некоторые команды при использовании в поздние команды кажутся неудачными без видимой причины. (Выход > 0 без описательного вывода.) Неудачный фрагмент из поздние команды выглядит как:

  поздние команды:
    - printf 'overlay\nbr_netfilter\n' > /target/etc/modules-load.d/containerd.conf
    - curtin in-target --target=/target -- оверлей /usr/sbin/modprobe
    - curtin in-target --target=/target -- /usr/sbin/modprobe br_netfilter

Установщик выдает ошибку, показывая, что модзонд вызов выходит 1.

введите описание изображения здесь

Я перезапускаю виртуальную машину, войдите как убунту, и стать корень. В то время я могу бежать оверлей modprobe успешно (выход 0). я тоже не вижу /вар/сбой/16238... (см. выше), поскольку он не существует на цели. (Я предполагаю, что он существует в среде установщика.) /var/журнал/установщик также не содержит ничего полезного.

Учитывая вышеизложенное, что это может сделать модзонд потерпеть неудачу как поздняя команда? По-видимому, не связанный с этим, я также пробовал изменить -d 0 вызов, который также завершился неудачно с нулевым сообщением об ошибке. Есть ли какое-то объяснение тому, почему некоторые команды могут не существовать или работать неправильно в целевой среде на данном этапе?


Редактировать 1: что касается сбоя usermod, я предполагаю, что этот ответ намекает на то, что пользователь ubuntu не создается в этот момент в процессе установки.

Редактировать 2: я добавил команды ошибок который кажется полезным для отладки:

  команды ошибок:
    - /usr/bin/tail -n 250 /var/log/syslog

Теперь это показывает Оверлей модуля не найден в /lib/modules/...:

введите описание изображения здесь

waltinator avatar
флаг it
Прочтите файл `/var/crash/`, упомянутый в последней строке вашей картинки. Это текстовый файл, поэтому вы можете использовать `less`.
Brad Solomon avatar
флаг pt
Файл не существует, как рекламируется на цели, как указано в моем вопросе. Я считаю, что он находится в среде установщика, к которой я не могу получить доступ.
Рейтинг:0
флаг pt

Основная причина этой проблемы заключается в том, что modprobe искал не в том месте из-за обновленного ядра перед перезагрузкой.

В процессе установки вы можете использовать CTRL+Z чтобы войти в оболочку Bash в качестве пользователя root в установщик. В этой среде, / компакт-диск смонтированный ISO (iso9660) и /цель является корнем целевой файловой системы. Это отличный способ отладки куртин в цель команды, которые внутренне в основном представляют собой chroot/цель вызов.

В случае modprobe вывод показывает:

modprobe: FATAL: модуль оверлея не найден в каталоге /lib/modules/5.4.0-65-generic

Хотя этот каталог существует на установщик, на цели то, что на самом деле существует, это:

/цель/библиотека/модули/5.4.0-80-общий

Обратите внимание на небольшое изменение в версии ядра, которое modprobe не обнаружил. Я считаю, что это связано с обновлениями ядра в процессе установки.

В качестве исправления для этой конкретной команды модзонд позволяет установить версию:

curtin -v in-target --target=/target \
    -- /usr/sbin/modprobe --set-версия 5.4.0-80-универсальный оверлей

С --set-версия команда будет выполнена успешно и завершится с 0.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.