Bug 44394 - Сломалась загрузка с отдельным /usr
Summary: Сломалась загрузка с отдельным /usr
Status: CLOSED FIXED
Alias: None
Product: Sisyphus
Classification: Development
Component: make-initrd (show other bugs)
Version: unstable
Hardware: x86_64 Linux
: P5 critical
Assignee: Alexey Gladkov
QA Contact: qa-sisyphus
URL:
Keywords:
Depends on:
Blocks: 44410
  Show dependency tree
 
Reported: 2022-11-22 17:08 MSK by Sergey Y. Afonin
Modified: 2022-12-30 10:36 MSK (History)
5 users (show)

See Also:


Attachments
e2fsck: Cannot continue, aborting (132.75 KB, image/jpeg)
2022-11-22 17:08 MSK, Sergey Y. Afonin
no flags Details

Note You need to log in before you can comment on or make changes to this bug.
Description Sergey Y. Afonin 2022-11-22 17:08:41 MSK
Created attachment 11919 [details]
e2fsck: Cannot continue, aborting

Не знаю пока, кто крайний, но с очередным новым ядром система не грузится. Встаёт на 

/dev/sda7: clean, ...
/dev/sda6 is mounted
e2fsck: Cannot continue, aborting

Эта вот пара грузится (сделано ещё в p10, какой make-initrd был не знаю пока, может быть старее, чем в p10 на 19 октября):
Sep 23 21:16 vmlinuz-5.10.145-std-def-alt1
Oct 19 20:26 initrd-5.10.145-std-def-alt1.img

Эта вот уже нет (Sisyphus, make-initrd-2.32.1-alt1):
Nov 11 01:31 vmlinuz-5.15.78-std-def-alt1
Nov 22 17:43 initrd-5.15.78-std-def-alt1.img

На самом деле p10 ноябрьского это тоже касается (make-initrd-2.31.0-alt2), но стенд пока с Sisyphus.

/dev/sda2       488M   74M  379M  17% /boot
/dev/sda5       3,9G  1,7G  2,0G  46% /
/dev/sda6       3,9G  2,7G 1009M  73% /usr
/dev/sda7       3,9G   21M  3,6G   1% /home
/dev/sda8       3,9G  3,3G  385M  90% /var
/dev/sda9        42G  1,2G   38G   4% /var/cache/nfcapd

