Hi Christian,
[init -> terminal] Error: bind to port 8888 failed
- It seems your configured 1 port for 2 clients. This will not work.
Please, configure different ports (or just one if you don't need the VFS component, which failed to setup its connection anyway.
this is exactly my question - seems that I have to define policy for 2 connections - to /bin/bash and to vfs, why not 1? <policy label_prefix="/bin/bash" port="8888" /> <policy label_prefix="vfs" port="8888"/> while I assume single chain like nic -> tcp_terminal -> bash
Now I understand that implicitly I assume that tcp_terminal is like telnet server. May be my assumption is wrong?
- You mention "localhost 5555" but the tcp_terminal should be
listening on 10.0.3.2 8888 according to the log.
sorry for misreport - initially I try to run on qemu + nova which configured for port 5555 and local host. then I try to switch to linux. it give the same errors while run a bit faster, so, I now keep it (using linux tap driver)
for test above I definitely use "telnet 10.0.3.2 8888"
- As the configuration error must be in the configuration I can't
tell more without a look at the complete config.
below (I omit some portions of generated config file related to nic_drv platform/etc)
<config verbose="yes"> <parent-provides> <service name="ROM"/> <service name="LOG"/> <service name="RM"/> <service name="CPU"/> <service name="PD"/> <service name="IRQ"/> <service name="IO_PORT"/> <service name="IO_MEM"/> </parent-provides>
<default-route> <any-service> <parent/> <any-child/> </any-service> </default-route>
<default caps="100"/>
<start name="timer"> <resource name="RAM" quantum="3M"/> <provides><service name="Timer"/></provides> </start>
<start name="nic_drv" ld="no" caps="1000" managing_system="yes» > ...
<start name="terminal" caps="200"> <resource name="RAM" quantum="8M"/> <binary name="tcp_terminal"/> <provides> <service name="Terminal"/> </provides> <config> <policy label_prefix="/bin/bash" port="8888" /> <policy label_prefix="vfs" port="8888"/> <vfs> <dir name="dev"> <!-- <log/> --> <inline name="rtc">2022-01-01 00:00</inline> </dir> <dir name="socket"> <lwip dhcp="yes"/> </dir>
<!-- pipe need for network polling --> <dir name="pipe"> <pipe/> </dir>
</vfs> <libc stdout="/dev/log" stderr="/dev/log"
pipe="/pipe"
rtc="/dev/rtc"
rng="/dev/random" socket="/socket"> <mmap local_area_default_size="1610612736" /> </libc> </config>
<route> <service name="ROM" label="config"> <parent label="terminal.config"/> </service> <service name="Nic"> <child name="nic_router"/> </service> <any-service> <parent/> <any-child/> </any-service> </route> </start>
<start name="vfs" caps="200"> <resource name="RAM" quantum="124M"/> <provides> <service name="File_system"/> </provides> <config> <vfs> <tar name="bash.tar" /> <tar name="coreutils.tar" /> <tar name="grep.tar" /> <tar name="sed.tar" /> <tar name="findutils.tar" /> <tar name="make.tar" /> <tar name="which.tar" /> <tar name="binutils_x86.tar" /> <tar name="gcc_x86.tar" /> <tar name="tclsh.tar" /> <tar name="vim.tar" />
<dir name="dev"> <zero/> <null/> <terminal/> <log/> <inline name="rtc">2022-01-01 00:01</inline> </dir> <dir name="pipe"> <pipe/> </dir> <dir name="home"> <ram/> <rom name=".bash_profile" label="bash_profile" binary="no"/> </dir> <dir name="share"> <dir name="vim"> <rom name="vimrc"/> </dir> </dir> <dir name="genode"> <tar name="genode.tar"/> </dir> <dir name="tmp"> <ram/> </dir> <dir name="usr"> <dir name="bin"> <symlink name="make" target="/bin/make" /> <symlink name="mkdir" target="/bin/mkdir"/> <symlink name="echo" target="/bin/echo" /> <symlink name="tclsh" target="/bin/tclsh"/> </dir> </dir>
<dir name="bin"> <symlink name="nm" target="genode-x86-nm"/> <symlink name="sh" target="bash"/> </dir> </vfs> <policy label_prefix="/bin/bash" root="/" writeable="yes" /> <default-policy root="/" writeable="yes"/> <policy label_prefix="vfs_rom" root="/"/> </config> <route> <service name="Terminal"> <child name="tcp_terminal"/> </service> <service name="Timer"> <child name="timer"/> </service> <any-service> <parent/> </any-service> </route>
</start> <start name="vfs_rom"> <resource name="RAM" quantum="60M"/> <binary name="fs_rom"/> <provides> <service name="ROM"/> </provides> <config/> <route> <service name="File_system"> <child name="vfs"/> </service> <any-service> <parent/> </any-service> </route> </start>
<start name="/bin/bash" caps="2000"> <resource name="RAM" quantum="300M" /> <config ld_verbose="yes"> <libc stdin="/dev/terminal" stdout="/dev/terminal" stderr="/dev/terminal" rtc="/dev/rtc" pipe="/pipe"/> <vfs> <fs buffer_size="2M"/> <dir name="dev"> <terminal/> <log/> <null/> </dir> <inline name=".bash_profile"> echo Welcome to bash Genode! > /dev/log </inline> </vfs> <env key="HOME" value="/home"/> <env key="PATH" value="/bin"/> <env key="IGNOREEOF" value="3"/> <arg value="/bin/bash"/> <arg value="--login" /> <!-- <arg value="-c" /> --> <!-- <arg value="echo files at /dev: /dev/* > /dev/terminal"/> --> </config> <route> <service name="File_system"> <child name="vfs"/> </service> <service name="ROM" label_suffix=".lib.so"> <parent/> </service> <service name="ROM" label_last="/bin/bash"> <child name="vfs_rom"/> </service> <service name="ROM" label_prefix="/genode/tool"> <child name="vfs_rom"/> </service> <service name="ROM" label_prefix="/bin"> <child name="vfs_rom"/> </service> <service name="ROM" label_prefix="/usr/bin"> <child name="vfs_rom"/> </service> <service name="ROM" label_prefix="/libexec"> <child name="vfs_rom"/> </service> <service name="ROM" label_prefix="/x86_64-pc-elf"> <child name="vfs_rom"/> </service> <service name="ROM" label_prefix="/arm-none-eabi"> <child name="vfs_rom"/> </service> <service name="ROM" label_prefix="/aarch64-none-elf"> <child name="vfs_rom"/> </service>
<any-service> <parent/> <any-child/> </any-service> </route> </start>
</config>