Sharing one ethernet network device between two L4Linux instances

Matthias Lange matthias.lange at kernkonzept.com
Thu Oct 22 10:28:50 CEST 2015


Hi,

On 10/21/2015 02:34 PM, Mahdi Aichouch wrote:
> Hello,
> 
> I was able to run two L4linux instances on top of L4 Fiasco OC using a
> Qemu emulator of a versatile express-a9 board .
> 
> I would like to make these two instances share one ethernet network device.

To share a device you need a multiplexer which has access to the
physical device (and drives it) and provide a virtual device for each of
the clients. One possible solution would be to grant one L4Linux
instance access to the physical device and setup a virtual network
connection between the two instances. Then you can e.g. use iptables to
setup forwarding and NAT to route traffic from the second instance.

> I would like also to switch between the two L4Linux shell, because in
> Qemu only one shell is accessible.

For that you can use 'cons' our console multiplexer.

> I followed this guide[1] to connect two L4Linux instances using
> "l4shmnet", and this thread [2]
> to get access to the shell when testing on Qemu.
> 
> However, the "l4shmnet" is not working correctly, both L4Linux display
> this message:

Maybe this is a memory issue? You assign 1GB to the machine but only
hand 64M to L4Linux (of which 32M are taken by the ramdisk).

Matthias

> shmns: Requesting, Shmsize 1024 Kbytes
> shmns: Failed to establish communication
>  
> Could someone help me building such a working configuration.
> 
> Is it possible to share a working Qemu command with the right option for
> the network?
> This is my Qemu command
> 
> $> qemu-system-arm -cpu cortex-a9 -M vexpress-a9 -smp 1 -no-reboot -m
> 1024M -kernel bin/arm_armv7a/bootstrap_L4Linux_ARM.elf -nographic -net
> nic,model=lan9118 -net user
> 
> Is it also possible to share a working lua configuration file?
> 
> This is my lua l4lx.cfg file:
> 
> -- vim:set ft=lua:
> 
> local lxname = "vmlinuz";
> if L4.Info.arch() == "arm" then
>   lxname = "vmlinuz.arm";
> end
> 
> local shmns = L4.default_loader:create_namespace({ shm = "placeholder" });
> 
> L4.default_loader:start(
>   {
>     { ldr_flags = L4.Ldr_flags.eager_map },
>     caps = {
>       log = L4.Env.log:m("rws"),
>     },
>     l4re_dbg = L4.Dbg.Warn,
>     log = { "l4linux", "yellow" },
> 
>     shmns = shmns:mode("rw"),
>   },
>   "rom/" .. lxname .. " earlyprintk=1 showpfexc=1 showghost=1 mem=64M
> l4shmnet.add=shmns,macpart=1,create console=ttyLv0 l4x_rd=rom/ramdisk-"
> ..  L4.Info.arch() .. ".rd root=1:0 ramdisk_size=32768 init=/li\
> nuxrc print-fatal-signals=1");
> 
> L4.default_loader:start(
>   {
>     { ldr_flags = L4.Ldr_flags.eager_map },
>     caps = {
>       log = L4.Env.log:m("rws"),
>     },
>     l4re_dbg = L4.Dbg.Warn,
>     log = { "l4linux2", "green" },
> 
>     shmns = shmns:mode("rw"),
>   },
>   "rom/" .. lxname .. " earlyprintk=1 showpfexc=1 showghost=1 mem=64M
> l4shmnet.add=shmns,macpart=2 console=ttyLv0 l4x_rd=rom/ramdisk-" .. 
> L4.Info.arch() .. ".rd root=1:0 ramdisk_size=32768 init=/linuxrc p\
> rint-fatal-signals=1");
> 
> 
> Thank you very much in advance.
> Best regards,
> 
> Mahdi
> 
> 
> [1] http://wiki.tudos.org/L4Linux/shmnet
> [2] http://os.inf.tu-dresden.de/pipermail/l4-hackers/2013/005775.html




More information about the l4-hackers mailing list