LINUX.ORG.RU
ФорумAdmin

initramfs и /dev/initctl.


0

0

Что-то глохнет у меня самосборный минимальный initramfs. Вот такой у меня initramfs-list:

# commands dir /bin 0755 0 0 file /bin/bash /bin/bash 0755 0 0 slink /bin/sh /bin/bash 0777 0 0 file /bin/mount /root/initramfs/klibc-1.4.30/usr/utils/static/mount 0755 0 0 file /bin/cat /bin/cat 0755 0 0 file /bin/mknod /bin/mknod 0755 0 0 file /bin/run-init /root/initramfs/klibc-1.4.30/usr/kinit/run-init/static/run-init 0755 0 0

file /init /root/initramfs/scripts/init 0755 0 0 file /bin/mdadm /usr/src/mdadm-2.5.6/mdadm.static 0755 0 0

# supporting libraries dir /lib 0755 0 0 file /lib/ld-linux.so.2 /lib/ld-linux.so.2 0755 0 0 file /lib/libc.so.6 /lib/libc.so.6 0755 0 0 file /lib/libdl.so.2 /lib/libdl.so.2 0755 0 0 file /lib/libncurses.so.5 /lib/libncurses.so.5 0755 0 0 slink /lib/libncurses.so.5.0 /lib/libncurses.so.5 0755 0 0 file /lib/libhistory.so.5 /lib/libhistory.so.5 0755 0 0 file /lib/libreadline.so.5 /lib/libreadline.so.5 0755 0 0

# supporting directories dir /proc 0755 0 0 dir /new-root 0755 0 0

# initial device files required dir /dev 0755 0 0 nod /dev/console 0600 0 0 c 5 1 nod /dev/null 0666 0 0 c 1 3

Ничего особенного. А вот мой файл init, который init в initramfs. Он должен только смонтировать то что будет корневой файловой системой и запустить основной init. Я его подредактировал под свою железячную конфигурацию, много закомментировал:

#!/bin/bash

mount -t proc proc /proc CMDLINE=`cat /proc/cmdline`

for param in $CMDLINE ; do case "$param" in root=*|init=*) eval "$param" ;; esac done

if [ -z "$root" ] ; then echo "No root filesystem given to the kernel. Append the" echo "correct 'root=' boot option." echo echo "Dropping to a very minimal shell. Reboot with" echo "Ctrl-Alt-Delete."

exec /bin/bash fi

if [ -z "$init" ] ; then init=/sbin/init fi

# Make the device file mknod /dev/hda2 b 3 2 mknod /dev/hdb2 b 3 66 mknod /dev/hdc2 b 22 2 mknod /dev/hdd2 b 22 66 mknod /dev/md0 b 9 0

# last chance to fix stuff... /bin/bash #exec run-init /new-root $init "$@"

Вот и всё. В таком виде initramfs не монтирует корень, а передаёт мне мне ручное управление, вот что я делаю: создаю md0 -- software-RAID-0 на котором у меня система, монтирую его в /new-root, перемещаю /proc как описано в LFS hint'е, пытаюсь запустить init:

# mdadm -C /dev/md0 -l linear -n 4 /dev/hda2 /dev/hdb2 /dev/hdc2 /dev/hdd2 -c 4 # mount -t reiser4 /dev/md0 /new-root # mount -o move /proc /new-root/proc # exec run-init /new-root /sbin/init 1

После этого получаю сообщение об ошибке и Kernel panic:

init: /dev/initctl: no such file or directory

Устройство /dev/initctl в системе присутствует, в смысле в /new-root/dev/initctl; в initramfs, по идее, его быть не должно, но я пробовал добавить, всё равно с той же ошибкой вылетает. Таки что делать-то? Какую команду дать чтобы хоть в ручном режиме загрузится успешно?

★★★★★

Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.