[devel] q: installer: Killing all remaining processes (forever)

Evgeny Sinelnikov =?iso-8859-1?q?sin_=CE=C1_altlinux=2Eru?=
Сб Апр 5 04:29:59 MSD 2008


2008/4/5 Dmitry V. Levin <ldv на altlinux.org>:
> On Fri, Apr 04, 2008 at 10:00:03PM +0400, Evgeny Sinelnikov wrote:
>  [...]
>  > Не поленились :)
>
>  Спасибо!
>

Пожалуйста  :)

>  > Дело в общем-то оказалось давнее. Ошибок было две:
>  > 1) во время копирования образа в память он затирался и работал на
>  > каком-то остаточном ходу... волшебная функция sparse в начальных
>  > скриптах запуска stage2 делала своё грязное дело довольно давно...
>  > из-за этого иногда (а у меня на тесте в VirtualBox постоянно) не
>  > работал loop_change_fd()
>
>  Это было сделано специально, чтобы сэкономить несколько десятков мегабайт
>  памяти.  По крайней мере, содержимое этого образа уже не должно быть нужно
>  ни одному процессу.  Хорошо бы в этом как следует разобраться, всё-таки
>  несколько десятков мегабайт памяти иногда кое-что значит.
>

Довольно-таки смутно....  Как можно сэкономить "несколько десятков
мегабайт памяти" путём затирания образа в памяти после его
копирования..? Сначала копируем cp /image/altinst /mnt/altlinst, а
потом затираем последние как минимум 512 байт с помощью dd
if=/dev/zero of=/mnt/altinst skip=$size_of_image... После этого оно
иногда падает, особенно когда мы вызываем loop_change_fd("/dev/loop0",
"/mnt/altinst"), если ядро память почистило для своих нужно...

>
>  > 2) После вызова reboot(), в случае появленения сигнала ECHILD, init не
>  > дожидался момента завершения и падал из-за чего появлялся:
>  > Kernel panic - not syncing: Attempted to kill init!
>
>  А вот это совершенно верно, коммит
>  fe761e03fcc44afc58687810844a1efc1a013e82
>  исправляет сразу две ошибки.
>
>
>  > Исправленный вариант installer можно найти здесь:
>  > http://git.etersoft.ru/people/sin/packages/installer.git/
>  >
>  > Единственное, что осталось непонятным - это отмонтирование
>  > /mnt/destination, в котором оказываются занятыми /mnt/destination/dev
>  > и, при наличии, /mnt/destination/home... Комментарий по поводу
>  > MNT_DETACH вероятно стоит раскомментировать... Есть ещё какие-нибудь
>  > по этому поводу предложения?
>
>  Нет, MNT_DETACH был убран специально, иначе не все ресурсы оказываются
>  полностью отмонтированными: после "поверхностного" отмонтирования
>  расположенные глубже ресурсы оказываются недоступными для отмонтирования.
>

Ну, тут всё вообще очень мутно.... Почему init, который init_stage2,
оказывается занял что-то /mnt/destination/dev?


-- 
Sin (Sinelnikov Evgeny)


Подробная информация о списке рассылки Devel