Hi, after going through tz_vmm tutorial I was able to create uImage and put it on MicroSD card. However, when I try to boot it on Armory, Genode freezes all the way at the end.
Below is what appears on the console after executing
=> ext2load mmc 0:1 0x74000000 /uImage
=> bootm 0x74000000
it freezes after "Debian GNU/Linux 7 usbarmory console"
Am I missing something?
Starting kernel ...
kernel initialized Genode 16.02 int main(): --- create local services --- int main(): --- start init --- int main(): transferred 246 MB to init int main(): --- init created, waiting for exit condition --- [init] Could not open ROM session for module "ld.lib.so" [init] parent provides [init] service "ROM" [init] service "RAM" [init] service "IRQ" [init] service "IO_MEM" [init] service "IO_PORT" [init] service "CAP" [init] service "PD" [init] service "RM" [init] service "CPU" [init] service "LOG" [init] service "SIGNAL" [init] service "VM" [init] child "gpio_drv" [init] RAM quota: 2863104 [init] ELF binary: gpio_drv [init] priority: 0 [init] provides service Gpio [init] child "timer" [init] RAM quota: 2863104 [init] ELF binary: timer [init] priority: 0 [init] provides service Timer [init] child "platform_drv" [init] RAM quota: 2863104 [init] ELF binary: platform_drv [init] priority: 0 [init] provides service Regulator [init] provides service Platform [init] child "sd_card_drv" [init] RAM quota: 2863104 [init] ELF binary: sd_card_drv [init] priority: 0 [init] provides service Block [init] child "part_blk" [init] RAM quota: 10203136 [init] ELF binary: part_blk [init] priority: 0 [init] provides service Block [init] child "tz_vmm" [init] RAM quota: 10203136 [init] ELF binary: tz_vmm [init] priority: 0 [init -> platform_drv] --- i.MX53 platform driver --- [init] child "platform_drv" announces service "Platform" [init -> sd_card_drv] --- Imx53 SD card driver --- [init] child "sd_card_drv" announces service "Block" [init] child "timer" announces service "Timer" [init -> tz_vmm] Start virtual machine ... [init -> gpio_drv] --- i.MX53 gpio driver --- [init -> gpio_drv] No GPIO config [init] child "gpio_drv" announces service "Gpio" [init -> sd_card_drv] CID: 0x28424548 0x32353738 0x00000006 0x8a00b600 [init -> sd_card_drv] RCA: 0xb368 [init -> sd_card_drv] SD card detected [init -> sd_card_drv] capacity: 3823 MiB Quota exceeded! amount=12288, size=12288, consumed=12288 [init -> part_blk] Partition 1: LBA 20480 (194560 blocks) type: 83 [init -> part_blk] Partition 2: LBA 215040 (3896289 blocks) type: 83 [init] child "part_blk" announces service "Block" [init -> tz_vmm] [vm] Booting Linux on physical CPU 0x0 [init -> tz_vmm] [vm] Linux version 4.2.3-00002-gfd57dbf-dirty (lypo@...207...) (gcc version 4.9.3 20150113 (prerelease) (Linaro GCC 4.9-2015.01-3) ) #4 PREEMPT Thu Nov 12 15:18:30 CET 2015 [init -> tz_vmm] [vm] CPU: ARMv7 Processor [412fc085] revision 5 (ARMv7), cr=10c5387d [init -> tz_vmm] [vm] CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing instruction cache [init -> tz_vmm] [vm] Machine model: Inverse Path USB armory [init -> tz_vmm] [vm] Memory policy: Data cache writeback [init -> tz_vmm] [vm] CPU: All CPU(s) started in SVC mode. [init -> tz_vmm] [vm] Built 1 zonelists in Zone order, mobility grouping on. Total pages: 65024 [init -> tz_vmm] [vm] Kernel command line: console=ttyS0 root=/dev/sda1 rootwait rw init=/sbin/init clk_ignore_unused [init -> tz_vmm] [vm] PID hash table entries: 1024 (order: 0, 4096 bytes) [init -> tz_vmm] [vm] Dentry cache hash table entries: 32768 (order: 5, 131072 bytes) [init -> tz_vmm] [vm] Inode-cache hash table entries: 16384 (order: 4, 65536 bytes) [init -> tz_vmm] [vm] Memory: 255160K/262144K available (3174K kernel code, 119K rwdata, 1060K rodata, 140K init, 93K bss, 6984K reserved, 0K cma-reserved) [init -> tz_vmm] [vm] Virtual kernel memory layout: [init -> tz_vmm] [vm] vector : 0xffff0000 - 0xffff1000 ( 4 kB) [init -> tz_vmm] [vm] fixmap : 0xffc00000 - 0xfff00000 (3072 kB) [init -> tz_vmm] [vm] vmalloc : 0x90800000 - 0xff000000 (1768 MB) [init -> tz_vmm] [vm] lowmem : 0x80000000 - 0x90000000 ( 256 MB) [init -> tz_vmm] [vm] modules : 0x7f000000 - 0x80000000 ( 16 MB) [init -> tz_vmm] [vm] .text : 0x80008000 - 0x8042abfc (4235 kB) [init -> tz_vmm] [vm] .init : 0x8042b000 - 0x8044e000 ( 140 kB) [init -> tz_vmm] [vm] .data : 0x8044e000 - 0x8046bc60 ( 120 kB) [init -> tz_vmm] [vm] .bss : 0x8046bc60 - 0x804833ac ( 94 kB) [init -> tz_vmm] [vm] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=1, Nodes=1 [init -> tz_vmm] [vm] Preemptible hierarchical RCU implementation. [init -> tz_vmm] [vm] Build-time adjustment of leaf fanout to 32. [init -> tz_vmm] [vm] NR_IRQS:16 nr_irqs:16 16 [init -> tz_vmm] [vm] TrustZone Interrupt Controller (TZIC) initialized [init -> tz_vmm] [vm] CPU identified as i.MX53, unknown revision [init -> tz_vmm] [vm] Switching to timer-based delay loop, resolution 29ns [init -> tz_vmm] [vm] sched_clock: 32 bits at 33MHz, resolution 29ns, wraps every 64424507889ns [init -> tz_vmm] [vm] clocksource: mxc_timer1: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 57337812242 ns [init -> tz_vmm] [vm] Console: colour dummy device 80x30 [init -> tz_vmm] [vm] console [ttyS0] enabled [init -> tz_vmm] [vm] Calibrating delay loop (skipped), value calculated using timer frequency.. 66.66 BogoMIPS (lpj=333333) [init -> tz_vmm] [vm] pid_max: default: 32768 minimum: 301 [init -> tz_vmm] [vm] Security Framework initialized [init -> tz_vmm] [vm] Mount-cache hash table entries: 1024 (order: 0, 4096 bytes) [init -> tz_vmm] [vm] Mountpoint-cache hash table entries: 1024 (order: 0, 4096 bytes) [init -> tz_vmm] [vm] Initializing cgroup subsys net_cls [init -> tz_vmm] [vm] CPU: Testing write buffer coherency: ok [init -> tz_vmm] [vm] Setting up static identity map for 0x80008200 - 0x80008258 [init -> tz_vmm] [vm] devtmpfs: initialized [init -> tz_vmm] [vm] VFP support v0.3: implementor 41 architecture 3 part 30 variant c rev 2 [init -> tz_vmm] [vm] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 19112604462750000 ns [init -> tz_vmm] [vm] pinctrl core: initialized pinctrl subsystem [init -> tz_vmm] [vm] NET: Registered protocol family 16 [init -> tz_vmm] [vm] DMA: preallocated 256 KiB pool for atomic coherent allocations [init -> tz_vmm] [vm] cpuidle: using governor ladder [init -> tz_vmm] [vm] cpuidle: using governor menu [init -> tz_vmm] [vm] imx53-pinctrl 53fa8000.iomuxc: initialized IMX pinctrl driver [init -> tz_vmm] [vm] 50000000.aips:usbphy@...361... supply vcc not found, using dummy regulator [init -> tz_vmm] [vm] 50000000.aips:usbphy@...23... supply vcc not found, using dummy regulator [init -> tz_vmm] [vm] pps_core: LinuxPPS API ver. 1 registered [init -> tz_vmm] [vm] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@...292...> [init -> tz_vmm] [vm] clocksource: Switched to clocksource mxc_timer1 [init -> tz_vmm] [vm] NET: Registered protocol family 2 [init -> tz_vmm] [vm] TCP established hash table entries: 2048 (order: 1, 8192 bytes) [init -> tz_vmm] [vm] TCP bind hash table entries: 2048 (order: 1, 8192 bytes) [init -> tz_vmm] [vm] TCP: Hash tables configured (established 2048 bind 2048) [init -> tz_vmm] [vm] UDP hash table entries: 256 (order: 0, 4096 bytes) [init -> tz_vmm] [vm] UDP-Lite hash table entries: 256 (order: 0, 4096 bytes) [init -> tz_vmm] [vm] NET: Registered protocol family 1 [init -> tz_vmm] [vm] futex hash table entries: 256 (order: -1, 3072 bytes) [init -> tz_vmm] [vm] squashfs: version 4.0 (2009/01/31) Phillip Lougher [init -> tz_vmm] [vm] io scheduler noop registered (default) [init -> tz_vmm] [vm] imx-sdma 63fb0000.sdma: failed to get firmware from device tree [init -> tz_vmm] [vm] imx-sdma 63fb0000.sdma: initialized [init -> tz_vmm] [vm] ttyS0 at MMIO 0x1 (irq = 0, base_baud = 230400) is a IMX [init -> tz_vmm] [vm] loop: module loaded [init -> part_blk] session opened at partition 2 for 'tz_vmm -> sda1' [init -> tz_vmm] [vm] genblk: drive 0 [init -> tz_vmm] [vm] block count 3896289 [init -> tz_vmm] [vm] block size 512 [init -> tz_vmm] [vm] writeable 1 [init -> tz_vmm] [vm] queue size 5226480 [init -> tz_vmm] [vm] pirq 92 [init -> tz_vmm] [vm] virq 108 [init -> tz_vmm] [vm] major number 254 [init -> tz_vmm] [vm] name "sda1" [init -> tz_vmm] [vm] device-mapper: ioctl: 4.33.0-ioctl (2015-8-18) initialised: dm-devel@...315... [init -> tz_vmm] [vm] sahara 63ff8000.crypto: SAHARA version 4 initialized [init -> tz_vmm] [vm] NET: Registered protocol family 17 [init -> tz_vmm] [vm] GENODE_TZ_VMM: skip mx5_cpu_lp_set [init -> tz_vmm] [vm] imx5_pm_common_init: No DDR LPM support with suspend -22! [init -> tz_vmm] [vm] hctosys: unable to open rtc device (rtc0) [init -> tz_vmm] [vm] clk: Not disabling unused clocks [init -> tz_vmm] [vm] EXT4-fs (sda1): couldn't mount as ext3 due to feature incompatibilities [init -> tz_vmm] [vm] EXT4-fs (sda1): couldn't mount as ext2 due to feature incompatibilities [init -> tz_vmm] [vm] EXT4-fs (sda1): recovery complete [init -> tz_vmm] [vm] EXT4-fs (sda1): mounted filesystem with ordered data mode. Opts: (null) [init -> tz_vmm] [vm] VFS: Mounted root (ext4 filesystem) on device 254:0. [init -> tz_vmm] [vm] devtmpfs: mounted [init -> tz_vmm] [vm] Freeing unused kernel memory: 140K (8042b000 - 8044e000) [init -> tz_vmm] [vm] random: nonblocking pool is initialized INIT: version 2.88 booting [init -> tz_vmm] [vm] [info] Using makefile-style concurrent boot in runlevel S. [init -> tz_vmm] [vm] [....] Starting the hotplug events dispatcher: udevdudevd[150]: starting version 175 [ ok -> tz_vmm] [vm] . [ ok -> tz_vmm] [vm] [....] Synthesizing the initial hotplug events...done. [init -> tz_vmm] [vm] [....] Waiting for /dev to be fully populated...imx2-wdt 53f98000.wdog: timeout 60 sec (nowayout=0) [init -> tz_vmm] [vm] usbcore: registered new interface driver usbfs [init -> tz_vmm] [vm] usbcore: registered new interface driver hub [init -> tz_vmm] [vm] usbcore: registered new device driver usb [init -> tz_vmm] [vm] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver [ ok -> tz_vmm] [vm] done. [ ok -> tz_vmm] [vm] [....] Activating swap...done. [init -> tz_vmm] [vm] EXT4-fs (sda1): re-mounted. Opts: (null) [ ok -> tz_vmm] [vm] [....] Cleaning up temporary files... /tmp. [init -> tz_vmm] [vm] [info] Loading kernel module ledtrig_heartbeat. [init -> tz_vmm] [vm] FATAL: Module ledtrig_heartbeat not found. [init -> tz_vmm] [vm] [info] Loading kernel module g_ether. [init -> tz_vmm] [vm] using random self ethernet address [init -> tz_vmm] [vm] using random host ethernet address [init -> tz_vmm] [vm] using self ethernet address: 1a:55:89:a2:69:41 [init -> tz_vmm] [vm] usb0: HOST MAC 2a:cd:e3:c7:c8:0a [init -> tz_vmm] [vm] usb0: MAC 1a:55:89:a2:69:41 [init -> tz_vmm] [vm] using random self ethernet address [init -> tz_vmm] [vm] using random host ethernet address [init -> tz_vmm] [vm] g_ether gadget: Ethernet Gadget, version: Memorial Day 2008 [init -> tz_vmm] [vm] g_ether gadget: g_ether ready [init -> tz_vmm] [vm] g_ether gadget: high-speed config #1: CDC Ethernet (ECM) [ ok -> tz_vmm] [vm] [....] Activating lvm and md swap...done. [init -> tz_vmm] [vm] [....] Checking file systems...fsck from util-linux 2.20.1 [ ok -> tz_vmm] [vm] done. [ ok -> tz_vmm] [vm] [....] Mounting local filesystems...done. [ ok -> tz_vmm] [vm] [....] Activating swapfile swap...done. [ ok -> tz_vmm] [vm] [....] Cleaning up temporary files.... [ ok -> tz_vmm] [vm] [....] Setting kernel variables ...done. [init -> tz_vmm] [vm] [....] Configuring network interfaces...ifup: interface usb0 already configured [ ok -> tz_vmm] [vm] done. [ ok -> tz_vmm] [vm] [....] Cleaning up temporary files.... [init -> tz_vmm] [vm] NET: Registered protocol family 10 INIT: Entering runlevel: 2 [init -> tz_vmm] [vm] [info] Using makefile-style concurrent boot in runlevel 2. [ ok -> tz_vmm] [vm] [....] Starting enhanced syslogd: rsyslogd. [ ok -> tz_vmm] [vm] [....] Starting periodic command scheduler: cron. [ ok -> tz_vmm] [vm] [....] Starting OpenBSD Secure Shell server: sshd. [init -> tz_vmm] [vm] [init -> tz_vmm] [vm] Debian GNU/Linux 7 usbarmory console [init -> tz_vmm] [vm]
Hi Yevgeny,
What do you mean when you say it freezes?
If it doesn't react to keyboard input via your COM interface (minicom, picocom, ...) that doesn't necessarily mean that it is frozen. UART input isn't forwarded to the "Secure" world userland or the "Normal" world guest OS in this scenario.
You can, however, communicate with the guest OS via TCP/IP (for example by using ssh). For the details see [1]
Cheers, Martin
[1] https://github.com/inversepath/usbarmory/wiki/Host-communication
Am 12.05.2016 um 13:00 schrieb Yevgeny Lavrov:
Hi, after going through tz_vmm tutorial I was able to create uImage and put it on MicroSD card. However, when I try to boot it on Armory, Genode freezes all the way at the end.
Below is what appears on the console after executing
=> ext2load mmc 0:1 0x74000000 /uImage
=> bootm 0x74000000
it freezes after "Debian GNU/Linux 7 usbarmory console"
Am I missing something?
Starting kernel ...
kernel initialized Genode 16.02 int main(): --- create local services --- int main(): --- start init --- int main(): transferred 246 MB to init int main(): --- init created, waiting for exit condition --- [init] Could not open ROM session for module "ld.lib.so http://ld.lib.so" [init] parent provides [init] service "ROM" [init] service "RAM" [init] service "IRQ" [init] service "IO_MEM" [init] service "IO_PORT" [init] service "CAP" [init] service "PD" [init] service "RM" [init] service "CPU" [init] service "LOG" [init] service "SIGNAL" [init] service "VM" [init] child "gpio_drv" [init] RAM quota: 2863104 [init] ELF binary: gpio_drv [init] priority: 0 [init] provides service Gpio [init] child "timer" [init] RAM quota: 2863104 [init] ELF binary: timer [init] priority: 0 [init] provides service Timer [init] child "platform_drv" [init] RAM quota: 2863104 [init] ELF binary: platform_drv [init] priority: 0 [init] provides service Regulator [init] provides service Platform [init] child "sd_card_drv" [init] RAM quota: 2863104 [init] ELF binary: sd_card_drv [init] priority: 0 [init] provides service Block [init] child "part_blk" [init] RAM quota: 10203136 [init] ELF binary: part_blk [init] priority: 0 [init] provides service Block [init] child "tz_vmm" [init] RAM quota: 10203136 [init] ELF binary: tz_vmm [init] priority: 0 [init -> platform_drv] --- i.MX53 platform driver --- [init] child "platform_drv" announces service "Platform" [init -> sd_card_drv] --- Imx53 SD card driver --- [init] child "sd_card_drv" announces service "Block" [init] child "timer" announces service "Timer" [init -> tz_vmm] Start virtual machine ... [init -> gpio_drv] --- i.MX53 gpio driver --- [init -> gpio_drv] No GPIO config [init] child "gpio_drv" announces service "Gpio" [init -> sd_card_drv] CID: 0x28424548 0x32353738 0x00000006 0x8a00b600 [init -> sd_card_drv] RCA: 0xb368 [init -> sd_card_drv] SD card detected [init -> sd_card_drv] capacity: 3823 MiB Quota exceeded! amount=12288, size=12288, consumed=12288 [init -> part_blk] Partition 1: LBA 20480 (194560 blocks) type: 83 [init -> part_blk] Partition 2: LBA 215040 (3896289 blocks) type: 83 [init] child "part_blk" announces service "Block" [init -> tz_vmm] [vm] Booting Linux on physical CPU 0x0 [init -> tz_vmm] [vm] Linux version 4.2.3-00002-gfd57dbf-dirty (lypo@...207...) (gcc version 4.9.3 20150113 (prerelease) (Linaro GCC 4.9-2015.01-3) ) #4 PREEMPT Thu Nov 12 15:18:30 CET 2015 [init -> tz_vmm] [vm] CPU: ARMv7 Processor [412fc085] revision 5 (ARMv7), cr=10c5387d [init -> tz_vmm] [vm] CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing instruction cache [init -> tz_vmm] [vm] Machine model: Inverse Path USB armory [init -> tz_vmm] [vm] Memory policy: Data cache writeback [init -> tz_vmm] [vm] CPU: All CPU(s) started in SVC mode. [init -> tz_vmm] [vm] Built 1 zonelists in Zone order, mobility grouping on. Total pages: 65024 [init -> tz_vmm] [vm] Kernel command line: console=ttyS0 root=/dev/sda1 rootwait rw init=/sbin/init clk_ignore_unused [init -> tz_vmm] [vm] PID hash table entries: 1024 (order: 0, 4096 bytes) [init -> tz_vmm] [vm] Dentry cache hash table entries: 32768 (order: 5, 131072 bytes) [init -> tz_vmm] [vm] Inode-cache hash table entries: 16384 (order: 4, 65536 bytes) [init -> tz_vmm] [vm] Memory: 255160K/262144K available (3174K kernel code, 119K rwdata, 1060K rodata, 140K init, 93K bss, 6984K reserved, 0K cma-reserved) [init -> tz_vmm] [vm] Virtual kernel memory layout: [init -> tz_vmm] [vm] vector : 0xffff0000 - 0xffff1000 ( 4 kB) [init -> tz_vmm] [vm] fixmap : 0xffc00000 - 0xfff00000 (3072 kB) [init -> tz_vmm] [vm] vmalloc : 0x90800000 - 0xff000000 (1768 MB) [init -> tz_vmm] [vm] lowmem : 0x80000000 - 0x90000000 ( 256 MB) [init -> tz_vmm] [vm] modules : 0x7f000000 - 0x80000000 ( 16 MB) [init -> tz_vmm] [vm] .text : 0x80008000 - 0x8042abfc (4235 kB) [init -> tz_vmm] [vm] .init : 0x8042b000 - 0x8044e000 ( 140 kB) [init -> tz_vmm] [vm] .data : 0x8044e000 - 0x8046bc60 ( 120 kB) [init -> tz_vmm] [vm] .bss : 0x8046bc60 - 0x804833ac ( 94 kB) [init -> tz_vmm] [vm] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=1, Nodes=1 [init -> tz_vmm] [vm] Preemptible hierarchical RCU implementation. [init -> tz_vmm] [vm] Build-time adjustment of leaf fanout to 32. [init -> tz_vmm] [vm] NR_IRQS:16 nr_irqs:16 16 [init -> tz_vmm] [vm] TrustZone Interrupt Controller (TZIC) initialized [init -> tz_vmm] [vm] CPU identified as i.MX53, unknown revision [init -> tz_vmm] [vm] Switching to timer-based delay loop, resolution 29ns [init -> tz_vmm] [vm] sched_clock: 32 bits at 33MHz, resolution 29ns, wraps every 64424507889ns [init -> tz_vmm] [vm] clocksource: mxc_timer1: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 57337812242 ns [init -> tz_vmm] [vm] Console: colour dummy device 80x30 [init -> tz_vmm] [vm] console [ttyS0] enabled [init -> tz_vmm] [vm] Calibrating delay loop (skipped), value calculated using timer frequency.. 66.66 BogoMIPS (lpj=333333) [init -> tz_vmm] [vm] pid_max: default: 32768 minimum: 301 [init -> tz_vmm] [vm] Security Framework initialized [init -> tz_vmm] [vm] Mount-cache hash table entries: 1024 (order: 0, 4096 bytes) [init -> tz_vmm] [vm] Mountpoint-cache hash table entries: 1024 (order: 0, 4096 bytes) [init -> tz_vmm] [vm] Initializing cgroup subsys net_cls [init -> tz_vmm] [vm] CPU: Testing write buffer coherency: ok [init -> tz_vmm] [vm] Setting up static identity map for 0x80008200 - 0x80008258 [init -> tz_vmm] [vm] devtmpfs: initialized [init -> tz_vmm] [vm] VFP support v0.3: implementor 41 architecture 3 part 30 variant c rev 2 [init -> tz_vmm] [vm] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 19112604462750000 ns [init -> tz_vmm] [vm] pinctrl core: initialized pinctrl subsystem [init -> tz_vmm] [vm] NET: Registered protocol family 16 [init -> tz_vmm] [vm] DMA: preallocated 256 KiB pool for atomic coherent allocations [init -> tz_vmm] [vm] cpuidle: using governor ladder [init -> tz_vmm] [vm] cpuidle: using governor menu [init -> tz_vmm] [vm] imx53-pinctrl 53fa8000.iomuxc: initialized IMX pinctrl driver [init -> tz_vmm] [vm] 50000000.aips:usbphy@...361... supply vcc not found, using dummy regulator [init -> tz_vmm] [vm] 50000000.aips:usbphy@...23... supply vcc not found, using dummy regulator [init -> tz_vmm] [vm] pps_core: LinuxPPS API ver. 1 registered [init -> tz_vmm] [vm] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@...292... mailto:giometti@...292...> [init -> tz_vmm] [vm] clocksource: Switched to clocksource mxc_timer1 [init -> tz_vmm] [vm] NET: Registered protocol family 2 [init -> tz_vmm] [vm] TCP established hash table entries: 2048 (order: 1, 8192 bytes) [init -> tz_vmm] [vm] TCP bind hash table entries: 2048 (order: 1, 8192 bytes) [init -> tz_vmm] [vm] TCP: Hash tables configured (established 2048 bind 2048) [init -> tz_vmm] [vm] UDP hash table entries: 256 (order: 0, 4096 bytes) [init -> tz_vmm] [vm] UDP-Lite hash table entries: 256 (order: 0, 4096 bytes) [init -> tz_vmm] [vm] NET: Registered protocol family 1 [init -> tz_vmm] [vm] futex hash table entries: 256 (order: -1, 3072 bytes) [init -> tz_vmm] [vm] squashfs: version 4.0 (2009/01/31) Phillip Lougher [init -> tz_vmm] [vm] io scheduler noop registered (default) [init -> tz_vmm] [vm] imx-sdma 63fb0000.sdma: failed to get firmware from device tree [init -> tz_vmm] [vm] imx-sdma 63fb0000.sdma: initialized [init -> tz_vmm] [vm] ttyS0 at MMIO 0x1 (irq = 0, base_baud = 230400) is a IMX [init -> tz_vmm] [vm] loop: module loaded [init -> part_blk] session opened at partition 2 for 'tz_vmm -> sda1' [init -> tz_vmm] [vm] genblk: drive 0 [init -> tz_vmm] [vm] block count 3896289 [init -> tz_vmm] [vm] block size 512 [init -> tz_vmm] [vm] writeable 1 [init -> tz_vmm] [vm] queue size 5226480 [init -> tz_vmm] [vm] pirq 92 [init -> tz_vmm] [vm] virq 108 [init -> tz_vmm] [vm] major number 254 [init -> tz_vmm] [vm] name "sda1" [init -> tz_vmm] [vm] device-mapper: ioctl: 4.33.0-ioctl (2015-8-18) initialised: dm-devel@...315... mailto:dm-devel@...315... [init -> tz_vmm] [vm] sahara 63ff8000.crypto: SAHARA version 4 initialized [init -> tz_vmm] [vm] NET: Registered protocol family 17 [init -> tz_vmm] [vm] GENODE_TZ_VMM: skip mx5_cpu_lp_set [init -> tz_vmm] [vm] imx5_pm_common_init: No DDR LPM support with suspend -22! [init -> tz_vmm] [vm] hctosys: unable to open rtc device (rtc0) [init -> tz_vmm] [vm] clk: Not disabling unused clocks [init -> tz_vmm] [vm] EXT4-fs (sda1): couldn't mount as ext3 due to feature incompatibilities [init -> tz_vmm] [vm] EXT4-fs (sda1): couldn't mount as ext2 due to feature incompatibilities [init -> tz_vmm] [vm] EXT4-fs (sda1): recovery complete [init -> tz_vmm] [vm] EXT4-fs (sda1): mounted filesystem with ordered data mode. Opts: (null) [init -> tz_vmm] [vm] VFS: Mounted root (ext4 filesystem) on device 254:0. [init -> tz_vmm] [vm] devtmpfs: mounted [init -> tz_vmm] [vm] Freeing unused kernel memory: 140K (8042b000 - 8044e000) [init -> tz_vmm] [vm] random: nonblocking pool is initialized INIT: version 2.88 booting [init -> tz_vmm] [vm] [info] Using makefile-style concurrent boot in runlevel S. [init -> tz_vmm] [vm] [....] Starting the hotplug events dispatcher: udevdudevd[150]: starting version 175 [ ok -> tz_vmm] [vm] . [ ok -> tz_vmm] [vm] [....] Synthesizing the initial hotplug events...done. [init -> tz_vmm] [vm] [....] Waiting for /dev to be fully populated...imx2-wdt 53f98000.wdog: timeout 60 sec (nowayout=0) [init -> tz_vmm] [vm] usbcore: registered new interface driver usbfs [init -> tz_vmm] [vm] usbcore: registered new interface driver hub [init -> tz_vmm] [vm] usbcore: registered new device driver usb [init -> tz_vmm] [vm] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver [ ok -> tz_vmm] [vm] done. [ ok -> tz_vmm] [vm] [....] Activating swap...done. [init -> tz_vmm] [vm] EXT4-fs (sda1): re-mounted. Opts: (null) [ ok -> tz_vmm] [vm] [....] Cleaning up temporary files... /tmp. [init -> tz_vmm] [vm] [info] Loading kernel module ledtrig_heartbeat. [init -> tz_vmm] [vm] FATAL: Module ledtrig_heartbeat not found. [init -> tz_vmm] [vm] [info] Loading kernel module g_ether. [init -> tz_vmm] [vm] using random self ethernet address [init -> tz_vmm] [vm] using random host ethernet address [init -> tz_vmm] [vm] using self ethernet address: 1a:55:89:a2:69:41 [init -> tz_vmm] [vm] usb0: HOST MAC 2a:cd:e3:c7:c8:0a [init -> tz_vmm] [vm] usb0: MAC 1a:55:89:a2:69:41 [init -> tz_vmm] [vm] using random self ethernet address [init -> tz_vmm] [vm] using random host ethernet address [init -> tz_vmm] [vm] g_ether gadget: Ethernet Gadget, version: Memorial Day 2008 [init -> tz_vmm] [vm] g_ether gadget: g_ether ready [init -> tz_vmm] [vm] g_ether gadget: high-speed config #1: CDC Ethernet (ECM) [ ok -> tz_vmm] [vm] [....] Activating lvm and md swap...done. [init -> tz_vmm] [vm] [....] Checking file systems...fsck from util-linux 2.20.1 [ ok -> tz_vmm] [vm] done. [ ok -> tz_vmm] [vm] [....] Mounting local filesystems...done. [ ok -> tz_vmm] [vm] [....] Activating swapfile swap...done. [ ok -> tz_vmm] [vm] [....] Cleaning up temporary files.... [ ok -> tz_vmm] [vm] [....] Setting kernel variables ...done. [init -> tz_vmm] [vm] [....] Configuring network interfaces...ifup: interface usb0 already configured [ ok -> tz_vmm] [vm] done. [ ok -> tz_vmm] [vm] [....] Cleaning up temporary files.... [init -> tz_vmm] [vm] NET: Registered protocol family 10 INIT: Entering runlevel: 2 [init -> tz_vmm] [vm] [info] Using makefile-style concurrent boot in runlevel 2. [ ok -> tz_vmm] [vm] [....] Starting enhanced syslogd: rsyslogd. [ ok -> tz_vmm] [vm] [....] Starting periodic command scheduler: cron. [ ok -> tz_vmm] [vm] [....] Starting OpenBSD Secure Shell server: sshd. [init -> tz_vmm] [vm] [init -> tz_vmm] [vm] Debian GNU/Linux 7 usbarmory console [init -> tz_vmm] [vm]
Mobile security can be enabling, not merely restricting. Employees who bring their own devices (BYOD) to work are irked by the imposition of MDM restrictions. Mobile Device Manager Plus allows you to control only the apps on BYO-devices by containerizing them, leaving personal data untouched! https://ad.doubleclick.net/ddm/clk/304595813;131938128;j
genode-main mailing list genode-main@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/genode-main
Thanks for the quick reply, I was unaware that I have to ssh into the USB Armory in order to access it. I was expecting it to communicate back to me via COM interface as other OS’s I’ve had previously installed on the USB Armory. However, there are few more questions I have, and I’ll be very grateful if you can answer them or provide me with any information. So I was able to run Genode on USB Armory, and ssh into it, and it appears to me that I’m interacting with Linux Virtual Machine. If it is a Virtual Machine, then are there any tools available within that VM that I can use to talk to the outside of the Linux VM, or at least somehow prove/demonstrate that the Linux VM I’m currently in is running atop of Genode?
The other question is about the Kernel. It appears as ARM Linux Kernel during boot. Is it a standard Linux Kernel or especially customized one to support Genode? I just need to verify this.
Can you provide any tips on how to bring up any other microkernels fully supported by Genode that I can run on USB Armory? If there are no other options available besides using the default Linux kernel that comes with the tz_vmm, then is there any other board that you can recommend me to use to run Genode with fully supported microkernels, as preparation for seL4?
On Thu, May 12, 2016 at 7:00 AM, Yevgeny Lavrov <ylavrov13@...9...> wrote:
Hi, after going through tz_vmm tutorial I was able to create uImage and put it on MicroSD card. However, when I try to boot it on Armory, Genode freezes all the way at the end.
Below is what appears on the console after executing
=> ext2load mmc 0:1 0x74000000 /uImage
=> bootm 0x74000000
it freezes after "Debian GNU/Linux 7 usbarmory console"
Am I missing something?
Starting kernel ...
kernel initialized Genode 16.02 int main(): --- create local services --- int main(): --- start init --- int main(): transferred 246 MB to init int main(): --- init created, waiting for exit condition --- [init] Could not open ROM session for module "ld.lib.so" [init] parent provides [init] service "ROM" [init] service "RAM" [init] service "IRQ" [init] service "IO_MEM" [init] service "IO_PORT" [init] service "CAP" [init] service "PD" [init] service "RM" [init] service "CPU" [init] service "LOG" [init] service "SIGNAL" [init] service "VM" [init] child "gpio_drv" [init] RAM quota: 2863104 [init] ELF binary: gpio_drv [init] priority: 0 [init] provides service Gpio [init] child "timer" [init] RAM quota: 2863104 [init] ELF binary: timer [init] priority: 0 [init] provides service Timer [init] child "platform_drv" [init] RAM quota: 2863104 [init] ELF binary: platform_drv [init] priority: 0 [init] provides service Regulator [init] provides service Platform [init] child "sd_card_drv" [init] RAM quota: 2863104 [init] ELF binary: sd_card_drv [init] priority: 0 [init] provides service Block [init] child "part_blk" [init] RAM quota: 10203136 [init] ELF binary: part_blk [init] priority: 0 [init] provides service Block [init] child "tz_vmm" [init] RAM quota: 10203136 [init] ELF binary: tz_vmm [init] priority: 0 [init -> platform_drv] --- i.MX53 platform driver --- [init] child "platform_drv" announces service "Platform" [init -> sd_card_drv] --- Imx53 SD card driver --- [init] child "sd_card_drv" announces service "Block" [init] child "timer" announces service "Timer" [init -> tz_vmm] Start virtual machine ... [init -> gpio_drv] --- i.MX53 gpio driver --- [init -> gpio_drv] No GPIO config [init] child "gpio_drv" announces service "Gpio" [init -> sd_card_drv] CID: 0x28424548 0x32353738 0x00000006 0x8a00b600 [init -> sd_card_drv] RCA: 0xb368 [init -> sd_card_drv] SD card detected [init -> sd_card_drv] capacity: 3823 MiB Quota exceeded! amount=12288, size=12288, consumed=12288 [init -> part_blk] Partition 1: LBA 20480 (194560 blocks) type: 83 [init -> part_blk] Partition 2: LBA 215040 (3896289 blocks) type: 83 [init] child "part_blk" announces service "Block" [init -> tz_vmm] [vm] Booting Linux on physical CPU 0x0 [init -> tz_vmm] [vm] Linux version 4.2.3-00002-gfd57dbf-dirty (lypo@...252...07...) (gcc version 4.9.3 20150113 (prerelease) (Linaro GCC 4.9-2015.01-3) ) #4 PREEMPT Thu Nov 12 15:18:30 CET 2015 [init -> tz_vmm] [vm] CPU: ARMv7 Processor [412fc085] revision 5 (ARMv7), cr=10c5387d [init -> tz_vmm] [vm] CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing instruction cache [init -> tz_vmm] [vm] Machine model: Inverse Path USB armory [init -> tz_vmm] [vm] Memory policy: Data cache writeback [init -> tz_vmm] [vm] CPU: All CPU(s) started in SVC mode. [init -> tz_vmm] [vm] Built 1 zonelists in Zone order, mobility grouping on. Total pages: 65024 [init -> tz_vmm] [vm] Kernel command line: console=ttyS0 root=/dev/sda1 rootwait rw init=/sbin/init clk_ignore_unused [init -> tz_vmm] [vm] PID hash table entries: 1024 (order: 0, 4096 bytes) [init -> tz_vmm] [vm] Dentry cache hash table entries: 32768 (order: 5, 131072 bytes) [init -> tz_vmm] [vm] Inode-cache hash table entries: 16384 (order: 4, 65536 bytes) [init -> tz_vmm] [vm] Memory: 255160K/262144K available (3174K kernel code, 119K rwdata, 1060K rodata, 140K init, 93K bss, 6984K reserved, 0K cma-reserved) [init -> tz_vmm] [vm] Virtual kernel memory layout: [init -> tz_vmm] [vm] vector : 0xffff0000 - 0xffff1000 ( 4 kB) [init -> tz_vmm] [vm] fixmap : 0xffc00000 - 0xfff00000 (3072 kB) [init -> tz_vmm] [vm] vmalloc : 0x90800000 - 0xff000000 (1768 MB) [init -> tz_vmm] [vm] lowmem : 0x80000000 - 0x90000000 ( 256 MB) [init -> tz_vmm] [vm] modules : 0x7f000000 - 0x80000000 ( 16 MB) [init -> tz_vmm] [vm] .text : 0x80008000 - 0x8042abfc (4235 kB) [init -> tz_vmm] [vm] .init : 0x8042b000 - 0x8044e000 ( 140 kB) [init -> tz_vmm] [vm] .data : 0x8044e000 - 0x8046bc60 ( 120 kB) [init -> tz_vmm] [vm] .bss : 0x8046bc60 - 0x804833ac ( 94 kB) [init -> tz_vmm] [vm] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=1, Nodes=1 [init -> tz_vmm] [vm] Preemptible hierarchical RCU implementation. [init -> tz_vmm] [vm] Build-time adjustment of leaf fanout to 32. [init -> tz_vmm] [vm] NR_IRQS:16 nr_irqs:16 16 [init -> tz_vmm] [vm] TrustZone Interrupt Controller (TZIC) initialized [init -> tz_vmm] [vm] CPU identified as i.MX53, unknown revision [init -> tz_vmm] [vm] Switching to timer-based delay loop, resolution 29ns [init -> tz_vmm] [vm] sched_clock: 32 bits at 33MHz, resolution 29ns, wraps every 64424507889ns [init -> tz_vmm] [vm] clocksource: mxc_timer1: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 57337812242 ns [init -> tz_vmm] [vm] Console: colour dummy device 80x30 [init -> tz_vmm] [vm] console [ttyS0] enabled [init -> tz_vmm] [vm] Calibrating delay loop (skipped), value calculated using timer frequency.. 66.66 BogoMIPS (lpj=333333) [init -> tz_vmm] [vm] pid_max: default: 32768 minimum: 301 [init -> tz_vmm] [vm] Security Framework initialized [init -> tz_vmm] [vm] Mount-cache hash table entries: 1024 (order: 0, 4096 bytes) [init -> tz_vmm] [vm] Mountpoint-cache hash table entries: 1024 (order: 0, 4096 bytes) [init -> tz_vmm] [vm] Initializing cgroup subsys net_cls [init -> tz_vmm] [vm] CPU: Testing write buffer coherency: ok [init -> tz_vmm] [vm] Setting up static identity map for 0x80008200 - 0x80008258 [init -> tz_vmm] [vm] devtmpfs: initialized [init -> tz_vmm] [vm] VFP support v0.3: implementor 41 architecture 3 part 30 variant c rev 2 [init -> tz_vmm] [vm] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 19112604462750000 ns [init -> tz_vmm] [vm] pinctrl core: initialized pinctrl subsystem [init -> tz_vmm] [vm] NET: Registered protocol family 16 [init -> tz_vmm] [vm] DMA: preallocated 256 KiB pool for atomic coherent allocations [init -> tz_vmm] [vm] cpuidle: using governor ladder [init -> tz_vmm] [vm] cpuidle: using governor menu [init -> tz_vmm] [vm] imx53-pinctrl 53fa8000.iomuxc: initialized IMX pinctrl driver [init -> tz_vmm] [vm] 50000000.aips:usbphy@...361... supply vcc not found, using dummy regulator [init -> tz_vmm] [vm] 50000000.aips:usbphy@...23... supply vcc not found, using dummy regulator [init -> tz_vmm] [vm] pps_core: LinuxPPS API ver. 1 registered [init -> tz_vmm] [vm] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@...292...> [init -> tz_vmm] [vm] clocksource: Switched to clocksource mxc_timer1 [init -> tz_vmm] [vm] NET: Registered protocol family 2 [init -> tz_vmm] [vm] TCP established hash table entries: 2048 (order: 1, 8192 bytes) [init -> tz_vmm] [vm] TCP bind hash table entries: 2048 (order: 1, 8192 bytes) [init -> tz_vmm] [vm] TCP: Hash tables configured (established 2048 bind 2048) [init -> tz_vmm] [vm] UDP hash table entries: 256 (order: 0, 4096 bytes) [init -> tz_vmm] [vm] UDP-Lite hash table entries: 256 (order: 0, 4096 bytes) [init -> tz_vmm] [vm] NET: Registered protocol family 1 [init -> tz_vmm] [vm] futex hash table entries: 256 (order: -1, 3072 bytes) [init -> tz_vmm] [vm] squashfs: version 4.0 (2009/01/31) Phillip Lougher [init -> tz_vmm] [vm] io scheduler noop registered (default) [init -> tz_vmm] [vm] imx-sdma 63fb0000.sdma: failed to get firmware from device tree [init -> tz_vmm] [vm] imx-sdma 63fb0000.sdma: initialized [init -> tz_vmm] [vm] ttyS0 at MMIO 0x1 (irq = 0, base_baud = 230400) is a IMX [init -> tz_vmm] [vm] loop: module loaded [init -> part_blk] session opened at partition 2 for 'tz_vmm -> sda1' [init -> tz_vmm] [vm] genblk: drive 0 [init -> tz_vmm] [vm] block count 3896289 [init -> tz_vmm] [vm] block size 512 [init -> tz_vmm] [vm] writeable 1 [init -> tz_vmm] [vm] queue size 5226480 [init -> tz_vmm] [vm] pirq 92 [init -> tz_vmm] [vm] virq 108 [init -> tz_vmm] [vm] major number 254 [init -> tz_vmm] [vm] name "sda1" [init -> tz_vmm] [vm] device-mapper: ioctl: 4.33.0-ioctl (2015-8-18) initialised: dm-devel@...315... [init -> tz_vmm] [vm] sahara 63ff8000.crypto: SAHARA version 4 initialized [init -> tz_vmm] [vm] NET: Registered protocol family 17 [init -> tz_vmm] [vm] GENODE_TZ_VMM: skip mx5_cpu_lp_set [init -> tz_vmm] [vm] imx5_pm_common_init: No DDR LPM support with suspend -22! [init -> tz_vmm] [vm] hctosys: unable to open rtc device (rtc0) [init -> tz_vmm] [vm] clk: Not disabling unused clocks [init -> tz_vmm] [vm] EXT4-fs (sda1): couldn't mount as ext3 due to feature incompatibilities [init -> tz_vmm] [vm] EXT4-fs (sda1): couldn't mount as ext2 due to feature incompatibilities [init -> tz_vmm] [vm] EXT4-fs (sda1): recovery complete [init -> tz_vmm] [vm] EXT4-fs (sda1): mounted filesystem with ordered data mode. Opts: (null) [init -> tz_vmm] [vm] VFS: Mounted root (ext4 filesystem) on device 254:0. [init -> tz_vmm] [vm] devtmpfs: mounted [init -> tz_vmm] [vm] Freeing unused kernel memory: 140K (8042b000 - 8044e000) [init -> tz_vmm] [vm] random: nonblocking pool is initialized INIT: version 2.88 booting [init -> tz_vmm] [vm] [info] Using makefile-style concurrent boot in runlevel S. [init -> tz_vmm] [vm] [....] Starting the hotplug events dispatcher: udevdudevd[150]: starting version 175 [ ok -> tz_vmm] [vm] . [ ok -> tz_vmm] [vm] [....] Synthesizing the initial hotplug events...done. [init -> tz_vmm] [vm] [....] Waiting for /dev to be fully populated...imx2-wdt 53f98000.wdog: timeout 60 sec (nowayout=0) [init -> tz_vmm] [vm] usbcore: registered new interface driver usbfs [init -> tz_vmm] [vm] usbcore: registered new interface driver hub [init -> tz_vmm] [vm] usbcore: registered new device driver usb [init -> tz_vmm] [vm] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver [ ok -> tz_vmm] [vm] done. [ ok -> tz_vmm] [vm] [....] Activating swap...done. [init -> tz_vmm] [vm] EXT4-fs (sda1): re-mounted. Opts: (null) [ ok -> tz_vmm] [vm] [....] Cleaning up temporary files... /tmp. [init -> tz_vmm] [vm] [info] Loading kernel module ledtrig_heartbeat. [init -> tz_vmm] [vm] FATAL: Module ledtrig_heartbeat not found. [init -> tz_vmm] [vm] [info] Loading kernel module g_ether. [init -> tz_vmm] [vm] using random self ethernet address [init -> tz_vmm] [vm] using random host ethernet address [init -> tz_vmm] [vm] using self ethernet address: 1a:55:89:a2:69:41 [init -> tz_vmm] [vm] usb0: HOST MAC 2a:cd:e3:c7:c8:0a [init -> tz_vmm] [vm] usb0: MAC 1a:55:89:a2:69:41 [init -> tz_vmm] [vm] using random self ethernet address [init -> tz_vmm] [vm] using random host ethernet address [init -> tz_vmm] [vm] g_ether gadget: Ethernet Gadget, version: Memorial Day 2008 [init -> tz_vmm] [vm] g_ether gadget: g_ether ready [init -> tz_vmm] [vm] g_ether gadget: high-speed config #1: CDC Ethernet (ECM) [ ok -> tz_vmm] [vm] [....] Activating lvm and md swap...done. [init -> tz_vmm] [vm] [....] Checking file systems...fsck from util-linux 2.20.1 [ ok -> tz_vmm] [vm] done. [ ok -> tz_vmm] [vm] [....] Mounting local filesystems...done. [ ok -> tz_vmm] [vm] [....] Activating swapfile swap...done. [ ok -> tz_vmm] [vm] [....] Cleaning up temporary files.... [ ok -> tz_vmm] [vm] [....] Setting kernel variables ...done. [init -> tz_vmm] [vm] [....] Configuring network interfaces...ifup: interface usb0 already configured [ ok -> tz_vmm] [vm] done. [ ok -> tz_vmm] [vm] [....] Cleaning up temporary files.... [init -> tz_vmm] [vm] NET: Registered protocol family 10 INIT: Entering runlevel: 2 [init -> tz_vmm] [vm] [info] Using makefile-style concurrent boot in runlevel 2. [ ok -> tz_vmm] [vm] [....] Starting enhanced syslogd: rsyslogd. [ ok -> tz_vmm] [vm] [....] Starting periodic command scheduler: cron. [ ok -> tz_vmm] [vm] [....] Starting OpenBSD Secure Shell server: sshd. [init -> tz_vmm] [vm] [init -> tz_vmm] [vm] Debian GNU/Linux 7 usbarmory console [init -> tz_vmm] [vm]
Hi Yevgeny,
In general, I can recommend you to have a look at the article [3]. It gives information regarding nearly all the topics that you address.
Am 16.05.2016 um 11:27 schrieb Yevgeny Lavrov:
So I was able to run Genode on USB Armory, and ssh into it, and it appears to me that I’m interacting with Linux Virtual Machine. If it is a Virtual Machine,
No, it is the Normal World of ARM Trustzone. It might be misleading that we use the Genode VM-Session interface to control the Normal World but the underlying Trustzone technology is still no Virtualization but merely a hardware separation.
then are there any tools available within that VM that I can use to talk to the outside of the Linux VM, or at least somehow prove/demonstrate that the Linux VM I’m currently in is running atop of Genode?
Yes, there are. You can use the Secure Monitor Call or SMC instruction of ARM for that. Actually, it is already used by your Linux for the para-virtualized SD-card [1] and UART [2]. Using SMCs, you can also install shared buffers as done in [1].
The other question is about the Kernel. It appears as ARM Linux Kernel during boot. Is it a standard Linux Kernel or especially customized one to support Genode? I just need to verify this.
Just to be really clear, do you mean the initial Kernel that boots the Genode hypervisor or the Kernel that is started by Genode in the Normal World ([init -> tz_vmm] [vm] ...) ?
Assuming you mean the one in the Normal World, it is a patched Linux 4.2.3. You can see my two Armory patches here [4].
Can you provide any tips on how to bring up any other microkernels fully supported by Genode that I can run on USB Armory?
There are generally three main building sites when porting another kernel to the Normal World of tz_vmm. First, the monitor component [5] acts as bootloader for the Normal World OS. This bootloader behavior would have to be adapted to the new OS's expectations.
Second, the Normal World OS currently has to cooperate in some ways with the Secure World. Mainly, it must not modify clock or power controls in a way that affects the Genode hypervisor because these controls are not protected yet.
Third, you have to check whether your OS attempts to use devices that are protected. If they are mandatory, i.e. you can't skip them, you can para-virtualize them. As mentioned above, for SDHC and UART, Genode already provides a para-virtualized interface.
If there are no other options available besides using the default Linux kernel that comes with the tz_vmm, then is there any other board that you can recommend me to use to run Genode with fully supported microkernels, as preparation for seL4?
Could you please explain this a bit further? I don't know what seL4 has to do with a Trustzone scenario. What is your final goal?
Cheers, Martin
[1] https://github.com/m-stein/linux/blob/genode_hw_usb_armory_tz_vmm/drivers/bl...
[2] https://github.com/m-stein/linux/blob/genode_hw_usb_armory_tz_vmm/drivers/tt... https://github.com/m-stein/linux/blob/genode_hw_usb_armory_tz_vmm/arch/arm/i...
[3] https://genode.org/documentation/articles/usb_armory
[4] https://github.com/m-stein/linux/commits/genode_hw_usb_armory_tz_vmm
[5] https://github.com/genodelabs/genode/tree/master/repos/os/src/server/tz_vmm
Am 17.05.2016 um 13:09 schrieb Martin Stein:
Just to be really clear, do you mean the initial Kernel that boots the Genode hypervisor or the Kernel that is started by Genode in the Normal World ([init -> tz_vmm] [vm] ...) ?
Sorry, I messed up terms: The "initial Kernel that boots the Genode hypervisor" *is* the hypervisor and it does not "boot" Genode but *drive* it. Simplified, my question is whether you're talking about the kernel started in the Secure World or the kernel started in the Normal World.
Cheers, Martin