[devel] q: installer: Killing all remaining processes (forever)
Dmitry V. Levin
=?iso-8859-1?q?ldv_=CE=C1_altlinux=2Eorg?=
Сб Апр 5 04:42:50 MSD 2008
On Sat, Apr 05, 2008 at 04:29:59AM +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...
Идея была в том, чтобы создать файл-дырку /mnt/altlinst в точности
того же размера, что и исходный файл /image/altinst.
> После этого оно
> иногда падает, особенно когда мы вызываем loop_change_fd("/dev/loop0",
> "/mnt/altinst"), если ядро память почистило для своих нужно...
Непонятно, почему оно может падать, если, по идее, оно больше не должно
использоваться в тот момент, когда вызывается завершающий loop_change_fd.
> > > 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?
Кажется, это последствия работы evms.
--
ldv
----------- следующая часть -----------
Было удалено вложение не в текстовом формате...
Имя : =?iso-8859-1?q?=CF=D4=D3=D5=D4=D3=D4=D7=D5=C5=D4?=
Тип : application/pgp-signature
Размер : 197 байтов
Описание: =?iso-8859-1?q?=CF=D4=D3=D5=D4=D3=D4=D7=D5=C5=D4?=
Url : <http://lists.altlinux.org/pipermail/devel/attachments/20080405/a44656ff/attachment-0002.bin>
Подробная информация о списке рассылки Devel