Fixed a few details and pushed, thanks!

jbra...@dismail.de, le dim. 20 oct. 2024 21:00:29 -0400, a ecrit:
> I added some more tweaks here Samuel.  I think I finally got decent
> guide that shows people how to try out rumpdisk.
> 
> * community/gsoc/project_ideas/driver_glue_code.mdwn: mention that
> Damien implemented rumpdisk & rumpusbdisk.
> * hurd/rump.mdwn: added links to other pages.
> * hurd/rump/rumpdisk.mdwn: new file
> * hurd/rump/rumpusbdisk.mdwn: new file
> * hurd/rump/rumpsound.mdwn: new file
> * hurd/rump/rumpnet.mdwn: new file
> * hurd/rump/rumpfs.mdwn: new file.
> * hurd/documentation.mdwn: add links to dde and rump
> * faq/sata_disk_drives.mdwn: mention rumpdisk.
> ---
>  .../gsoc/project_ideas/driver_glue_code.mdwn  |  5 +-
>  faq/sata_disk_drives.mdwn                     |  4 ++
>  hurd/documentation.mdwn                       |  3 +
>  hurd/rump.mdwn                                | 25 ++++++--
>  hurd/rump/rumpdisk.mdwn                       | 62 +++++++++++++++++++
>  hurd/rump/rumpfs.mdwn                         | 31 ++++++++++
>  hurd/rump/rumpnet.mdwn                        | 22 +++++++
>  hurd/rump/rumpsound.mdwn                      | 25 ++++++++
>  hurd/rump/rumpusbdisk.mdwn                    | 26 ++++++++
>  open_issues/running_rump_for_slash.mdwn       | 19 ++++++
>  10 files changed, 217 insertions(+), 5 deletions(-)
>  create mode 100644 hurd/rump/rumpdisk.mdwn
>  create mode 100644 hurd/rump/rumpfs.mdwn
>  create mode 100644 hurd/rump/rumpnet.mdwn
>  create mode 100644 hurd/rump/rumpsound.mdwn
>  create mode 100644 hurd/rump/rumpusbdisk.mdwn
> 
> diff --git a/community/gsoc/project_ideas/driver_glue_code.mdwn 
> b/community/gsoc/project_ideas/driver_glue_code.mdwn
> index 3d0a9192..9383f4ea 100644
> --- a/community/gsoc/project_ideas/driver_glue_code.mdwn
> +++ b/community/gsoc/project_ideas/driver_glue_code.mdwn
> @@ -36,7 +36,10 @@ for running all drivers in separate userspace processes,
>  which is more desirable than drivers running in the microkernel.
>  
>  Robert Millan worked on a port of the Rump kernel, which allowed to run a 
> sound
> -driver in userland. This work now needs to be extended.
> +driver in userland. Damien Zammit implemented
> +[[rumpdisk|hurd/rump/rumpdisk]] and
> +[[rumpusbdisk|hurd/rump/rumpusbdisk]].
> +This work now needs to be extended.
>  
>  [[Zheng Da|zhengda]] has already done considerable work on a similar 
> approach, using [[DDE]]
>  The basic framework for using DDE in the Hurd is present,
> diff --git a/faq/sata_disk_drives.mdwn b/faq/sata_disk_drives.mdwn
> index 4864e35b..81e2a01a 100644
> --- a/faq/sata_disk_drives.mdwn
> +++ b/faq/sata_disk_drives.mdwn
> @@ -15,3 +15,7 @@ License|/fdl]]."]]"""]]
>  Until recently, GNU Mach did not support SATA disk drives (`/dev/sda` etc. 
> in GNU/Linux) natively, the only way to get those drives to work used to be 
> to put them into compatibility mode in the BIOS, if such an option exists.  
> GNU Mach will then recognize them as hd etc.
>  
>  An AHCI driver has been added on 10th May 2013, which should bring support 
> for a wide range of SATA controlers. Please however make sure to configure 
> the BIOS in AHCI mode (as opposed to RAID mode).
> +
> +Damien Zammit ported a rump kernel to the Hurd to use SSD devices.  We
> +call it [[rumpdisk|hurd/rump/rumpdisk]].  With rumpdisk you can have a
> +[[2TB partition!|faq/2_gib_partition_limit]]
> diff --git a/hurd/documentation.mdwn b/hurd/documentation.mdwn
> index 3a662ca4..f9a2428f 100644
> --- a/hurd/documentation.mdwn
> +++ b/hurd/documentation.mdwn
> @@ -67,6 +67,9 @@ is included in the section entitled
>  * [[Building]]
>  * [[Toolchain]]
>      * [[glibc]]
> +* Device Drivers
> +     * [[rump|hurd/rump]] NetBSD drivers
> +     * [[DDE|hurd/dde]] Outdated Linux Drivers (unmaintained)
>  * RPC [[Interface]]s
>  * Libraries
>    * [[libpager]]
> diff --git a/hurd/rump.mdwn b/hurd/rump.mdwn
> index ddde657f..401634bd 100644
> --- a/hurd/rump.mdwn
> +++ b/hurd/rump.mdwn
> @@ -1,5 +1,5 @@
> -[[!meta copyright="Copyright © 2009, 2010, 2011 Free Software Foundation,
> -Inc."]]
> +[[!meta copyright="Copyright © 2009, 2010, 2011, 2024 Free Software
> +Foundation, Inc."]]
>  
>  [[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
>  id="license" text="Permission is granted to copy, distribute and/or modify 
> this
> @@ -35,8 +35,9 @@ maintaining drivers ourselves, we can re-use the existing 
> NetBSD
>  drivers.
>  
>  Hurd developers have enabled experimental support for modern hard
> -drives with a rump kernel.  We call it rumpdisk, and you can try it in
> -the [[Debian GNU/Hurd image|hurd/running/qemu]].
> +drives with a rump kernel.  We call it
> +[[rumpdisk|hurd/rump/rumpdisk]], and you can try it in the [[Debian
> +GNU/Hurd image|hurd/running/qemu]].
>  
>  As of May 2023, Hurd users are having good success with it in qemu
>  environments and some are using it on real hardware!
> @@ -45,6 +46,18 @@ We do hope to use rump kernels for usb support, sound 
> support (this
>  was working at some point), and possibly a new TCP/IP stack, but work
>  has not completed on those projects.
>  
> +# Rump kernels
> +
> +  * [[rumpdisk|rump/rumpdisk]] HHD/SSD/NVMe device drivers
> +
> +  * [[rumpfs|rump/rumpfs]] using NetBSDs filesystems (FFS)
> +
> +  * [[rumpnet|rump/rumpnet]] wifi/ethernet device drivers
> +
> +  * [[rumpsound|rump/rumpsound]] audio device drivers
> +
> +  * [[rumpusbdisk|rump/rumpusbdisk]] accessing external SATA devices
> +
>  # Documentation
>  
>    * <http://www.fixup.fi/misc/usenix-login-2015/login_oct15_02_kantee.pdf>
> @@ -55,6 +68,10 @@ has not completed on those projects.
>  
>      A tutorial introduction for those interested in using and deploying rump 
> kernels.
>  
> +  * <https://netbsd.org/docs/rump/sptut.html>
> +
> +    Another tutorial on rump kernel servers and clients.
> +
>    * <https://core.ac.uk/display/41816390>
>  
>      "User space approach to audio device driving on UNIX-like systems" by 
> Robert Millan Hernandez.
> diff --git a/hurd/rump/rumpdisk.mdwn b/hurd/rump/rumpdisk.mdwn
> new file mode 100644
> index 00000000..af3eb467
> --- /dev/null
> +++ b/hurd/rump/rumpdisk.mdwn
> @@ -0,0 +1,62 @@
> +[[!meta copyright="Copyright © 2024 Free Software Foundation,
> +Inc."]]
> +
> +[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
> +id="license" text="Permission is granted to copy, distribute and/or modify 
> this
> +document under the terms of the GNU Free Documentation License, Version 1.2 
> 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
> +is included in the section entitled [[GNU Free Documentation
> +License|/fdl]]."]]"""]]
> +
> +[[!tag stable_URL]]
> +
> +# RumpDisk
> +
> +The Hurd supports modern SATA devices like SSDs with RumpDisk.  If you
> +successfully installed the Hurd in real hardware, via toggling the
> +"compatibility" mode in your BIOS, then the Hurd is probably using old
> +Linux drivers to access your hard drive/SSD.  Even more problematic,
> +those drivers are baked into the GNU Mach kernel!  With rumpdisk, you
> +can use SSDs on the Hurd and enjoy a max partition size of [[2
> +TiB|faq/2_gib_partition_limit]]!
> +
> +If you want to test if the Hurd can boot with your SSD, change any
> +occurence of `hdN` in `/boot/grub/grub.cfg` to `wdN`, where `N` is a
> +number and add the `noide` line, (which disables the old Linux disk
> +drivers).  Also change any occurence of `hdN` in your `/etc/fstab` to
> +`wdN`.
> +
> +     /boot/grub/grub.cfg
> +
> +     # multiboot     /boot/gnumach-1.8-486.gz root=part:2:device:hd0 
> console=com0
> +     multiboot       /boot/gnumach-1.8-486.gz root=part:2:device:wd0 
> console=com0 noide
> +
> +     /etc/fstab
> +
> +     #/dev/hd0s2      /               ext2    defaults        0       1
> +     /dev/wd0s2      /               ext2    defaults        0       1
> +     #/dev/hd0s1      none            swap    sw              0       0
> +     /dev/wd0s1      none            swap    sw              0       0
> +     #/dev/hd2        /media/cdrom0   iso9660 noauto          0       0
> +     /dev/wd2        /media/cdrom0   iso9660 noauto          0       0
> +
> +Then reboot your machine.  Before Grub appears change "compatibility"
> +in your BIOS to "AHCI" (not "RAID").  If you successfully boot,
> +congrats!  You are now using rumpdisk! You can permanently add in the
> +"noide" option to grub:
> +
> +     /etc/default/grub
> +
> +     # make sure you add this next line somewhere in the file
> +     GRUB_CMDLINE_GNUMACH="noide"
> +
> +Now you can run `update-grub`.  That way when you update the kernel,
> +you can be sure to use rumpdisk.
> +
> +rumpdisk exposes `/dev/rumpdisk`.
> +
> +     $ showtrans /dev/rumpdisk
> +     /hurd/rumpdisk
> +
> +[[!inline pages=open_issues/running_rump_for_slash raw=yes feeds=no]]
> diff --git a/hurd/rump/rumpfs.mdwn b/hurd/rump/rumpfs.mdwn
> new file mode 100644
> index 00000000..8236defa
> --- /dev/null
> +++ b/hurd/rump/rumpfs.mdwn
> @@ -0,0 +1,31 @@
> +[[!meta copyright="Copyright © 2024 Free Software Foundation,
> +Inc."]]
> +
> +[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
> +id="license" text="Permission is granted to copy, distribute and/or modify 
> this
> +document under the terms of the GNU Free Documentation License, Version 1.2 
> 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
> +is included in the section entitled [[GNU Free Documentation
> +License|/fdl]]."]]"""]]
> +
> +[[!tag stable_URL]]
> +
> +# What is rumpfs?
> +
> +`Rumpfs` would let us use the [[NetBSD
> +filesystems|https://man.netbsd.org/fstab.5]], namely FFS, which is a
> +journaled filesystem that supports snapshots.  This is a significant
> +improvement over the Hurd's current filesystem:
> +[[ext2|hurd/translator/ext2fs]], which forces users to deal with
> +occassional filesystem corruption.  With FFS, this would no longer be
> +an issue, and NetBSD developers would maintain the FFS codebase.
> +
> +As of October 2024, rumpfs still needs to be implemented.
> +
> +Another option is to create an ext3fs.  We have a
> +[[task|https://savannah.gnu.org/task/?5498]] for this, which mentions
> +some existing experimental code.
> +
> +Another option is to create translators out of
> +[[libguestfs|hurd/translator/libguestfs]].
> diff --git a/hurd/rump/rumpnet.mdwn b/hurd/rump/rumpnet.mdwn
> new file mode 100644
> index 00000000..5ea3ba61
> --- /dev/null
> +++ b/hurd/rump/rumpnet.mdwn
> @@ -0,0 +1,22 @@
> +[[!meta copyright="Copyright © 2024 Free Software Foundation,
> +Inc."]]
> +
> +[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
> +id="license" text="Permission is granted to copy, distribute and/or modify 
> this
> +document under the terms of the GNU Free Documentation License, Version 1.2 
> 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
> +is included in the section entitled [[GNU Free Documentation
> +License|/fdl]]."]]"""]]
> +
> +[[!tag stable_URL]]
> +
> +# RumpNet
> +
> +Hurd developers want to use rumpnet, so that we can use modern
> +ethernet and wifi device drivers.  The Hurd is currently using Linux's
> +old TCP/IP stack (`pfinet`) and device drivers.  We plan to replace
> +`pfinet` with [[lwip|hurd/translator/lwip]] and use rumpnet's modern
> +device drivers for ethernet and wifi hardware.  Alternatively, we
> +could use rump's TCP/IP stack.
> +
> diff --git a/hurd/rump/rumpsound.mdwn b/hurd/rump/rumpsound.mdwn
> new file mode 100644
> index 00000000..f8f113e6
> --- /dev/null
> +++ b/hurd/rump/rumpsound.mdwn
> @@ -0,0 +1,25 @@
> +[[!meta copyright="Copyright © 2024 Free Software Foundation,
> +Inc."]]
> +
> +[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
> +id="license" text="Permission is granted to copy, distribute and/or modify 
> this
> +document under the terms of the GNU Free Documentation License, Version 1.2 
> 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
> +is included in the section entitled [[GNU Free Documentation
> +License|/fdl]]."]]"""]]
> +
> +[[!tag stable_URL]]
> +
> +rumpsound lets us use audio devices on the Hurd.  There is an
> +experimental/basic [[hurd rump audio
> +translator|https://github.com/dm0-/hurd-rump-audio]] that exists.  The
> +translator runs at `/dev/audio`, which is somehow similiar to a
> +Solaris audio device.  Any application that supports pulseaudio, can
> +play through this device.
> +
> +Some Hurd developers, believe that pulseaudio may not be the best
> +choice for supporting sound on the Hurd.  Damien Zammit has several
> +[[ideas|https://lists.gnu.org/archive/html/bug-hurd/2019-11/msg00086.html]]
> +how to get proper sound support on the Hurd.  The [[audio
> +page|open_issues/audio]] has more information.
> diff --git a/hurd/rump/rumpusbdisk.mdwn b/hurd/rump/rumpusbdisk.mdwn
> new file mode 100644
> index 00000000..26e1a101
> --- /dev/null
> +++ b/hurd/rump/rumpusbdisk.mdwn
> @@ -0,0 +1,26 @@
> +[[!meta copyright="Copyright © 2024 Free Software Foundation,
> +Inc."]]
> +
> +[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
> +id="license" text="Permission is granted to copy, distribute and/or modify 
> this
> +document under the terms of the GNU Free Documentation License, Version 1.2 
> 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
> +is included in the section entitled [[GNU Free Documentation
> +License|/fdl]]."]]"""]]
> +
> +[[!tag stable_URL]]
> +
> +# RumpUSBDisk
> +
> +With RumpUSBDisk, the Hurd can use a usb to SATA dongle to access a
> +SATA device.  The StarTech offers a good quality dongle that works
> +well.  The Hurd could then read/write data from a SATA device with an
> +fatfs or ext2 filesystem.  Damien Zammit implemented [[rumpusbdisk
> +already|https://lists.gnu.org/archive/html/bug-hurd/2023-07/msg00025.html]].
> +However, as of October 2024, netdde seems to exhibit a bug when
> +running `ifdown /dev/eth0` simultaneously to running the rumpusbdisk
> +translator, due to the two devices sharing the same IRQ.
> +
> +
> +
> diff --git a/open_issues/running_rump_for_slash.mdwn 
> b/open_issues/running_rump_for_slash.mdwn
> index 52c97b5d..0740993e 100644
> --- a/open_issues/running_rump_for_slash.mdwn
> +++ b/open_issues/running_rump_for_slash.mdwn
> @@ -11,6 +11,8 @@ License|/fdl]]."]]"""]]
>  
>  [[!tag open_issue_hurd]]
>  
> +## Samuel's 
> [[email|https://lists.gnu.org/archive/html/bug-hurd/2019-12/msg00002.html]]
> +
>  I have been thinking about how to get rump running for the / filesystem.
>  
>  Looking at how things go between ext2fs and exec: in grub.cfg we have
> @@ -51,3 +53,20 @@ and we'd make `pci-arbiter`'s initialization use 
> `task_set_special_port`
>  to set the `TASK_BOOTSTRAP_PORT` special port of rump to a send right to
>  pci-arbiter and resume it. When `libpciaccess` sees that this port is set,
>  it would use it instead of looking up `/server/bus/pci`.
> +
> +## Damien's [[follow up 
> email|https://lists.gnu.org/archive/html/bug-hurd/2020-04/msg00032.html]]
> +
> +In my own words, the changes that are needed:
> +
> +1. libpciaccess needs to check if pci-arbiter's `task_bootstrap_port` is set
> +and if it is, use it instead of `/servers/bus/pci`
> +
> +2. pci-arbiter needs to call `task_set_special_port` on rump's 
> `TASK_BOOTSTRAP_PORT`
> +if `--disk-server-task` flag is detected.
> +
> +3. rumpdisk needs to call `task_set_special_port` on ext2fs's 
> `TASK_BOOTSTRAP_PORT`
> +if `--fs-server-task` flag is detected.
> +
> +4. ext2fs will just work in this configuration
> +
> +
> -- 
> 2.45.2
> 

-- 
Samuel
Who wants to remember that escape-x-alt-control-left shift-b puts you into
super-edit-debug-compile mode?
(Discussion in comp.os.linux.misc on the intuitiveness of commands, especially
Emacs.)

Reply via email to