Diskless boot: Unable to locate disklessrc
Posted: 2010/10/01 03:34:10
I am attempting to set up a diskless boot for a set of machines and have basically followed the process outlined in http://www.linuxquestions.org/questions/red-hat-31/building-a-diskless-redhat-enterprise-linux-cluster-765393 . I have pretty much everything set up but am encountering a problem during the boot. In essence, the diskless client starts booting and eventually hangs and gives the following message.
Write protecting the kernel read-only data: 504k
Failed to execute /init
Failed to execute disklessrc. Attemtping defaults...
Kernel Panic - not syncing: No init found. Try passing init= option to kernel.
My pxelinux.cfg file for this system is:
default centos5ssi
label centos5ssi
kernel centos5ssi/vmlinuz
append initrd=centos5ssi/initrd.img root=/dev/ram0 init=disklessrc NFSROOT=192.168.0.2:/opt/diskless/CentOS/x86_64 ramdisk_size=32768 ETHERNET=eth0 SNAPSHOT=node003
Here is some background on the setup. The machine that is acting as the server is an old machine that presently has CentOS 5.4 (i386) installed. On the client, I am attempting to boot and run CentOS 5.5 (x86_64). I've got DHCP and TFTP set up on the server which all seems to be working. During the client boot, it gets its IP address from the server and I can see that it is passed the vmlinuz and initrd.img file.Then as mentioned above it eventually hangs. I have mounted the initrd.img file (after uncompressing and cpio extraction) and see that there is a "init" file present in the top level directory but there is no file named "disklessrc". However, the contents of the "init" file are the same as /usr/share/system-config-netboot/diskless/disklessrc that is present on the server machine. Also, I have confirmed that busybox-anaconda is installed on both client and server.
Now as a comparison, a few months earlier, someone else used the same server machine but with a different client machine and was using CentOS 5.4 (i386) for each and was able to get a diskless boot to work. I was, in fact, able to use this setup for the present client and it is able to boot. (However, for my present client I need to have a 64-bit OS installed and want to make sure the proper drivers are installed). I took a look at the initrd.img that was created by pxeos for this earlier setup (config. A) and compared somethings with the initrd.img from my present setup (config. B). I noticed that the /lib directory from config. A had several libraries present while the /lib directory from config. B was completely empty except for a modules subdirectory. I came across an old bugzilla report (2005 timeframe: https://bugzilla.redhat.com/show_bug.cgi?id=135411) that seemed to indicate that due to the lack of libraries present in the initrd that bash was unable to get started and resulted in an Kernel panic and error (i.e. unable to find disklessrc) similar to that mentioned above.
Does anyone know why the pxeos command is not copying over all the necessary files when it creates the initrd.img in this present setup? Is there any reason that having the server be a 32-bit OS would cause problems/issues when trying to create a setup for a 64-bit client. (The initial client image was setup using 64-bit CentOS 5.5 and then rsync'd over to the server NFS diskless export directory.) As I mentioned above, the server in this case is an old machine with only a 32-bit processor. Ultimately I would like to know what to try next.
Write protecting the kernel read-only data: 504k
Failed to execute /init
Failed to execute disklessrc. Attemtping defaults...
Kernel Panic - not syncing: No init found. Try passing init= option to kernel.
My pxelinux.cfg file for this system is:
default centos5ssi
label centos5ssi
kernel centos5ssi/vmlinuz
append initrd=centos5ssi/initrd.img root=/dev/ram0 init=disklessrc NFSROOT=192.168.0.2:/opt/diskless/CentOS/x86_64 ramdisk_size=32768 ETHERNET=eth0 SNAPSHOT=node003
Here is some background on the setup. The machine that is acting as the server is an old machine that presently has CentOS 5.4 (i386) installed. On the client, I am attempting to boot and run CentOS 5.5 (x86_64). I've got DHCP and TFTP set up on the server which all seems to be working. During the client boot, it gets its IP address from the server and I can see that it is passed the vmlinuz and initrd.img file.Then as mentioned above it eventually hangs. I have mounted the initrd.img file (after uncompressing and cpio extraction) and see that there is a "init" file present in the top level directory but there is no file named "disklessrc". However, the contents of the "init" file are the same as /usr/share/system-config-netboot/diskless/disklessrc that is present on the server machine. Also, I have confirmed that busybox-anaconda is installed on both client and server.
Now as a comparison, a few months earlier, someone else used the same server machine but with a different client machine and was using CentOS 5.4 (i386) for each and was able to get a diskless boot to work. I was, in fact, able to use this setup for the present client and it is able to boot. (However, for my present client I need to have a 64-bit OS installed and want to make sure the proper drivers are installed). I took a look at the initrd.img that was created by pxeos for this earlier setup (config. A) and compared somethings with the initrd.img from my present setup (config. B). I noticed that the /lib directory from config. A had several libraries present while the /lib directory from config. B was completely empty except for a modules subdirectory. I came across an old bugzilla report (2005 timeframe: https://bugzilla.redhat.com/show_bug.cgi?id=135411) that seemed to indicate that due to the lack of libraries present in the initrd that bash was unable to get started and resulted in an Kernel panic and error (i.e. unable to find disklessrc) similar to that mentioned above.
Does anyone know why the pxeos command is not copying over all the necessary files when it creates the initrd.img in this present setup? Is there any reason that having the server be a 32-bit OS would cause problems/issues when trying to create a setup for a 64-bit client. (The initial client image was setup using 64-bit CentOS 5.5 and then rsync'd over to the server NFS diskless export directory.) As I mentioned above, the server in this case is an old machine with only a 32-bit processor. Ultimately I would like to know what to try next.