Skip to contentSkip to conversation

initrd and devfs

DISCUSSION Keith Owens 2 participants 3 messages Apr 29, 2002 – May 5, 2002

lore
Share & tools
lore
#0 lore raw

I am having problems with the combination of initrd and devfs.

mkinitrd 3.3.9, hacked to build an ia64 initrd on ia32. Kernel 2.4.18-ia64-020410, config extract.

CONFIG_DEVFS_FS=y
CONFIG_DEVFS_MOUNT=y
CONFIG_BLK_DEV_RAM=y
CONFIG_BLK_DEV_RAM_SIZE=8192
CONFIG_BLK_DEV_INITRD=y

linuxrc commands:

insmod /lib/qla1280.o
echo Mounting /proc filesystem
mount -t proc /proc /proc
echo Creating root device
mkrootdev /dev/root
fails "mkrootdev: mknod failed: 17". devfs has already created /dev/root as a symlink.
echo 0x0100 > /proc/sys/kernel/real-root-dev
echo Mounting root filesystem
mount --ro -t ext2 /dev/root /sysroot
fails "mount: error 16 mounting ext2" because /dev/root is wrong.
pivot_root /sysroot /sysroot/initrd
fails "pivotroot: pivot_root(/sysroot,/sysroot/initrd) failed: 2"

By removing /dev/root immediately before mkrootdev /dev/root I can get past those errors, even pivot_root works. But then it gets nasty :-

INIT: version 2.78 booting
Welcome to Red Hat Linux
Press 'I' to enter interactive startup.

Mounting proc filesystem:  [  OK  ]
Unmounting initrd:  umount: /initrd: device is busy

Because of this mount - none /initrd/dev devfs rw 0 0

If I boot with initrd and devfs=nomount it goes through initrd processing and successfully umounts initrd, but then fails "Remounting root filesystem in read-write mode: mount: no such partition found". /proc/mounts contains

/dev/root / ext2 ro 0 0

What is the correct way of using initrd and devfs together?

devfsd.conf is not the answer, initrd does not run the devfsd daemon.

#1 lore raw

I'm not absolutely sure that this is what you want, but I think I have a similar case.
I boot from a CD a kernel which has cdrom support compiled as modules, and devfs compiled in:

syslinux starts kernel with this:
/boot/bzImage devfs=mount root=/dev/cdroms/cdrom0 initrd=/boot/initrd

Then the initrd loads the needed modules, and _exits_.
The kernel then mounts the given root, and the system boots successfully.

So all I needed to do is give the root partition as a parameter, and no mkrootdev or pivot_root was needed.

Signature · 1 line
Balazs Pozsar
Quoted 47 lines · Keith Owens

I am having problems with the combination of initrd and devfs.

mkinitrd 3.3.9, hacked to build an ia64 initrd on ia32. Kernel 2.4.18-ia64-020410, config extract.

CONFIG_DEVFS_FS=y
CONFIG_DEVFS_MOUNT=y
CONFIG_BLK_DEV_RAM=y
CONFIG_BLK_DEV_RAM_SIZE=8192
CONFIG_BLK_DEV_INITRD=y

linuxrc commands:

insmod /lib/qla1280.o
echo Mounting /proc filesystem
mount -t proc /proc /proc
echo Creating root device
mkrootdev /dev/root
fails "mkrootdev: mknod failed: 17". devfs has already created /dev/root as a symlink.
echo 0x0100 > /proc/sys/kernel/real-root-dev
echo Mounting root filesystem
mount --ro -t ext2 /dev/root /sysroot
fails "mount: error 16 mounting ext2" because /dev/root is wrong.
pivot_root /sysroot /sysroot/initrd
fails "pivotroot: pivot_root(/sysroot,/sysroot/initrd) failed: 2"

By removing /dev/root immediately before mkrootdev /dev/root I can get past those errors, even pivot_root works. But then it gets nasty :-

INIT: version 2.78 booting
Welcome to Red Hat Linux
Press 'I' to enter interactive startup.

Mounting proc filesystem:  [  OK  ]
Unmounting initrd:  umount: /initrd: device is busy

Because of this mount - none /initrd/dev devfs rw 0 0

If I boot with initrd and devfs=nomount it goes through initrd processing and successfully umounts initrd, but then fails "Remounting root filesystem in read-write mode: mount: no such partition found". /proc/mounts contains

/dev/root / ext2 ro 0 0

What is the correct way of using initrd and devfs together?

devfsd.conf is not the answer, initrd does not run the devfsd daemon.

#2 lore raw
In reply to Keith Owens

Resend, no response from initrd/devfs maintainers the first time.

I am having problems with the combination of initrd and devfs.

mkinitrd 3.3.9, hacked to build an ia64 initrd on ia32. Kernel 2.4.18-ia64-020410, config extract.

CONFIG_DEVFS_FS=y
CONFIG_DEVFS_MOUNT=y
CONFIG_BLK_DEV_RAM=y
CONFIG_BLK_DEV_RAM_SIZE=8192
CONFIG_BLK_DEV_INITRD=y

linuxrc commands:

insmod /lib/qla1280.o
echo Mounting /proc filesystem
mount -t proc /proc /proc
echo Creating root device
mkrootdev /dev/root
fails "mkrootdev: mknod failed: 17". devfs has already created /dev/root as a symlink.
echo 0x0100 > /proc/sys/kernel/real-root-dev
echo Mounting root filesystem
mount --ro -t ext2 /dev/root /sysroot
fails "mount: error 16 mounting ext2" because /dev/root is wrong.
pivot_root /sysroot /sysroot/initrd
fails "pivotroot: pivot_root(/sysroot,/sysroot/initrd) failed: 2"

By removing /dev/root immediately before mkrootdev /dev/root I can get past those errors, even pivot_root works. But then it gets nasty :-

INIT: version 2.78 booting
Welcome to Red Hat Linux
Press 'I' to enter interactive startup.

Mounting proc filesystem:  [  OK  ]
Unmounting initrd:  umount: /initrd: device is busy

Because of this mount - none /initrd/dev devfs rw 0 0

If I boot with initrd and devfs=nomount it goes through initrd processing and successfully umounts initrd, but then fails "Remounting root filesystem in read-write mode: mount: no such partition found". /proc/mounts contains

/dev/root / ext2 ro 0 0

What is the correct way of using initrd and devfs together?

devfsd.conf is not the answer, initrd does not run the devfsd daemon.