Hello, I'm working on xnu (darwin kernel, under OSI approved APSL) support and would like to discuss some interfaces about it. Issue 1) First in xnu world booter hands the loading of compressed hibernation image. Resuming doesn't need to load the kernel conventional way. And trying to resume from hibernate should be done before trying to load kernel. So I propose the following configuration entries: menuentry "my XNU" { if ! xnu_resume ; then xnu_kernel xnu_extensions --cache= --dir= xnu_loadenv fi } Issue 2) Also normally when hibernation succeeds kernel should invalidate the image. Unfortunately in some scenarios it doesn't. A reliable way to check the image is to compare modification timestamp of FS and image. I know where to find them on FS but unfortunately now grub has no way of interfacing this with FS code. I propose to modify /* Call HOOK with each file under DIR. */ grub_err_t (*dir) (grub_device_t device, const char *path, int (*hook) (const char *filename, int dir)); to /* Call HOOK with each file under DIR. */ grub_err_t (*dir) (grub_device_t device, const char *path, int (*hook) (const char *filename, int dir, grub_time_t modtime)); Or add grub_err_t (*file_modtime) (const char *name, grub_time_t *modtime); and add a function for retrieving FS modification type grub_err_t (*fs_modtime) (grub_device_t device, grub_time_t *modtime); to grub_fs_t This has an additional benefit of invalidating image if FS was modified by external tool. This may be overriden by --force option to override it. File modification timestamp are also needed to check if the extension cache is up to date. Issue 3) Kernel may theoretically request loading parts to any address. In practice it does it only in 1Mb-64Mb range. Is it possible to somehow secure this range from grub_malloc after xnu_kernel command? (I would like to avoid "just before boot" relocations if possible) I send an implementation of xnu_resume. Not for inclusion of course but for illustration Thanks Any opinion is appreciated Vladimir 'phcoder' Serbinenko