Re: [Tails-dev] Tails 0.14 rc1 virtualization testing & howt…

Delete this message

Reply to this message
Autor: adev
Data:  
Para: The Tails public development discussion list
Assunto: Re: [Tails-dev] Tails 0.14 rc1 virtualization testing & howto install virtualbox and vmplayer
> 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?