openhwgroup / cva6-sdk

CVA6 SDK containing RISC-V tools and Buildroot
60 stars 65 forks source link

ssh_example #8

Closed jrrk closed 5 years ago

jrrk commented 5 years ago

This is an example sdk config for ssh usage. The secret keys may be generated on the host as they are platform independent. If not present then the target will laboriously generate them on every boot (not really apart from the first time through). You can also use sftp to save the files from Ariane.

buildroot by design does not run as root, so host keys need to be owned by the user. This is incompatible with what sshd expects, so a temporary script fixes up the permissions during booting. There is almost certainly a better way to do this. Another hack is the fixed MAC address. According to Digilent documentation this number is meant to be read from a fixed area of SPI flash. This number can be manually changed if more than one GenesysII is used on the same VLAN, the correct number is written on the back of the board.

iperf3 is enabled to enable network performance gathering. At the moment it evaluates to 2Mbits/s (500 times slower than the Ethernet on the wire). Also tcpdump may be useful for debugging. The udhcpc script has been modified to support the iproute2 package, since the busybox version of route seems to be broken in this kernel version (this has been obsolete for at least 10 years).

I found it necessary to comment out some less relevant packages to cope with a hidden size limit on bbl.bin. So sorry if your favourite package was deleted. Once NFSroot is up and running these size limits will disappear.

jrrk commented 5 years ago

Because of the unknown status of the interrupt support, the previous patch had a tendency to lose packets under heavy load (for example when NFS is in use). This patch enables NFS support in the kernel by default and alters the NAPI Ethernet settings to poll every 5 jiffies (50ms) if no packets have been received. This increases overheads a little but reduces latency and packet drop count, resulting in a net network performance increase. In conjunction with the mount.nfs -o nolock command, a viable solution to executing binaries from a remote server (e.g. /usr/local ) is possible. Ethernet interrupt support is commented out completely pending further investigation.

zarubaf commented 5 years ago

@Moschn ping

Moschn commented 5 years ago

Instead of just commenting out/#if 0 the driver could be configureable by setting a ENABLE_INTERRUPT for example. But for now this should be fine.

Why do you put private keys in the rootfs? Does it take too long to generate on the fpga? Before merging this I would prefer a warning in the README, that the private keys are public and the ssh example/connection should only be used for development and tests

jrrk commented 5 years ago

Good point. I have added a warning and if you let me know when the PLIC has been investigated, we can put that code back and fine-tune for performance.

Moschn commented 5 years ago

Thanks