Линукс не работает перезагрузка

Не выключается и не перезагружается миникомпьютер на ядрах 4.4.x.x, 4.8.x.x, 4.10.x.x

Проблема такая.Есть миникомп gygabyte brix. И на нем не работает нормально система управления питанием. А точнее при перезагрузке /выключении система виснет. Происходит это на ядрах 4.2.x.x, 4.4.x.x, 4.8.x.x, 4.9.x.x, 4.10.x.x, а также на ветке 3.19.x.x. И все это вне зависимости от дистриба, было проверено на Debian, Xubuntu, Lubuntu, Arch, Manjaro. При чем на ветке 3.16.x.x работает нормально. Как это дело исправить, если это возможно?

Написать багрепорт, ну.

А что писать то? Я вижу только сообщение Power down, а дальше ничего не происходит. Где хоть ошибки глянуть?

dmesg -n8, вероятно. И netconsole, если на самом деле виснет ядро, а не железка.

dmesg: неизвестный уровень ‘8’ .
По поводу netconsole, что и куда должно отправляться?

Поиграйся с этим, например:

А, сейчас вроде надо писать debug, а не 8. Мог бы и заглянуть в ман.

По поводу netconsole, что и куда должно отправляться?

dmesg на другой компьютер.

Проверьте на 4.12

Так. А куда это скопировать? Я не сильно в линуксе натаскан.

-n debug вообще ничего не выдает. Другие компы на данный момент не функционируют. Есть какие-нибудь способы настроить подробное логирование перезагрузки/выключения на том же компе?

У меня на ноуте когда-то была беда с управлением питанием. Ковырялся, но никак не решил и ничего странного не обнаружил (вернее, решил проблему , купив новый ноут). Не работало ещё регулирование частоты ЦПУ — было всегда на минимальной и очень тормозило. Я вообще выключал ACPI, работал тупо на Макс. Частоте.

На Винде мне помогала утилита ThrottleStop — она как-то реанимировала ноут и все работало нормально. На Линукс ничего такого не нашел, а самому писать аналогичную программу для этого оказалось нецелесообразно. Причем, что на Винде, что на Линукс, проблема появилась одновременно. Может, железная проблема.

Посмотреть как оно поведет себя на Винде может быть полезно

и с ноги не выключается?

У меня дуалбут. На винде все нормально. Сейчас еще на GhostBSD проверил — тоже пашет (но со звуком проблемы). Как я говорил ранее, на ядре 3.16 перезагружается корректно. Так что явно дело не в железе.

вы не исправите эту проблему. Это косяк в ядре линукса мне известен с 2015 года

Проверил — таже песня. На 4-ой ветке последние сообщения при выключении:

Странно. В ядре 3.13 косяк присутсвует, в 3.16 исправлен, а в 3.19 и 4 опять появился. Так получается?

Если так получается, то делай git bisect. Тогда сможешь точно идентифицировать проблемный коммит.

При разработке своего проекта,понятно. А как это поможет на уже работающей системе?

Читайте также:  Драйвера для тачпада toshiba windows 10

Сообственно можно ли управлять параметрами перезагрузки с помощью sysctl или надо ядро пересобирать?

Kernel command line.

Какой синтаксис?
root=/dev/sda1 ro quiet acpi=force apm=power_off reboot=hard
То есть после знака «=» просто ставится параметр?

Синтаксис я ж тебе выше написал. Потрудись почитать что-нибудь по теме.

В kernel-parameters.txt нет примеров, а в доках по kernel-command-line не приводится аргумента reboot. Потому и переспросил.

Примеры тебе не нужны, синтаксис один и тот же везде. Список возможных аргументов я тебе уже скопипастил.

Проверил reboot=w,c,h,s,g,b,a,k,t,r,p,f а также различные их комбинации. Ничего не изменилось. Можно как-то глянуть с какими параметрами работает уже запущеное ядро?

Представь себе ненадолго, что ядро это твой проект. Дальше как обычно.

Источник

Перезагрузка компьютера в Linux

Эта статья ориентирована на самых новичков в Linux ну и тех кого интересует как перезагрузить Linux из консоли. Для меня перезагрузить компьютер в терминале или с помощью графического интерфейса это элементарно, но это база, не все новички ее знают и надо об этом написать.

Сегодня мы рассмотрим такие вопросы, как команда перезагрузки Linux из консоли, перезагрузка удаленно, и непосредственно перезагрузка в графическом интерфейсе. Начнем, пожалуй, с обычной перезагрузки системы.

