LINUX.ORG.RU

Обновление сломало мне Arch Linux

 , , ,


4

1

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

Kernel panic – not syncing: No working init found

Вечером я просто обновился привычной всем командой yaourt -Syua и перегрузился в Windows (стоит в дуалбуте рядом с Fedora и Arch Linux) по делам. Ладно, вру, перегрузился чтобы поиграть в Half-Life и Unreal Tournament ’99. Поиграл на славу, снова решил загрузиться обратно в Arch Linux — получил ситуацию, которая запечатлена на фотографии выше.

Сначала я подумал, что каким-то неведомым образом слетел Fedora’вский grub, так как именно он обеспечивает мне, так сказать, «дуалбут» в три операционные системы: Windows 10, Arch Linux и Fedora 29. Загрузился в Fedora, выполнил привычные команды для восстановления grub’а и обновления его конфигурации:

grub2-install /dev/sda
grub2-mkconfig -o /boot/grub2/grub.cfg

Перегрузился снова, в меню grub’а выбрал Arch Linux — ситуация нисколько не изменилась. Тогда я решил, что при последнем обновлении слетели какие-то модули в ядре и из-за этого оно валится в панику. Снова загрузился в Fedora. Отмечу, что как же хорошо, что я её установил рядом и теперь не мучаюсь со всякими LiveUSB-флешками в подобных ситуациях, примонтировал rootfs от Arch Linux’а и с помощью скрипта arch-croot чрутнулся в него:

mount /dev/sda4 /mnt
./arch-chroot /mnt

Из лога пакетного менеджера /var/log/pacman.log я вычленил список пакетов последнего обновления, которые могли испортить мне ядро и initramfs:

upgraded device-mapper (2.02.184-3 -> 2.02.184-4)
upgraded lvm2 (2.02.184-3 -> 2.02.184-4)
upgraded virtualbox-host-dkms (6.0.4-4 -> 6.0.6-1)
upgraded virtualbox (6.0.4-4 -> 6.0.6-1)

При установке VirtualBox с помощью DKMS незаметно для пользователя собираются и устанавливаются некоторые модули ядра, на которые я и грешил, а потому переустановил эти пакеты заново:

yaourt -S device-mapper lvm2 virtualbox-host-dkms virtualbox
yaourt -S linux

На всякий случай само ядро, пакет linux, я тоже переустановил. Перезагрузился — ситуация нихрена не изменилась. Подумал, раз ядро паникует от init’а, может проблема в systemd? Его же всегда и все винят во всех бедах! В третий раз загрузился в Fedora, переустановил пакет systemd и перегенерировал initramfs:

yaourt -S systemd
mkinitcpio -p linux

Перегрузился, постучался в Arch Linux — проблема не ушла. Очень странно! Пришлось в четвёртый раз грузиться в Fedora и начать гуглить инфу по этой ошибке. Поисковый запрос «kernel panic not syncing no init found arch linux» сразу же привёл меня в тему на форуме Arch Linux, благодаря которой я и решил эту проблему: [SOLVED] Kernel Panic - not syncing. No working init found. Человек на том форуме столкнулся с похожей ситуацией.


Итак, восстановление работы поломанного Arch Linux’а и расследование почему так случилось, ибо проблемка-то и не очень уж тривиальная. Из темы на форуме Arch Linux, по ссылке выше тот человек перепробовал все действия, которые попробовал я и у него тоже не получилось сначала восстановить работоспособность системы. Потом знатоки на том форуме посоветовали ему выполнить команду:

pacman -Qkk filesystem

warning: filesystem: /usr/lib64 (No such file or directory)

Для определения различных ошибок в структуре файловой системы. Я тоже её выполнил и так же как и в той теме наткнулся на странную проблему со сущностью /usr/lib64, которая в нормальных условиях ожидаемо должна быть симлинком на /usr/lib. У меня же этот файл вообще отсутствовал, а у того человека на форуме вместо симлинка был пустой каталог.

Механизм возникновения проблемы

Итак, судя по сообщению пользователя Scimmia:

There’s been a number of people without /usr/lib64/. I’m guessing it’s because of a updated that was --force’d. Don’t do that.

