Bug 4811 - не отрабатывается installkernel при make install при пересборке ядра
Summary: не отрабатывается installkernel при make install при пересборке ядра
Status: CLOSED FIXED
Alias: None
Product: Sisyphus
Classification: Development
Component: bootloader-utils (show other bugs)
Version: unstable
Hardware: all Linux
: P2 normal
Assignee: placeholder@altlinux.org
QA Contact: qa-sisyphus
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2004-07-16 12:59 MSD by Sergey Y. Afonin
Modified: 2007-02-22 01:00 MSK (History)
9 users (show)

See Also:


Attachments
Proposed patch against/sbin/installkernel (317 bytes, patch)
2004-10-24 22:04 MSD, Alexey Kopytov
no flags Details | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Sergey Y. Afonin 2004-07-16 12:59:40 MSD
копия из devel: 
---- 
#make install 
<skip> 
sh -x ./install.sh 2.4.26 bzImage /usr/src/linux-2.4.26/System.map "" 
+ '[' -x /root/bin/installkernel ']' 
+ '[' -x /sbin/installkernel ']' 
+ exec /sbin/installkernel 2.4.26 bzImage /usr/src/linux-2.4.26/System.map '' 
/sbin/installkernel: warning: perl not available; supposed to run manually... 
/sbin/installkernel: line 108: echo perl: command not found 
/sbin/installkernel: line 110: echo perl: command not found 
/sbin/installkernel: line 116: echo perl: command not found 
/sbin/installkernel: line 118: echo perl: command not found 
make[1]: Leaving directory `/usr/src/linux-2.4.26/arch/i386/boot' 
 
при этом, если просто  
/sbin/installkernel 2.4.26 bzImage /usr/src/linux-2.4.26/System.map 
то все отрабатывается нормально. Когда поломали-то ? Еще месяца три 
назад такого не было... С этим же ядром. 
---- 
 
Нет особой уверенности, что это make, но, как мне кажется, это наиболее 
вероятно. Сизиф от 20040702 
 
Steps to Reproduce:
1. распаковать оригинальный тарбол ядра 
2. выполнить make dep bzImage modules modules_install install 
3. наблюдать описанное в Description 
Actual Results:
Comment 1 Dmitry V. Levin 2004-07-17 18:48:26 MSD
А при чём тут make?
Comment 2 Sergey Y. Afonin 2004-07-18 13:47:23 MSD
А кто вызывает installkernel, когда отрабатывается make install ? Мне кажется, 
что все дело в том, с какими параметрами окружения installkernel вызывается в 
этот момент. Иначе почему он правильно работает, когда сам по себе с теми же 
параметрами вызывается просто от рута ? Всмысле, perl находит или не находит ? 
 
Comment 3 Dmitry V. Levin 2004-08-03 21:49:05 MSD
Например, окружение могло поменяться.
Comment 4 Sergey Y. Afonin 2004-08-04 09:13:03 MSD
Так а я про что ? Когда installkernel сам по себе из баша запускается, 
окружение нормальное, а как из-под make, так что-то не так... Скорее всего, так 
оно и есть... Вот только надо крайнего найти.  
 
Comment 5 Alexey Kopytov 2004-10-24 22:04:20 MSD
Created attachment 614 [details]
Proposed patch against/sbin/installkernel

Это ошибка в /sbin/installkernel. Корневый Makefile в ядре устанавливает 
переменную PERL следующим образом: 
PERL		= perl 
 
В новом /sbin/installkernel делается следующая проверка: 
if [ ! -x "$PERL" ]; then 
	echo "$0: warning: $PERL not available; supposed to run manually..." 
	PERL="echo $PERL" 
fi 

Предлагаемый патч -- в attachment.
Comment 6 Dmitry V. Levin 2004-10-24 23:07:44 MSD
Предлагаемый патч, конечно, не годится, поскольку вводит дополнительную
зависимость на which(1), но идея правильная.
Comment 7 Sergey Y. Afonin 2004-10-25 09:48:49 MSD
Вообще, если есть зависимость на Perl, мне кажется, что все остальное уже не 
сильно существенно... Ну, будет еще и на which. По хорошему, вообще не стоило 
от bash уходить, но если ушли, что уж теперь... Или я что-то еще не понимаю ? 
 
 
Comment 8 Alexey Kopytov 2004-10-25 14:32:48 MSD
Может быть тогда так? 
 
--- installkernel.old   2004-08-17 06:08:27 +0400 
+++ installkernel       2004-10-25 14:29:52 +0400 
@@ -90,12 +90,14 @@ 
 : ${LILO_CONF:=/etc/lilo.conf} 
 : ${GRUB_MENU_LST:=$BOOTDIR/grub/menu.lst} 
 : ${GRUB_DEVICE_MAP:=$BOOTDIR/grub/device.map} 
-: ${PERL:=/usr/bin/perl} 
 : ${LILO:=/sbin/lilo} 
 : ${DETECTLOADER:=/usr/sbin/detectloader} 
 : ${SHARFILE:=/usr/share/loader} 
 
 # check perl 
+if [ -z "$PERL" -o ! -x "$PERL" ]; then 
+       PERL=/usr/bin/perl 
+fi 
 if [ ! -x "$PERL" ]; then 
        echo "$0: warning: $PERL not available; supposed to run manually..." 
        PERL="echo $PERL" 
 
Comment 9 Anton Farygin 2006-02-09 16:41:23 MSK
Приложил в 0.3.1-alt1.1 как NMU.

Comment 10 at@altlinux.org 2007-02-22 01:00:41 MSK
Предлагаю более хорошее исправление, которое сводится к этому:

-if [ ! -x "$PERL" ]; then
+if [ ! -x "$PERL" ] && ! type "$PERL" >/dev/null 2>&1; then

и соответственно расквотить "$PERL" чтобы PERL="echo perl" работало