diff --git a/include/credential_pipe.hpp b/include/credential_pipe.hpp
index 169d47c..2cc3dc8 100644
--- a/include/credential_pipe.hpp
+++ b/include/credential_pipe.hpp
@@ -1,9 +1,13 @@
 #pragma once
 
+#include "logging.hpp"
+
 #include <boost/asio/buffer.hpp>
+#include <boost/asio/connect_pipe.hpp>
 #include <boost/asio/io_context.hpp>
+#include <boost/asio/readable_pipe.hpp>
+#include <boost/asio/writable_pipe.hpp>
 #include <boost/asio/write.hpp>
-#include <boost/process/async_pipe.hpp>
 
 #include <array>
 #include <string>
@@ -12,7 +16,15 @@
 class CredentialsPipe
 {
   public:
-    explicit CredentialsPipe(boost::asio::io_context& io) : impl(io) {}
+    explicit CredentialsPipe(boost::asio::io_context& io) : impl(io), read(io)
+    {
+        boost::system::error_code ec;
+        boost::asio::connect_pipe(read, impl, ec);
+        if (ec)
+        {
+            BMCWEB_LOG_CRITICAL("Failed to connect pipe {}", ec.what());
+        }
+    }
 
     CredentialsPipe(const CredentialsPipe&) = delete;
     CredentialsPipe(CredentialsPipe&&) = delete;
@@ -25,9 +37,9 @@
         explicit_bzero(pass.data(), pass.capacity());
     }
 
-    int fd() const
+    int releaseFd()
     {
-        return impl.native_source();
+        return read.release();
     }
 
     template <typename WriteHandler>
@@ -44,7 +56,8 @@
                                  std::forward<WriteHandler>(handler));
     }
 
-    boost::process::async_pipe impl;
+    boost::asio::writable_pipe impl;
+    boost::asio::readable_pipe read;
 
   private:
     std::string user;
diff --git a/include/vm_websocket.hpp b/include/vm_websocket.hpp
index 19054a6..3a72b3a 100644
--- a/include/vm_websocket.hpp
+++ b/include/vm_websocket.hpp
@@ -3,10 +3,11 @@
 #include "app.hpp"
 #include "websocket.hpp"
 
+#include <boost/asio/readable_pipe.hpp>
+#include <boost/asio/writable_pipe.hpp>
 #include <boost/beast/core/flat_static_buffer.hpp>
-#include <boost/process/async_pipe.hpp>
-#include <boost/process/child.hpp>
-#include <boost/process/io.hpp>
+#include <boost/process/v2/process.hpp>
+#include <boost/process/v2/stdio.hpp>
 
 #include <csignal>
 
@@ -26,8 +27,11 @@
 class Handler : public std::enable_shared_from_this<Handler>
 {
   public:
-    Handler(const std::string& mediaIn, boost::asio::io_context& ios) :
-        pipeOut(ios), pipeIn(ios), media(mediaIn),
+    Handler(const std::string& media, boost::asio::io_context& ios) :
+        pipeOut(ios), pipeIn(ios),
+        proxy(ios, "/usr/bin/nbd-proxy", {media},
+              boost::process::v2::process_stdio{
+                  .in = pipeIn, .out = pipeOut, .err = nullptr}),
         outputBuffer(new boost::beast::flat_static_buffer<nbdBufferSize>),
         inputBuffer(new boost::beast::flat_static_buffer<nbdBufferSize>)
     {}
@@ -56,9 +60,6 @@
     void connect()
     {
         std::error_code ec;
-        proxy = boost::process::child("/usr/bin/nbd-proxy", media,
-                                      boost::process::std_out > pipeOut,
-                                      boost::process::std_in < pipeIn, ec);
         if (ec)
         {
             BMCWEB_LOG_ERROR("Couldn't connect to nbd-proxy: {}", ec.message());
@@ -148,10 +149,9 @@
         });
     }
 
-    boost::process::async_pipe pipeOut;
-    boost::process::async_pipe pipeIn;
-    boost::process::child proxy;
-    std::string media;
+    boost::asio::readable_pipe pipeOut;
+    boost::asio::writable_pipe pipeIn;
+    boost::process::v2::process proxy;
     bool doingWrite{false};
 
     std::unique_ptr<boost::beast::flat_static_buffer<nbdBufferSize>>
