diff --git a/repos/os/recipes/src/ram_block/content.mk b/repos/os/recipes/src/ram_block/content.mk
deleted file mode 100644
index e625b9d190..0000000000
--- a/repos/os/recipes/src/ram_block/content.mk
+++ /dev/null
@@ -1,2 +0,0 @@
-SRC_DIR = src/server/ram_block
-include $(GENODE_DIR)/repos/base/recipes/src/content.inc
diff --git a/repos/os/recipes/src/ram_block/hash b/repos/os/recipes/src/ram_block/hash
deleted file mode 100644
index d679bddc2d..0000000000
--- a/repos/os/recipes/src/ram_block/hash
+++ /dev/null
@@ -1 +0,0 @@
-2020-05-26 9a825f002bc1e429936699e6e2c15225a0061c04
diff --git a/repos/os/recipes/src/ram_block/used_apis b/repos/os/recipes/src/ram_block/used_apis
deleted file mode 100644
index 1dc350cf5c..0000000000
--- a/repos/os/recipes/src/ram_block/used_apis
+++ /dev/null
@@ -1,3 +0,0 @@
-base
-os
-block_session
diff --git a/repos/os/run/block_tester.run b/repos/os/run/block_tester.run
index 054093b538..a8a6defb8c 100644
--- a/repos/os/run/block_tester.run
+++ b/repos/os/run/block_tester.run
@@ -29,7 +29,6 @@ if { $use_linux } {
set build_components {
core init timer
drivers/ahci
- server/ram_block
server/lx_block
app/block_tester
server/part_block
@@ -344,7 +343,7 @@ create_disk_image 1
# generic modules
set boot_modules {
- core init timer ahci_drv ram_block block_tester
+ core init timer ahci_drv block_tester
ld.lib.so test-block-client part_block
}
diff --git a/repos/os/src/server/ram_block/README b/repos/os/src/server/ram_block/README
deleted file mode 100644
index 4371395075..0000000000
--- a/repos/os/src/server/ram_block/README
+++ /dev/null
@@ -1,14 +0,0 @@
-RAM block device is an implementation of the block-session interface
-running as a client of a RAM session. It either populates the RAM dataspace
-by using a ROM dataspace, similiar to loop devices. For example to use
-an ISO file the component has to be configured as follows:
-
-!
-
-To use a empty RAM dataspace that is 256MiB large and has a block size
-of 4KiB the configuration looks like this:
-
-!
-
-Either 'size' or 'file' has to specified. If both are declared the 'file'
-attribute is soley evaluated.
diff --git a/repos/os/src/server/ram_block/main.cc b/repos/os/src/server/ram_block/main.cc
deleted file mode 100644
index b146056680..0000000000
--- a/repos/os/src/server/ram_block/main.cc
+++ /dev/null
@@ -1,213 +0,0 @@
-/*
- * \brief Provide a RAM dataspace as writable block device
- * \author Stefan Kalkowski
- * \author Sebastian Sumpf
- * \author Josef Soentgen
- * \date 2010-07-07
- */
-
-/*
- * Copyright (C) 2010-2017 Genode Labs GmbH
- *
- * This file is part of the Genode OS framework, which is distributed
- * under the terms of the GNU Affero General Public License version 3.
- */
-
-/* Genode includes */
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-
-
-using namespace Genode;
-
-
-class Ram_block : public Block::Driver
-{
- private:
-
- /*
- * Noncopyable
- */
- Ram_block(Ram_block const &);
- Ram_block &operator = (Ram_block const &);
-
- Env &_env;
- Allocator *_alloc { nullptr };
-
- Attached_rom_dataspace *_rom_ds { nullptr };
- size_t _size;
- size_t _block_size;
- size_t _block_count;
- Attached_ram_dataspace _ram_ds;
- addr_t _ram_addr;
-
- void _io(Block::sector_t block_number,
- size_t block_count,
- char* buffer,
- Block::Packet_descriptor &packet,
- bool read)
- {
- /* sanity check block number */
- if (block_number + block_count > _block_count) {
- Genode::warning("requested blocks ", block_number, "-",
- block_number + block_count," out of range!");
- return;
- }
-
- size_t offset = (size_t) block_number * _block_size;
- size_t size = block_count * _block_size;
-
- void *src = read ? (void *)(_ram_addr + offset) : (void *)buffer;
- void *dst = read ? (void *)buffer : (void *)(_ram_addr + offset);
- /* copy file content to packet payload */
- memcpy(dst, src, size);
-
- ack_packet(packet);
- }
-
- public:
-
- /**
- * Construct populated RAM dataspace
- */
- Ram_block(Env &env, Allocator &alloc,
- const char *name, size_t block_size)
- :
- Block::Driver(env.ram()),
- _env(env), _alloc(&alloc),
- _rom_ds(new (_alloc) Attached_rom_dataspace(_env, name)),
- _size(_rom_ds->size()),
- _block_size(block_size),
- _block_count(_size/_block_size),
- _ram_ds(_env.ram(), _env.rm(), _size),
- _ram_addr((addr_t)_ram_ds.local_addr())
- {
- /* populate backing store from file */
- memcpy(_ram_ds.local_addr(), _rom_ds->local_addr(), _size);
- }
-
- /**
- * Construct empty RAM dataspace
- */
- Ram_block(Env &env, size_t size, size_t block_size)
- : Block::Driver(env.ram()),
- _env(env),
- _size(size),
- _block_size(block_size),
- _block_count(_size/_block_size),
- _ram_ds(_env.ram(), _env.rm(), _size),
- _ram_addr((addr_t)_ram_ds.local_addr())
- { }
-
- ~Ram_block() { destroy(_alloc, _rom_ds); }
-
-
- /****************************
- ** Block-driver interface **
- ****************************/
-
- Block::Session::Info info() const override
- {
- return { .block_size = _block_size,
- .block_count = _block_count,
- .align_log2 = log2(_block_size),
- .writeable = true };
- }
-
- void read(Block::sector_t block_number,
- size_t block_count,
- char* buffer,
- Block::Packet_descriptor &packet) override
- {
- _io(block_number, block_count, buffer, packet, true);
- }
-
- void write(Block::sector_t block_number,
- size_t block_count,
- const char * buffer,
- Block::Packet_descriptor &packet) override
- {
- _io(block_number, block_count, const_cast(buffer), packet, false);
- }
-};
-
-
-struct Main
-{
- Env &env;
- Heap heap { env.ram(), env.rm() };
-
- Attached_rom_dataspace config_rom { env, "config" };
-
- struct Factory : Block::Driver_factory
- {
- Env &env;
- Allocator &alloc;
-
- bool use_file { false };
-
- typedef String<64> File;
- File file { };
-
- size_t size { 0 };
- size_t block_size { 512 };
-
- Factory(Env &env, Allocator &alloc, Xml_node config)
- : env(env), alloc(alloc)
- {
- use_file = config.has_attribute("file");
- if (use_file) {
- file = config.attribute_value("file", File());
-
- } else {
-
- if (!config.has_attribute("size")) {
- error("neither file nor size attribute specified");
- throw Exception();
- }
- size = config.attribute_value("size", Number_of_bytes());
- }
-
- block_size = config.attribute_value("block_size",
- Number_of_bytes(block_size));
- }
-
- Block::Driver *create() override
- {
- try {
- if (use_file) {
- Genode::log("Creating RAM-basd block device populated by file='",
- file, "' with block size ", block_size);
- return new (&alloc)
- Ram_block(env, alloc, file.string(), block_size);
- } else {
- Genode::log("Creating RAM-based block device with size ",
- size, " and block size ", block_size);
- return new (&alloc) Ram_block(env, size, block_size);
- }
- }
- catch (...) { throw Service_denied(); }
- }
-
- void destroy(Block::Driver *driver) override {
- Genode::destroy(&alloc, driver); }
- } factory { env, heap, config_rom.xml() };
-
- enum { WRITEABLE = true };
-
- Block::Root root { env.ep(), heap, env.rm(), factory, WRITEABLE };
-
- Main(Env &env) : env(env)
- {
- env.parent().announce(env.ep().manage(root));
- }
-};
-
-
-void Component::construct(Genode::Env &env) { static Main server(env); }
diff --git a/repos/os/src/server/ram_block/target.mk b/repos/os/src/server/ram_block/target.mk
deleted file mode 100644
index c5072a0a7d..0000000000
--- a/repos/os/src/server/ram_block/target.mk
+++ /dev/null
@@ -1,3 +0,0 @@
-TARGET = ram_block
-SRC_CC = main.cc
-LIBS = base