Обновил вчера стартеркит p10 до p11, перестал работать reboot. Система тормозится, но финальная перезагрузка не происходит. Может быть, на самом деле, надо sysvinit вешать: # rpm -qf /sbin/reboot sysvinit-3.00-alt2.i586
Created attachment 16672 [details] Картинка с финальными сообщениями Картинка с финальными сообщениями
Filesystem Size Used Avail Use% Mounted on runfs 990M 2,1M 988M 1% /run shmfs 990M 0 990M 0% /dev/shm tmpfs 990M 4,0K 990M 1% /tmp udevfs 5,0M 0 5,0M 0% /dev /dev/sda2 989M 76M 846M 9% /boot /dev/sda5 7,8G 26M 7,4G 1% / /dev/sda6 29G 4,6G 23G 17% /usr /dev/sda7 29G 2,0G 26G 8% /var /dev/sda8 36G 76M 34G 1% /home
(In reply to Sergey Y. Afonin from comment #0) > Может быть, на самом деле, надо на sysvinit вешать: > > # rpm -qf /sbin/reboot > sysvinit-3.00-alt2.i586 А действительно, почему "Unmounting filesystem [/usr]"? Надо remount в ro наверное?
И, даже, startup: # rpm -qf /etc/rc.d/init.d/halt startup-0.9.9.16-alt1.noarch Такой вот хак помогает: --- halt.bak 2022-11-22 21:23:42.000000000 +0400 +++ halt 2024-08-22 12:02:37.874568993 +0400 @@ -159,10 +159,10 @@ 'Unmounting loopback filesystem (retry)' # Unmount all the rest. -UnmountFilesystems 3 5 \ - '$2 != "/" && $2 !~ /^\/(dev|proc|sys)(\/.*)?$/ && $1 !~ /^none$/ {print $2}' \ - 'Unmounting filesystem' \ - 'Unmounting filesystem (retry)' +#UnmountFilesystems 3 5 \ +# '$2 != "/" && $2 !~ /^\/(dev|proc|sys)(\/.*)?$/ && $1 !~ /^none$/ {print $2}' \ +# 'Unmounting filesystem' \ +# 'Unmounting filesystem (retry)' # Turn off encrypted block devices cryptdisks_exe=/etc/rc.d/scripts/cryptdisks Но надо, наверное, как-то аккуратнее сделать.
(In reply to Sergey Y. Afonin from comment #4) > И, даже, startup: > > # rpm -qf /etc/rc.d/init.d/halt > startup-0.9.9.16-alt1.noarch Хотя в p10 startup тот же самый. Вопрос тогда открытый, что на это повлияло.
Что-то я сразу внимания не обратил. В p10 sysvinit 2.88 c /sbin/reboot, а в p11 sysvinit 3.00 c /usr/sbin/reboot, так что понятно, почему раньше работало со startup 0.9.9.16. Кого, в итоге, считать виновным?
systemd для себя давно решил эту проблему, они исполняют программу systemd-shutdown. man systemd-shutdown(8): PID 1 is replaced by the /usr/lib/systemd/systemd-shutdown tool which is then responsible for the actual shutdown. Before shutting down, this binary will try to unmount all remaining file systems (or at least remount them read-only), disable all remaining swap devices, detach all remaining storage devices and kill all remaining processes.
(In reply to Sergey Y. Afonin from comment #6) > Что-то я сразу внимания не обратил. В p10 sysvinit 2.88 c /sbin/reboot, а в > p11 sysvinit 3.00 c /usr/sbin/reboot, так что понятно, почему раньше > работало со startup 0.9.9.16. > > Кого, в итоге, считать виновным? Судя по всему, надо в p11 в startup считать /usr неотключаемым вдобавок к / (вместо их размонтирования переводить в ro — этого же достаточно для корректного завершения работы?). Я не очень хорошо представляю себе код startup, но вряд ли они там используют при выключении код, запущенный с момента загрузки. Это аналогично поведению initrd при старте (/usr считается необходимым для pivot root)
Наверное вот так как-то: --- halt.bak 2022-11-22 21:23:42.000000000 +0400 +++ halt 2024-08-29 10:05:26.043098571 +0400 @@ -160,7 +160,7 @@ # Unmount all the rest. UnmountFilesystems 3 5 \ - '$2 != "/" && $2 !~ /^\/(dev|proc|sys)(\/.*)?$/ && $1 !~ /^none$/ {print $2}' \ + '$2 != "/" && $2 !~ /^\/(dev|proc|sys|usr)(\/.*)?$/ && $1 !~ /^none$/ {print $2}' \ 'Unmounting filesystem' \ 'Unmounting filesystem (retry)' @@ -189,6 +189,9 @@ action 'Remounting remaining filesystems (if any) read-only:' \ umount -afnr -t noproc,nosysfs,notmpfs,nodevfs,nodevtmpfs,nousbfs,norpc_pipefs,nonfsd action 'Remounting root filesystem read-only:' mount -n -o remount,ro / +if [ -n "`mount | grep " /usr "`" ]; then + action 'Remounting /usr filesystem read-only:' mount -n -o remount,ro /usr +fi # See if this is a powerfail situation. UPSCTL=/etc/apcupsd/apccontrol
(In reply to Sergey Y. Afonin from comment #9) > Наверное вот так как-то: Ну так что? Или NMU делать?
(In reply to Sergey Y. Afonin from comment #10) > (In reply to Sergey Y. Afonin from comment #9) > > > Наверное вот так как-то: > > Ну так что? Или NMU делать? Надо скоординироваться с https://git.altlinux.org/tasks/356953 в любом случае.
(In reply to Sergey Y. Afonin from comment #9) > Наверное вот так как-то: > > --- halt.bak 2022-11-22 21:23:42.000000000 +0400 > +++ halt 2024-08-29 10:05:26.043098571 +0400 1) Лучше проводить развёртку в обратном порядке: `/usr` стартует после `/`, останавливается перед `/`. 2) Есть же программа mountpoint, зачем городить `test -n "$(mount | grep ' /usr ')"`. @@ -189,6 +189,9 @@ action 'Remounting remaining filesystems (if any) read-only:' \ umount -afnr -t noproc,nosysfs,notmpfs,nodevfs,nodevtmpfs,nousbfs,norpc_pipefs,nonfsd +if mountpoint -q /usr; then + action 'Remounting /usr filesystem read-only:' mount -n -o remount,ro /usr +fi action 'Remounting root filesystem read-only:' mount -n -o remount,ro / # See if this is a powerfail situation. UPSCTL=/etc/apcupsd/apccontrol Я, конечно, не мейнтейнер startup.
Created attachment 16806 [details] A proposed fix
Created attachment 16807 [details] A proposed fix v2 Забыл Suggested-by; /usr в теории может быть среди особых классов точек монтирования (autofs и loop devices)
(In reply to Arseny Maslennikov from comment #12) > 2) Есть же программа mountpoint, зачем городить `test -n "$(mount | grep ' > /usr ')"`. $ rpm -qf /bin/mountpoint sysvinit-utils-2.88-alt5 Если в системе без sysvinit это точно не нужно, то можно и mountpoint использовать.
Какое будет чьё-нибудь волевое решение? :-) И, наверное, баг critical для хостов на необслуживаемых площадках. А то и bloker. Это про "sync && reboot -f" надо не забыть...