On Wed, Aug 29, 2012 at 11:34:51AM +0800, 周涛 wrote:
 i try it in my environment,it allways throws the exception :
 com.redhat.et.libguestfs.LibGuestFSException: sh: /bin/sh: Exec format error
 then i try the following programs, "Exec format error" still happens:
 String cmd1 = "chkconfig --add tomcat";
 g.sh(cmd1);
 String cmd2 = "/sbin/chkconfig --add tomcat";
 g.sh(cmd2);
 String[] cmd = new String[] {"/sbin/chkconfig", "--list"};
 g.command(cmd);
 but i can execute the command in system, could show me the reason, Thanks! 
Well it's something to do with the guest being either a much older or
much newer version of Linux than the host, or perhaps it's a different
architecture (32 vs 64 bits?), or not even Linux at all.
The way to solve this is to use a firstboot script:
 From: Richard W.M. Jones
 Date: 2012-08-28 00:39
 To: libguestfs(a)redhat.com 
[...]
 However to run the command it may be better to run the command using
a
 "firstboot" script.  See:
 
   
http://libguestfs.org/guestfs.3.html#running-commands
   http://libguestfs.org/virt-sysprep.1.html#firstboot-
 
 (Note that the ability to use firstboot scripts was only added very
 recently to virt-sysprep). 
Rich.
-- 
Richard Jones, Virtualization Group, Red Hat 
http://people.redhat.com/~rjones
virt-df lists disk usage of guests without needing to install any
software inside the virtual machine.  Supports Linux and Windows.
http://et.redhat.com/~rjones/virt-df/