Crash during startup on a recent corporate computer

Я не понимаю, почему ssh'ing с пользователем blazej не работает.

Пользователь chroot привязан к своему домашнему каталогу (% h - его домашний каталог). Это означает, что последующий cd завершится ошибкой, так как корень предназначен для процесса / home / blazej и отсутствует / home / blazej / home / blazej .

63
11.04.2018, 13:49
1 ответ

Проблема

Получается, что моя проблема является известной проблемой между последним микрокодом Intel на (какой-то? )ЦП Skylake и последние версии ядер Linux, что в основном вызывается sssd . См. Ошибка Ubuntu #1759920 «Микрокод Intel -3.20180312.0 вызывает зависание на экране входа в систему (с изображением linux --4.13.0 -37 -универсальный )” , а также ряд других ошибок, которые, как оказалось, связаны с той же проблемой, например, ошибка Ubuntu #1746806 «sssd приводит к сбою экземпляров AWS c5 и m5, вызывает 100% загрузку ЦП» и Ошибка Ubuntu #1746418 «Система зависает при запуске Xorg после установки linux -образ -4.13.0 -32 -общий» . Вы, вероятно, столкнетесь с этой ошибкой, если:

  • У вас очень новый ЦП Intel. Насколько я могу судить, эта ошибка возникает только на процессорах Skylake .
  • У вас установлен пакет микрокода Intel -. Возврат к более раннему протестированному ядру мне не помог, потому что я запускал это ядро ​​только с более ранним микрокодом.
  • Ваш компьютер подключен к корпоративной сети (, обычно LDAP или Active Directory )для аутентификации пользователя. Хотя есть и другие способы вызвать ошибку, запуск sssd кажется наиболее распространенным виновником. Есть также сообщения о сбое Xorg .

Ошибка вызвана устранением проблемы безопасности Spectre , опубликованной в январе 2018 года. Существует несовместимость между некоторым кодом ядра и некоторым микрокодом процессора , что приводит к блокировке -. ] вверх при определенных обстоятельствах.

Как ремонтировать

  1. Если вы не можете загрузиться нормально, вам нужно отредактировать командную строку ядра в командной строке Grub. Смотрите в вопросе пояснения и возможные способы получения рут шелла.
  2. Обходной путь для этой конкретной ошибки — добавить параметр noibpbв командную строку ядра(1746418/14 , 1759920/56). Это должно позволить вам нормально загрузиться и выполнить некоторые ремонтные работы.
    Это отключает устранение уязвимостей, вызывающих проблему, а это означает, что ваш компьютер теперь уязвим для некоторых атак. Это локальные атаки, т. е. злоумышленнику необходимо запустить код на вашем компьютере, но эти атаки потенциально могут быть выполнены, например. через JavaScript в веб-браузере.
    Если у вас нет другого способа, вы можете сделать это постоянным, добавив noibpbв командную строку ядра, пока не получите исправленное ядро.
  3. В Ubuntu исправление ожидается на неделе 23 апреля 2018 г. , предположительно это будет ядро ​​4.4.0 -117 и 4.13.0 -39. Тем временем, Тайлер Хикс опубликовал тестовые ядра для 4.4 и 4.13 .

Как я диагностировал проблему

Я попробовал несколько способов (см. вопрос )и определил, что ошибка возникла где-то между достижением basic.targetи достижением multi-user.target. Поэтому я установил цель systemd по умолчанию наbasic.target(systemctl set-default basic.target)и включил службу debug-shell(systemctl enable debug-shell), чтобы получить корневую оболочку.

Я запустил systemctl list-dependencies multi-user.targetи вручную запустил перечисленные зависимости одну за другой. Это не спровоцировало сбой.

Не все службы управляются непосредственно systemd . Некоторые из них управляются как службы Upstart , а некоторые — как сценарии SysVinit . Приведенный ниже сценарий оболочки запускает их все. Примечание. :Я тестировал его только один раз, и он потерпел крах по замыслу.

#!/bin/sh
wants=$(systemctl show -p Wants multi-user.target | sed 's/^Wants=//' | tr ' ' '\n' | sort)
log=/var/tmp/multi-user-steps-$(date +%Y%m%d-%H%M%S)

log () {
  echo "$*..." | tee -a "$log"
  sync
  "$@"
  ret=$?
  echo "$* -> $ret" | tee -a "$log"
  sync
  return $ret
}

# systemd services
for service in $wants; do
  log systemctl start $service
  sleep 2
done

# upstart services
for conf in /etc/init/*.conf; do
  service=${conf##*/}; service=${service%.conf}
  log service ${service} start
  sleep 2
done

# sysvinit services
for service in /etc/rc3.d/S*; do
  log ${service} start
  sleep 2
done

Мой компьютер завис после запуска sssd.Оттуда поиск в Интернете по запросу «зависание ядра sssd linux» привел меня к https://bugs.launchpad.net/cloud-images/+bug/1746806, диагностике и решению.

71
27.01.2020, 19:32

Теги

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