Bug 32068 - шум при загрузке
Summary: шум при загрузке
Status: CLOSED FIXED
Alias: None
Product: Sisyphus
Classification: Development
Component: make-initrd2 (show other bugs)
Version: unstable
Hardware: all Linux
: P3 minor
Assignee: Alexey Gladkov
QA Contact: qa-sisyphus
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2016-05-05 17:18 MSK by Michael Shigorin
Modified: 2017-04-19 16:08 MSK (History)
4 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Michael Shigorin 2016-05-05 17:18:47 MSK
Собрал с make-initrd2-2.0.0-alt1 сперва rescue.iso;
при загрузке на фоне последней синей строчки propagator:

sh: udevadm: command not found

Далее при загрузке собственно initrd:

init-bottom: Root fs is squashfs
init-bottom: Remounting / with aufs
sed: missing command
sed: missing command
sed: missing command
init-bottom: Root fs overlayed with aufs
sed: missing command

В остальном на первый взгляд порядок.

Собрал и icewm.iso (инсталятор); при загрузке исошки аналогично rescue.iso,
только ещё заметил:

Spawning init ... done.
/bin/grep: /proc/cmdline: No such file or directory

Загрузка установленной системы проходит нормально, только на глаз заметно дольше грузится сам initrd.

PS: для сборки потребовались мелкие правки в mkimage-profiles (причёсываю)
и чуть другой bootloader-utils.spec (http://webery.altlinux.org/task/164335).
Comment 1 Alexey Gladkov 2016-05-10 00:51:39 MSK
Это кто-то трогал propagator (не будем показывать пальцем) и не всё пошло ему на пользу.

http://git.altlinux.org/gears/p/propagator.git?p=propagator.git;a=blob;f=cdrom.c;h=e5a3de141303c4f58953538d5f89a535e2ec4fae;hb=35bf95867adddca7d81d07047ffc601821a7afc4#l202

http://git.altlinux.org/gears/p/propagator.git?p=propagator.git;a=blob;f=disk.c;h=5c2bc57f8ac8f282430c71b5a6c440e9245d7607;hb=35bf95867adddca7d81d07047ffc601821a7afc4#l339

Эти сделаны из расчёта, что у вас есть PATH. Когда вы init это не так.

Варианта решения два:
* Я добавлю скрипт, который обернёт propagator и выставит ему env;
* Вы добавите в propagator PATH и остальной env, который ему нужен.

Второй вариант мне кажется более разумным.
Comment 2 Michael Shigorin 2016-05-10 12:18:28 MSK
(В ответ на комментарий №1)
> Это кто-то трогал propagator (не будем показывать пальцем)
Да что уж там, показывай -- и так все знают, какой из меня сишник.
Спасибо.
Comment 3 Alexey Gladkov 2016-05-10 12:28:56 MSK
Также там несколько устарели пляски вокруг /dev/.udev/{db,queue}
Comment 4 Michael Shigorin 2016-05-17 11:10:22 MSK
Проверил твой http://git.altlinux.org/people/legion/packages/propagator.git?p=propagator.git;a=commitdiff;h=bc936fd7c2602099173c859cbb6e221aefc030f6 -- "sh: udevadm: command not found" пропало (остальное, понятно, на месте); спасибо!
Comment 5 Michael Shigorin 2016-05-17 11:33:32 MSK
PS: при загрузке собранного с таким propagator и установленного icewm.iso сообщений об ошибках во время работы initrd _не_ наблюдаю вовсе, а вот при старте собственно основной системы перед запуском udev пробежало:

mount: mount /dev/pts on /dev/pts failed: Too many levels of symbolic links
Comment 6 Alexey Gladkov 2016-05-17 11:40:30 MSK
(In reply to comment #5)
> PS: при загрузке собранного с таким propagator и установленного icewm.iso
> сообщений об ошибках во время работы initrd _не_ наблюдаю вовсе, а вот при
> старте собственно основной системы перед запуском udev пробежало:
> 
> mount: mount /dev/pts on /dev/pts failed: Too many levels of symbolic links

Ты говоришь про живую систему уже ?
Можно исошку ?
Comment 7 Michael Shigorin 2016-05-17 12:06:48 MSK
(In reply to comment #6)
> > mount: mount /dev/pts on /dev/pts failed: Too many levels of symbolic links
> Ты говоришь про живую систему уже ?
Угу, в смысле установленную и загружающуюся.

> Можно исошку ?
https://yadi.sk/d/VYuf3jTTrmbxE (361M)
Comment 8 Speccyfighter 2017-04-13 17:03:56 MSK
(В ответ на комментарий №5)
> PS: при загрузке собранного с таким propagator и установленного icewm.iso
> сообщений об ошибках во время работы initrd _не_ наблюдаю вовсе, а вот при
> старте собственно основной системы перед запуском udev пробежало:
> 
> mount: mount /dev/pts on /dev/pts failed: Too many levels of symbolic links

Это же сообщение сейчас на системе с текущим сизифом на ядрах 4.9.2x-std-def
https://forum.altlinux.org/index.php?topic=38583.0
Comment 9 Speccyfighter 2017-04-17 14:21:49 MSK
(В ответ на комментарий №5)
> при старте собственно основной системы перед запуском udev пробежало:
> 
> mount: mount /dev/pts on /dev/pts failed: Too many levels of symbolic links

В системах на sysv будут сломаны права на /dev/pts/N
который псевдотерминал, т.е. X-терминал.
Права должны быть

user tty

При ошибке

mount: mount /dev/pts on /dev/pts failed: Too many levels of symbolic links

права будут

user user

ИМХО:
Нужно убирать make-initrd-busybox откатом make-initrd на версию 0.8.14.
Ставить make-initrd в hold необязательно.
Но после отката make-initrd на версию 0.8.14, удалять
make-initrd-busybox
и блокировать его установку перед dist-upgrade обязательно:

# cat /etc/apt/preferences
Package: make-initrd-busybox
Pin: version 0.8.14*
Pin-Priority: -1

Заодно и пакеты make-initrd* 'будут СОХРАНЕНЫ'.

Если по version и Pin-Priority не тормознуть установку
make-initrd-busybox
при установленном make-initrd версии 0.8.14,
то после перегенерации initrd.img, на старте системы вывалит горы повторений ошибки MESSAGES и логгирование будет сломано.

Без кастомной пересборки make-initrd, ИМХО тут два варианта:
- или мириться со сломанными правами /dev/pts/N
- или откатывать make-initrd на версию 0.8.14 и по version и Pin-Priority блокировать установку make-initrd-busybox.
Comment 10 Alexey Gladkov 2017-04-17 14:52:39 MSK
(В ответ на комментарий №9)
> В системах на sysv будут сломаны права на /dev/pts/N
> который псевдотерминал, т.е. X-терминал.
> Права должны быть
> 
> user tty

Эти права должен выставлять udev. В системе с systemd или sysv.

> При ошибке
> 
> mount: mount /dev/pts on /dev/pts failed: Too many levels of symbolic links

ls -la /dev/pts ?

> Нужно убирать make-initrd-busybox откатом make-initrd на версию 0.8.14.

Утилита mount изпользуется из util-linux, а не из busybox. С чего вы взяли, что эта проблема из-за make-initrd-busybox ?
Comment 11 Speccyfighter 2017-04-17 16:55:07 MSK
(В ответ на комментарий №10)
> (В ответ на комментарий №9)
> > В системах на sysv будут сломаны права на /dev/pts/N
> > который псевдотерминал, т.е. X-терминал.
> > Права должны быть
> > 
> > user tty
> 
> Эти права должен выставлять udev. В системе с systemd или sysv.
> 
> > При ошибке
> > 
> > mount: mount /dev/pts on /dev/pts failed: Too many levels of symbolic links
> 
> ls -la /dev/pts ?
> 

$ ls -la /dev/pts
итого 0
drwxr-xr-x  2 root   root        0 апр 17  2017 .
drwxr-xr-x 17 root   root     3480 апр 17 16:44 ..
crw-------  1 user   user   136, 0 апр 17  2017 0
c---------  1 root   root     5, 2 апр 17  2017 ptmx


Должно быть:

$ ls -la /dev/pts
...
crw--w----  1 user   tty   136, 0 апр 17  2017 0
...

$ grep tty /etc/group
tty:x:5:tester,user

$ grep pts /etc/fstab 
devpts	/dev/pts   devpts   nosuid,noexec,gid=tty,mode=620   0 0
Comment 12 Speccyfighter 2017-04-17 17:19:46 MSK
При установленном


$ rpm -qa|grep make-initrd
make-initrd-lvm-0.8.14-alt1.i586
make-initrd-luks-0.8.14-alt1.i586
make-initrd-0.8.14-alt1.i586
make-initrd-mdadm-0.8.14-alt1.i586
make-initrd-plymouth-0.8.14-alt1.i586
make-initrd-devmapper-0.8.14-alt1.i586


$ cat /etc/apt/preferences
Package: make-initrd-busybox
Pin: version 0.8.14*
Pin-Priority: -1


$ grep tty /etc/group
tty:x:5:tester,user


$ grep pts /etc/fstab 
devpts	/dev/pts   devpts   nosuid,noexec,gid=tty,mode=620   0 0


права

$ ls -la /dev/pts
итого 0
drwxr-xr-x  2 root root      0 апр 17  2017 .
drwxr-xr-x 17 root root   3480 апр 17 17:06 ..
crw--w----  1 user tty  136, 0 апр 17 17:10 0
c---------  1 root root   5, 2 апр 17  2017 ptmx


Ошибки нет:
mount: mount /dev/pts on /dev/pts failed: Too many levels of symbolic links


При dist-upgrade обновления make-initrd* не будет.
Pin-Priority блокирует установку make-initrd-busybox и слом MESSAGES на загрузке.
Comment 13 Alexey Gladkov 2017-04-17 17:28:21 MSK
(В ответ на комментарий №11)
> $ ls -la /dev/pts
> итого 0
> drwxr-xr-x  2 root   root        0 апр 17  2017 .
> drwxr-xr-x 17 root   root     3480 апр 17 16:44 ..
> crw-------  1 user   user   136, 0 апр 17  2017 0
> c---------  1 root   root     5, 2 апр 17  2017 ptmx
 
Скрипт /etc/rc.d/init.d/udevd делает какие-то странные манипуляции с /dev/pts:

http://git.altlinux.org/gears/s/systemd.git?p=systemd.git;a=blob;f=udevd.init;h=d42717a435c2400e24462a2c0b0ce6beca4c20cb;hb=f7c4653220e7b262687f4133c47c8768e27c78b3#l70

2shaba@: Алексей не подскажите, что должна делать attach_pts_filesystem ?
Comment 14 Alexey Gladkov 2017-04-17 17:29:17 MSK
Валер, может ты знаешь что это за функции такие в /etc/rc.d/init.d/udevd ?
Comment 15 Valery Inozemtsev 2017-04-17 17:36:17 MSK
Там же все и так ясно и понятно... проверяем, если не смонтировано, монтируем
Comment 16 Alexey Gladkov 2017-04-17 17:44:56 MSK
(В ответ на комментарий №15)
> Там же все и так ясно и понятно... проверяем, если не смонтировано, монтируем

Не совсем так. В 82 строке если мы нашли в /proc/mounts /dev/pts мы делаем:

mount -n --move pts "$udev_root"/pts

и вот это мне не очень понятно. Зачем что-то двигать, если он уже смонтировано ?

Я не уверен на 100%, кажется эта ошибка:

mount: mount /dev/pts on /dev/pts failed: Too many levels of symbolic links

как раз от этой операции т.к. мы двигаем /dev/pts в /dev/pts.
Comment 17 Valery Inozemtsev 2017-04-17 17:47:21 MSK
а кто и зачем запускает /etc/rc.d/init.d/udevd?
Comment 18 Speccyfighter 2017-04-17 18:01:03 MSK
(В ответ на комментарий №12)
> При установленном
> 
> 
> $ rpm -qa|grep make-initrd
> make-initrd-lvm-0.8.14-alt1.i586
> make-initrd-luks-0.8.14-alt1.i586
> make-initrd-0.8.14-alt1.i586
> make-initrd-mdadm-0.8.14-alt1.i586
> make-initrd-plymouth-0.8.14-alt1.i586
> make-initrd-devmapper-0.8.14-alt1.i586
> 
> 
> $ cat /etc/apt/preferences
> Package: make-initrd-busybox
> Pin: version 0.8.14*
> Pin-Priority: -1
> 
> 
> $ grep tty /etc/group
> tty:x:5:tester,user
> 
> 
> $ grep pts /etc/fstab 
> devpts    /dev/pts   devpts   nosuid,noexec,gid=tty,mode=620   0 0
> 
> 
> права
> 
> $ ls -la /dev/pts
> итого 0
> drwxr-xr-x  2 root root      0 апр 17  2017 .
> drwxr-xr-x 17 root root   3480 апр 17 17:06 ..
> crw--w----  1 user tty  136, 0 апр 17 17:10 0
> c---------  1 root root   5, 2 апр 17  2017 ptmx
> 
> 
> Ошибки нет:
> mount: mount /dev/pts on /dev/pts failed: Too many levels of symbolic links
> 
> 
> При dist-upgrade обновления make-initrd* не будет.
> Pin-Priority блокирует установку make-initrd-busybox и слом MESSAGES на
> загрузке.

Если в этой ситуации make-initrd-busybox не удалять и не прибивать его инсталляцию по Pin-Priority, то на загрузке в tty1 вывалит пачку таких сообщений:


logger: unrecognized option '--socket-errors=off'
BusyBox v1.24.2 (2017-03-16 10:50:56 UTC) multi-call-binary,

Usage: logger [OPTIONS] [MESSAGE]

Write MESSAGE (or stdin) to syslog

       -s      Log to stderr as well as the system log
       -t TAG  Log using the specified tag (defaults to username)
       -p PRIO Priority (nimeric or facility.level pair)
Comment 19 Alexey Gladkov 2017-04-17 18:08:43 MSK
(В ответ на комментарий №17)
> а кто и зачем запускает /etc/rc.d/init.d/udevd?

На системах sysv он используется. Я конечно знаю быстрое решение: не переносить /dev/pts из initrd и тогда всё будет работать.

Но в данном случае в налицо ошибка в init-скрипте. Ведь даже grep делается с udev_root и последующий mount --move просто не имеет смысла. Это могло бы быть нужно если бы мы нашли pts вне udev_root и тогда можно понять желание переместить его на правильное место.
Comment 20 Alexey Gladkov 2017-04-17 18:18:10 MSK
(В ответ на комментарий №18)
> > При dist-upgrade обновления make-initrd* не будет.
> > Pin-Priority блокирует установку make-initrd-busybox и слом MESSAGES на
> > загрузке.
> 
> Если в этой ситуации make-initrd-busybox не удалять и не прибивать его
> инсталляцию по Pin-Priority, то на загрузке в tty1 вывалит пачку таких
> сообщений:
> 
> 
> logger: unrecognized option '--socket-errors=off'
> BusyBox v1.24.2 (2017-03-16 10:50:56 UTC) multi-call-binary,
> 
> Usage: logger [OPTIONS] [MESSAGE]
> 
> Write MESSAGE (or stdin) to syslog
> 
>        -s      Log to stderr as well as the system log
>        -t TAG  Log using the specified tag (defaults to username)
>        -p PRIO Priority (nimeric or facility.level pair)

Пожалуйста хватит. Либо пользуйтесь новой версией make-initrd, либо откатывайте его весь и удаляйте make-initrd-busybox. Совершенно очевидно, что работать то, что вы делаете нормально не будет.
Comment 21 Speccyfighter 2017-04-17 19:14:20 MSK
(В ответ на комментарий №20)
> Пожалуйста хватит. Либо пользуйтесь новой версией make-initrd, либо откатывайте
> его весь и удаляйте make-initrd-busybox. Совершенно очевидно, что работать то,
> что вы делаете нормально не будет.

Оно _уже_ работает без ошибок и сломов и не требует дальнейшего вмешательства пользователя.
Извините что потревожил.
Comment 22 Alexey Gladkov 2017-04-17 23:11:07 MSK
(В ответ на комментарий №21)
> Оно _уже_ работает без ошибок и сломов и не требует дальнейшего вмешательства
> пользователя.
> Извините что потревожил.

Ну если откат чего-либо для вас решение проблемы, то вам виднее.
Comment 23 Speccyfighter 2017-04-18 13:27:36 MSK
(In reply to comment #22)
> (В ответ на комментарий №21)
> > Оно _уже_ работает без ошибок и сломов и не требует дальнейшего вмешательства
> > пользователя.
> 
> Ну если откат чего-либо для вас решение проблемы, то вам виднее.

Пользователь не обязан быть догадливым.
В комментарии #18 показал, что ожидает пользователя в недалёком будущем, если он воспользуется советом про откат и удаление.
hold не решает полностью проблему. И удаление make-initrd-busybox не решает полностью проблему.

Решает сразу все проблемы:
- откат по версии на 27 марта на версию 0.8.14, удаление свежего make-initrd-busybox и его блокировка по Pin-Priority.
Соблюдение последовательности действий строго обязательно.

В этом случае hold пакетов make-initrd* становится лишней сущностью, а блокировка make-initrd-busybox по Pin-Priority решит сразу две проблемы.
Всё это будет работать если зависимости не поменяются. Но если вероятность этого существует, то лучше использовать и hold и Pin-Priority.
Чтобы пользователь решил проблему один раз и мог про неё забыть навсегда.
Это я и пытался объяснить в комментарии #18.
Comment 24 Repository Robot 2017-04-19 11:39:09 MSK
make-initrd-2.0.4-alt1 -> sisyphus:

* Wed Apr 19 2017 Alexey Gladkov <legion@altlinux> 2.0.4-alt1
- initrd-cp:
  + Remove existing destination file before copy
- luks:
  + Add access to console
  + Add gpg encryption for keyfile
- initrd:
  + Do not mount /dev/pts (ALT#32068)
Comment 25 Michael Shigorin 2017-04-19 16:08:20 MSK
Лёш, спасибо!