[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