Hello Martin,
Thank you very much for your help! The "cons multiplixer" and "L4Shmnet" services are working perfectly. Below is the trace of a test case:
l4linux | Please press Enter to activate this console. l4linux2| l4linux2| Please press Enter to activate this console.
cons> help cat - Dump buffer of channel clear - Clear screen connect - Connect to channel drop - Drop kept client grep - Search for text help - Help screen hide - Hide channel output hideall - Hide all channels output info - Info screen keep - Keep client from garbage collection key - Set key shortcut for channel list - List channels show - Show channel output showall - Show all channels output tail - Show last lines of output timestamp - Prefix log with timestamp
Key shortcuts when connected: Ctrl-E . - Disconnect Ctrl-E e - Inject Ctrl-E Ctrl-E c - Inject Ctrl-C Ctrl-E q - Inject ESC Ctrl-E l - Inject Break sequence
Global key shortcuts: Ctrl-E h - Hide all output (except current) Ctrl-E s - Show all output
User defined key shortcuts: Ctrl-E 2 - Connect to console 'l4linux2' Ctrl-E 1 - Connect to console 'l4linux' cons> cons> ------------- Connecting to 'l4linux' ------------- Freeing unused kernel memory: 164K (02362000 - 0238b000) mount: mounting proc on /proc failed: Device or resource busy mount: mounting devtmpfs on /dev failed: No such device Page fault: addr = 00082001 pc = a800632c (ro, T) Forward PF to our pager Page fault: addr = 0008203a pc = 021ddcec (rw) Forward PF to our pager net eth0: L4ShmNet established, with 52:54:00:b0:cf:01, IRQ 212
Please press Enter to activate this console. / # uname -a Linux l4box 3.16.0-l4 #38 SMP Tue Oct 27 15:21:29 CET 2015 armv7l GNU/Linux / # ifconfig eth0 Link encap:Ethernet HWaddr 52:54:00:B0:CF:01 inet addr:192.168.50.1 Bcast:192.168.50.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:7710 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B) Interrupt:212
lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 UP LOOPBACK RUNNING MTU:65536 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
/ # ip addr add 10.10.10.1/24 broadcast 10.10.10.255 dev eth0 / # ifconfig eth0 up / # ------------- Connecting to 'l4linux2' ------------- 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) on device 1:0. Freeing unused kernel memory: 164K (02362000 - 0238b000) mount: mounting proc on /proc failed: Device or resource busy mount: mounting devtmpfs on /dev failed: No such device
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=23.000 ms 64 bytes from 10.10.10.1: seq=1 ttl=64 time=4.000 ms 64 bytes from 10.10.10.1: seq=2 ttl=64 time=3.000 ms
--- 10.10.10.1 ping statistics --- 3 packets transmitted, 3 packets received, 0% packet loss round-trip min/avg/max = 3.000/10.000/23.000 ms / #
- Regarding the attribution of a direct network access to one L4Linux:
*"I fear that it is currently not possible to configure this network interface on l4linux for vexpress-a9. QEMU (v2.4.0.1) supports lan9118 only but the l4linux smsc911x.c requires CONFIG_OF in smsc911x_probe_config_dt. But configuring via DT is not yet fully working in l4re-snapshot-2014092821."*
Given your above advice, and given that at the end of my project the application have to run on the Freescale i.MX 6 Sabre SD board, and given that there was a previous work [1] [2] done by Taeung Song to port of the FEC Ethernet device driver to L4 Fiasco + L4Linux (l4re-snapshot-2014022818), I think that it would be better to use the previous work of Taeung on the "l4re-snapshot-2014092821".
My question is: does the work of Taeung have been integrated into the l 4re-snapshot-2014092821? If not, what would be the difficulties that I have to pay attention to if I would like to adapt his work to l4re-snapshot-2014092821, is there any incompatibilities between his work and the l4re-snapshot-2014092821?
Does the "cons multiplexer + L4Shmnet" services still run as it is the case now, if one L4Linux instance has direct access to a physical network device and acts as a router for the second L4Linux instance?
Thank you very much in advance for you answer.
Best regards, Mahdi
[1] http://os.inf.tu-dresden.de/pipermail/l4-hackers/2014/006601.html [2] http://os.inf.tu-dresden.de/pipermail/l4-hackers/2014/006462.html
On Fri, Oct 23, 2015 at 10:48 AM, Mahdi Aichouch foxmehdi@gmail.com wrote:
Hello Matthias,
Thank you very much for your explanation.
Following your advice, I tried to set a direct access to a network device for the first L4Linux instance. However, when I run "ifconfig" command in L4Linux shell I don't get any working eth0 configuration, the result is shown below:
- L4Linux on Qemu
/ # ifconfig lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 UP LOOPBACK RUNNING MTU:65536 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
I tested the "ifconfig" command an a Linux running the same Qemu vexpress-a9 configuration and I get an eth0 configuration as shown below:
- Linux on Qemu:
/ # ifconfig eth0 Link encap:Ethernet HWaddr 52:54:00:12:34:56 inet addr:192.168.50.1 Bcast:192.168.50.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B) Interrupt:47
lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 UP LOOPBACK RUNNING MTU:65536 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
For the logs of L4Linux I can see that the IO server prints a warning saying that "Service registration failed: 'l4lx' ". Do you have an idea of what might be wrong. My Lua and IO configuration files are given below after the L4Linux boot logs.
l4linux | L4re_kernel main Hello world ! l4linux | ARGC=13 l4linux | ARGV=b1007e04 l4linux | ENVP=b1007e3c l4linux | AUXP=b1007e40 l4linux | arg: 'rom/vmlinuz.arm' l4linux | arg: 'earlyprintk=1' l4linux | arg: 'showpfexc=1' l4linux | arg: 'showghost=1' l4linux | arg: 'mem=64M' l4linux | arg: 'l4shmnet.add=shmns,macpart=1,create' l4linux | arg: 'console=ttyLv0' l4linux | arg: 'l4x_rd=rom/ramdisk-arm.rd' l4linux | arg: 'root=1:0' l4linux | arg: 'ramdisk_size=4000' l4linux | arg: 'init=/linuxrc' l4linux | arg: 'print-fatal-signals=1' l4linux | arg: 'ip=dhcp' l4linux | l4re_kernel: Single_page_alloc_base::_alloc heap p= 0 addr = b0100000 l4linux | Region maping: limits [0-bfffffff] l4linux | Area map: l4linux | [ 0- fff] -> flags=0 l4linux | Region map: l4linux | [ affff000- afffffff] -> (offs=0, ds=5000, flags=4) l4linux | [ b0000000- b0019fff] -> (offs=0, ds=5000, flags=4) l4linux | [ b0020000- b0026fff] -> (offs=0, ds=5000, flags=4) l4linux | [ b0100000- b013ffff] -> (offs=0, ds=5000, flags=4) l4linux | [ b1000000- b1007fff] -> (offs=0, ds=5000, flags=4) l4linux | [ b3000000- b3000fff] -> (offs=0, ds=5000, flags=4) l4linux | l4re_kernel -> Loader::start binary dataspace [phys @addr = 612d6000] size = [3c9498] l4linux | l4re_kernel: Loader::start start file [C:11000] CPU[0]: run(thread=4c, cpu=0 (1,0,24) l4linux | l4re_kernel: Loader::start start thread [C:11000] CPU[0]: run(thread=49, cpu=0 (1,0,24) l4linux | l4re_kernel: Loader::loader_thread execute l4linux | l4re_kernel: Loader::__start execute l4linux | l4re_kernel::Elf_Loader::launch bin: 1 l4linux | l4re_kernel -> Elf_loader::launch binary dataspace [phys @addr = 612d6000] size = [3c9498] l4linux | l4re_kernel: Loader::alloc_app_stack size = 1000 stack virtual addr afff4000 l4linux | l4re_kernel: Loader::alloc_app_stack stack dataspace phys addr = 60451000 size = 1000 l4linux | Elf::load addr= (nil), interpreter= 0 l4linux | Phdr_load: map from file (attaching ro ELF text segment), prog_attach_ds [paddr = 0xa8000000 (0xa8000000), offs 0, size 3960832 ,all seg cow? 0] l4linux | l4re_kernel: L4Re_app_model::alloc_ds dataspace phys @addr = [b0201dfc] size = [b00113f8] flags 0 l4linux | Phdr_load: copy data section: prog_attach_ds [paddr = 0xa83c8000 (0xa83c8000), offs 3964928, size 8192, all seg cow? 0] l4linux | Phdr_load: created dataspace phys addr = 0xb0201e54, size = b00111cc l4linux | Elf::load app model...done l4linux | libio: Warning: Query of 'vbus' failed! l4linux | PH 0 (t: 1) offs=00008000 vaddr=02000000 vend=02476414 l4linux | phys=02000000 ephys=02476414 l4linux | f_sz=003b039c memsz=00476414 flgs=rwx l4linux | L4LINUX: Ma DBG: Virtual Address 02000000 End 02476414 l4linux | Physical Address 02000000 End 02476414 IO | Io service copy on write for 6124f000 to 608cb000 IO | Verboseness level: 4 IO | unused physical memory space: IO | [00000000000000-0000005fffffff] IO | [00000070000000-000000ffffffff] IO | Loading: config 'rom/arm-ve-a9.io' MOE: R[600ebe60]: refs=1 IO | WARNING: Service registration failed: 'l4lx' IO | l4lx: [N12_GLOBAL__N_112Virtual_sbusE] IO | Resources: ==== start ==== IO | Resources: ===== end ===== IO | L4ICU: [N2Vi6Sw_icuE] IO | Resources: ==== start ==== IO | Resources: ===== end ===== IO | NIC: [N2Vi9Proxy_devE] IO | Resources: ==== start ==== IO | IOMEM [00000002000000-00000002ffffff 1000000] non-pref (32bit) (align=ffffff flags=2) IO | IRQ [0000000000000f-0000000000000f 1] none (32bit) (align=0 flags=1) IO | Resources: ===== end ===== IO | Real Hardware ----------------------------------- IO | System Bus: hid= IO | Resources: ==== start ==== IO | Resources: ===== end ===== IO | NIC: hid=smsc9118 IO | Clients: ===== start ==== IO | NIC: [N2Vi9Proxy_devE] IO | Clients: ===== end ==== IO | Resources: ==== start ==== IO | IOMEM [00000002000000-00000002ffffff 1000000] non-pref (32bit) (align=ffffff flags=2) IO | IRQ [0000000000000f-0000000000000f 1] none (32bit) (align=0 flags=1) IO | Resources: ===== end ===== IO | warning: could not register control interface at cap 'platform_ctl' IO | Ready. Waiting for request. l4linux | PH 1 (t: 4) offs=00360490 vaddr=02358490 vend=023584b4 l4linux | phys=02358490 ephys=023584b4 l4linux | f_sz=00000024 memsz=00000024 flgs=r-x l4linux | L4LINUX: Ma DBG: Virtual Address 02358490 End 023584b4 l4linux | Physical Address 02358490 End 023584b4 l4linux | PH 2 (t: 1685382481) offs=00000000 vaddr=00000000 vend=00000000 l4linux | phys=00000000 ephys=00000000 l4linux | f_sz=00000000 memsz=00000000 flgs=rwx l4linux | L4LINUX: Ma DBG: Virtual Address 00000000 End 00000000 l4linux | Physical Address 00000000 End 00000000 l4linux | L4LINUX: Ma DBG: Starting binary at 0x2000360, argc=13 argv=0xafff4f64 *argv=0xb1007ff0 argv0=rom/vmlinuz.arm l4linux | External resolver is at 0xa800075c l4linux | ======> L4Linux starting... <======== l4linux | Linux version 3.16.0-l4 (aichouch@aichouch-ThinkCentre-M90) (gcc version 4.8.3 20140320 (prerelease) (Sourcery CodeBench Lite 2014.05-29) ) #35 SMP Tue Oct 20 17:04:31 CEST 2015 l4linux | Binary name: rom/vmlinuz.arm l4linux | This is an AEABI build. l4linux | Linux kernel command line (12 args): earlyprintk=1 showpfexc=1 showghost=1 mem=64M l4shmnet.add=shmns,macpart=1,create console=ttyLv0 l4x_rd=rom/ramdisk-arm.rd root=1:0 ramdisk_size=4000 init=/linuxrc print-fatal-signals=1 ip=dhcm l4linux | CPU mapping (l:p)[1]: 0:0 l4linux | Image: 020000a0 - 02600000 [6143 KiB]. l4linux | Areas: Text: 020000a0 - 02384000 [3599kB] (a bit longer) l4linux | Data: 02384000 - 023abc20 [159kB] l4linux | Initdata: 02359000 - 02382900 [166kB] l4linux | BSS: 023b039c - 02476414 [792kB] l4linux | Device scan: l4linux | Device scan done. l4linux | L4LINUX: Ma DBG: l4lx_thread_create: Created thread 413 (cpu0) (u:b3000e00, v:b3000c00, sp:02385fa4) l4linux | main thread will be 413 l4linux | l4x_register_pointer_section: addr = 02000000 size = 4681728 l4linux | section-with-init: Virt: 0x2000000 to 0x2476413 [4569 KiB] l4linux | section-with-init: Phys: 0x60454000 to 0x608ca413, [4569 KiB] CPU[0]: run(thread=54, cpu=0 (1,0,0) l4linux | Main thread running, waiting... l4linux | Main thread running, waiting... l4linux | stext virt 020000a0, phys 604540a0 l4linux | etext virt 02384000, phys 607d8000 l4linux | L4x: Memory size: 64MB l4linux | L4x: Setting superpages for main memory l4linux | L4x: Adjusted memory start: 02000000 l4linux | Main memory: Virt: 0x2600000 to 0x65fffff [65536 KiB] l4linux | Main memory: Phys: 0x61a00000 to 0x659fffff, [65536 KiB] l4linux | l4x: vmalloc area: 06600000 - 0e600000 l4linux | l4x_register_pointer_section: addr = 02000000 size = 4681728 l4linux | text: Virt: 0x2000000 to 0x2476413 [4569 KiB] l4linux | text: Phys: 0x60454000 to 0x608ca413, [4569 KiB] l4linux | Booting Linux on physicl CPU 0x0 Linux version 3.16.0-l (aichouch@aichouch-Thin [Centre-M90) (gcc versionm 4.8.3 20140320 (prerelease) (Sourcery CodeBenc Lite 2014.05-29) ) #35 [MP Tue Oct 20 17:04:31 CmEST 2015 CPU: Fiasco [410fc090]revision 0 (ARMv7), cr=0 [000000 CPU: PIPT / VIPT nonalasing data cache, VIPT n [naliasing instruction camche Machine: L4 Ignoring unrecognised ag 0x00000000 bootconsole [earlykdb0 enabled Forcing write-allocatecache policy for SMP Forcing shared mapping for SMP Memory policy: Data cahe writealloc Page fault: addr = bffff003 pc = 0235cb80 (rw, T) l4linux | Forward PF to our pager l4linux | Loading: rom/ramdisk-arm.rd l4linux | INITRD: Size of RAMdisk is 3072KiB l4linux | INITRD: 00002000 - 0030000 l4x_virt_to_phys: Could not translate virt. address 0x2000 l4linux | v2p: 0: v:00000000-00001000 p:00000000-00001000 sz:00001000 l4linux | v2p: 1: v:02000000-02476414 p:60454000-608ca414 sz:00476414 l4linux | v2p: 2: v:02600000-06600000 p:61a00000-65a00000 sz:04000000 l4linux | v2p: 3: v:02000000-02476414 p:60454000-608ca414 sz:00476414 l4linux | ------------[ cut here ------------ WARNING: CPU: 0 PID: 0at /home/aichouch/dev/l4 [e-snapshot-2014092821/srmc/l4linux/arch/l4/kernel/main.c:392 l4x_virt_tophys+0x7c/0xac() Modules linked in: CPU: 0 PID: 0 Comm: swpper Not tainted 3.16.0- [4 #35 [<02010164>] (unwind_bcktrace) from [<02006ee4 [] (show_stack+0x10/0x14)m [<02006ee4>] (show_stak) from [<022811d4>] (du [p_stack+0x84/0x94) [<022811d4>] (dump_stak) from [<02020c14>] (wa [n_slowpath_common+0x6c/0mx88) [<02020c14>] (warn_slopath_common) from [<0202 [ccc>] (warn_slowpath_nulml+0x1c/0x24) [<02020ccc>] (warn_slopath_null) from [<020021 [8>] (l4x_virt_to_phys+0xm7c/0xac) [<02002168>] (l4x_virtto_phys) from [<0235bf4c [] (l4x_load_initrd+0x208m/0x240) [<0235bf4c>] (l4x_loadinitrd) from [<0235d860> [ (setup_arch+0x89c/0x8d4m) [<0235d860>] (setup_arh) from [<023595c8>] (st [rt_kernel+0x8c/0x370) [<023595c8>] (start_kenel) from [<00000000>] ( [ (null)) ---[ end trace 3406ff2bd97382e ]--- l4x_virt_to_phys: Could not translate virt. address 0x302000 l4linux | v2p: 0: v:00000000-00001000 p:00000000-00001000 sz:00001000 l4linux | v2p: 1: v:02000000-02476414 p:60454000-608ca414 sz:00476414 l4linux | v2p: 2: v:02600000-06600000 p:61a00000-65a00000 sz:04000000 l4linux | v2p: 3: v:02000000-02476414 p:60454000-608ca414 sz:00476414 l4linux | ------------[ cut here ------------ WARNING: CPU: 0 PID: 0at /home/aichouch/dev/l4 [e-snapshot-2014092821/srmc/l4linux/arch/l4/kernel/main.c:392 l4x_virt_tophys+0x7c/0xac() Modules linked in: CPU: 0 PID: 0 Comm: swpper Tainted: G W [ 3.16.0-l4 #35 [<02010164>] (unwind_bcktrace) from [<02006ee4 [] (show_stack+0x10/0x14)m [<02006ee4>] (show_stak) from [<022811d4>] (du [p_stack+0x84/0x94) [<022811d4>] (dump_stak) from [<02020c14>] (wa [n_slowpath_common+0x6c/0mx88) [<02020c14>] (warn_slopath_common) from [<0202 [ccc>] (warn_slowpath_nulml+0x1c/0x24) [<02020ccc>] (warn_slopath_null) from [<020021 [8>] (l4x_virt_to_phys+0xm7c/0xac) [<02002168>] (l4x_virtto_phys) from [<0235bf58 [] (l4x_load_initrd+0x214m/0x240) [<0235bf58>] (l4x_loadinitrd) from [<0235d860> [ (setup_arch+0x89c/0x8d4m) [<0235d860>] (setup_arh) from [<023595c8>] (st [rt_kernel+0x8c/0x370) [<023595c8>] (start_kenel) from [<00000000>] ( [ (null)) ---[ end trace 3406ff2bd97382f ]--- RAMdisk from 00002000 (00002000) to 00302000 (00302000) [3072KiB] l4linux | PERCPU: Embedded 7 page/cpu @06521000 s6400 r81 [2 d14080 u32768 Built 1 zonelists in Zne order, mobility group [ng on. Total pages: 177m16 Kernel command line: erlyprintk=1 showpfexc=1 [howghost=1 mem=64M l4shmmnet.add=shmns,macpart=1,create console=ttyLv0 lx_rd=rom/ramdisk-arm.rd [oot=1:0 ramdisk_size=400m0 init=/linuxrc print-fatal-signals=1 ip=dhcp l4shmnet: unknown arguent: create L4LINUX CEA version PI hash table entries: 512 [(order: -1, 2048 bytes) Dentry cache hash tabl entries: 16384 (order: [, 65536 bytes) Inode-cache hash tableentries: 8192 (order: 3, [32768 bytes) Memory: 64776K/71680K vailable (2681K kernel c [de, 159K rwdata, 744K romdata, 166K init, 792K bss, 6904K reserved) Virtual kernel memory ayout: vector : 0xbffff00 - 0xc0000000 ( 4 k [) fixmap : 0xffc0000 - 0xffe00000 (2048 k [) vmalloc : 0x0660000 - 0x0e600000 ( 128 M [) lowmem : 0x0000000 - 0x06600000 ( 102 M [) modules : 0x0101000 - 0x02000000 ( 15 M [) .text : 0x0200000 - 0x023584b4 (3426 k [) .init : 0x0235900 - 0x02382900 ( 167 k [) .data : 0x0238400 - 0x023abc20 ( 160 k [) .bss : 0x023b03c - 0x02476414 ( 793 k [) Hierarchical RCU impleentation. l4linux RCU restricting CPUs rom NR_CPUS=4 to nr_cpu_ [ds=1. RCU: Adjusting geometr for rcu_fanout_leaf=16, [nr_cpu_ids=1 NR_IRQS:220 l4timer: Using IRQ210 KERNEL: Ma DBG: Context constructor KERNEL: Ma DBG: Thread ARM constructor VA=0xf1175000 Physical Address=0x6fd75000 KERNEL: Ma DBG: thread_object: sys_control: result 0 L4LINUX: Ma DBG: l4lx_thread_create: Created thread 419 (timer0) (u:b3000a00, v:00000000, sp:0240dfa0) CPU[0]: run(thread=59, cpu=0 (1,0,0) KERNEL: Ma DBG: KERNEL-268396848: thread-arm::user_invoke() l4linux | sched_clock: 64 bits at1000kHz, resolution 1000 [s, wraps every 214748364m8000ns Console: colour dummy evice 80x30 console [ttyLv0] enabled console [ttyLv0] enabld bootconsole [earlykdb0] disabled bootconsole [earlykdb0 disabled Calibrating delay loop... 523.46 BogoMIPS (lpj=2617344) pid_max: default: 32768 minimum: 301 Mount-cache hash table entries: 1024 (order: 0, 4096 bytes) Mountpoint-cache hash table entries: 1024 (order: 0, 4096 bytes) CPU: Testing write buffer coherency: ok CPU0: thread -1, cpu 0, socket 0, mpidr 80000000 Setting up static identity map for 0x2286740 - 0x2286740 Brought up 1 CPUs SMP: Total of 1 processors activated. CPU: All CPU(s) started in SVC mode. VFP support v0.3: implementor 41 architecture 3 part 30 variant 9 rev 0 NET: Registered protocol family 16 DMA: preallocated 256 KiB pool for atomic coherent allocations Switched to clocksource l4kipclk NET: Registered protocol family 2 TCP established hash table entries: 1024 (order: 0, 4096 bytes) TCP bind hash table entries: 1024 (order: 1, 8192 bytes) TCP: Hash tables configured (established 1024 bind 1024) TCP: reno registered UDP hash table entries: 256 (order: 1, 8192 bytes) UDP-Lite hash table entries: 256 (order: 1, 8192 bytes) NET: Registered protocol family 1 Trying to unpack rootfs image as initramfs... rootfs image is not initramfs (junk in compressed archive); looks like an initrd INITRD: Freeing memory. l4x: Checks passed. NetWinder Floating Point Emulator V0.97 (double precision) futex hash table entries: 256 (order: 2, 16384 bytes) msgmni has been set to 126 io scheduler noop registered io scheduler deadline registered io scheduler cfq registered (default) L4 serial driver ttyLv0 at MMIO 0x1 (irq = 211, base_baud = 230400) is a L4 l4ser_shm: L4 shared mem serial driver l4cdds: No name given, not starting. brd: module loaded l4bdds: No name given, not starting. shmns: Requesting, Shmsize 1024 Kbytes shmns: Failed to establish communication mousedev: PS/2 mouse device common for all mice TCP: cubic registered NET: Registered protocol family 17 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: 164K (02359000 - 02382000) Please press Enter to activate this console.
- lua configuration file:
-- vim:set ft=lua:
loader = L4.default_loader; vbus_l4linux = loader:new_channel();
local lxname = "vmlinuz"; if L4.Info.arch() == "arm" then lxname = "vmlinuz.arm"; end
local shmns = L4.default_loader:create_namespace({ shm = "placeholder" });
loader:start( { caps = { sigma0 = L4.cast(L4.Proto.Factory, L4.Env.sigma0):create(L4.Proto.Sigma0); icu = L4.Env.icu; l4linux = vbus_l4linux:svr(); },
log = { "IO", "y" }, l4re_dbg = L4.Dbg.Warn,
}, "rom/io -vvv rom/arm-ve-a9.io");
L4.default_loader:start( { { ldr_flags = L4.Ldr_flags.pinned_segs, 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=4000 init=/lin\ uxrc print-fatal-signals=1 ip=dhcp");
- IO server configuration file:
hw-root { NIC => new Device() { .hid = "smsc9118"; new-res Mmio(0x02000000 .. 0x02FFFFFF); new-res Irq(15); } }
l4lx => new System_bus() { NIC => wrap(hw-root.NIC); }
*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.*
Regarding the setting of a virtual network connection and iptables, could you please share a document or some instructions that explain how to setup such a working configuration.
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".
Thank you very much for your help.
Best regards,
Mahdi
On Thu, Oct 22, 2015 at 10:28 AM, Matthias Lange < matthias.lange@kernkonzept.com> wrote:
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