Перезагрузка Linux в графическом интерфейсе

Здесь, как говорится, что может быть проще. Рассмотрим сначала перезагрузку в Ubuntu Unity. Достаточно нажать на кнопку с шестеренкой в правом верхнем углу экрана, и выбрать пункт Выключение:

Затем в открывшимся окне кликнуть по пункту Перезагрузка:

В окружении рабочего стола Gnome, все очень похоже на Unity, а в KDE нужно открыть главное меню, перейти на вкладку выход, и выбрать пункт перезагрузить:

Затем подтвердить перезагрузку.

Перезагрузка Linux в терминале

А здесь уже простор намного шире, существует около десятка команд, которыми можно перезагрузить Linux. Одним нужны root привилегии, другим нет, одни выглядят просто и легко запоминаются, а другие длинные и сложные. Дальше мы рассмотрим их все.

Первая команда перезагрузки Linux, самая распространенная и самая простая:

Как видите, утилите нужны права суперпользователя. После нажатия Enter компьютер сразу уйдет в перезагрузку.

Утилита shutdown, которая используется для выключения тоже позволяет перезагрузить компьютер для этого нужно передать ей параметр -r. Плюс к тому же можно указать время перезагрузки. Сейчас — 0 или now, через одну минуту +1 через две — +2 и т д:

sudo shutdown -r +1

Перезагрузка Linux будет выполнена через минуту после ввода команды.

В системах инициализации совместимых с Init Scripts, существовали уровни загрузки системы — 0,1,2,3,4,5,6, уровень 0 — означал выключение, 6 перезагрузку, остальные режимы работы системы нас сейчас не интересуют. Переключаться между уровнями можно командой init. Только опять же нужны права суперпользователя. Таким образом:

Служба системных сообщений dbus тоже умеет перезагружать компьютер:

/usr/bin/dbus-send —system —print-reply —dest=»org.freedesktop.ConsoleKit» /org/freedesktop/ConsoleKit/Manager org.freedesktop.ConsoleKit.Manager.Restart

Тут уже не нужны права суперпользователя. Это были обычные способы перезагрузки Linux, но есть еще один, нестандартный или даже два. Это магические SysRq клавиши. Ядро Linux отслеживает нажатие определенных сочетаний клавиш, и в ответ на них выполняет нужные действия. Сначала включаем поддержку sysrq:

Читайте также:  Как включить заблокированный windows

echo 1 > /proc/sys/kernel/sysrq

Лучше это сделать заблаговременно, так как этот способ полезен когда система зависла и ни на что не реагирует:

Для активации SysRq сочетания зажмите Alt + SysRq и нажмите код клавиши. Для нормальной перезагрузки рекомендуется использовать следующую последовательность: R E I S U B, клавиши нажимать в той же последовательности с интервалом приблизительно секунду.

  • R — возвращает управление клавиатурой если Х сервер был завершен некорректно;
  • E — ядро посылает всем процессам, кроме init сигнал SIGTERM;
  • I — отправляет всем процессам, кроме init сигнал SIGKILL;
  • S — ядро проводит синхронизацию файловых систем, все данные из кэша переносятся на жесткий диск;
  • U — перемонтирует все файловые системы в режим только чтение;
  • B — немедленная перезагрузка, без синхронизации, и дополнительных приготовлений.

Перед перезагрузкой система ожидает завершения всех процессов, останавливает все сервисы, отключает и монтирует в режиме только чтения файловые системы. Это мы и делаем, нажимая последовательно эти сочетания клавиш. Но если вам нужно перезагрузить систему сейчас не дожидаясь отключения всех процессов, например, сервер, можно сразу отправить сигнал B. Вот так: Alt + SysRq + B.

SysRq можно задействовать и без сочетаний клавиш, записав нужный код операции в файл /proc/sysrq-trigger:

echo b > /proc/sysrq-trigger

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

Удаленная перезагрузка Linux

Если у вас есть доступ к серверу по ssh то можно очень просто удаленно перезагрузить linux с помощью одной из выше приведенных команд, например:

ssh root@remote-server.com /sbin/reboot

Только опять же для этой операции нужно иметь права root на удаленном сервере.

Выводы

Теперь вы знаете как выполняется перезагрузка linux, вы даже знаете что делать когда система зависла и как перезагрузить сервер по ssh. Если у вас остались вопросы, спрашивайте в комментариях!

