#include "syslinux/boot.h"
#include "syslinux/loadfile.h"
#include "syslinux/linux.h"
+#include "syslinux/config.h"
int __parse_argv(char ***argv, const char *str);
if (initramfs_add_file(initramfs, file_data, file_len, file_len,
"/testfile1", 0, 0755))
- return 0;
+ return 0;
}
static int sl_boot_it(lua_State * L)
return 0;
}
+static int sl_derivative(lua_State * L)
+{
+ const struct syslinux_version *sv;
+
+ sv = syslinux_version();
+
+ switch (sv->filesystem) {
+ case SYSLINUX_FS_SYSLINUX:
+ lua_pushstring(L, "SYSLINUX");
+ break;
+ case SYSLINUX_FS_PXELINUX:
+ lua_pushstring(L, "PXELINUX");
+ break;
+ case SYSLINUX_FS_ISOLINUX:
+ lua_pushstring(L, "ISOLINUX");
+ break;
+ case SYSLINUX_FS_UNKNOWN:
+ default:
+ lua_pushstring(L, "Unknown Syslinux derivative");
+ break;
+ }
+
+ return 1;
+}
+
+static int sl_version(lua_State * L)
+{
+ const struct syslinux_version *sv;
+
+ sv = syslinux_version();
+ lua_pushstring(L, sv->version_string);
+
+ return 1;
+}
+
static const luaL_reg syslinuxlib[] = {
{"run_command", sl_run_command},
{"run_default", sl_run_default},
{"initramfs_load_archive", sl_initramfs_load_archive},
{"initramfs_add_file", sl_initramfs_add_file},
{"boot_it", sl_boot_it},
+ {"derivative", sl_derivative},
+ {"version", sl_version},
{NULL, NULL}
};
--- /dev/null
+-- get nice output
+printf = function(s,...)
+ return io.write(s:format(...))
+ end
+
+-- get syslinux derivative (ISOLINUX, PXELINUX, SYSLINUX)
+derivative = syslinux.derivative()
+
+printf("Run specific command depending on the Syslinux derivate:\n")
+printf("--------------------------------------------------------\n\n")
+printf(" Detected Syslinux derivative: %s\n", derivative)
+
+if derivative == "SYSLINUX" then
+ -- swap internal (hd1) hard drive with USB stick (hd0)
+ commandline = 'chain.c32 hd1 swap'
+elseif derivative == "ISOLINUX" then
+ -- boot first hard drive
+ commandline = 'chain.c32 hd0'
+elseif derivative == "PXELINUX" then
+ -- boot first hard drive
+ commandline = 'chain.c32 hd0'
+else
+ printf("Do nothing\n")
+ return 1
+end
+
+printf("\n commandline for derivative: %s\n\n", commandline)
+
+
+-- Count down from 7
+for time = 7, 1, -1 do
+ printf(" Boot in %d second(s)... \r", time)
+ syslinux.sleep(1)
+end
+
+-- Boot
+syslinux.run_command(commandline)
+