Re: Sharing one ethernet network device between two L4Linux instances

Martin Schröder <[email protected]>
Newsgroups gmane.comp.micro-kernel.l4.devel
Message-ID <[email protected]>
Am 23.10.2015 um 10:48 schrieb Mahdi Aichouch:
> Regarding the use of the "cons multiplexer", if I understood correctly I should use it instead of "l4shmns" service, right?
> If yes, do I have to disable the support of "l4shmns" option in L4Linux and remove all configuration from my Lua configuration file?
>
> Could you please share a document or some instructions that explain how to use the "cons multiplexer".

l4shmns and cons are two different things, and you can use them both together:

cons allows a serial console to either L4Linux while l4shmns allows to connect from one L4Linux to another L4Linux via a virtual 
network interface. But for l4shmns you need to configure the virtual network interface for the "hidden"-L4Linux. This is a little 
bit tricky if you don't have a console.

For cons & l4shmns I use this configuration:

modules.lst:
============
add "module cons" to "entry L4Linux ARM"

l4lx.cfg:
=========
-- 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 = "something"});

local cons = L4.default_loader:new_channel();
L4.default_loader:start({ caps = { cons = cons:svr() },
   log = L4.Env.log, },
   "rom/cons -k -a");

L4.default_loader.log_fab = cons;

L4.default_loader:start(
   { caps = {
--    log = L4.Env.log:m("rws"),
       shmns = shmns:mode("rw"),
     },
     l4re_dbg = L4.Dbg.Warn,
     log = { "l4linux1", "yellow", "key=1" },
   },
   "rom/" .. lxname .. " mem=64M console=ttyLv0 l4x_rd=rom/ramdisk-" ..  L4.Info.arch() .. ".rd root=1:0 ramdisk_size=4000 
l4shmnet.add=shmns,macpart=1");

L4.default_loader:start(
   { caps = {
--    log = L4.Env.log:m("rws"),
       shmns = shmns:mode("rw"),
     },
     l4re_dbg = L4.Dbg.Warn,
     log = { "l4linux2", "magenta", "key=2" },
   },
   "rom/" .. lxname .. " mem=64M console=ttyLv0 l4x_rd=rom/ramdisk-" ..  L4.Info.arch() .. ".rd root=1:0 ramdisk_size=4000 
l4shmnet.add=shmns,macpart=2");


make qemu E="L4Linux ARM"

Then you'll see both l4linux booting:
 > ...
 > l4linux1|
 > l4linux1| Please press Enter to activate this console.
 > l4linux2|
 > l4linux2| Please press Enter to activate this console.

Now press either <Enter> and type "help" to see cons. Or press "[Ctrl-E] 1" or "[CTRL-E] 2" to switch between both L4Linux instances:
[Ctrl-E] 1
 > ------------- Connecting to 'l4linux1' -------------
 > Key type dns_resolver registered
 > RAMDISK: ext2 filesystem found at block 0
 > RAMDISK: Loading 3072KiB [1 disk] into ram disk... done.
 > EXT4-fs (ram0): couldn't mount as ext3 due to feature incompatibilities
 > EXT4-fs (ram0): mounting ext2 file system using the ext4 subsystem
 > EXT4-fs (ram0): mounted filesystem without journal. Opts: (null)
 > VFS: Mounted root (ext2 filesystem) readonly on device 1:0.
 > Freeing unused kernel memory: 168K (023ae000 - 023d8000)
 >
 > Please press Enter to activate this console.
 > / # ip addr add 10.10.10.1/24 broadcast 10.10.10.255 dev eth0
 > / # ifconfig eth0 up
 > net eth0: L4ShmNet established, with 52:54:00:b0:cf:01, IRQ 312
 > / #
[Ctrl-E] 2
 > ------------- Connecting to 'l4linux2' -------------
 > Key type dns_resolver registered
 > RAMDISK: ext2 filesystem found at block 0
 > RAMDISK: Loading 3072KiB [1 disk] into ram disk... done.
 > EXT4-fs (ram0): couldn't mount as ext3 due to feature incompatibilities
 > EXT4-fs (ram0): mounting ext2 file system using the ext4 subsystem
 > EXT4-fs (ram0): mounted filesystem without journal. Opts: (null)
 > VFS: Mounted root (ext2 filesystem) readonly on device 1:0.
 > Freeing unused kernel memory: 168K (023ae000 - 023d8000)
 >
 > Please press Enter to activate this console.
 > / # ip addr add 10.10.10.2/24 broadcast 10.10.10.255  dev eth0
 > / # ifconfig eth0 up
 > / # ping -c3 10.10.10.1
 > PING 10.10.10.1 (10.10.10.1): 56 data bytes
 > 64 bytes from 10.10.10.1: seq=0 ttl=64 time=50.000 ms
 > 64 bytes from 10.10.10.1: seq=1 ttl=64 time=6.000 ms
 > 64 bytes from 10.10.10.1: seq=2 ttl=64 time=6.000 ms
 >
 > --- 10.10.10.1 ping statistics ---
 > 3 packets transmitted, 3 packets received, 0% packet loss
 > round-trip min/avg/max = 6.000/20.666/50.000 ms
 > / #


Martin
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.