Linux за българи: Форуми

Linux секция за напреднали => Хардуерни и софтуерни проблеми => Темата е започната от: vstoykov в Mar 11, 2005, 20:00



Титла: Kernel panic - not syncing: No init found.
Публикувано от: vstoykov в Mar 11, 2005, 20:00
Снимки на екрана:
http://d.interbild.net/vstoykov/tmp/bugs/panic.png
http://d.interbild.net/vstoykov/tmp/bugs/ramdisk.png

Това съобщение се наблюдава само с по-нова версия на initrd (с програми от Slackware 10.1; старо initrd с програми от Slackware 10 работи; и двете initrd-та са създадени с един и същ скрипт). Скрипта за създаване на initrd е initrd_create от http://d.linux-bg.org/download/distros/VS_Live/scripts/

Параметрите на ядрото са:
Примерен код

 initrd=/vslive/initrd.gz init=/vslive/linuxrc load_ramdisk=1 prompt_ramdisk=0 ramdisk_size=15360 rw root=/dev/ram0


Файлът /vslive/linuxrc съществува и е разрешен за изпълнение.

Правя следния опит:
Примерен код

gunzip initrd.gz
mount initrd /mnt/test -o loop
chroot /mnt/test

В резултат ми дава следното съобщение за грешка:
Примерен код

chroot: cannot run command `/bin/bash': No such file or directory


Има файл /mnt/test/bin/bash и този файл е изпълним.

При същия опит с по-старо initrd chroot е успешно.


Титла: Kernel panic - not syncing: No init found.
Публикувано от: vstoykov в Mar 12, 2005, 19:59
Открих причината за проблема - имаше бъг в скрипта, който създава initrd-то (и по-точно тази част, която проверява зависимостите) - не беше съвместим с новата версия на ldd. Тази програма до сега връщаше само резултата в този вид:
Примерен код

        libtermcap.so.2 => /lib/libtermcap.so.2 (0x40029000)


а сега си позволява да връща резултат така:
Примерен код

        /lib/ld-linux.so.2 (0x40000000)


Стария скрипт:
Примерен код

# list all library dependencies, using ldd, including all links
# $1 = binary
#
list_libs()
{
   ldd "$1" | egrep -o "=>.*" | cut -b 4- | cut -d " " -f 1 | while read LIB; do
     if [ "$LIB" = "" ]; then continue; fi # bugfix; modified by Valentin Stoykov
     echo "$LIB"
     if [ -L "$LIB" ]; then LIB="`dirname $LIB`/`readlink $LIB`"; echo $LIB; fi
     list_libs $LIB # even a library could use libraries
   done
}


Новата версия:

Примерен код

get_lib_from_line() {

if ! echo "$1" | grep -i "statically linked" >/dev/null 2>/dev/null; then

REZ=`echo "$1" | egrep -o "=>.*" | cut -b 4- | cut -d " " -f 1`

if [ "$REZ" != "" ]; then
echo $REZ
else
 REZ=`echo "$1" | crunch | wc -w`
 if [ "$REZ" = "2" ]; then
  echo "$1" | crunch | cut -d " " -f 1
 fi
fi

fi

}

# list all library dependencies, using ldd, including all links
# $1 = binary
#
list_libs()
{
#   echo "Извиква се list_libs с параметър $1" >> debug.log
#   ldd "$1" | egrep -o "=>.*" | cut -b 4- | cut -d " " -f 1 | while read LIB; do
   ldd "$1" | while read LINE; do
     LIB=`get_lib_from_line "$LINE"`
     if [ "$LIB" = "" ]; then continue; fi # bugfix; modified by Valentin Stoykov
     echo "$LIB"
#     echo "LIB=$LIB" >> debug.log
#     if [ -L "$LIB" ]; then LIB="`dirname $LIB`/`readlink $LIB`"; echo $LIB; fi
     if [ -L "$LIB" ]; then LIB="`readlink -f $LIB`"; echo $LIB; fi
     list_libs $LIB # even a library could use libraries
   done
}


Титла: Kernel panic - not syncing: No init found.
Публикувано от: nienor в Jul 08, 2005, 01:39
Много се извинявам, че изравям тази тема, но след доста мъчения се предадох.

Бих се радвал някой да ми обясни какво трябва да направя.

Проблема е следния:

1. Инсталирам Слакуеър.
2. Ребуутвам.
3. Дава ми горната грешка

След доста мъчения, в крайна сметка разбрах, че при това положение системата е в положение, в което аз съм и шах и мат...

Бихте ли обяснили, какво трябва да направя стъпка по стъпка...  къде да ги слагам тези скриптове и най-вече как... та то нищо не може да се прави с компютъра докато е в това положение...
А аз не съм толкова зле... от няколко дена компилирам безпроблемно програми... правя пакети и т.н., така че давайте смело, не се притеснявам от тези неща...

Благодаря предварително...


Титла: Kernel panic - not syncing: No init found.
Публикувано от: rpetrov в Jul 09, 2005, 15:54
ползваш или не initrd ?