Forum Replies Created
Thanks a lot, Sean!
Now it works perfectly.
With this minimal ramdisk the board boots much faster than with my “bloated” ramdisk 🙂
I tried to statically create the /realroot directory in the ramdisk, but as I was expecting it did not help – the same problem: the boot process stops at “Starting kernel …” line. I guess the /realroot is not a problem because it is long way before switching the root takes place…
Do the instructions in Appendix D work for you (with a ramdisk consisting only of the busybox and few libraries)? Can you maybe send your ramdisk.cpio or I can send you mine for comparison?
Two more things that look suspicious in Appendix D:
1) Is it correct that /linuxrc points to sbin/init script (instead of bin/busybox)?
2) In Edit inittab sub-section the explanation is a bit cryptic:
Edit the file buildroot/output/target/etc/inittab and remove (or comment out) all lines beginning with ::sysinit: down to the line ::sysinit:/bin/mount -o remount,rw /
The ramdisk init will take care of those things.
First, there are no lines starting with ::sysinit: in my inittab, only null:sysinit: – is it correct?
Second, it is not clear if the lines to remove include “::sysinit:/bin/mount -o remount,rw /” or not.
Also, can it be that the order of lines changes in inittab depending on buildroot configuration?
It would be better to write explicitly which lines to remove, .e.g those which mount /dev and /proc filesystems.
Thanks for the hint! I will try it on Monday when I have access to the board, however I think the cause of the failure is something else.
The thing is I moved the creation of /realroot directory into my init_script (which is copied over to ramdisk init) – I thought it is more logical there…
Also this would not explain why a “bigger” ramdisk (obtained from default configuration of buildroot) which does not have /realroot directory works fine (the /realroot directory is created in init script).
In any case, I will do the experiment and report back with the results!
By the way, here is my init script which works with “bigger” ramdisk but not with the “minimal” one:
mknod /dev/console c 5 1
echo "Mounting filesystems..."
mount -t proc proc /proc
mount -t sysfs sysfs /sys
mount -t devtmpfs devtmpfs /dev
mkdir -p /dev/pts
mount -t devpts devpts /dev/pts
echo /sbin/mdev > /proc/sys/kernel/hotplug
echo "Mounting SD card as root filesystem..."
mkdir -p /realroot
mount -t ext2 -o rw /dev/mmcblk0p2 /realroot
mount --move /dev /realroot/dev
mount --move /proc /realroot/proc
mount --move /sys /realroot/sys
echo "Passing control to the root file system now..."
exec switch_root /realroot /sbin/init