kycb-kycb
13-02-2008, 17:13
Добрый вечер (утро, день, ночь :) )
Имею я одну проблему (точнее видимо она меня имеет). Не могу решить уже больше недели, пробовал гуглить, обращался в офф. форум ASPLinux - результат нулевой.
Имеется флешка 2 Gb, размечена на 2 раздела по 1 Gb. На второй раздел установлен дистрибутив ASPLinux 12, файловая система ext2.
Далее в той же системе, но установленной на винте, был создан образ initrd, и кинут в папку /boot на разделе флешки.
mkinitrd запускался с такими параметрами:
mkinitrd --with-usb --preload=ehci-hcd --preload=usb-storage --preload=scsi_mod --preload=sd_mod --fstab=/media/usb/etc/fstab /media/usb/boot/usbinitrd-`uname -r`.img `uname -r`
Запуск производится загрузчиком Grub. Вот фрагмент grub.conf:
root (hd0,1)
kernel /boot/vmlinuz-2.6.22.9-91.0.120asp root=/dev/sda2 ro rhgb
initrd /boot/usbinitrd-2.6.22.9-91.0.120asp.img
файл /etc/fstab:
/dev/sda2 / ext2 defaults 1 1
tmpfs /dev/shm tmpfs defaults 0 0
devpts /dev/pts devpts gid=5,mode=620 0 0
sysfs /sys sysfs defaults 0 0
proc /proc proc defaults 0 0
При загрузке /dev/sda обнаруживается, отображается информация о блоках, объёме устройства (2097 Мб кажется) и так же выводится строка
sda: sda1 sda2
или что-то вроде того. В общем факт тот, что флешка определяется корректно.
Далее я вижу следующую картину:
Creating root device.
Mounting root filesystem.
Setting up other filesystems.
Setting up new root fs
no fstab.sys, mounting internal defaults
Switching to new root and running init.
unmounting old /dev
unmounting old /proc
unmounting old /sys
/bin/sh: root=/dev/sda2: No such file or directory
Kernel panic - not syncing: Attempted to kill init!
При помощи cpio распаковал образ initrd, привожу содержимое файла init из этого образа:
#!/bin/nash
mount -t proc /proc /proc
setquiet
echo Mounting proc filesystem
echo Mounting sysfs filesystem
mount -t sysfs /sys /sys
echo Creating /dev
mount -o mode=0755 -t tmpfs /dev /dev
mkdir /dev/pts
mount -t devpts -o gid=5,mode=620 /dev/pts /dev/pts
mkdir /dev/shm
mkdir /dev/mapper
echo Creating initial device nodes
mknod /dev/null c 1 3
mknod /dev/zero c 1 5
mknod /dev/systty c 4 0
mknod /dev/tty c 5 0
mknod /dev/console c 5 1
mknod /dev/ptmx c 5 2
mknod /dev/rtc c 10 135
mknod /dev/tty0 c 4 0
mknod /dev/tty1 c 4 1
mknod /dev/tty2 c 4 2
mknod /dev/tty3 c 4 3
mknod /dev/tty4 c 4 4
mknod /dev/tty5 c 4 5
mknod /dev/tty6 c 4 6
mknod /dev/tty7 c 4 7
mknod /dev/tty8 c 4 8
mknod /dev/tty9 c 4 9
mknod /dev/tty10 c 4 10
mknod /dev/tty11 c 4 11
mknod /dev/tty12 c 4 12
mknod /dev/ttyS0 c 4 64
mknod /dev/ttyS1 c 4 65
mknod /dev/ttyS2 c 4 66
mknod /dev/ttyS3 c 4 67
echo Setting up hotplug.
hotplug
echo Creating block device nodes.
mkblkdevs
echo "Loading ehci-hcd.ko module"
insmod /lib/ehci-hcd.ko
echo "Loading ohci-hcd.ko module"
insmod /lib/ohci-hcd.ko
echo "Loading uhci-hcd.ko module"
insmod /lib/uhci-hcd.ko
mount -t usbfs /proc/bus/usb /proc/bus/usb
echo "Loading scsi_mod.ko module"
insmod /lib/scsi_mod.ko
echo "Loading sd_mod.ko module"
insmod /lib/sd_mod.ko
echo "Loading usb-storage.ko module"
insmod /lib/usb-storage.ko
echo Waiting for driver initialization.
stabilized /proc/bus/usb/devices
echo "Loading mbcache.ko module"
insmod /lib/mbcache.ko
echo "Loading ext2.ko module"
insmod /lib/ext2.ko
echo "Loading libata.ko module"
insmod /lib/libata.ko
echo "Loading pata_amd.ko module"
insmod /lib/pata_amd.ko
echo Waiting for driver initialization.
stabilized --hash --interval 250 /proc/scsi/scsi
echo "Loading ata_generic.ko module"
insmod /lib/ata_generic.ko
echo "Loading sata_nv.ko module"
insmod /lib/sata_nv.ko
echo Waiting for driver initialization.
stabilized --hash --interval 250 /proc/scsi/scsi
insmod /lib/scsi_wait_scan.ko
rmmod scsi_wait_scan
mkblkdevs
echo Creating root device.
mkrootdev -t ext2 -o defaults,ro /dev/sda2
echo Mounting root filesystem.
mount /sysroot
echo Setting up other filesystems.
setuproot
echo Switching to new root and running init.
switchroot
echo Booting has failed.
sleep -1
пытался разобраться. Выходит, что всё до строки switchroot выполняется относительно нормально. В том числе и монтирование /dev/sda2. Однако после возникает проблема, уже явно не в initrd.
Знает кто-нибудь причину этого странного поведения и как можно исправить?
Имею я одну проблему (точнее видимо она меня имеет). Не могу решить уже больше недели, пробовал гуглить, обращался в офф. форум ASPLinux - результат нулевой.
Имеется флешка 2 Gb, размечена на 2 раздела по 1 Gb. На второй раздел установлен дистрибутив ASPLinux 12, файловая система ext2.
Далее в той же системе, но установленной на винте, был создан образ initrd, и кинут в папку /boot на разделе флешки.
mkinitrd запускался с такими параметрами:
mkinitrd --with-usb --preload=ehci-hcd --preload=usb-storage --preload=scsi_mod --preload=sd_mod --fstab=/media/usb/etc/fstab /media/usb/boot/usbinitrd-`uname -r`.img `uname -r`
Запуск производится загрузчиком Grub. Вот фрагмент grub.conf:
root (hd0,1)
kernel /boot/vmlinuz-2.6.22.9-91.0.120asp root=/dev/sda2 ro rhgb
initrd /boot/usbinitrd-2.6.22.9-91.0.120asp.img
файл /etc/fstab:
/dev/sda2 / ext2 defaults 1 1
tmpfs /dev/shm tmpfs defaults 0 0
devpts /dev/pts devpts gid=5,mode=620 0 0
sysfs /sys sysfs defaults 0 0
proc /proc proc defaults 0 0
При загрузке /dev/sda обнаруживается, отображается информация о блоках, объёме устройства (2097 Мб кажется) и так же выводится строка
sda: sda1 sda2
или что-то вроде того. В общем факт тот, что флешка определяется корректно.
Далее я вижу следующую картину:
Creating root device.
Mounting root filesystem.
Setting up other filesystems.
Setting up new root fs
no fstab.sys, mounting internal defaults
Switching to new root and running init.
unmounting old /dev
unmounting old /proc
unmounting old /sys
/bin/sh: root=/dev/sda2: No such file or directory
Kernel panic - not syncing: Attempted to kill init!
При помощи cpio распаковал образ initrd, привожу содержимое файла init из этого образа:
#!/bin/nash
mount -t proc /proc /proc
setquiet
echo Mounting proc filesystem
echo Mounting sysfs filesystem
mount -t sysfs /sys /sys
echo Creating /dev
mount -o mode=0755 -t tmpfs /dev /dev
mkdir /dev/pts
mount -t devpts -o gid=5,mode=620 /dev/pts /dev/pts
mkdir /dev/shm
mkdir /dev/mapper
echo Creating initial device nodes
mknod /dev/null c 1 3
mknod /dev/zero c 1 5
mknod /dev/systty c 4 0
mknod /dev/tty c 5 0
mknod /dev/console c 5 1
mknod /dev/ptmx c 5 2
mknod /dev/rtc c 10 135
mknod /dev/tty0 c 4 0
mknod /dev/tty1 c 4 1
mknod /dev/tty2 c 4 2
mknod /dev/tty3 c 4 3
mknod /dev/tty4 c 4 4
mknod /dev/tty5 c 4 5
mknod /dev/tty6 c 4 6
mknod /dev/tty7 c 4 7
mknod /dev/tty8 c 4 8
mknod /dev/tty9 c 4 9
mknod /dev/tty10 c 4 10
mknod /dev/tty11 c 4 11
mknod /dev/tty12 c 4 12
mknod /dev/ttyS0 c 4 64
mknod /dev/ttyS1 c 4 65
mknod /dev/ttyS2 c 4 66
mknod /dev/ttyS3 c 4 67
echo Setting up hotplug.
hotplug
echo Creating block device nodes.
mkblkdevs
echo "Loading ehci-hcd.ko module"
insmod /lib/ehci-hcd.ko
echo "Loading ohci-hcd.ko module"
insmod /lib/ohci-hcd.ko
echo "Loading uhci-hcd.ko module"
insmod /lib/uhci-hcd.ko
mount -t usbfs /proc/bus/usb /proc/bus/usb
echo "Loading scsi_mod.ko module"
insmod /lib/scsi_mod.ko
echo "Loading sd_mod.ko module"
insmod /lib/sd_mod.ko
echo "Loading usb-storage.ko module"
insmod /lib/usb-storage.ko
echo Waiting for driver initialization.
stabilized /proc/bus/usb/devices
echo "Loading mbcache.ko module"
insmod /lib/mbcache.ko
echo "Loading ext2.ko module"
insmod /lib/ext2.ko
echo "Loading libata.ko module"
insmod /lib/libata.ko
echo "Loading pata_amd.ko module"
insmod /lib/pata_amd.ko
echo Waiting for driver initialization.
stabilized --hash --interval 250 /proc/scsi/scsi
echo "Loading ata_generic.ko module"
insmod /lib/ata_generic.ko
echo "Loading sata_nv.ko module"
insmod /lib/sata_nv.ko
echo Waiting for driver initialization.
stabilized --hash --interval 250 /proc/scsi/scsi
insmod /lib/scsi_wait_scan.ko
rmmod scsi_wait_scan
mkblkdevs
echo Creating root device.
mkrootdev -t ext2 -o defaults,ro /dev/sda2
echo Mounting root filesystem.
mount /sysroot
echo Setting up other filesystems.
setuproot
echo Switching to new root and running init.
switchroot
echo Booting has failed.
sleep -1
пытался разобраться. Выходит, что всё до строки switchroot выполняется относительно нормально. В том числе и монтирование /dev/sda2. Однако после возникает проблема, уже явно не в initrd.
Знает кто-нибудь причину этого странного поведения и как можно исправить?