Bug 193822 - Kernel panic on x86_64 netboot
Summary: Kernel panic on x86_64 netboot
Alias: None
Product: Red Hat Enterprise Linux 4
Classification: Red Hat
Component: system-config-netboot
Version: 4.0
Hardware: All
OS: Linux
Target Milestone: ---
: ---
Assignee: Fabio Olive Leite
QA Contact:
Depends On:
Blocks: 176344
TreeView+ depends on / blocked
Reported: 2006-06-01 20:57 UTC by Justin Nemmers
Modified: 2007-11-30 22:07 UTC (History)
1 user (show)

Clone Of:
Last Closed: 2006-09-05 19:48:52 UTC

Attachments (Terms of Use)

Description Justin Nemmers 2006-06-01 20:57:37 UTC
Description of problem:
Using channel rhel-x86_64-as-4-u3, and system-config-netboot, I cannot get a 64-bit install to 
network boot.  It works just fine using rhel-i386-as-4-u3.  I did all steps identically, aside from the 
distribution used to kickstart an initial install, which was then copied with the suggested rsync 

Version-Release number of selected component (if applicable):
RHEL 4 u3 i386 on NFS/netboot server
RHEL 4 u3 x86_64 on diskless blades

How reproducible:

Description of the environment:
10 blades, all EM64T
1 Server, running RHNSS, so it's 32-bit on EM64T hardware
Instal onto single blade was done with kickstart from Satellite Server.

The steps:
1) Install OS (using satellite kickstart) onto client's local disk, then boot to local disk
2) Follow directions from system-config-netboot
   2a)  use rsync to copy distribution to nfs-exported directory on nfs server
   2b)  system-config-netboot copies appropriate files to /tftpboot/linux-install
   2c)  clients are individually configured per ip address
   2d)  initial install disk on client is removed from system
3) Attempt boot of client system
   3a)  client suceeds in all aspects of PXE
   3b)  in 64-bit, client panics on boot, never makes an attempt to contact nfs server for mount
   3c)  in 32-bit, client fully boots as expected
Actual results:
Upon attempted netboot of 64-bit environment, kernel panic with message:
"Kernel panic: No init found. Try passing init= option to kernel."

Expected results:
Normal netboot, as it works w/ i386 code in that same environment

Additional info:
As Jason and Justin talked about, the mkinitrd is done on the system running system-config-netboot.  
As a result, there are likely ldd issues with attempting to create a proper initrd image for a 64-bit 
system on a 32-bit machine.

Comment 1 Jason Vas Dias 2006-06-01 21:38:19 UTC
Yes, as we discussed, currently system-config-netboot is unable to create
an initrd on a 32-bit machine for a 64-bit machine boot.
At least s-c-nb should be warning the user that this is not possible.

As a workaround, as it sounds like you want all the 64-bit clients to be booting
the same OS served by the 32-bit server, you could create a single 64-bit initrd 
semi-manually as follows:
 Having used system-config-netboot to create the 
 /tftpboot/linux-install/${MY_OS}/ directory containing the (broken) initrd,  
 and the /tftpboot/linux-install/pxelinux.cfg/${HEX_IP} file referencing it
 (which will check that the NFSROOT is correctly set up and can be exported)

1. Boot up a 64-bit client from the rescue CD or from the initial install 
   you used to create the NFS exported root.

2. Mount the NFS root on the 64-bit client, say under /mnt/client_root -
   this must be the / directory containing {boot/vmlinuz*,lib/modules}, etc.
   that you want the clients to boot.

3. Run this script from system-config-netboot to create the initrd - ie.
   copy the script from the server to the client and run it on the client -
   on the server it is: 
   On the 64-bit client, run:
   # mkdir /tmp/initrd_dir
   # ./updateDiskless /mnt/client_root 2.6.9-37.EL /tmp/initrd_dir

   where '2.6.9-37.EL' is the kernel version you want to boot - substitute
   the version of the kernel you want the clients to boot -
   (there must exist /mnt/client_root/boot/vmlinuz-2.6.9-37.EL   and
                     /mnt/client_root/lib/modules/2.6.9-37.EL ).

   This script should then create an NFS root client boot initrd in 

   You can then copy this to /tftpboot/linux-install/${MY_OS} on the server
   (where $MY_OS is the name you gave to the OS configuration in s-c-nb) and
   all 64-bit clients should be able to boot from that initrd with no problems.

I will look into automating this in a future version of system-config-netboot,
and warn/advise users when they attempt to create a 64-bit initrd on a 32-bit
machine in the next release. Actually, I think the latest s-c-nb version would
warn the user of the failed attempt to create the initrd:
   http://people.redhat.com/~jvdias/system-config-netboot/RHEL-4/0.1.40-1_EL4 .
I hope the above helps.

Comment 2 RHEL Product and Program Management 2006-09-05 19:37:32 UTC
The component this request has been filed against is not planned for inclusion
in the next update. The decision is based on weighting the priority and number
of requests for a component as well as the impact on the Red Hat Enterprise
Linux user-base: other components are considered having higher priority and the
number of changes we intend to include in update cycles is limited.

Comment 3 RHEL Product and Program Management 2006-09-05 19:48:52 UTC
Product Management has reviewed and declined this request.  You may appeal this
decision by reopening this request. 

Note You need to log in before you can comment on or make changes to this bug.