[devel] q: installer: Killing all remaining processes (forever)
Evgeny Sinelnikov
=?iso-8859-1?q?sin_=CE=C1_altlinux=2Eru?=
Пт Апр 4 22:00:03 MSD 2008
Здравстсвуйте,
2008/4/3 Stanislav Ievlev <inger на altlinux.org>:
> On Wed, Apr 02, 2008 at 09:59:20PM +0400, Evgeny Sinelnikov wrote:
>
>
> > Здравствуйте,
> >
> > 2008/4/2 Michael Shigorin <mike на osdn.org.ua>:
> >
> > > Здравствуйте.
> > > Это мне второй раз показалось или текущие installer
> > > с installer-desktop из 4.0/branch подвисают после вывода
> > > надписи "Killing all remaining processes" (которую бы тоже
> > > недурно облагородить -- вроде ж было как-то иначе уже)?
> > >
> >
> > Совершенно верно, причём проблема довольно занятная (скорее всего из
> > непонятных ядерных глюков, как в quake3 на наших 2.6.18 ядрах - #14027). Как
> > раз сейчас пытаюсь понять причину... Проблема в loop_change_fd() вызываемой
> > из init в stage2 из пакета installer-stage2. Причём не совсем понятно зачем
> > вообще это нужно. Тем не менее, если этот вызов убрать, оно всё равно
> > падает, но уже после sysreboot()... Падает оно вроде всегда в
> > Kernel panic - not syncing: Attempted to kill init!
> loop_change_fd нужен для того чтобы дали отмонтировать /mnt/destination ...
> Причём иногда это по неведомым мне причинам всё-равно не спасает ... ядро как-то себя не очень адекватно ведёт.
>
> Если это очень хорошо воспроизводится на какой-нибудь машине, то было бы
> очень здорово, если бы имеющие её не поленились вставить побольше отладки в install2-init.
>
Не поленились :) Дело в общем-то оказалось давнее. Ошибок было две:
1) во время копирования образа в память он затирался и работал на
каком-то остаточном ходу... волшебная функция sparse в начальных
скриптах запуска stage2 делала своё грязное дело довольно давно...
из-за этого иногда (а у меня на тесте в VirtualBox постоянно) не
работал loop_change_fd()
2) После вызова reboot(), в случае появленения сигнала ECHILD, init не
дожидался момента завершения и падал из-за чего появлялся:
Kernel panic - not syncing: Attempted to kill init!
Исправленный вариант installer можно найти здесь:
http://git.etersoft.ru/people/sin/packages/installer.git/
Единственное, что осталось непонятным - это отмонтирование
/mnt/destination, в котором оказываются занятыми /mnt/destination/dev
и, при наличии, /mnt/destination/home... Комментарий по поводу
MNT_DETACH вероятно стоит раскомментировать... Есть ещё какие-нибудь
по этому поводу предложения?
--
Sin (Sinelnikov Evgeny)
Подробная информация о списке рассылки Devel