blob: 424c51f1008b519f55a6b66a82636e5fc52268d5 [file] [log] [blame]
Syslinux LUA User Guide
=======================
Marcel Ritter <Marcel.Ritter@rrze.uni-erlangen.de>
Invocation
----------
Running +lua.c32+ only results in an interactive shell.
......................................................
KERNEL lua.c32
......................................................
By using the +APPEND+ parameter you can specify a lua
script to be executed:
......................................................
KERNEL lua.c32
APPEND /testit.lua
......................................................
Modules
-------
Modules must be explicitly loaded into the namespace
before use, for example:
......................................................
syslinux = require ("syslinux")
......................................................
SYSLINUX
~~~~~~~~
.syslinux.version()
Returns version string
.syslinux.derivative()
Returns running Syslinux's derivative (ISOLINUX, PXELINUX or SYSLINUX).
See com32/lua/test/syslinux-derivative.lua for an example.
.syslinux.sleep(s)
Sleep for +s+ seconds
.syslinux.msleep(ms)
Sleep for +ms+ milliseconds
.run_command(command)
Execute syslinux command line +command+.
_Example_:
......................................................
syslinux.run_command("memdisk initrd=/dos/BIOS/FSC-P7935-108.img raw")
......................................................
.run_default()
FIXME
.local_boot()
FIXME
.final_cleanup()
FIXME
.boot_linux(kernel, cmdline, [mem_limit], [videomode])
FIXME
.run_kernel_image(kernel, cmdline, ipappend_flags, type)
FIXME
.loadfile(filname)
Load file +filename+ (via TFTP)
.filesize(file)
Return size of +file+ (loaded by loadfile())
.filename(file)
Return name of +file+ (loaded by loadfile())
.in itramfs_init()
Return empty initramfs object
.initramfs_load_archive(initramfs, filename)
Load contents of +filename+ into +initramfs+. Initialize
+initramfs+ with initramfs_init() before use.
.initramfs_add_file(initramfs, file)
Adds +file+ to +initramfs+. +initramfs+ needs to be
initialized, +file+ has been loaded by loadfile().
_Example_:
......................................................
-- get nice output
printf = function(s,...)
return io.write(s:format(...))
end -- function
kernel = syslinux.loadfile("/SuSE-11.1/x86_64/linux")
printf("Filename/size: %s %d\n", syslinux.filename(kernel), syslinux.filesize(kernel))
initrd = syslinux.loadfile("/SuSE-11.1/x86_64/initrd")
printf("Filename/size: %s %d\n", syslinux.filename(initrd), syslinux.filesize(initrd))
initrd = syslinux.initramfs_init()
syslinux.initramfs_load_archive(initrd, "/SuSE-11.1/x86_64/initrd");
syslinux.boot_it(kernel, initrd, "init=/bin/bash")
syslinux.sleep(20)
......................................................
DMI
~~~
.dmi_supported()
Returns +true+ if DMI is supported on machine, +false+ otherwise.
.dmi_gettable()
Returns a list if key-value pairs. The key is one of the DMI property strings:
FIXME list
_Example_:
......................................................
if (dmi.supported()) then
dmitable = dmi.gettable()
for k,v in pairs(dmitable) do
print(k, v)
end
print(dmitable["system.manufacturer"])
print(dmitable["system.product_name"])
print(dmitable["bios.bios_revision"])
if ( string.match(dmitable["system.product_name"], "ESPRIMO P7935") ) then
print("Matches")
syslinux.run_command("memdisk initrd=/dos/BIOS/FSC-P7935-108.img raw")
else
print("Does not match")
syslinux.run_command("memdisk initrd=/dos/BIOS/FSC-P7935-108.img raw")
end
end
......................................................
PCI
~~~
.pci_getinfo()
Return list of value pairs (device_index, device) of all PCI devices.
.pci_getidlist(filename)
Load a tab separated list of PCI IDs and their description.
Sample files can be found here: http://pciids.sourceforge.net/
_Example_:
......................................................
-- get nice output
printf = function(s,...)
return io.write(s:format(...))
end
-- get device info
pciinfo = pci.getinfo()
-- get plain text device description
pciids = pci.getidlist("/pci.ids")
-- list all pci busses
for dind,device in pairs(pciinfo) do
-- search for device description
search = string.format("%04x%04x", device['vendor'], device['product'])
printf(" %04x:%04x:%04x:%04x = ", device['vendor'], device['product'],
device['sub_vendor'], device['sub_product'])
if ( pciids[search] ) then
printf("%s\n", pciids[search])
else
printf("Unknown\n")
end
end
-- print(pciids["8086"])
-- print(pciids["10543009"])
-- print(pciids["00700003"])
-- print(pciids["0070e817"])
-- print(pciids["1002437a1002437a"])
......................................................
VESA
~~~~
.getmodes()
Return list of available VESA modes.
_Example_:
......................................................
-- get nice output
printf = function(s,...)
return io.write(s:format(...))
end
-- list available vesa modes
-- only one supported right now, not of much use
modes = vesa.getmodes()
for mind,mode in pairs(modes) do
printf("%04x: %dx%dx%d\n", mode['mode'], mode['hres'], mode['vres'], mode['bpp'])
end
......................................................
.setmode()
Set (only currently supported) VESA mode.
.load_background(filename)
Load +filename+ from TFTP, and use it as background image.
_Example_:
......................................................
-- get nice output
printf = function(s,...)
return io.write(s:format(...))
end
-- lets go to graphics land
vesa.setmode()
printf("Hello World! - VESA mode")
-- some text to display "typing style"
textline=[[
From syslinux GSOC 2009 home page:
Finish the Lua engine
We already have a Lua interpreter integrated with the Syslinux build. However, right now it is not very useful. We need to create a set of bindings to the Syslinux functionality, and have an array of documentation and examples so users can use them.
This is not a documentation project, but the documentation deliverable will be particularly important for this one, since the intended target is system administrators, not developers.
]]
-- do display loop
-- keep in mind: background change will not erase text!
while ( true ) do
vesa.load_background("/background1.jpg")
syslinux.sleep(1)
for i = 1, #textline do
local c = textline:sub(i,i)
printf("%s", c)
syslinux.msleep(200)
end
syslinux.sleep(10)
......................................................