diff --git a/spring-boot-integration-tests/pom.xml b/spring-boot-integration-tests/pom.xml
index a7459ddf000..06f8844b070 100644
--- a/spring-boot-integration-tests/pom.xml
+++ b/spring-boot-integration-tests/pom.xml
@@ -19,9 +19,11 @@
${basedir}/..1.8
+ 2.1.2spring-boot-gradle-tests
+ spring-boot-launch-script-testsspring-boot-security-tests
diff --git a/spring-boot-integration-tests/spring-boot-launch-script-tests/README.adoc b/spring-boot-integration-tests/spring-boot-launch-script-tests/README.adoc
new file mode 100644
index 00000000000..3a4739015e2
--- /dev/null
+++ b/spring-boot-integration-tests/spring-boot-launch-script-tests/README.adoc
@@ -0,0 +1,75 @@
+= Spring Boot Launch Script Tests
+
+This module contains integration tests for the default launch script that is used
+to make a jar file fully executable on Linux. The tests use Docker to verify the
+functionality in a variety of Linux distributions.
+
+== Setting up Docker
+
+The setup that's required varies depending on your operating system.
+
+=== Docker on OS X
+
+Docker relies on Linux kernel features so the Docker Daemon must be run inside a Linux VM.
+Following the https://docs.docker.com/engine/installation/mac/[OS X installation
+instructions] to install Docker Toolbox which uses VirtualBox to host the required VM.
+
+=== Docker on Linux
+
+Install Docker as appropriate for your Linux distribution. See the
+https://docs.docker.com/engine/installation/[Linux installation instructions] for more
+information.
+
+Next, add your user to the `docker` group. For example:
+
+----
+$ sudo usermod -a -G docker awilkinson
+----
+
+You may need to log out and back in again for this change to take affect and for your
+user to be able to connect to the daemon.
+
+== Preparing to run the tests
+
+Before running the tests, you must prepare your environment according to your operating
+system.
+
+=== Preparation on OS X
+
+The tests must be run in an environment where various environment variables including
+`DOCKER_HOST` and `DOCKER_CERT_PATH` have been set:
+
+----
+$ eval $(docker-machine env default)
+----
+
+=== Preparation on Linux
+
+Docker Daemon's default configuration on Linux uses a Unix socket for communication.
+However, Docker's Java client uses HTTP by default. Docker Java's client can be configured
+to use the Unix socket via the `DOCKER_URL` environment variable:
+
+----
+$ export DOCKER_URL=unix:///var/run/docker.sock
+----
+
+== Running the tests
+
+You're now ready to run the tests. Assuming that you're in the same directory as this
+README, the tests can be launched as follows:
+
+----
+$ mvn -Pdocker clean verify
+----
+
+The first time the tests are run, Docker will create the container images that are used to
+run the tests. This can take several minutes, particularly if you have a slow network
+connection. Subsequent runs will be faster as the images are cached locally. You can run
+`docker images` to see a list of the cached images.
+
+== Cleaning up
+
+If you want to reclaim the disk space used by the cached images (at the expense of having
+to wait for them to be downloaded and rebuilt the next time you run the tests), you can
+use `docker images` to list the images and `docker rmi ` to delete them. See
+`docker rmi --help` for further details.
\ No newline at end of file
diff --git a/spring-boot-integration-tests/spring-boot-launch-script-tests/pom.xml b/spring-boot-integration-tests/spring-boot-launch-script-tests/pom.xml
new file mode 100644
index 00000000000..04f83a5f24c
--- /dev/null
+++ b/spring-boot-integration-tests/spring-boot-launch-script-tests/pom.xml
@@ -0,0 +1,84 @@
+
+
+ 4.0.0
+
+ org.springframework.boot
+ spring-boot-integration-tests
+ 1.3.2.BUILD-SNAPSHOT
+
+ spring-boot-launch-script-tests
+ jar
+ Spring Boot Launch Script Integration Tests
+ Spring Boot Launch Script Integration Tests
+ http://projects.spring.io/spring-boot/
+
+ Pivotal Software, Inc.
+ http://www.spring.io
+
+
+ ${basedir}/../..
+
+
+
+ org.springframework.boot
+ spring-boot-starter-web
+
+
+ org.springframework.boot
+ spring-boot-starter-tomcat
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter-undertow
+
+
+ com.github.docker-java
+ docker-java
+ 2.1.4
+ test
+
+
+ org.springframework.boot
+ spring-boot-starter-test
+ test
+
+
+
+
+ docker
+
+
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+
+ true
+
+
+
+
+ repackage
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-failsafe-plugin
+
+
+
+ integration-test
+ verify
+
+
+
+
+
+
+
+
+
diff --git a/spring-boot-integration-tests/spring-boot-launch-script-tests/src/main/java/org/springframework/boot/launchscript/LaunchScriptTestApplication.java b/spring-boot-integration-tests/spring-boot-launch-script-tests/src/main/java/org/springframework/boot/launchscript/LaunchScriptTestApplication.java
new file mode 100644
index 00000000000..dae663ff172
--- /dev/null
+++ b/spring-boot-integration-tests/spring-boot-launch-script-tests/src/main/java/org/springframework/boot/launchscript/LaunchScriptTestApplication.java
@@ -0,0 +1,29 @@
+/*
+ * Copyright 2012-2016 the original author or authors.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.springframework.boot.launchscript;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+
+@SpringBootApplication
+public class LaunchScriptTestApplication {
+
+ public static void main(String[] args) {
+ SpringApplication.run(LaunchScriptTestApplication.class, args);
+ }
+
+}
diff --git a/spring-boot-integration-tests/spring-boot-launch-script-tests/src/main/java/org/springframework/boot/launchscript/LaunchVerficationController.java b/spring-boot-integration-tests/spring-boot-launch-script-tests/src/main/java/org/springframework/boot/launchscript/LaunchVerficationController.java
new file mode 100644
index 00000000000..d5f0d697488
--- /dev/null
+++ b/spring-boot-integration-tests/spring-boot-launch-script-tests/src/main/java/org/springframework/boot/launchscript/LaunchVerficationController.java
@@ -0,0 +1,30 @@
+/*
+ * Copyright 2012-2016 the original author or authors.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.springframework.boot.launchscript;
+
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+@RestController
+public class LaunchVerficationController {
+
+ @RequestMapping("/")
+ public String verifyLaunch() {
+ return "Launched";
+ }
+
+}
diff --git a/spring-boot-integration-tests/spring-boot-launch-script-tests/src/test/java/org/springframework/boot/launchscript/SysVinitLaunchScriptIT.java b/spring-boot-integration-tests/spring-boot-launch-script-tests/src/test/java/org/springframework/boot/launchscript/SysVinitLaunchScriptIT.java
new file mode 100644
index 00000000000..69e50381903
--- /dev/null
+++ b/spring-boot-integration-tests/spring-boot-launch-script-tests/src/test/java/org/springframework/boot/launchscript/SysVinitLaunchScriptIT.java
@@ -0,0 +1,365 @@
+/*
+ * Copyright 2012-2016 the original author or authors.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.springframework.boot.launchscript;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.concurrent.TimeUnit;
+import java.util.regex.Pattern;
+
+import javax.ws.rs.client.ClientRequestContext;
+import javax.ws.rs.client.ClientRequestFilter;
+import javax.ws.rs.client.Entity;
+import javax.ws.rs.client.WebTarget;
+
+import com.github.dockerjava.api.DockerClient;
+import com.github.dockerjava.api.command.DockerCmd;
+import com.github.dockerjava.api.model.Frame;
+import com.github.dockerjava.core.CompressArchiveUtil;
+import com.github.dockerjava.core.DockerClientBuilder;
+import com.github.dockerjava.core.DockerClientConfig;
+import com.github.dockerjava.core.command.AttachContainerResultCallback;
+import com.github.dockerjava.core.command.BuildImageResultCallback;
+import com.github.dockerjava.jaxrs.AbstrSyncDockerCmdExec;
+import com.github.dockerjava.jaxrs.DockerCmdExecFactoryImpl;
+import org.hamcrest.Matcher;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.Parameterized;
+import org.junit.runners.Parameterized.Parameters;
+
+import org.springframework.boot.ansi.AnsiColor;
+
+import static org.hamcrest.Matchers.containsString;
+import static org.junit.Assert.assertThat;
+
+/**
+ * Integration tests for Spring Boot's launch script on OSs that use SysVinit.
+ *
+ * @author Andy Wilkinson
+ */
+@RunWith(Parameterized.class)
+public class SysVinitLaunchScriptIT {
+
+ private final SpringBootDockerCmdExecFactory commandExecFactory = new SpringBootDockerCmdExecFactory();
+
+ private static final char ESC = 27;
+
+ private final String os;
+
+ private final String version;
+
+ @Parameters(name = "{0} {1}")
+ public static List