grub-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[PATCH 1/7] Add stub module for android bootimgs


From: Shea Levy
Subject: [PATCH 1/7] Add stub module for android bootimgs
Date: Tue, 26 Jan 2016 13:51:16 -0500

---
 grub-core/Makefile.core.def    |   7 +++
 grub-core/fs/android_bootimg.c | 105 +++++++++++++++++++++++++++++++++++++++++
 2 files changed, 112 insertions(+)
 create mode 100644 grub-core/fs/android_bootimg.c

diff --git a/grub-core/Makefile.core.def b/grub-core/Makefile.core.def
index 0cc40bb..a726abd 100644
--- a/grub-core/Makefile.core.def
+++ b/grub-core/Makefile.core.def
@@ -1231,6 +1231,13 @@ module = {
 };
 
 module = {
+  name = android_bootimg;
+  common = fs/android_bootimg.c;
+  cflags = '$(CFLAGS_POSIX) $(CFLAGS_GNULIB)';
+  cppflags = '$(CPPFLAGS_POSIX) $(CPPFLAGS_GNULIB)';
+};
+
+module = {
   name = bfs;
   common = fs/bfs.c;
 };
diff --git a/grub-core/fs/android_bootimg.c b/grub-core/fs/android_bootimg.c
new file mode 100644
index 0000000..f6b2283
--- /dev/null
+++ b/grub-core/fs/android_bootimg.c
@@ -0,0 +1,105 @@
+/* android-bootimg.c - android bootimg filesystem.  */
+/*
+ *  GRUB  --  GRand Unified Bootloader
+ *  Copyright (C) 2016 Free Software Foundation, Inc.
+ *
+ *  This program is free software: you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation, either version 3 of the License, or
+ *  (at your option) any later version.
+ *
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include <stdint.h>
+#include <grub/dl.h>
+#include <grub/file.h>
+
+GRUB_MOD_LICENSE ("GPLv3+");
+
+/* from 
https://android.googlesource.com/platform/system/core/+/506d233e7ac8ca4efa80768153d842c296477f99/mkbootimg/bootimg.h
 */
+#define BOOT_MAGIC     "ANDROID!"
+#define BOOT_MAGIC_SIZE        8
+#define BOOT_NAME_SIZE 16
+#define BOOT_ARGS_SIZE 512
+#define BOOT_EXTRA_ARGS_SIZE   1024
+
+struct boot_img_hdr
+{
+  uint8_t magic[BOOT_MAGIC_SIZE];
+
+  uint32_t kernel_size;
+  uint32_t kernel_addr;
+
+  uint32_t ramdisk_size;
+  uint32_t ramdisk_addr;
+
+  uint32_t second_size;
+  uint32_t second_addr;
+
+  uint32_t tags_addr;
+  uint32_t page_size;
+  uint32_t unused[2];
+
+  uint8_t name[BOOT_NAME_SIZE];
+
+  uint8_t cmdline[BOOT_ARGS_SIZE];
+
+  uint32_t id[8];
+
+  uint8_t extra_cmdline[BOOT_EXTRA_ARGS_SIZE];
+} GRUB_PACKED;
+
+static grub_err_t
+grub_android_bootimg_dir (grub_device_t device, const char *path_in,
+               grub_fs_dir_hook_t hook, void *hook_data)
+{
+  return GRUB_ERR_NOT_IMPLEMENTED_YET;
+}
+
+static grub_err_t
+grub_android_bootimg_open (grub_file_t file, const char *name_in)
+{
+  return GRUB_ERR_NOT_IMPLEMENTED_YET;
+}
+
+static grub_ssize_t
+grub_android_bootimg_read (grub_file_t file, char *buf, grub_size_t len)
+{
+  grub_errno = GRUB_ERR_NOT_IMPLEMENTED_YET;
+  return -1;
+}
+
+static grub_err_t
+grub_android_bootimg_close (grub_file_t file)
+{
+  return GRUB_ERR_NOT_IMPLEMENTED_YET;
+}
+
+static struct grub_fs grub_android_bootimg_fs = {
+  .name = "android_bootimg",
+  .dir = grub_android_bootimg_dir,
+  .open = grub_android_bootimg_open,
+  .read = grub_android_bootimg_read,
+  .close = grub_android_bootimg_close,
+#ifdef GRUB_UTIL
+  .reserved_first_sector = 0,
+  .blocklist_install = 0,
+#endif
+};
+
+GRUB_MOD_INIT (android_bootimg)
+{
+  grub_fs_register (&grub_android_bootimg_fs);
+}
+
+GRUB_MOD_FINI (android_bootimg)
+{
+  grub_fs_unregister (&grub_android_bootimg_fs);
+}
-- 
2.7.0




reply via email to

[Prev in Thread] Current Thread [Next in Thread]