sysvinit, хотя вряд ли важно.
Comment 1 Alexey Gladkov 2022-11-22 17:26:12 MSK
Насколько я вижу падение происходит уже после initrd в системе. А ошибка возникает из-за того, что в fstab для sda6 прописана проверка и она падает из-за того, что usr уже смонтирован.
Comment 2 Alexey Gladkov 2022-11-22 17:27:41 MSK
Покажите пожалуйста что написано в fstab для sda6.
Comment 3 Sergey Y. Afonin 2022-11-22 17:45:34 MSK
(In reply to Alexey Gladkov from comment #2)

> Покажите пожалуйста что написано в fstab для sda6.

UUID=2800a0c4-6081-48b3-bd09-56f9f6fd8e00  /usr  ext4  nodev,relatime  1 2

(In reply to Alexey Gladkov from comment #1)

> Насколько я вижу падение происходит уже после initrd в системе. А ошибка
> возникает из-за того, что в fstab для sda6 прописана проверка и она падает
> из-за того, что usr уже смонтирован.

Да, но зависимость от initrd получается прямая. Сейчас откатил до 

make-initrd-busybox-1.32.1-alt3.x86_64
make-initrd-2.16.0-alt2.x86_64

из p9 (в остальном остался Sisyphus), пересоздал initrd, и загрузка c 5.15.78-std-def прошла. То есть, видимо, что-то в initrd начало /usr монтировать, либо перестало размонтировать.
Comment 4 Sergey Y. Afonin 2022-11-22 17:53:41 MSK
Если сходу идей нет, завтра постараюсь поточнее версию поймать, с которой ломается.
Comment 5 Alexey Gladkov 2022-11-22 19:04:00 MSK
Да, make-initrd по умолчанию стал монтировать /usr из initrd. Это было намеренное изменение. Оно было необходимо в рамках предполагаемой миграции /bin -> /usr/bin в сизифе.
Я не предполагал проблем, но упустил из виду, что у нас fsck вызывается без опции -M, а также что её нет в FSCKOPTIONS по умолчанию.
Comment 6 Alexey Gladkov 2022-11-22 19:09:58 MSK
На самом деле правильнее всего поправить startup.
Comment 7 Alexey Gladkov 2022-11-22 20:28:53 MSK
Попробуйте пожалуйста startup из задания:

https://git.altlinux.org/tasks/310472/
Comment 8 Sergey Y. Afonin 2022-11-22 20:50:58 MSK
(In reply to Alexey Gladkov from comment #7)

> Попробуйте пожалуйста startup из задания:
> 
> https://git.altlinux.org/tasks/310472/

По крайней мере грузится. Что при это пишет - сегодня не посмотрю. По reboot -f c открытым для редактирования текстовым файлом в /usr тоже перегрузилось.
Comment 9 Sergey Y. Afonin 2022-11-23 10:01:46 MSK
(In reply to Alexey Gladkov from comment #7)

> Попробуйте пожалуйста startup из задания:
> 
> https://git.altlinux.org/tasks/310472/

Посмотрел изменения. Добавление -M просто игнорирует проверку /usr. Если там есть повреждения, они остаются. Моя проверка вчерашняя с открытым файлом не очень удачной вчера оказалась.

На сколько я вижу, в rc.sysinit есть отдельно "check_filesystem "Checking root filesystem:" -Tay $fsckoptions /". Может оставлять /usr так же в ro и, далее, так же в rw перемонтировать? Только надо ещё проверку на его наличие.
Comment 10 Alexey Gladkov 2022-11-23 15:00:13 MSK
(Ответ для Sergey Y. Afonin на комментарий #9)
> (In reply to Alexey Gladkov from comment #7)
> 
> > Попробуйте пожалуйста startup из задания:
> > 
> > https://git.altlinux.org/tasks/310472/
> 
> Посмотрел изменения. Добавление -M просто игнорирует проверку /usr. Если там
> есть повреждения, они остаются. Моя проверка вчерашняя с открытым файлом не
> очень удачной вчера оказалась.

Да, если /usr монтируется в initrd, то и проверяться он должен там. У make-initrd есть такая возможность, но эта фича не включается по умолчанию. Возможно, стоит активировать её.

> На сколько я вижу, в rc.sysinit есть отдельно "check_filesystem "Checking
> root filesystem:" -Tay $fsckoptions /". Может оставлять /usr так же в ro и,
> далее, так же в rw перемонтировать? Только надо ещё проверку на его наличие.

Да, можно продублировать этот код для /usr. Меня лишь смущает то что если завтра умные люди решат /var отделить, то придётся и его специально обрабатывать.
Comment 11 Sergey Y. Afonin 2022-11-23 15:04:02 MSK
(In reply to Alexey Gladkov from comment #10)

> Да, можно продублировать этот код для /usr. Меня лишь смущает то что если
> завтра умные люди решат /var отделить, то придётся и его специально
> обрабатывать.

Отделять /var идея здравая. И не только /var. А специально обрабатывать придётся только то, что решено монтировать в initrd. /var ведь в initrd пока нет планов монтировать? :-)
Comment 12 Alexey Gladkov 2022-11-23 15:27:48 MSK
(Ответ для Sergey Y. Afonin на комментарий #11)
> Отделять /var идея здравая. И не только /var. А специально обрабатывать
> придётся только то, что решено монтировать в initrd. /var ведь в initrd пока
> нет планов монтировать? :-)

Ну вообще-то make-initrd уже давно не выделяет рут как-то особо. Он монтирует точки монтирования. Если пользователь хочет, то initrd смонтирует ему /home, /var, etc. Хардкода нет.

Продублировать проверку в startup выглядит наипростейшим решением, но я не уверен, что оно правильное.

Дим? Глеб?
Comment 13 Sergey Y. Afonin 2022-11-23 15:31:49 MSK
(In reply to Alexey Gladkov from comment #7)

> Попробуйте пожалуйста startup из задания:
> https://git.altlinux.org/tasks/310472/

Пока суть да дело, может это задание отправить в Сизиф и p10, как временное решение?
Comment 14 Repository Robot 2022-11-23 18:39:31 MSK
startup-0.9.9.16-alt1 -> sisyphus:

 Tue Nov 22 2022 Alexey Gladkov <legion@altlinux.ru> 0.9.9.16-alt1
 - Do not check mounted filesystems (ALT#44394).
Comment 15 Sergey Y. Afonin 2022-11-23 19:43:33 MSK
(In reply to Alexey Gladkov from comment #12)

> Продублировать проверку в startup выглядит наипростейшим решением, но я не
> уверен, что оно правильное.
> 
> Дим? Глеб?

Завёл Bug 44409