We(my team) had some questions regarding booting from initrd and using
/linuxrc. It will help someone(David, Werner,...) can give their
thoughts on this.
To put it in brief, since running sbin/init from /linuxrc as resulting
in init not having PID 1 and thereby not doing some initialization as
expected.
Thereby instead of loading running /sbin/init, we just set
/proc/sys/kernel/real-root-dev to /dev/ram0's value which then does the
following
runs 2 statements in init/main.c to unlock_kernel and free init memory
and then run sbin/init.
This results in /sbin/init running fine.
Is this ok or should be modify /sbin/init to run properly inspite of PID
<> 1 or is there a 3rd way of doing this?
Thanks
Amit
This is on linux-2.4.1 kernel running on PPC.
/linuxrc is as follow:
../bin/mount -t ramfs none tmp_rootfs
#untar'ing the new root.
../bin/tar -b 512 -zxf /dev/mtd1
mkdir initrd
../bin/pivot_root . initrd
exec sbin/chroot . sbin/init.new 3 <dev/console >dev/console 2>&1
The above results in init running with PID != 1 and thereby skipping
some relevant processing my default. see ps output below:
Instead of the "chroot" above is changed to following
exec sbin/chroot . sh -c 'bin/mount proc proc -t proc; echo 0x01000000 >
proc/sys/kernel/real-root-dev'
And linuxrc exits
(none):root> ps -e
PID TTY TIME CMD
1 ? 00:00:04 swapper
2 ? 00:00:00 keventd
3 ? 00:00:00 kswapd
4 ? 00:00:00 kreclaimd
5 ? 00:00:00 bdflush
6 ? 00:00:00 kupdate
7 ? 00:00:00 mtdblockd
8 ? 00:00:00 init
26 ? 00:00:00 sh
39 ? 00:00:00 portmap
50 ? 00:00:00 ypbind
51 ? 00:00:00 ypbind
84 ? 00:00:00 inetd
93 ? 00:00:00 syslogd
100 ? 00:00:00 klogd
119 ? 00:00:00 ps
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/