The image shows there is a separate rump process for each rump driver. You can view the svg image here: https://hurdos.com/wiki/hurd/rump.html
The previous patch for this missed a period after "NetBSD" in the first sentence. --- hurd/rump.mdwn | 15 +- images/rump-processes.svg | 312 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 321 insertions(+), 6 deletions(-) create mode 100644 images/rump-processes.svg diff --git a/hurd/rump.mdwn b/hurd/rump.mdwn index 49b36d14..d3c1c697 100644 --- a/hurd/rump.mdwn +++ b/hurd/rump.mdwn @@ -1,4 +1,4 @@ -[[!meta copyright="Copyright © 2009, 2010, 2011, 2024 Free Software +[[!meta copyright="Copyright © 2009, 2010, 2011, 2024, 2026 Free Software Foundation, Inc."]] [[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable @@ -19,17 +19,20 @@ License|/fdl]]."]]"""]] --- -The rump kernels provide existing real world drivers from netbsd. +The rump unikernels provide existing real world drivers from NetBSD. Since [[DDE]] no longer seems like a promising approach to get drivers -for the Hurd, it appears that rump kernels are the best alternative. +for the Hurd, it appears that rump unikernels are the best alternative. It already does the hard work of providing an environment where the foreign drivers can run, and offers the additional benefit of being externally maintained. Rump also offers the necessary facilities for running all drivers in separate userspace processes, which is more -desirable than drivers running in the microkernel. +desirable than drivers running in the microkernel. There is one rump +process for each driver as the below image shows. -A rump kernel is a minimal and portable NetBSD kernel running in -userspace. Rump kernels provide drivers for modern hard drives, sound +[[!img images/rump-processes.svg size="500x" alt="ftpfs logo" align="center"]] + +A rump unikernel is a minimal and portable NetBSD kernel running in +userspace. Rump unikernels provide drivers for modern hard drives, sound cards, usb support, and a TCP/IP stack. Instead of re-inventing and maintaining drivers ourselves, we can re-use the existing NetBSD drivers. diff --git a/images/rump-processes.svg b/images/rump-processes.svg new file mode 100644 index 00000000..68ddd05b --- /dev/null +++ b/images/rump-processes.svg @@ -0,0 +1,312 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Copyright © 2026 Free Software Foundation + +Permission is granted to copy, distribute and/or modify this +document under the terms of the GNU Free Documentation License, Version 1.3 or +any later version published by the Free Software Foundation; with no Invariant +Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license +can be found at https://www.gnu.org/licenses/fdl-1.3.html --> + +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + width="400mm" + height="300mm" + viewBox="0 0 400 300" + version="1.1" + id="svg1" + inkscape:version="1.4.2 (ebf0e940d0, 2025-05-08)" + sodipodi:docname="rump-processes.svg" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns="http://www.w3.org/2000/svg" + xmlns:svg="http://www.w3.org/2000/svg"> + <sodipodi:namedview + id="namedview1" + pagecolor="#ffffff" + bordercolor="#000000" + borderopacity="0.25" + inkscape:showpageshadow="2" + inkscape:pageopacity="0.0" + inkscape:pagecheckerboard="0" + inkscape:deskcolor="#d1d1d1" + inkscape:document-units="mm" + showguides="true" + inkscape:zoom="0.32" + inkscape:cx="529.6875" + inkscape:cy="309.375" + inkscape:window-width="1020" + inkscape:window-height="709" + inkscape:window-x="0" + inkscape:window-y="0" + inkscape:window-maximized="1" + inkscape:current-layer="layer1" /> + <defs + id="defs1"> + <marker + style="overflow:visible" + id="ArrowTriangleStylized" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Stylized triangle arrow" + markerWidth="1" + markerHeight="1" + viewBox="0 0 1 1" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.5)" + style="fill:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:1pt" + d="m 6,0 c -3,1 -7,3 -9,5 0,0 0,-4 2,-5 -2,-1 -2,-5 -2,-5 2,2 6,4 9,5 z" + id="path4" /> + </marker> + <rect + x="322.61746" + y="729.20386" + width="291.68155" + height="274.00388" + id="rect18" /> + <rect + x="324.82718" + y="132.58252" + width="287.26212" + height="276.21359" + id="rect17" /> + <rect + x="64.081551" + y="371.23105" + width="194.45438" + height="298.31067" + id="rect6" /> + <rect + x="99.43689" + y="388.90872" + width="371.23105" + height="428.6835" + id="rect5" /> + <rect + x="50.823299" + y="413.21552" + width="174.56699" + height="178.9864" + id="rect4" /> + <rect + x="318.19806" + y="212.13203" + width="302.7301" + height="92.807762" + id="rect3" /> + <rect + x="324.82718" + y="132.58252" + width="287.26212" + height="276.21359" + id="rect17-4" /> + <rect + x="324.82718" + y="132.58252" + width="287.26212" + height="276.21359" + id="rect17-2" /> + <rect + x="322.61746" + y="729.20386" + width="291.68155" + height="274.00388" + id="rect18-1" /> + <rect + x="322.61746" + y="729.20386" + width="291.68155" + height="274.00388" + id="rect18-3" /> + <marker + style="overflow:visible" + id="ArrowTriangleStylized-5" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Stylized triangle arrow" + markerWidth="1" + markerHeight="1" + viewBox="0 0 1 1" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.5)" + style="fill:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:1pt" + d="m 6,0 c -3,1 -7,3 -9,5 0,0 0,-4 2,-5 -2,-1 -2,-5 -2,-5 2,2 6,4 9,5 z" + id="path4-1" /> + </marker> + <marker + style="overflow:visible" + id="ArrowTriangleStylized-6" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Stylized triangle arrow" + markerWidth="1" + markerHeight="1" + viewBox="0 0 1 1" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.5)" + style="fill:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:1pt" + d="m 6,0 c -3,1 -7,3 -9,5 0,0 0,-4 2,-5 -2,-1 -2,-5 -2,-5 2,2 6,4 9,5 z" + id="path4-9" /> + </marker> + </defs> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1"> + <rect + style="fill:none;stroke:#000000;stroke-width:5;stroke-dasharray:none;stroke-opacity:0.993514" + id="rect1-29" + width="86.528511" + height="86.528511" + x="31.773041" + y="184.51314" /> + <rect + style="fill:none;stroke:#000000;stroke-width:5;stroke-dasharray:none;stroke-opacity:0.993514" + id="rect1-7" + width="86.528511" + height="86.528511" + x="156.76219" + y="184.51314" /> + <rect + style="fill:none;stroke:#000000;stroke-width:5;stroke-dasharray:none;stroke-opacity:0.993514" + id="rect1-1" + width="86.528511" + height="86.528511" + x="281.75137" + y="184.51314" /> + <rect + style="fill:none;stroke:#000000;stroke-width:5;stroke-dasharray:none;stroke-opacity:0.993514" + id="rect1-29-4" + width="86.528511" + height="86.528511" + x="31.585648" + y="28.92532" /> + <rect + style="fill:none;stroke:#000000;stroke-width:5;stroke-dasharray:none;stroke-opacity:0.993514" + id="rect1-7-9" + width="86.528511" + height="86.528511" + x="156.70937" + y="28.958332" /> + <rect + style="fill:none;stroke:#000000;stroke-width:5;stroke-dasharray:none;stroke-opacity:0.993514" + id="rect1-1-1" + width="86.528511" + height="86.528511" + x="281.69836" + y="28.958332" /> + <text xml:space="preserve" + transform="matrix(0.31208788,0,0,0.50645607,-61.783649,-68.894759)" + id="text17" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:49.6912px;font-family:'DejaVu + Serif';-inkscape-font-specification:'DejaVu + Serif';text-align:start;writing-mode:lr-tb;direction:ltr;white-space:pre;shape-inside:url(#rect17);display:inline;fill:#000000;stroke:#000000;stroke-width:0;stroke-dasharray:none;stroke-opacity:0.993514"><tspan + x="324.82812" y="176.5471" id="tspan3"> </tspan><tspan + x="324.82812" y="238.6611" id="tspan4"> </tspan><tspan + x="324.82812" y="300.77509" id="tspan5">Rumpnet</tspan></text> + <text + xml:space="preserve" + transform="matrix(0.31208788,0,0,0.50645607,193.66669,-68.52822)" + id="text17-28" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:49.6912px;font-family:'DejaVu Serif';-inkscape-font-specification:'DejaVu Serif';text-align:start;writing-mode:lr-tb;direction:ltr;white-space:pre;shape-inside:url(#rect17-2);display:inline;fill:#000000;stroke:#000000;stroke-width:0;stroke-dasharray:none;stroke-opacity:0.993514"><tspan + x="324.82812" + y="176.5471" + id="tspan6"> +</tspan><tspan + x="324.82812" + y="238.6611" + id="tspan7"> +</tspan><tspan + x="324.82812" + y="300.77509" + id="tspan8">Rumpfs</tspan></text> + <text + xml:space="preserve" + transform="matrix(0.31208788,0,0,0.50645607,59.462815,-68.536953)" + id="text17-2" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:49.6912px;font-family:'DejaVu Serif';-inkscape-font-specification:'DejaVu Serif';text-align:start;writing-mode:lr-tb;direction:ltr;white-space:pre;shape-inside:url(#rect17-4);display:inline;fill:#000000;stroke:#000000;stroke-width:0;stroke-dasharray:none;stroke-opacity:0.993514"><tspan + x="324.82812" + y="176.5471" + id="tspan9"> +</tspan><tspan + x="324.82812" + y="238.6611" + id="tspan10"> +</tspan><tspan + x="324.82812" + y="300.77509" + id="tspan11">Rumpdisk</tspan></text> + <text + xml:space="preserve" + transform="matrix(0.26458333,0,0,0.26458333,-49.096535,0)" + id="text18" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:74.6667px;font-family:'DejaVu Serif';-inkscape-font-specification:'DejaVu Serif';text-align:start;writing-mode:lr-tb;direction:ltr;white-space:pre;shape-inside:url(#rect18);display:inline;fill:#000000;stroke:#000000;stroke-width:0;stroke-dasharray:none;stroke-opacity:0.993514"><tspan + x="322.61719" + y="795.26566" + id="tspan12"> Rump +</tspan><tspan + x="322.61719" + y="888.59903" + id="tspan13">process +</tspan><tspan + x="322.61719" + y="981.9324" + id="tspan14"> 1</tspan></text> + <text + xml:space="preserve" + transform="matrix(0.26458333,0,0,0.26458333,76.170135,0.1468507)" + id="text18-2" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:74.6667px;font-family:'DejaVu Serif';-inkscape-font-specification:'DejaVu Serif';text-align:start;writing-mode:lr-tb;direction:ltr;white-space:pre;shape-inside:url(#rect18-1);display:inline;fill:#000000;stroke:#000000;stroke-width:0;stroke-dasharray:none;stroke-opacity:0.993514"><tspan + x="322.61719" + y="795.26566" + id="tspan15"> Rump +</tspan><tspan + x="322.61719" + y="888.59903" + id="tspan16">process +</tspan><tspan + x="322.61719" + y="981.9324" + id="tspan17"> 2</tspan></text> + <text + xml:space="preserve" + transform="matrix(0.26458333,0,0,0.26458333,200.12306,-0.98854577)" + id="text18-5" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:74.6667px;font-family:'DejaVu Serif';-inkscape-font-specification:'DejaVu Serif';text-align:start;writing-mode:lr-tb;direction:ltr;white-space:pre;shape-inside:url(#rect18-3);display:inline;fill:#000000;stroke:#000000;stroke-width:0;stroke-dasharray:none;stroke-opacity:0.993514"><tspan + x="322.61719" + y="795.26566" + id="tspan18"> Rump +</tspan><tspan + x="322.61719" + y="888.59903" + id="tspan19">process +</tspan><tspan + x="322.61719" + y="981.9324" + id="tspan20"> 3</tspan></text> + <path + style="fill:#000000;stroke:#000000;stroke-width:3.64709;stroke-dasharray:none;stroke-opacity:0.993514;marker-start:url(#ArrowTriangleStylized);marker-end:url(#ArrowTriangleStylized)" + d="m 73.680405,138.17955 v 23.64089" + id="path18" /> + <path + style="fill:#000000;stroke:#000000;stroke-width:3.64709;stroke-dasharray:none;stroke-opacity:0.993514;marker-start:url(#ArrowTriangleStylized-5);marker-end:url(#ArrowTriangleStylized-5)" + d="m 200.90346,138.17955 v 23.64089" + id="path18-3" /> + <path + style="fill:#000000;stroke:#000000;stroke-width:3.64709;stroke-dasharray:none;stroke-opacity:0.993514;marker-start:url(#ArrowTriangleStylized-6);marker-end:url(#ArrowTriangleStylized-6)" + d="m 324.37704,138.17955 v 23.64089" + id="path18-2" /> + </g> +</svg> -- 2.53.0