В pacman’е имеется какой-то странный баг или поведение, когда при опции --force или --overwrite нарушается структура файловой системы, в частности, имеется вероятность неведомым образом снести симлинк /usr/lib64 или вместо него создаётся пустая директория, как у того человека с форума. Судя по логу, я действительно обновлял какой-то пакет из AUR’а с этой опцией из-за того, что установка ругалась на какие-то существующие файлы и не придал этому значение после. Но самый цимес в том, что обновлял я этот пакет целых три месяца назад и этот --force и вылетел у меня из головы.

Что интересно, само отсутствие /usr/lib64 похоже никоим образом не влияет на работоспособность системы. Если бы что-то отвалилось и перестало работать сразу после обновления и перезагрузки, то было бы легче догадаться в чём же именно дело. Но этот симлинк /usr/lib64 в rootfs каким-то странным и неведомым способом влияет на построение образа initramfs, а поэтому Arch Linux рассыпался только спустя три месяца (sic!), когда прилетело обновление VirtualBox, которое обновило свои модули ядра и потребовало перегенерировать initramfs, генератор которого видя отсутствие симлинка /usr/lib64 тупо взял и сгенерировал мне кривой образ, из-за которого ядро посыпалось в панику.

Решение проблемы

Как уже понятно из рассказа — тривиальное, создать убитый симлинк заново, перегенерировать initramfs по новой:

cd /usr/
ln -s /usr/lib/ lib64
mkinitcpio -p linux

После выполнения этих команд Arch Linux загрузился как ни в чём не бывало и продолжил нормально работать.

Вердикт

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

А чем вы занимались сегодня ночью?

★★★★★

Последнее исправление: cetjs2 (всего исправлений: 1)

Ответ на: комментарий от greenman

Большой плюс ТС – всё честно расписал. Да и решение сам нашёл.

Согласен в целом, кроме заголовка темы. Ведь не обновление сломало систему. Сам сломал, сам героически починил.

surefire ★★★
()
Ответ на: комментарий от Deleted

Да если бы.

Почему на каждом языке обязательно кто-нибудь свелосипедит недоПМ и недоизолированные окружения — это понятно. Почему он обязательно становится стандартом для этого языка — вот это для меня пока загадка.

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

Вот почитал вчера новость про это, заинтересовался. Но не нашел ни вики как у арча, пакеты не все нужные оказались, в этом плане aur-а не хватает очень. Идея конфигурации понравилась, я бы это в арч добавил, тащем-то nix в aur-е есть, можно попробовать экспериментировать. Но в таком неразвитом виде nixos для меня неудобна.

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

Во-первых:

нихрена не понятно что это за НЕХ и зачем оно. И если оно позиционируется как Robot Operating System то причем тут арч и пакман? Операционная система - вот и ставьте ее вместо линукса. Или называйте вещи своими именами.

Во-вторых:

разбивать то, что может ставиться одним пакетом на 100500 пакетов АУРА!!! это за гранью. Предлагаю лечиться.

В-третьих:

В 2019 году и нет flatpak пакета, а на офсайте только дебы под убунту - разработчиков лечить.

Итог:

Вот так отказ от хелперов аура выявляет тяжелые психические расстройства разработчиков и пользователей и показывает путь к выздоровлению.

curufinwe ★★★★★
()
Ответ на: комментарий от JAkutenshi

Посмеялся. ЧТД об адекватности сектантов.

Оооо даааа.

Вместо одного pkbuild делать 100 для одного проекта - это не сектанты.

Людям похер что ОФИЦИАЛЬНО из аура пакеты руками надо ставить, и они вместо одного pkgbuild сделали 100. Они не сектанты, нет.

Люди набор библиотек и программ под Убунту назвали ОС. Они не сектанты.

А вот человек, который посмотрел со стороны указал на весь этот очевидный шизоидный бред - он сектант.

Да, ты прав. Я из секты «не ешь грибы, мысли трезво, называй вещи своими именами». И я испытываю мистический религиозный ужас, когда вижу такой маразм в ауре который ты показал.

curufinwe ★★★★★
()
Ответ на: комментарий от Deleted

