> Excellent! I'm looking forward to hear about your findings.
Forgive the crappyness of this code, but it is just to show that this idea
works:
syslinux supports lua scripts.
What to do:
1. VBoxManage setextradata "debvbox"
"VBoxInternal/Devices/pcbios/0/Config/DmiSystemProduct"
"Tails-Tor-Guest-MAGICNUM"
Where "debvbox" is the name of the tails virtual machine
2. Edit the tails iso and add the following files:
2a. /usr/lib/syslinux/lua.32 into iso:// isolinux/
2b. Replace isolinux.cfg with:
label lua
kernel lua.c32
append tails.lua
label select_menu
com32 ifcpu64.c32
append menu_686-pae -- menu_686-pae -- menu_486
label menu_686-pae
kernel vesamenu.c32
append live686.cfg
label menu_486
kernel vesamenu.c32
append live486.cfg
default lua
prompt 0
2c. Gedit a tails.lua script into iso:// isolinux/tails.lua containing:
(here comes the crappy code, but it shows the concept works)
(dont need the <CODE> in the lua script)
<CODE>
function printf(...)
io.write(string.format(...))
end
printf("hello world\n")
if (dmi.supported()) then
dmitable = dmi.gettable()
--for k,v in pairs(dmitable) do
-- print(k, v)
--end
printf("system.product_name value is:\n")
print(dmitable["system.product_name"])
printf(" ")
print(string.match(dmitable["system.product_name"],
"Tails-Tor-Guest-MAGICNUM"));
syslinux.sleep(60)
if ( dmitable["system.product_name"] == "Tails-Tor-Guest-MAGICNUM" ) then
print("Matches")
printf("system.product_name is set to Tails-Tor-Guest-MAGICNUM")
printf("Executing syslinux menu entry tails-tor-guest-vm.label in 60
seconds")
syslinux.sleep(60)
syslinux.run_command("tails-tor-guest-vm.label")
else
print("Does not match")
print("Running standard default tails menu entry 'select_menu' in 60
seconds")
syslinux.sleep(60)
syslinux.run_command("select_menu")
end
end
--else dmi not supported (rare hardware?) still needs to load a menu entry
</CODE>
Re-build the iso, I used isomaster (a gui tool in debian packages)
Boot the ISO in virtualbox
How tails boots can now be controlled via a LUA script (tails.lua)
The lua script can check for DMI information
DMI was a standard created prior to 1999 that standardizes system
information being available from the bios such as product vendorname,
system name, system serial numbers, and a lot of other information
Virtualbox can SET dmi information using the VBoxManage command
With the supplied (crappy) lua script, the system will either boot the
normal ifcpu64 menu entry (go through the normal boot process) if a magic
string is not set for the DMI field System Product, or
If system product is set to a special value by VboxManage (that magic
string is Tails-Tor-Guest-MAGICNUM in the lua script) then it will boot
a syslinux menu entry called tails-tor-guest-vm.label (which I havent
created yet btw)
So this is one idea, tails livecd can control how a tails-guest-vm will
boot, and tails-guest-vm can decide how to boot as early as the syslinux
stage
thoughts?