Bug 4811 - не отрабатывается installkernel при make install при пересборке ядра
: не отрабатывается installkernel при make install при пересборке ядра
Status: CLOSED FIXED
: Sisyphus
(All bugs in Sisyphus/bootloader-utils)
: unstable
: all Linux
: P2 normal
Assigned To:
:
:
:
:
:
  Show dependency tree
 
Reported: 2004-07-16 12:59 by
Modified: 2007-02-22 01:00 (History)


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


Note

You need to log in before you can comment on or make changes to this bug.


Description From 2004-07-16 12:59:40
копия из 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 From 2004-07-17 18:48:26 -------
А при чём тут make?
------- Comment #2 From 2004-07-18 13:47:23 -------
А кто вызывает installkernel, когда отрабатывается make install ? Мне кажется, 
что все дело в том, с какими параметрами окружения installkernel вызывается в 
этот момент. Иначе почему он правильно работает, когда сам по себе с теми же 
параметрами вызывается просто от рута ? Всмысле, perl находит или не находит ? 
------- Comment #3 From 2004-08-03 21:49:05 -------
Например, окружение могло поменяться.
------- Comment #4 From 2004-08-04 09:13:03 -------
Так а я про что ? Когда installkernel сам по себе из баша запускается, 
окружение нормальное, а как из-под make, так что-то не так... Скорее всего, так 
оно и есть... Вот только надо крайнего найти.  
------- Comment #5 From 2004-10-24 22:04:20 -------
Created an attachment (id=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 From 2004-10-24 23:07:44 -------
Предлагаемый патч, конечно, не годится, поскольку вводит дополнительную
зависимость на which(1), но идея правильная.
------- Comment #7 From 2004-10-25 09:48:49 -------
Вообще, если есть зависимость на Perl, мне кажется, что все остальное уже не 
сильно существенно... Ну, будет еще и на which. По хорошему, вообще не стоило 
от bash уходить, но если ушли, что уж теперь... Или я что-то еще не понимаю ? 

------- Comment #8 From 2004-10-25 14:32:48 -------
Может быть тогда так? 
 
--- 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 From 2006-02-09 16:41:23 -------
Приложил в 0.3.1-alt1.1 как NMU.

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

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

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