[devel] Installer / kernel problems

Alexander Bokovoy =?iso-8859-1?q?ab_=CE=C1_avilink=2Enet?=
Пн Дек 25 22:58:11 MSK 2000


Доброго времени суток!

Хочу предложить красивое на мой взгляд решение для проблемы,
описанной мною в [BUG] kernel 2.2.18-ipl1mdk на уровне программы
установки.

Итак, смысл проблемы в том, что драйвер устройства, на котором
расположен раздел /, требуются ядру прямо в момент загрузки и
потому не могут быть прочитаны из /lib/modules/<kernel version>
Поскольку при установке системы никаких действий с устройством,
где _будет_ находится / не производится в момент старта установочного
диска, то программа установки в таких модулях не нуждается и
потому ядро для нее обычно минимализировано (в модули укладывается
все, что можно).

Однако по окончании установки драйвера всех найденных важных для
монтирования / устройств должны быть доступны ядру уже установленной
системы до монтирования /. Так вот, предлагаю устанавливать эти модули в
составе некоторого initrd, который вместе с системным загрузчиком и
ядром укладывается в /boot и прописывается в настройках загрузчика как
initrd=/boot/initrd В таком случае, все эти драйвера (а их, в принципе,
немного -- block, scsi, misc и то только те, которые собраны как модули)
будут "под рукой" для ядра в нужный момент и проблем,  подобных
возникшей, больше не будет.

Отрицательная сторона такого решения:

При самостоятельной пересборке пользователь вынужден будет собирать свой
initrd либо отключать установленный в настройках загрузчика. Правда в
этом случае скорее всего такой пользователь драйвер контроллера своего
диска вкомпилирует внутрь. С другой стороны, все это можно (и нужно)
документировать и, в частности, выводить на экран при первой загрузке
системы.

Комментарии?

Да, вот еще один момент в новом ядре:

make install вызывает arch/<ARCH>/boot/install.sh, который в Mandrake
представляет собой ссылку на /sbin/installkernel, который в свою очередь
является скриптом на перле. Так вот, вызов выглядит как

    sh -x ./install.sh 

и sh честно пытается этот скрипт разобрать как набор команд ему самому,
игнорируя указанный /usr/bin/perl в заголовке. Происходит это на
свежеустановленном Сизифе, обновленном до /incoming. 

Помогло:

mv /sbin/installkernel /sbin/installkernel.pl
cat <EOT >/sbin/installkernel
/usr/bin/perl /sbin/installkernel.pl $@
EOT

-- 
Sincerely yours, Alexander Bokovoy 
  The Midgard Project   | www.midgard-project.org |    Aurora R&D team 
Minsk Linux Users Group |    www.minsk-lug.net    |  www.aurora-linux.com  
   IPLabs Linux Team    |     linux.iplabs.ru     | Architecte Open Source
-- In the long run we are all dead.
		-- John Maynard Keynes
_______________________________________________
Devel mailing list
Devel на linux.iplabs.ru
http://www.logic.ru/mailman/listinfo/devel



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