Thank you again for the quick response.
I created the /chroot-test dir and did like you said, using chroot to run hdparm. It looks like my distro also requires /lib/ld-linux.so.2 and /lib/libc.so.6. Once those are in place in /chroot-test/lib/ I can load hdparm.
I used ldd and ls -ls to find the files that the links pointed to.
# ldd /sbin/hdparm libc.so.6 => /lib/libc.so.6 (0x40020000) /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)
# ls -ld /lib/ld-linux.so.2 lrwxrwxrwx 1 root root 11 2003-11-13 15:12 /lib/ld-linux.so.2 -> ld-2.3.2.so
# ls -ld /lib/libc.so.6 -rwxr-xr-x 1 root root 1491599 2003-03-13 17:33 /lib/libc.so.6
Then I do a ./makeImage -k /usr/src/linux-2.4.22/arch/i386/boot/bzImage -c /tftpboot/udpcast/images/udpcd.img -i /tftpboot/udpcast/initrd --bzip -m bcm5700 --merge /bin/hdparm=/sbin/hdparm /lib/ld-linux.so.2=/lib/ld-2.3.2.so /lib/libc.so.6=/lib/libc.so.6
I load the image up and I do a /bin/hdparm. "/bin/hdparm: No such file or directory" cd /bin ls -l |grep hdparm
-rwxr-xr-x 1 0 0 47976 Thu Jan 1 00:00:00 1970 Thu Jan 1 00:00:00 1970 hdparm
cd /lib ls -a all it shows is the modules dir
I double checked the syntax for the library names, and they're correct.
Just to try and troubleshoot, I tried merging /lib/ls-2.3.2.so from my pc to /lib/ld-linux.so.2 in my initrd image.
./makeImage -k /usr/src/linux-2.4.22/arch/i386/boot/bzImage -c /tftpboot/udpcast/images/udpcd.img -i /tftpboot/udpcast/initrd --bzip -m bcm5700 --merge /lib/ld-linux.so.2=/lib/ld-2.3.2.so
Then I cd to /lib and do an ls, and the only thing that is there is the modules dir again. I tried one more thing. I tried merging /lib/ls-2.3.2.so from my pc to the root dir /ld-linux.so.2 in my initrd image.
./makeImage -k /usr/src/linux-2.4.22/arch/i386/boot/bzImage -c /tftpboot/udpcast/images/udpcd.img -i /tftpboot/udpcast/initrd --bzip -m bcm5700 --merge /ld-linux.so.2=/lib/ld-2.3.2.so
This time I boot and do an ls, and I see ld-linux.so.2. I wonder why it copied this time and not the other times??
begin Friday 05 December 2003 18:44, Eric Becker quote: [...]
Just to try and troubleshoot, I tried merging /lib/ls-2.3.2.so from my pc to /lib/ld-linux.so.2 in my initrd image.
./makeImage -k /usr/src/linux-2.4.22/arch/i386/boot/bzImage -c /tftpboot/udpcast/images/udpcd.img -i /tftpboot/udpcast/initrd --bzip -m bcm5700 --merge /lib/ld-linux.so.2=/lib/ld-2.3.2.so
Then I cd to /lib and do an ls, and the only thing that is there is the modules dir again. I tried one more thing. I tried merging /lib/ls-2.3.2.so from my pc to the root dir /ld-linux.so.2 in my initrd image.
Oops, I forgot: the /lib directory is a special case, because it needs to be written to (changed) by the embedded system, and this would not be possible on the romfs itself.
Because of this initrd mounts an empty tmpfs at this space, and populates it from what it finds in /mod/lib
Thus, just prepend /mod to every lib file, and it should be ok:
./makeImage -k /usr/src/linux-2.4.22/arch/i386/boot/bzImage -c \ /tftpboot/udpcast/images/udpcd.img -i /tftpboot/udpcast/initrd --bzip -m \ bcm5700 --merge /mod/lib/ld-linux.so.2=/lib/ld-2.3.2.so
Alain