LINUX.ORG.RU

Проблема с выключением всех систем на базе linux

 , ,


1

1

приветствую! Моя машина - ноутбук dexp achilles g118. Изготовитель платы dns. uefi 2015 года.

Проблема заключается в том, что у меня не выключается ни одна система на базе Linux(кроме систем с мезозойскими ядрами -5 века(и ещё Mint Uliana до всех обновлений выключался), я не воин linux’а, так что смотреть ядра не стал, а оставил на финальный рывок, если тут не помогут). Сбой происходит на финальном этапе выключения («reboot: Power down» и всё встаёт).

Всё остальное работает правильно. Собственно, даже reboot работает нормально. На что только не грешил, перепробовал всё, проверял работоспособность всех модулей и пакетов ядра через dmesg. Везде всё хорошо, кроме acpi, с которым тоже копался: пробовал менять драйвер (так и не поменял, потому что не нашёл), вынимал кабель питания, батарею. Включал - выключал всё до чего достали руки (wifi и lan, bluetooth, систему контроля питания, короче говоря всё, что есть в системе и что можно выключить ‘нетерминально’). Драйверы на видеоадаптер ставил через встроенный «менеджер драйверов». Прописывал в grub «verbose», «acpi=force». Даже выключал как shutdown -h now ; poweroff ; halt- нет разницы.

Начинаю думать, что дело в плате и acpi контроллере.

[ДОПОЛНЕНО 04.09.2020] Начинайте читать с этого сообщения! : Проблема с выключением всех систем на базе linux (комментарий)

Свежая информация: Система загружается, как положено через UEFI, а не через ACPI. Проблема, видимо, не в железе, а в софте. За непониманием происходящего, удаляюсь с форума побеждённым Linux’ом. Возможно, отпишу позже.

Если дело в ACPI, то это решается или правкой DSDT, или переходом на те версии LTS ядер, где это и так работает нормально.

Ты говоришь, что на 4.x ядрах все нормально работает?

Ubuntu 18.04 имеет ядро 4.15 и будет поддерживаться до апреля 2023.

Debian 10 имеет ядро 4.19 и будет поддерживаться до 2024 года, точнее будет позднее объявлено.

RHEL 8 (CentOS, Oracle Linux) имеют ядро 4.18 и будут поддерживаться до мая 2029 (хотя как десктоп их может быть не очень удобно использовать).

Vsevolod-linuxoid ★★★★★ ()

приветствую! Моя машина - ноутбук dexp achilles g118. Изготовитель платы dns. uefi 2015 года.

А линукс загружается через UEFI или Legacy boot? Если не ошибаюсь, то в случае UEFI выключение идёт через API UEFI, а в случае Legacy - через ACPI. И в случае бажной прошивки, одно из этого может не работать.

Проблема заключается в том, что у меня не выключается ни одна система на базе Linux(кроме систем с мезозойскими ядрами -5 века(и ещё Mint Uliana до всех обновлений выключался), я не воин linux’а, так что смотреть ядра не стал, а оставил на финальный рывок, если тут не помогут). Сбой происходит на финальном этапе выключения («reboot: Power down» и всё встаёт).

А можешь сказать точные версии ядер, в которых всё работает нормально, и ядер, в которых выключение сломано?

Прописывал в grub «verbose», «acpi=force».

А какие ещё варианты acpi= пробовал? Если что, документация тут: https://www.kernel.org/doc/html/latest/admin-guide/kernel-parameters.html. Я бы попробовал другие.

Даже выключал как shutdown -h now ; poweroff ; halt- нет разницы.

Если доходит аж до reboot: Power down то разницы и не должно быть.

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

im-0 ()
Последнее исправление: im-0 (всего исправлений: 1)
Ответ на: комментарий от chenbr0

Все пакеты из федоры.

Не все. В том смысле, что их существенно меньше, а те, что есть, зачастую собираются с большим запозданием. Даже если подключить EPEL + RPMFusion + flatpak, их все равно не так много и многие устарели (в смысле безопасности), и зачастую будет чего-то не хватать. Есть ещё snap, но для него криво прописаны политики SELinux, что вызывает головную боль при использовании их одновременно.

Vsevolod-linuxoid ★★★★★ ()
Последнее исправление: Vsevolod-linuxoid (всего исправлений: 2)
Ответ на: комментарий от im-0

Как я понял, система выключсется через Legacy. Проверил поиском файла efi.

В теории на ядрах ниже 4.4 (уровень убунту до 16.04) всё должно работать. Раньше работало, по крайней мере. Попробовал сегодня поставить одно такое, получил отказ novieau с непонятной претензией. Сейчас попробую именно убунту 16.04 и ниже. Отпишусь как сделаю.

Вообще, есть шанс, что я пару-тройку лет назад пробовал «прошить биос») Возможно, если я прав, в этом и всё дело. С виндой-то всё понятно, а вот линукс, видимо, - более чувствительная система.

