Index: admin/core/src/main/java/org/apache/karaf/admin/internal/InstanceImpl.java
===================================================================
--- admin/core/src/main/java/org/apache/karaf/admin/internal/InstanceImpl.java	(revision 1190268)
+++ admin/core/src/main/java/org/apache/karaf/admin/internal/InstanceImpl.java	(working copy)
@@ -225,6 +225,8 @@
         if (javaOpts == null || javaOpts.length() == 0) {
             javaOpts = "-server -Xmx512M -Dcom.sun.management.jmxremote";
         }
+        String karafOpts = System.getProperty("karaf.opts", "");  
+        
         File libDir = new File(System.getProperty("karaf.home"), "lib");
         File[] jars = libDir.listFiles(new FilenameFilter() {
             public boolean accept(File dir, String name) {
@@ -239,7 +241,8 @@
             classpath.append(jar.getCanonicalPath());
         }
         String command = new File(System.getProperty("java.home"), ScriptUtils.isWindows() ? "bin\\java.exe" : "bin/java").getCanonicalPath()
-                + " " + javaOpts
+                + " " + javaOpts 
+                + " " + karafOpts
                 + " -Djava.util.logging.config.file=\"" + new File(location, "etc/java.util.logging.properties").getCanonicalPath() + "\""
                 + " -Djava.endorsed.dirs=\"" + new File(new File(new File(System.getProperty("java.home"), "jre"), "lib"), "endorsed") + System.getProperty("path.separator") + new File(new File(System.getProperty("java.home"), "lib"), "endorsed") + System.getProperty("path.separator") + new File(libDir, "endorsed").getCanonicalPath() + "\""
                 + " -Djava.ext.dirs=\"" + new File(new File(new File(System.getProperty("java.home"), "jre"), "lib"), "ext") + System.getProperty("path.separator") + new File(new File(System.getProperty("java.home"), "lib"), "ext") + System.getProperty("path.separator") + new File(libDir, "ext").getCanonicalPath() + "\""
Index: admin/command/src/main/java/org/apache/karaf/admin/main/Execute.java
===================================================================
--- admin/command/src/main/java/org/apache/karaf/admin/main/Execute.java	(revision 1190268)
+++ admin/command/src/main/java/org/apache/karaf/admin/main/Execute.java	(working copy)
@@ -55,6 +55,18 @@
     
     // For testing
     static boolean exitAllowed = true;
+    
+    /**
+     * Environment variable for specifying extra options to the Karaf admin 
+     * process kicked off from this Java process.
+     */
+    private static final String ENV_KARAF_OPTS = "KARAF_OPTS";
+    
+    /**
+     * System property for specifying extra options to the Karaf admin 
+     * process kicked off from this Java process.
+     */
+    private static final String PROP_KARAF_OPTS = "karaf.opts";    
 
     public static void main(String[] args) throws Exception {
         AnsiConsole.systemInstall();
@@ -79,6 +91,18 @@
         File storageFile = new File(storage);
         System.setProperty("user.dir", storageFile.getParentFile().getParentFile().getCanonicalPath());
         
+        try {
+            String karafOpts = System.getenv(ENV_KARAF_OPTS);
+            if (karafOpts != null) {
+                System.setProperty(PROP_KARAF_OPTS, karafOpts);
+            }
+        } catch(Exception e) {
+            System.err.println("Could not read KARAF_OPTS environment variable: " + e.getMessage());
+            if (System.getProperty("karaf.showStackTrace") != null) {
+                throw e;
+            }
+        }        
+        
         Object command = cls.newInstance();
         if (command instanceof AdminCommandSupport) {
             try {