Обновление сломало мне Arch Linux

yaourt

–force

Теперь мы наконец-то знаем, как ломают Arch Linux.

This.

intelfx ★★★★★
()
Ответ на: комментарий от JAkutenshi

И еще у нас в секте вот такое учение.

Тех, кто делает пакеты в АУРЕ с зависимостью от других пакетов АУРА, надо линчевать. А кто против - у того упадет Арч. Вот как у ТСа. Но после этого слепые не прозреют.

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

Давайте я проясню, вес всего этого дела 2-4гб и обновляется оно очень часто. Или Вы и программы пишете в одном main.cpp, makefile тоже не нужен, как и вообще идея модульности, правда?

Про незнание того что-такое ROS прощаю, это специфический софт.

JAkutenshi ★★
()
Последнее исправление: JAkutenshi (всего исправлений: 1)
Ответ на: комментарий от curufinwe

Тех, кто делает пакеты в АУРЕ с зависимостью от других пакетов АУРА, надо линчевать

Идиотизм.

Тогда в первую очередь надо линчевать тех, кто посмел писать программы с зависимостями, которых нет в оф. репах арча, да?

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

Экзотические зависимости надо в пакет к приложению паковать и все в opt, а не тянуть зависимостями сто пакетов аура.

Идиотизм - это зависимости в ауре и порождаемый этим LFS вместо арча.

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

Так то уж если рассуждать, то аур пора отправлять на покой и вливаться во flatpak/snap. Универсалочка, которая везде пролезет. В принципе именно эту нужду и покрывал аур.

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

Согласен. Я думаю это самое правильное решение. И есть много преимуществ перед ауром.

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

Идиотизм - это зависимости в ауре и порождаемый этим LFS вместо арча.

Чем он тебе вдруг порождается, если софт с аура ставится и отслеживается тем же пакманом?

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

Тем, что для этого ты пакеты для пакмана вручную по одному собираешь. А то что потом пакетный менеджер ставит - так он и в LFS может ставить. Суть LFS не в этом.

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

Ты втираешь сейчас какую-то дичь. Ты можешь конкретно сказать, чем зависимости с аура мешают тебе в использовании арча?

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

Тоже когда РОС под Манжарой собирал немного сгорел. У меня еще и пришлось ошибки компиляции фиксить из-за нового boost'a. Для ROSa лучше сразу Убунту ставить, ибо разрабы там упоранты еще те.

BceM_IIpuBeT ★★☆☆☆
()
Ответ на: комментарий от anonymous

Речь про зависимости пакетов с АУРа от пакетов с АУРа.

BceM_IIpuBeT ★★☆☆☆
()
Ответ на: комментарий от JAkutenshi