ross_tony ()
Ответ на: комментарий от ross_tony

ПРОБЛЕМА РЕШЕНА!

Дело было в том, что моя плата не поддерживает Legacy системы, коей и является Manjaro. Вот почему я говорил, что у меня работала старая ubuntu, ведь на ней(а по факту, как я узнал, и на любой ubuntu системе) можно было ДОГРУЗИТЬ в ядро поддержку uefi. А с новыми выпусками ubuntu поддержка uefi стоит автоматом(так я про это всё и узнал).

Вот по этому manjaro и не могла выключить пк, ведь она посылала сигнал о выключении в legacy контроллер, которого нет!

Огромное спасибо im-0 за наводку!

ross_tony ()

Изготовитель платы dns.

Ниправда! DNS-Shop не занимается изготовлением железа, только собирают под своим брендом китайское говно (сейчас рядом стоит один, и единственное что не позволяет мне его разбить о стену — железка не моя).

Начинаю думать, что дело в плате и acpi контроллере.

Возможно, но без логов всё это пальцем в небо.

manjaro

То есть Arch Linux, а значит с systemd.

shutdown -h now

poweroff

halt

А стоит начать с каноничного для systemd systemctl poweroff.

mord0d ★★★★★ ()
Ответ на: ПРОБЛЕМА РЕШЕНА! от ross_tony

Дело было в том, что моя плата не поддерживает Legacy системы, коей и является Manjaro. Вот почему я говорил, что у меня работала старая ubuntu, ведь на ней(а по факту, как я узнал, и на любой ubuntu системе) можно было ДОГРУЗИТЬ в ядро поддержку uefi. А с новыми выпусками ubuntu поддержка uefi стоит автоматом(так я про это всё и узнал).

А можешь объяснить что именно и как ты делал? На случай, если у кого-то ещё возникнет такая же проблема с теми же причинами.

Как минимум мне не очень понятно что именно у тебя происходит потому что:

  • Практически все современные дистрибутивы поддерживают UEFI.
  • Если при установке поставить legacy-загрузчик, но прошивка платы не умеет в legacy, то линукс не загрузится вообще.
  • «ДОГРУЗИТЬ в ядро поддержку uefi» из уже работающей системы никак нельзя, потому что решение о выборе типа загрузки принимает не линукс, а прошивка системы, на основе того, что она сама умеет, и что настроил юзер в «настройках биоса». После выбора она либо запускает код загрузки легаси, который грузит grub2 (собранный под легаси), который грузит ядро линукса; либо она запускает код загрузки UEFI, который грузит shim, который грузит grub2 (собранный под uefi, это отдельный набор бинарников), который грузит ядро. После загрузки уже ничего не изменить. Разве что правильным образом установить другой grub2, либо переустановить вообще всю систему.
im-0 ()
Ответ на: комментарий от intelfx

Это всё синонимы.

Ну вот у меня на Gentoo эти алиасы/симлинки работали криво, потому systemd-sysv, или как там этот пакет называется, снёс нафиг и юзал напрямую и проблем не знал.

mord0d ★★★★★ ()
Ответ на: комментарий от im-0

Верно, я поспешил.

Правильно, я обновил GRUB для поддержи uefi, а не ядро, и думал, что всё ок. Несколько раз всё выключилось отлично, даже после обновления приложений. Я побежал сюда на радостях писать что всё решилось, но через какой-то промежуток времени, не помню что я тогда делал, проблема вернулась снова.

Да, детальнее изучив вопрос я понял, что без поддержки efi, grub загрузиться вообще не может, что логично. У меня была мысль, что GRUB загружает систему в Legacy режиме(ошибочная, как я позже выяснил). Занимаюсь этом вопросом уже 5 день, крыша едет только так. Сопоставив все имеющиеся данные, понять что вызывает вышеописанную в теме ошибку практически невозможно. Попробую угадать ещё пару раз, потом, при неудачном исходе, наверное, заброшу идею на какое-то время. Устал копаться в том, что не понимаю. Откопаю мозги, почитаю литературу о структуре систем (читаю что написал до этого… волосы дыбом встают…), вот тогда уже сяду разбираться. Спасибо, в любом случае!

ross_tony ()
Ответ на: Верно, я поспешил. от ross_tony

Re: Верно, я поспешил.

начни с азов. dmesg сюда ядро отправляет все свои сообщения – при включении компьютера, при его работе и его отключении. необязательно что там сразу будет указана причина, но по крайней мере это хоть что-то. про ACPI обычно там есть. потом есть ещё journalctl. здесь уже надо знать где искать, но и это обычно не проблема. и в твоём пакетном менеджере есть же какая-то история? какой пакет установился/обновился/удалился… сначала ядро, а там куда кривая вывезет.

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

скорее всего это (описание) может быть в journalctl, но я не уверен.

anonymous ()