Hi again,
On 05/14/2014 09:27 PM, w_schmidt@...181... wrote:
Hi,
Thanks for the answer.
I want to access files from a harddisk using a block cache. The partition would be /sda7/test in ext2 format. (and for example file1.txt) I tried to start nova directly form disc - works with mouse & keyboard now.
Assuming your machine is an x86 derivative and supports AHCI, you could use Genode's AHCI driver, which will expose a block sesssion (see: os/src/drivers/ahci/README). In order to access the partitions on your disk, a server called 'part_blk' is required (see: os/src/server/part_blk/README for its configuration). So, you would have to remove 'ram_blk' and add 'ahci_drv', 'part_blk' (routed to 'ahci_drv'), adjust 'rump_fs' to be routed to 'part_blk' partition 7.
I have 2 possible machines with AHCI and AMD64/Intel64.
Maybe I understand it completly wrong, but in the AHCI description there is a part with "On real hardware and on kernels taking advantage of I/O APICs (namely NOVA and Fiasco.OC) we still lack support for ACPI parsing and thus for interrupts, leading to a non-working driver." ( https://github.com/genodelabs/genode/blob/master/repos/os/src/drivers/ahci/R... )
Doesn't that mean that the AHCI driver won't work with nova or real hard drive? That sentence is one of the reasons why I ask. If nova /real hardware does not work like mentioned in the readme, is there another way to load from disc? Or should another kernel (?L4k?) do the trick?
Ops, I should take this part out of the README. We do have ACPI parsing and interrupt re-write support by now. You will need to build 'drivers/acpi', 'drivers/pci', and if you use NOVA and if your machine has an IOMMU 'drivers/pci/device_pd'. In the Genode configuration you only need to start the 'acpi_drv', which will start the other one or two as children. A sample run script can be found under 'os/run/ahci.run'
Another way to access hard disks (again on x86) is to use the IDE interface, which is supported by the ATAPI driver ('drivers/atapi'), again have a look at the README in 'os/drivers/atapi'.
The cache is greedy and tries to get as much memory from its parent as possible. By the way, rump has a build in block cache also.
Yes I have seen that in the rump description there stood something that the server will use most of the RAM for cache.
I thought I coudl do the following: Give the block cache e.g. 16MB RAM. Give the Rump Server 6 MB, and load different 4 MB files. I thought that by loading the second file the first one will get out of the Rump cache but loaded by the block cache.
Okay that should work, I would give rump a little more memory.
I have seen that the framebuffer seems to have a sort of multiplexer. Is something similiar available for filesystems?
The rump server supports connections from multiple clients, so one could see it as sort of a multiplexer.
RAM...
I think the author just did not want to calculate the amount of RAM required for the test program.
O.K.
Afterwards i included in the set build_components section server/blk_cache (after drivers/timer) and entered as boot module blk_cache. Is this the correct way of including the cache?
Yes it is!
Good. :-)
The result of this was that I got an output with: [init -> blk_cache] updating quota for SIGNAL session, an init rump_fs upgrade quota output and afterwards and a long stop after init->rump_fs Backend::Backend() Backend blk_size 512 Afterwards the script stopped with Test execution timeout. with error 254) What could I have done wrong with the configuration of this scenario?
Ok, I will try to reproduce the behavior.
Thanks, that would be interesting. If it helps I can upload my configuration file somewhere?
I will try it out first as described above, if I cannot reproduce it you could fork Genode on GitHub and push it into a branch there, or if it is just a run script just send it via email.
I think I can try file access and AHCI first on friday (ATM a lot of work, I'm interested at genode because of part time study)
Good luck!
Sebastian