Она для всех неразвита и для всех неудобна. И пока у нее пара тыщ пользователей, все так и останется =(

t184256 ★★★★★
()
Ответ на: комментарий от intelfx

Ну извини, что не оправдал, че, но я стою на своем. Шапка топика мне реально доставила на фоне параллельного обсуждения в новостях «а че в этой NixOS все ребилдится на каждый чих?», прям назидательная басня.

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

Никсось для любителей сосать потные яйца

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

Ты можешь конкретно сказать, чем зависимости с аура мешают тебе в использовании арча?

Использовать арч они никак не мешают. Они мешают собирать пакеты из аура. Потому что один пакет тянет десять зависимостей, и так далее по дереву. И возникает чувство, что это уже не арч, бинарный дистрибутив, а LFS ты собираешь.

curufinwe ★★★★★
()
Ответ на: комментарий от t184256

Шапка топика — «кривые руки сломали мне Arch Linux». Проблема вообще не в том, что где-то что-то неправильно собрано. ТС разломал себе служебные симлинки lib64->lib опцией --break-my-system и не заметил.

intelfx ★★★★★
()
Последнее исправление: intelfx (всего исправлений: 1)
Ответ на: комментарий от curufinwe

зависимости надо в пакет к приложению паковать и все в opt

NYET

Иди обратно на винду с такими пожеланиями.

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

Демагогические приемы «отрезать от цитаты самое главное слово и обвинять» со мной не пройдут.

curufinwe ★★★★★
()
Ответ на: комментарий от intelfx

Но самый цимес в том, что обновлял я этот пакет целых три месяца назад и этот –force и вылетел у меня из головы.

поэтому Arch Linux рассыпался только спустя три месяца (sic!), когда прилетело обновление VirtualBox, которое обновило свои модули ядра и потребовало перегенерировать initramfs…

Акценты авторские.

t184256 ★★★★★
()
Ответ на: комментарий от intelfx

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

t184256 ★★★★★
()
Ответ на: комментарий от intelfx

Я вижу в шапке две проблемы:

  1. ТС прострелил себе ногу

  2. Стопа заболела только через три месяца

Подробное самобичевание по первому пункту ТС выполнил сам. Подтрунивание по поводу того, что в большинстве дистров можно не замечать стрелу в стопе произвольно долго до первого вызова update-another-loosely-managed-component взял на себя я. Видимо вышло не очень.

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

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

Да, удивительно. initramfs перегенерируется чить ли не раз в неделю (с частотой выхода новых ядер).

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

Я редковато обновляюсь, в основном точечно. Один раз не обновлял Arch Linux год, потом обновил и всё было нормально.

EXL ★★★★★
() автор топика
Ответ на: комментарий от EXL

Один раз не обновлял Arch Linux год

Тогда, товарищ, к тебе закономерный вопрос: а нафейхуа тогда вообще арч? Смысл роллинга в получение наиболее свежих версий в короткий срок после их выхода. Если тебе не уперлись версии аж год, может подходящий дистр выбрать? Федору там, Убунту и т. д.

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

Я экспериментирую. Лет 5 назад именно на ЛОРе мне посоветовали установить Arch Linux, потому что я часто компилирую различное ПО и вожусь с компиляторами, зависимостями-библиотеками и прочим.

Я установил его и мне пакетный менеджер и вообще работа с пакетами пришлась по нраву и понравилась больше, чем в Ubuntu или Linux Mint, на котором я тогда сидел. Нет ахинеи с PPA и -dev (или -devel, если речь о всяких там RPM-based дистрах) пакетами. В пользовательском репозитории AUR имеется некоторый уже устаревший софт, который мне всё ещё требуется, например, automake-1.11, ncurses5-compat-libs, старый openssl и др. Поставить всё это в каком-нибудь DEB-based и RPM-based та ещё боль, а здесь – одной строчкой.

Так что вот я и остался на Arch Linux, меня вполне устраивает этот дистрибутив.

EXL ★★★★★
() автор топика
Последнее исправление: EXL (всего исправлений: 1)
Ответ на: комментарий от anonymous

а нафейхуа тогда вообще арч?

Удобная легко настраиваемая под себя система, прекрасно живет и при обновлениях раз в год если не настолько тупой что не можешь пару команд в терминале прописать. И вот нафейхуа мне Федору там, Убунту и т. д ставить если я привык к арчу и лучше его знаю?

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

P.S. собственные пакеты тоже собираются очень легко, в отличие от DEB или RPM, через PKGBUILD’ы.

EXL ★★★★★
() автор топика
Ответ на: комментарий от anonymous

Во-первых, обращение было к ТСу, а не к тебе. Во-вторых, я не оспариваю преимущества арча ни разу, я сам на нем сижу уже три года как. В-третьих, ничего «прекрасного» при обновлениях даже раз в несколько месяцев нет. Пруф простой - у меня две виртуалки с арчем: на одной я тестирую обновы раз в месяц, на другой раз в три. Обе валятся постоянно, и это при том, что никаких косяков от ментейнеров или багов в софте, которые бы влияли на поломки, нет. Просто специфика дистрибутива такова, что изменение в ряде софта и его зависимостей на несколько версий от текущей при обновлении дает ка-бум. Мое мнение - если юзаешь арч, обновляйся хотя бы раз в 2 недели. С таким циклом у меня на основной системе ни разу ничего не упало.

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

Бред какой-то. Как может быть, что при обновлениях раз в две недели не валится, а раз в месяц – валится.

Ты частичными обновлениями (установкой дополнительных пакетов) в промежутках не занимашься?

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

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

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.