Источник

Не выключается Linux

Сразу после установки, как правило, любая операционная система будет работать очень хорошо и быстро. Но со временем ошибки могут накапливаться и вызывать различные проблемы с использованием ОС.

В сегодняшней статье мы рассмотрим такую ошибку, как «не выключается Linux». Разберём, почему может возникнуть такая проблема, методы её отладки и исправления.

Почему не выключается компьютер Linux?

Инициализацией и завершением работы сервисов в системе Linux занимается system, и если компьютер не может выключиться, это означает, что systemd не может справиться с каким-либо процессом и ждёт его завершения. По умолчанию система даёт каждому сервису одну минуту и тридцать секунд, а затем отправляет сигнал экстренного завершения. Но таких сервисов может быть несколько, и завершение работы Linux может затянуться.

Есть несколько путей решения этой проблемы:

  • Во первых, нам необходимо понять в чём именно проблема, какой сервис её вызывает и попытаться её решить;
  • Во вторых, мы можем уменьшить время ожидания от 90 до пяти секунд, для большинства сервисов этого будет вполне достаточно.

А теперь давайте рассмотрим пути решения проблемы.

Читайте также:  Восстановление драйверов для usb windows

Как исправить ошибку «не выключается Linux»

Чтобы понять, почему система не может выключиться, нам сначала необходимо посмотреть лог её выключения. И тут у нас тоже есть два пути: либо отключить заставку и выводить лог в реальном времени, либо записывать лог выключения с помощью journalctl.

1. Лог выключения в реальном времени

Первый способ не настолько информативный, но всё же может быть полезным. Для отключения заставки откройте /etc/default/grub и в строке GRUB_CMDLINE_LINUX_DEFAULT замените слова quiet splash на verbose:

Затем перезагрузите компьютер. Сначала вы будете видеть полный лог загрузки, а при выключении вы увидите полный лог выключения. Преимущество этого пути в том, что вы увидите, на какой команде загрузка зависает, и сможете понять, куда копать дальше. Например, часто бывает, что Linux не может выключиться из-за ошибки «a stop job is running for Session c2 of user», т.е. мы не можем завершить сессию пользователя. Ещё выключению могут препятствовать примонтированные удалённые файловые системы.

2. Лог выключения в journalctl

Утилита journalctl занимается обработкой логов в Linux, но есть одна проблема: она записывает журналы только из текущей сессии, при перезагрузке всё стирается. Но это можно исправить. Для этого окройте конфигурационный файл /etc/systemd/journald.conf и замените в нём значение строки Storage=auto на Storage=persistent:

Затем два раза перезапустите компьютер. Первый раз мы перезапускаем, чтобы настройки логирования вступили в силу, а второй, чтобы собрать лог последнего выключения Linux. После того, как загрузка завершиться, вы можете посмотреть лог с помощью такой команды:

sudo journalctl -b -1 -n300

Опция —b позволяет вывести лог загрузки, -1 говорит, что нужно брать не текущую загрузку, а предыдущую, а —n300 отображает только последние 300 строк. Здесь вы можете видеть, что по таймауту была завершена именно сессия session-c1. Мы можем отфильтровать сообщения только по ней:

sudo journalctl -b -1 -u session-c1.scope

Если вы увидели ошибку и смогли её решить, то ваша система будет выключаться уже мгновенно, если же нет, то всё ещё есть несколько путей решения.

3. Настройка таймаутов в systemd

Если никакое из предыдущих решение не помогло, и в системе просто баг, который не позволяет ей адекватно выключиться, то вы всё ещё можете уменьшить время ожидания до того, как процессу будет отправлен сигнал экстренного завершения. Для этого откройте файл /etc/systemd/system.conf и добавьте туда такие строки:

sudo vi /etc/systemd/system.conf

Теперь система будет ждать только 5 секунд перед тем, как завершить проблемный процесс. Также на некоторых форумах рекомендуют установить сервис watchdog, чтобы он следил за правильностью работы системного таймера. Это тоже делается очень просто:

sudo apt install watchdog
sudo systemctl enable watchdog
sudo systemctl start watchdog

Выводы

Может быть огромное количество причин, по которым ваша система не сможет включиться, и чтобы их найти и исправить, необходимо анализировать логи, искать по форумах и настраивать свою систему. Надеюсь, информация из этой статьи сделает вашу работу в Linux более комфортной.

Источник

Оцените статью