Страница 1 из 1

/init: .: 38: Can't open /scripts/functions Kernel panic ...

Добавлено: 25 сен 2007, 10:51
Serj
Дистр - Debian Lenny (testing) i386, железо - Amd Athlon64 x2, мать на nForce 410

Ситуация - решил вчера пересобрать ядро 2.6.21 которое без проблем собрал на прошлой неделе, но тупанул и часть звука вкомпилил в ядро, а не модулем - в итоге часть звуковых модулей автоматом не подымались.

Вот значит в конфиге только это и поменял.
При попытке собрать пакет ядра с помощью make-kpkg, выдало что нет команды вроде tmpname. Поставил из репозитария соответствующий пакет, ну и походу там обновил ещё пару пакетов (точно не помню каких) связанных с init-ом.

Собралось, поставил. При загрузке останавливается выдавая такую лажу:

/init: .: 38: Can't open /scripts/functions
Kernel panic - not syncing: Attempted to kill init

:( Нагуглил тоже, но для sparc64 и нихрена там не понимаю:
http://www.nabble.com/Bug-419062:-linux ... 72044.html

Может кто подскажет - куды рыть и чё делать? :cry:

Добавлено: 25 сен 2007, 11:35
Serj
Хм ... ща почитал внимательно, наверное всё дело в работе регулярных выражений (странно почему раньше работало):

...
Hah, seems like a sloppy regex problem - should have noticed at once.
a-z should be [:lower:] to also work in Danish, Estonian and other
locales where there are more letters after z il alphabet (...szšžtuv...
in Estoanian for example). Or prepend the find with LANG=C.

Tested LANG=C update-initramfs -u -t -k 2.6.20-1-sparc64 and the
resulting initrd.img contained all the files, fine. Rebooted, seemed to
work (except that new kernel kad libata-pata enabled for pata_cmd64x and
my hda became sda... no problem if the experimental pata_cdm64x really
works - seems to be OK so far). So it's definitely a locale-specific
problem.

First it seemed like LANG=C find ... is the only sane solution here
since find -regex does not seem to know character classes but still
adheres to LC_COLLATE and so it's not possible to denote all lowercase
letters independently from locale. But man find tells about -regextype
posix-basic option, this might help... yes, it helps and makes character
classes work in find -regex.

But it's more strange than that - what's the trailing ' there for?
Removed it from my command-line testing, probably a escape from sh -x.

These work for me and list all the files:
find . -regextype posix-extended -regex '.*/[[:lower:]0-9_]+$' -type f
LANG=C find . -regex '.*/[a-z0-9_]+$' -type f

Regextype posix-basic would need \+, posix-extended works with just +.

Or we could just use find | grep ... if -regextype posix-extended seems
bad (for portability to busybox-embedded find or something like that) -
grep is usually more consistent regexp-matcher.

There are more a-z usages in initramfs-tools, here is a patch to correct
them. Tested to work - a initrd generated with this patch works fine.
Sorry, no source patch, but should be appliable to source just fine.

There is also an inconsitency - most places look for lowercase letters
only, one place for both upper and lower case letters. Bug or feature?

............

Завтра проверю

Добавлено: 26 сен 2007, 22:51
Serj
Блин, оказалось типа того же, но с точностью до наоборот - мой старый find не умел -regextypе, на что и ругался при попытке выполнения update-initramfs.
После обновления findutils новый initrd.img сгенерился корректно.