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 --- hurd/rump.mdwn | 13 +- images/rump-processes.svg | 311 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 319 insertions(+), 5 deletions(-) create mode 100644 images/rump-processes.svg
diff --git a/hurd/rump.mdwn b/hurd/rump.mdwn index 49b36d14..c4609c9e 100644 --- a/hurd/rump.mdwn +++ b/hurd/rump.mdwn @@ -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..88d075a0 --- /dev/null +++ b/images/rump-processes.svg @@ -0,0 +1,311 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- 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
