Allepta
@Allepta

Возможно ли обновить ядро в arch linux без перезагрузки?

Доброго времени суток, достаточно давно использую арч и заметил, что одна его особенность меня начинает выводить из себя. После каждого обновления pacman -Syu при условие, если конечно есть более свежее ядро, отваливаются почти все модули ядра. Это проявляется очень просто, перестают работать usb порты, перестает работать графика и прочее, а ошибки одного типа, невозможно найти модуль в папке библиотек ядра. Собственно все понятно, делаю uname -ra вижу к примеру Linux 4.19.20-2 в то время как система ищет модули ядра в каталоге от ядра Linux 4.19.20-1 - не порядок.

Ранее я длительное время использовал Slackware и подобные проблемы проявлялись только при обновление ядра+нвидиа все остальное время работало идеально. Также был период во время, которого я пользовался только Debian, и с ним вообще ни каких проблем и никогда не было (на мой взгляд - это самый стабильный дистр).

По итогу арч мне нравится, но с этой его проблемой я смириться не готов. В данный момент средствами пакмана добавил ядро и графику в игнорлист и тем самым запретил апгрейд ядра и графики, может есть другие варианты решения этой проблемы, а то не очень хочется сносить ОС?
  • Вопрос задан
  • 1978 просмотров
Решения вопроса 1
@Vitsliputsli
Allepta, не нашел красивого решения, только добавить хуки с бекапом удаляемого ядра в /tmp с линками на него, подразумевается, что /tmp чистится после перезагрузки, а битые линки удаляем при следующем обновлении ядра. Вот 2 хука:
save-running-kernel-modules-pre.hook:
[Trigger]
Operation = Upgrade
Operation = Remove
Type = Package
Target = linux

[Action]
Depends = bash
Depends = find
When = PreTransaction
Exec = /usr/bin/bash -c "/usr/bin/find . -type l -exec test ! -e {} \; -delete; /usr/bin/mkdir -p /tmp/save-running-kernel-modules && /usr/bin/cp -a /usr/lib/modules/$(uname -r) /tmp/save-running-kernel-modules"

save-running-kernel-modules-post.hook:
[Trigger]
Operation = Upgrade
Operation = Remove
Type = Package
Target = linux

[Action]
Depends = bash
When = PostTransaction
Exec = /usr/bin/bash -c "/usr/bin/ln -s /tmp/save-running-kernel-modules/$(uname -r) /usr/lib/modules/$(uname -r)"

Т.к. решение все-таки костыльное в AUR не буду добавлять.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
dmlogv
@dmlogv
Универсальный человек
Ни разу не возникало проблемы с отвалом модулей после обновления.
Он же делает mkinitcpio, подкладывая свежеинициализирование ядро для следующей загрузки (в любом случае без ребута никуда), а старое бэкапит, чтобы в случае фэйла можно было загрузится с него.
Ответ написан
@ProFfeSsoRr
Сис.админ по Linux
У меня встречный вопрос - а почему такое поведение доставляет проблемы? Арч все-таки создан постоянно обновляться, если это делать каждый день - то нет никаких проблем. И подход "запустил систему - поработал - обновился перед выключением" проблем не доставляет.
Если вы вместо выключения компьютера пользуетесь спящим режимом - может просто перестать это делать? С SSD система грузится и так очень быстро, я когда первый SSD купил заморочился (там еще как раз systemd появился), разобрался с загрузкой и в итоге у меня холодный старт быстрее, чем выход из гибернации. И это всё не мешает постоянным апдейтам.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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