diff --git a/ferrochrome_app/custom_vm_setup.sh b/ferrochrome_app/custom_vm_setup.sh
index d57ed7f..92a23a3 100644
--- a/ferrochrome_app/custom_vm_setup.sh
+++ b/ferrochrome_app/custom_vm_setup.sh
@@ -2,11 +2,9 @@
 
 function copy_files() {
   cp -u /sdcard/vm_config.json /data/local/tmp
-  cp -u /sdcard/vmlinuz /data/local/tmp
   cp -u /sdcard/chromiumos_test_image.bin /data/local/tmp
   chmod 666 /data/local/tmp/vm_config.json
   chmod 666 /data/local/tmp/chromiumos_test_image.bin
-  chmod 666 /data/local/tmp/vmlinuz
 }
 setprop debug.custom_vm_setup.done false
 copy_files
diff --git a/ferrochrome_app/java/com/android/virtualization/ferrochrome/FerrochromeActivity.java b/ferrochrome_app/java/com/android/virtualization/ferrochrome/FerrochromeActivity.java
index 3629c85..71a9ff8 100644
--- a/ferrochrome_app/java/com/android/virtualization/ferrochrome/FerrochromeActivity.java
+++ b/ferrochrome_app/java/com/android/virtualization/ferrochrome/FerrochromeActivity.java
@@ -48,7 +48,6 @@
             Environment.getExternalStorageDirectory().getPath() + File.separator;
     private static final Path IMAGE_PATH =
             Path.of(EXTERNAL_STORAGE_DIR + "chromiumos_test_image.bin");
-    private static final Path KERNEL_PATH = Path.of(EXTERNAL_STORAGE_DIR + "vmlinuz.bin");
     private static final Path IMAGE_VERSION_INFO =
             Path.of(EXTERNAL_STORAGE_DIR + "ferrochrome_image_version");
     private static final Path VM_CONFIG_PATH = Path.of(EXTERNAL_STORAGE_DIR + "vm_config.json");
@@ -66,9 +65,7 @@
         executorService.execute(
                 () -> {
                     if (Files.notExists(IMAGE_PATH)
-                            || Files.notExists(KERNEL_PATH)
                             || !FERROCHROME_VERSION.equals(getVersionInfo())) {
-
                         updateStatus("image doesn't exist");
                         updateStatus("download image");
                         if (download(FERROCHROME_VERSION)) {
@@ -164,29 +161,18 @@
                 "https://storage.googleapis.com/chromiumos-image-archive/ferrochrome-public/"
                         + version
                         + "/image.zip";
-        boolean hasKernel = false;
-        boolean hasImage = false;
         try (InputStream is = (new URL(urlString)).openStream();
                 ZipInputStream zis = new ZipInputStream(is)) {
             ZipEntry entry;
             while ((entry = zis.getNextEntry()) != null) {
-                Path dest;
-                if (entry.getName().contains("chromiumos_test_image.bin")) {
-                    dest = IMAGE_PATH;
-                    hasImage = true;
-                } else if (entry.getName().contains("boot_images/vmlinuz-")) {
-                    dest = KERNEL_PATH;
-                    hasKernel = true;
-                } else {
+                if (!entry.getName().contains("chromiumos_test_image.bin")) {
                     continue;
                 }
                 updateStatus("copy " + entry.getName() + " start");
-                Files.copy(zis, dest, StandardCopyOption.REPLACE_EXISTING);
+                Files.copy(zis, IMAGE_PATH, StandardCopyOption.REPLACE_EXISTING);
                 updateStatus("copy " + entry.getName() + " done");
-                if (hasImage && hasKernel) {
-                    updateVersionInfo(version);
-                    break;
-                }
+                updateVersionInfo(version);
+                break;
             }
         } catch (Exception e) {
             updateStatus(e.toString());
diff --git a/ferrochrome_app/res/raw/vm_config.json b/ferrochrome_app/res/raw/vm_config.json
index 91071bb..d79400c 100644
--- a/ferrochrome_app/res/raw/vm_config.json
+++ b/ferrochrome_app/res/raw/vm_config.json
@@ -1,6 +1,5 @@
 {
     "name": "cros",
-    "kernel": "/data/local/tmp/vmlinuz",
     "disks": [
         {
             "image": "/data/local/tmp/chromiumos_test_image.bin",
