diff options
Diffstat (limited to 'hurd')
330 files changed, 0 insertions, 16191 deletions
diff --git a/hurd/authentication.mdwn b/hurd/authentication.mdwn deleted file mode 100644 index 2d6084bf..00000000 --- a/hurd/authentication.mdwn +++ /dev/null @@ -1,27 +0,0 @@ -[[!meta copyright="Copyright © 2007, 2008 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]]."]]"""]] - -UIDs on the Hurd are separate from processes. A process has -[[capabilities|capability]] designating so-called UID vectors that -are implemented by an [[translator/auth]] server. This -makes them easily [[virtualizable|virtualization]]. - -When a process wishes to gain access to a resource provided by a third -party (e.g., a file system) and that party wishes to authenticate the client -so as to implement some identity-based access control ([[IBAC]]) policy, -the latter initiates a three-way authentication handshake. The server -and client each then begin an authentication sequence with -their respective [[trust]]ed auth servers. If they have -a mutally trusted ancestor and an auth server does not abort the -transaction, then the client is delivered a new capability -naming a newly authenticated session with the server -and the server is delivered the client's designated UID vector. - -For more details, see section 2.3 of the [[critique]]. diff --git a/hurd/binutils.mdwn b/hurd/binutils.mdwn deleted file mode 100644 index f9266448..00000000 --- a/hurd/binutils.mdwn +++ /dev/null @@ -1,11 +0,0 @@ -[[!meta copyright="Copyright © 2010 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]]."]]"""]] - -[[!meta redir=/binutils]] diff --git a/hurd/building.mdwn b/hurd/building.mdwn deleted file mode 100644 index c0d5648c..00000000 --- a/hurd/building.mdwn +++ /dev/null @@ -1,275 +0,0 @@ -/!\ The following information may very well be incomplete and out-dated. - -If you want to build the Hurd libraries and servers (translators) yourself -instead of just using pre-built binaries, follow these instructions. - -One note before we begin: the likelihood that the compiled result will actually -do what you expect it to do is the highest if you try building from the Debian -source packages. This is especially true if you want to use your compilation -within a Debian system. - -Note that for building code to run on GNU/Hurd systems, you need a toolchain -for the GNU Hurd. You can either compile on a GNU/Hurd system, or need a -cross-compiler targeting GNU/Hurd. Our [[toolchain page|toolchain]] has the -details. - -[[!toc]] - - -# Getting the Source Code - -You can chose between getting the [sources from the developers's -git](http://savannah.gnu.org/git/?group=hurd): - - $ git clone git://git.sv.gnu.org/hurd/hurd.git - -... or (if you are working on a Debian system) the ones that are used for the -[current Debian hurd package](http://packages.debian.net/source/unstable/hurd): - - $ apt-get source hurd - -Please see the Debian [[running/debian/FAQ]] before using `apt-get source`. - -The unpacked source tree is around 20 MiB, and the build tree (configured with -`--disable-profile`) is around 100 MiB. - -# Preparing for the Build - -## ... on Debian systems - -Building the Hurd requires the *build-essential* and *fakeroot* packages, their -dependencies and additional packages that are specified by the source hurd -package: - - # apt-get install build-essential fakeroot - # apt-get build-dep hurd - -## ... on non-Debian systems - -[TODO] - -# Building - -## Debian `.deb` Files - -Change into the directory with the downloaded / unpacked Hurd sources, e.g. - - $ cd hurd-[TODO] - -If you want to work on the sources before building them, it's advisable to -first apply the patches the Debian hurd package additionally contains: - - $ debian/rules apply-patches - -Then edit and change whatever files you want and finally start the build -process with - - $ dpkg-buildpackage -us -uc -nc -b -rfakeroot - -The `.deb` packages will then drop out at the `../` directory. - -## Building, but not the Debian Way - -The Hurd has to be built in a separate directory: - - $ mkdir hurd-build - $ cd hurd-build - - $ [...]/hurd-[TODO]/configure --disable-profile - $ make - $ make install - -Notice that `make install` will install the Hurd in `/`, not in `/usr/local/` -or `/local/`, so your current Hurd servers will be replaced. [TODO: how to -install somewhere else.] - -By default profiling versions of all the libraries and code are generated but -this is useless in most of the cases, so we disable them by specifying -`--disable-profile` on `configure`'s command line. - -If you just want to build a specific server or library, you can pass its name -to `make`: - - $ make ext2fs - $ make libtrivfs - -This will automatically build all libraries that are required to build the -requested server or library. - - -# RPC IDs - -[TODO: update / integrate somewhere.] - -If you want to trace the RPC calls made by some process by using `rpctrace` -command, you will also want some more human-readable output of this -command. This is achieved by generating `hurd.msgids` file that includes the -mapping between the number of the RPC call and its name: - - $ cd build/hurd - $ make hurd.msgids - $ cp hurd.msgids ~ - -Now you can use this file in the following way: - - $ rpctrace -i ~/hurd.msgids ls - - -# Testing - -Any statically linked binaries (`make proc && (cd proc/ && make proc.static)`) -can be used directly, as they are self-contained regarding the Hurd libraries -they're using. - -Dynamically linked binaries will use the system's shared Hurd libraries, which -may be or may not be what you want. - -Check: - - $ ldd utils/ps - libhurdbugaddr.so.0.3 => /lib/libhurdbugaddr.so.0.3 (0x01036000) - libps.so.0.3 => /lib/libps.so.0.3 (0x01038000) - libihash.so.0.3 => /lib/libihash.so.0.3 (0x0104a000) - libshouldbeinlibc.so.0.3 => /lib/libshouldbeinlibc.so.0.3 (0x0104e000) - libc.so.0.3 => /lib/i386-gnu/libc.so.0.3 (0x0105a000) - libhurduser.so.0.3 => /lib/i386-gnu/libhurduser.so.0.3 (0x011eb000) - libmachuser.so.1 => /lib/i386-gnu/libmachuser.so.1 (0x01211000) - /lib/ld.so => /lib/ld.so.1 (0x00001000) - -Run: - - $ utils/ps - [...] - -For example, if you have done changes to [[libps]] and now want to test them -with `ps` (which dynamically links to libps), this is not good. To overcome -this, `LD_LIBRARY_PATH` can be used: - -Check: - - $ LD_LIBRARY_PATH="$PWD"/libps ldd utils/ps - libhurdbugaddr.so.0.3 => /lib/libhurdbugaddr.so.0.3 (0x01036000) - libps.so.0.3 => /home/thomas/tmp/hurd/git.build/libps/libps.so.0.3 (0x01038000) - libihash.so.0.3 => /lib/libihash.so.0.3 (0x0104b000) - libshouldbeinlibc.so.0.3 => /lib/libshouldbeinlibc.so.0.3 (0x0104e000) - libc.so.0.3 => /lib/i386-gnu/libc.so.0.3 (0x0105a000) - libhurduser.so.0.3 => /lib/i386-gnu/libhurduser.so.0.3 (0x011eb000) - libmachuser.so.1 => /lib/i386-gnu/libmachuser.so.1 (0x01211000) - /lib/ld.so => /lib/ld.so.1 (0x00001000) - -Run: - - $ LD_LIBRARY_PATH="$PWD"/libps utils/ps - [...] - -Additionally, a `hurd-build/lib` directory is populated with links to *all* -shared Hurd libraries. - -Check: - - $ LD_LIBRARY_PATH="$PWD"/lib ldd utils/ps - libhurdbugaddr.so.0.3 => /home/thomas/tmp/hurd/git.build/lib/libhurdbugaddr.so.0.3 (0x0102b000) - libps.so.0.3 => /home/thomas/tmp/hurd/git.build/lib/libps.so.0.3 (0x0102d000) - libihash.so.0.3 => /home/thomas/tmp/hurd/git.build/lib/libihash.so.0.3 (0x01040000) - libshouldbeinlibc.so.0.3 => /home/thomas/tmp/hurd/git.build/lib/libshouldbeinlibc.so.0.3 (0x01043000) - libc.so.0.3 => /lib/i386-gnu/libc.so.0.3 (0x0105a000) - libhurduser.so.0.3 => /lib/i386-gnu/libhurduser.so.0.3 (0x011eb000) - libmachuser.so.1 => /lib/i386-gnu/libmachuser.so.1 (0x01211000) - /lib/ld.so => /lib/ld.so.1 (0x00001000) - -Run: - - $ LD_LIBRARY_PATH="$PWD"/lib utils/ps - [...] - -Likewise, if there is a reason to, it is possible to use the system's `/bin/ps` -with a freshly built libps: - - $ LD_LIBRARY_PATH="$PWD"/libps /bin/ps - [...] - -Etc. - -And, the same is possible with [[translator]]s, too. - -Check, system's shared Hurd libraries: - - $ ldd tmpfs/tmpfs - libhurdbugaddr.so.0.3 => /lib/libhurdbugaddr.so.0.3 (0x01036000) - libdiskfs.so.0.3 => /lib/libdiskfs.so.0.3 (0x01038000) - libpager.so.0.3 => /lib/libpager.so.0.3 (0x01060000) - libiohelp.so.0.3 => /lib/libiohelp.so.0.3 (0x01069000) - libfshelp.so.0.3 => /lib/libfshelp.so.0.3 (0x0106c000) - libstore.so.0.3 => /lib/libstore.so.0.3 (0x01072000) - libthreads.so.0.3 => /lib/libthreads.so.0.3 (0x010ba000) - libports.so.0.3 => /lib/libports.so.0.3 (0x010c1000) - libihash.so.0.3 => /lib/libihash.so.0.3 (0x010ca000) - libshouldbeinlibc.so.0.3 => /lib/libshouldbeinlibc.so.0.3 (0x010ce000) - libc.so.0.3 => /lib/i386-gnu/libc.so.0.3 (0x010da000) - libmachuser.so.1 => /lib/i386-gnu/libmachuser.so.1 (0x0126b000) - libhurduser.so.0.3 => /lib/i386-gnu/libhurduser.so.0.3 (0x01282000) - libparted.so.0 => /lib/libparted.so.0 (0x012a8000) - libuuid.so.1 => /lib/libuuid.so.1 (0x01315000) - libdl.so.2 => /lib/i386-gnu/libdl.so.2 (0x01319000) - /lib/ld.so => /lib/ld.so.1 (0x00001000) - -Check, local libdiskfs, and otherwise system's shared Hurd libraries: - - $ LD_LIBRARY_PATH="$PWD"/libdiskfs ldd tmpfs/tmpfs - libhurdbugaddr.so.0.3 => /lib/libhurdbugaddr.so.0.3 (0x01036000) - libdiskfs.so.0.3 => /home/thomas/tmp/hurd/git.build/libdiskfs/libdiskfs.so.0.3 (0x01038000) - libpager.so.0.3 => /lib/libpager.so.0.3 (0x01061000) - libiohelp.so.0.3 => /lib/libiohelp.so.0.3 (0x01069000) - libfshelp.so.0.3 => /lib/libfshelp.so.0.3 (0x0106c000) - libstore.so.0.3 => /lib/libstore.so.0.3 (0x01072000) - libthreads.so.0.3 => /lib/libthreads.so.0.3 (0x010ba000) - libports.so.0.3 => /lib/libports.so.0.3 (0x010c1000) - libihash.so.0.3 => /lib/libihash.so.0.3 (0x010cb000) - libshouldbeinlibc.so.0.3 => /lib/libshouldbeinlibc.so.0.3 (0x010ce000) - libc.so.0.3 => /lib/i386-gnu/libc.so.0.3 (0x010da000) - libmachuser.so.1 => /lib/i386-gnu/libmachuser.so.1 (0x0126b000) - libhurduser.so.0.3 => /lib/i386-gnu/libhurduser.so.0.3 (0x01282000) - libparted.so.0 => /lib/libparted.so.0 (0x012a9000) - libuuid.so.1 => /lib/libuuid.so.1 (0x01315000) - libdl.so.2 => /lib/i386-gnu/libdl.so.2 (0x01319000) - /lib/ld.so => /lib/ld.so.1 (0x00001000) - -Check, all local shared Hurd libraries: - - $ LD_LIBRARY_PATH="$PWD"/lib ldd tmpfs/tmpfs - libhurdbugaddr.so.0.3 => /home/thomas/tmp/hurd/git.build/lib/libhurdbugaddr.so.0.3 (0x0102b000) - libdiskfs.so.0.3 => /home/thomas/tmp/hurd/git.build/lib/libdiskfs.so.0.3 (0x0102d000) - libpager.so.0.3 => /home/thomas/tmp/hurd/git.build/lib/libpager.so.0.3 (0x01056000) - libiohelp.so.0.3 => /home/thomas/tmp/hurd/git.build/lib/libiohelp.so.0.3 (0x0105e000) - libfshelp.so.0.3 => /home/thomas/tmp/hurd/git.build/lib/libfshelp.so.0.3 (0x01061000) - libstore.so.0.3 => /home/thomas/tmp/hurd/git.build/lib/libstore.so.0.3 (0x01066000) - libthreads.so.0.3 => /home/thomas/tmp/hurd/git.build/lib/libthreads.so.0.3 (0x010ae000) - libports.so.0.3 => /home/thomas/tmp/hurd/git.build/lib/libports.so.0.3 (0x010b6000) - libihash.so.0.3 => /home/thomas/tmp/hurd/git.build/lib/libihash.so.0.3 (0x010be000) - libshouldbeinlibc.so.0.3 => /home/thomas/tmp/hurd/git.build/lib/libshouldbeinlibc.so.0.3 (0x010c1000) - libc.so.0.3 => /lib/i386-gnu/libc.so.0.3 (0x010d8000) - libmachuser.so.1 => /lib/i386-gnu/libmachuser.so.1 (0x01269000) - libhurduser.so.0.3 => /lib/i386-gnu/libhurduser.so.0.3 (0x01281000) - libparted.so.0 => /lib/libparted.so.0 (0x012a7000) - libuuid.so.1 => /lib/libuuid.so.1 (0x01313000) - libdl.so.2 => /lib/i386-gnu/libdl.so.2 (0x01317000) - /lib/ld.so => /lib/ld.so.1 (0x00001000) - -Run, system's shared Hurd libraries: - - $ settrans -ca tmp-0 /usr/bin/env "$PWD"/tmpfs 32M - -Run, local libdiskfs, and otherwise system's shared Hurd libraries: - - $ settrans -ca tmp-0 /usr/bin/env LD_LIBRARAY_PATH="$PWD"/libdiskfs "$PWD"/tmpfs 32M - -Run, all local shared Hurd libraries: - - $ settrans -ca tmp-0 /usr/bin/env LD_LIBRARAY_PATH="$PWD"/lib "$PWD"/tmpfs 32M - -Likewise, if there is a reason to, it is possible to use the system's -`/hurd/tmpfs` with a freshly built libdiskfs: - - $ settrans -ca tmp-0 /usr/bin/env LD_LIBRARAY_PATH="$PWD"/libdiskfs /hurd/tmpfs 32M - -Etc. diff --git a/hurd/building/cross-compiling.mdwn b/hurd/building/cross-compiling.mdwn deleted file mode 100644 index 73c19b4d..00000000 --- a/hurd/building/cross-compiling.mdwn +++ /dev/null @@ -1,13 +0,0 @@ -[[!meta copyright="Copyright © 2010 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]] - -[[!meta redir=/toolchain/cross-gnu]] diff --git a/hurd/concepts.mdwn b/hurd/concepts.mdwn deleted file mode 100644 index e8183d79..00000000 --- a/hurd/concepts.mdwn +++ /dev/null @@ -1,15 +0,0 @@ -[[!meta copyright="Copyright © 2007, 2008 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]]."]]"""]] - -* [[Translator]] -* [[Virtual_File_System]] -* [[Authentication]] -* [[Virtualization]] -* [[Neighborhurd]] diff --git a/hurd/console.mdwn b/hurd/console.mdwn deleted file mode 100644 index f7230011..00000000 --- a/hurd/console.mdwn +++ /dev/null @@ -1,359 +0,0 @@ -[[!meta copyright="Copyright © 2002, 2003, 2004, 2005, 2006, 2007, 2009, 2011 -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]]."]]"""]] - -The Hurd console's implementation is broken into two pieces each running on -it's own process, the console client and server. - -The console client is also split into modules (input driver, display driver, -speaker, ...) but they all run in the same process. - -The console server puts itself as a translator on top of `/dev/vcs` folder -presenting the following hierarchy: - - + /dev/vcs - \ - +- 1 - \ - +- console - +- input - +- display - +- .. - +- n - -where the numbered nodes represent virtual consoles and their contents are all -alike. - -As the following graph shows, the console, input and display nodes are the -interfaces used by the terminal server, input driver and display drivers -respectively. - - +------------------+ +-----------------+ - | Input driver | | Terminal Server | - | | | | - | pc-kbd | | | - +------------------+ +-----------------+ - | _cons_vcons_input | - | writes to reads | - | vcs/i/input vcs/i/console | - | +-----------------+ | - | | Console Server | | - | | /hurd/console | | - | input_enqueue | --------------- | input_dequeue | - +--------------->| Input Queue |>---------------+ - | --------------- | - +--------------->| Output Buffer |>---------------+ - | +-----------------+ | - | | - | writes reads | - | vcs/i/console vcs/i/display | - | | - +----------------+ +-----------------+ - | Teminal Server | | Display driver | - | | | | - | /hurd/term | | vga | - +----------------+ +-----------------+ - -The input driver takes scancodes from the in-kernel kbd queue, translates them -into characters and writes them to the input node. Then the terminal server -reads the console node taking the characters out of the console server. - -Each of theese actions is actually an RPC handled by the translator on -`/dev/vcs`. Writes to input nodes are handled by calling `input_enqueue` to -put the character into a queue. And reads from console nodes are handled by -calling `input_dequeue` which takes out charecters from the queue and gives -them to the reader. - -It's important to note here that both `input_enqueue` and `input_dequeue` are -blocking operations and a blocked `input_dequeue` necessarily needs an -`input_enqueue` call to continue. - -[[RPC]]s are handled by the console server with the help of [[hurd/libports]]' -`ports_manage_multithreaded` API. - - ---- - -/!\ old content; [[!taglink open_issue_documentation]]: cleanup needed. - -The below is a reworked version of Marcus Brinkmann's [letter to the debian-hurd list](http://lists.debian.org/debian-hurd/2002/debian-hurd-200209/msg00054.html). It describes how to setup the new console server for the Hurd. I am testing this right now, so this document is a work in progress. - --- [[Main/JoachimNilsson]] - 21 Jan 2003 - -Many of the shortcomings of the console are not true anymore. I've updated the page to match the state as it is in CVS. - --- [[Main/MarcoGerards]] - 28 May 2004 - -The latest Hurd package in Debian has all that is needed to run (dunno about hurd.ti though). The native-install script sets up all the necessary nodes, so all you really need is to run: - - console -d vga -d pc_kbd --repeat=kbd -d pc_mouse --repeat=mouse \ - -d generic_speaker -c /dev/vcs - --- [[Main/JoachimNilsson]] - 17 Apr 2005 - -Additional information about the console can be found in the [Hurd Console Tutorial](http://uwhug.org.uk/index.pl?Hurd_Console_Tutorial) - - -## <a name="What_is_the_new_console_"> What is the new console? </a> - -**_The new Hurd console features:_** - -**A console server**, which provides a number of virtual consoles to term servers, with a full set of terminal capabilities. - -The console server supports any encoding supported by iconv, but uses Unicode internally. The default encoding is ISO8859-1, another useful variant is UTF-8. - -The console server provides an arbitrary number of virtual consoles (numbered starting from 1, but the numbers don't need to be consecutive), which are created dynamically. A virtual console is not automatically displayed, for this you need a console client program which attaches to the virtual console you want to use. - -You can attach any number of console clients to the same virtual console, and detach them at any time. - -The console server provides a scrollback buffer for each virtual console. Currently, this is about one and a half screen full in addition to the screen. This should be configurable, of course, but isn't right now. - -**libcons**, a library that makes it easy to write console clients that attach to the console server. - -The client interface of the server is quite complicated, because it is based on shared memory and broadcasts the data to potentially many clients without blocking. It also includes a notification scheme so that clients remain idle when there is no console activity. This saves cpu power (compared to the alternative which would be polling). - -**The default console client**, which you will normally use to use a virtual console in a console server. Rather than writing many similar console client programs, I decided to write only one initially and make it extensible via dynamically loaded modules called "drivers". - -The console client uses libcons, of course. There are a number of drivers that exists already: - -* The ncursesw driver. You can use this if you log in from a remote unicode-capable console to attach to the local console server and use virtual console over the telnet/ssh session or similar. The ncursesw driver contains an output, input and bell driver components, so it is the only driver you need to get full access. - -* The vga driver. The VGA driver can be used locally to display a virtual console on a VGA card device. This driver provides a number of exciting features, and all of them are available in the fast text mode, and do not require a graphical framebuffer: - -* BDF font support. Load any BDF font with a Unicode encoding and a size from 8x13 up to 9x15 (recommended). - -* Dynamic glyph allocation. You can use up to 512 glyphs at any time. This means you can display cyrillic, greek, english runes, thai, etc. often at the same time, up to 512 different glyphs on the screen in parallel. The 512 is not a fixed set, they are chosen automatically out of the font you have loaded. This means that we only need one font for all users, regardless of the locale. - -* Dynamic color allocation. Because the above 512 glyph modus is only available with a reduced amount of colors, you can use only up to 8 different colors, but which of the 16 colors are available is chosen dynamically based on the colors actually used. - -_Note:_ - -* Support for multiple fonts at the same time. The VGA driver supports italic and real bold (not bright color) mode. This will hopefully be used in emacs font lock mode and other applications. - -* The pc\_kbd driver. This is a hack for a PC eyboard with an american keymap. We all want configurable keyboard layouts of course, but I had to set priorities, and extracting xkb (so we can reuse the X keymaps) is on the TODO list. For now, this driver with a fixed US keymap is available for immediate use. Although it is only considered to be a temporary solution, it provides all features you need (except changing the keymap): - * All keys of a standard 102(?) keys keyboard, including Ctrl, LeftAlt, RightAlt, CapsLock, NumLock, Keypad, cursor block, function keys are supported and have a sensible default value. - * _LeftAlt_ + _Function key N_ switches the virtual console N. - * _LeftAlt_ + _ArrowRight_ or _ArrowLeft_ switches to previous or next virtual console. - * _RightShift_ + _PageUp_ or _PageDown_ scrolls back or forward in the scrollback buffer by half pages. - * _LeftAlt_ + _ArrowUp_ or _ArrowDown_ scroll back or forward one line. - * _LeftCtrl_ + _LeftAlt_ + _Backspace_ terminates the console client, and reverts the VGA card etc to its original state. - * _RightAlt_ + _Keypad_ enables you to directly enter unicode characters in hexadecimal numbers. 0-9 have their standard meaning, and NumLock is 0xa, Keypad `/` is 0xb, `*` is 0xc, `-` is 0xd, `+` is 0xe and the enter key at the lower right of the keypad is 0xf. Up to four digits are memorized, if you type more, the earlier ones are forgotten. This allows to cover up typing mistakes. - -_For example:_AltGr + (Keypad 4, Keypad 1) = 0x41 = 'A'.<br />AltGr + (Keypad 2, 6, 3, NumLock) = 0x263a = smiley. -You can get unicode tables from <http://www.unicode.org> - -* The generic\_speaker driver supports the speaker commonly found in PCs and other computers. It is good enough for a simple bell tone or a small melody. I have several default bell styles implemented, but currently there is no configuration option to access them at run time, sorry! Load this module to make the console beep on ^G. - -## <a name="How_do_I_install_the_new_Hurd_co"> How do I install the new Hurd console? </a> - -### <a name="Setting_up_for_older_hurd_packag"> Setting up for older hurd packages </a> - -You either need the latest .deb of the Hurd, version 20020918-1 or later, or you need current CVS sources and compile them yourself. - -Then, the console server is in `/hurd/console`, the client in `/bin/console`. The installation is painless. - -First, make some device files: - - # cd /dev - # ./MAKEDEV vcs tty1 tty2 tty3 tty4 tty5 tty6 - -The above six ttys are only suggestions. You might want to give or take a few, depending on your needs. - -You need the terminal description. This is not yet in the ncurses package, because I am not finished yet. But you can download [hurd.ti from CVS](http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/hurd/hurd/console/hurd.ti). Please add it with - - # tic -x hurd.ti - -Then you should add the terminals to ttys, so you get a login session on them at boot time. Edit the file `/etc/ttys`, and add the following lines (or similar if you made more/less ttys): - - tty1 "/libexec/getty 38400" hurd on secure trusted console - tty2 "/libexec/getty 38400" hurd on secure trusted console - tty3 "/libexec/getty 38400" hurd on secure trusted console - tty4 "/libexec/getty 38400" hurd on secure trusted console - tty5 "/libexec/getty 38400" hurd on secure trusted console - tty6 "/libexec/getty 38400" hurd on secure trusted console - -This is all. If you now reboot, you will get six virtual consoles with a login prompt on each. But of course, the console client is not started automatically yet, so you don't see them. - -### <a name="Activating_the_console"> Activating the console </a> - -Login at the normal system console, and try to attach to the console server, either with the `ncursesw` driver or with the vga/pc\_kbd driver: - - # console -d ncursesw /dev/vcs - -or - - # console -d vga -d pc_kbd -d generic_speaker /dev/vcs - -That should work. The `ncursesw` driver supports console switching via _C-w C-1_ (or 2, 3, ...) and you can exit it with _C-w x_. However, the VGA client is more suitable on the local console. - -If you want repeater support (needed for X): - - # console -d vga -d pc_kbd --repeat=kbd -d generic_speaker \ - -d pc_mouse --repeat=mouse --protocol=ps/2 -c /dev/vcs - -Available mouse protocols are: - -* `mousesystem` -* `microsoft` -* `ps/2` -* `nomouse` -* `logitech` -* `mouse7` - -### <a name="Setting_up_encoding"> Setting up encoding </a> - -The virtual consoles you are now running on are providing an ISO8859-1 environment (also known as latin1), which is good enough for the USA and some countries in Europe. If you require a different encoding for your locale (like, let's say, ISO8859-2), you can specify this as an argument to the console server. I am sorry to say that fsysopts doesn't do the trick yet, so you have to set the option with `settrans -fg`, which will _terminate all your login sessions and restart the console server_. - -To do this, _first_ exit the client. It will get disconnected anyway (and doesn't attempt to reconnnect yet in such a case). Then do a - - # settrans -fg /dev/vcs /hurd/console --encoding=ISO8859-2 - -or - - # settrans -fg /dev/vcs /hurd/console --encoding=UTF-8 - -or similar. A list of supported locales is not easily available, but you can poke into `/share/i18n/SUPPORTED` to get an idea what is expected for your locale, and you can also check out `/share/i18n/charmaps`. Theoretically all of these encodings are "supported". In the file SUPPORTED, you see the locale (what you should export in the LANG environment variable, and enable in `/etc/locale.gen`) and the corresponding encoding. - -If you actually try this, you will notice two problems: - -1. You can not enter the letters in your locale, because the keyboard doesn't have the right layout. See above. Keyboard maps come later. For now, you have to help yourself with the direct input with RightAlt. Maybe I will put a simple compose key feature in the pc\_kbd driver, so that some western locales can be used more easily. -2. If you bother to look up the unicode hex code and enter it with AltGr, the font can not display it! If you are using the ncursesw driver, do you use it while you are logged in from a working UTF-8 terminal? If not, then this is your problem. An ncurses driver for non-UTF-8 terminals is on the TODO list. But if you use the VGA driver, you need to load a different font. - -This is because by default, the vga driver just reads the VGA card memory and takes the font that is stored there. This font has a limited characterset (256 characters, many graphical symbols among that), so you won't get more than a few western characters with that. - -## <a name="Unicode_support"> Unicode support </a> - -But you want it all. You want to read Middle Old English. You want to read Thai. Your Korean spam. Georgian script. Hebrew. And you can have it. - -First you have to set the encoding to UTF-8: - - # settrans -fg /dev/vcs /hurd/console --encoding=UTF-8 - -Then you need a Unicode font. There are good ones provided by Markus Kuhn, [the UCS fonts](http://www.cl.cam.ac.uk/~mgk25/download/ucs-fonts.tar.gz). See also [the web page](http://www.cl.cam.ac.uk/~mgk25/ucs-fonts.html). - -Now, load the font by providing it with the `--font` option to the vga driver. I suggest only the 8x13 and the 9x15 fonts, but feel free to try others, too. Note that the VGA text mode can not really display 9 pixel wide characters. But as most characters have the ninth column empty, and the VGA text mode can display an empty column between two adjacent character cells, this trick allows us to display most of the 9x15 font correctly. So you won't notice a difference until you come to very broad characters or special symbols, where you will see that the last column is cut off. (BTW, I wrote the dynafont code carefully to still support horizontal line graphic characters properly in 9 pixel wide fonts. This is done by exploiting some special modes in the VGA hardware. This is why in 512 (256) glyph mode and 9 pixel wide fonts, you are limited to 448 (224) normal characters: 64 (32) slots are reserved for the horizontal line graphic characters so they are drawn continuously.) - -So, try the following: - - # console -d vga --font 8x13.bdf -d pc_kbd -d generic_speaker /dev/vcs - -or - - # console -d vga --font 9x15.bdf -d pc_kbd -d generic_speaker /dev/vcs - -If you are satisfied, copy your default font to `/lib/hurd/fonts/vga-system.bdf`, where it will be picked up automatically in favor to the graphic card's font. - -### <a name="More_about_fonts"> More about fonts </a> - -While we are talking about fonts, try also the 8x13O font with `--font-italic` and 8x13B or 9x15B font with `--font-bold`. You can save them in `/lib/hurd/fonts/vga-system-bold.bdf` and `/lib/hurd/fonts/vga-system-italic.bdf`, too. - -To activate those fonts on your virtual console, try the following: - - # echo `tput sitm` Hello slanted world. `tput ritm` - -and - - # echo `tput gsbom` Hello bold world. `tput grbom` - -I hope you like what you see. Imagine this in emacs font-lock mode. - -### <a name="Unicode_finally"> Unicode, finally </a> - -There are a few more steps necessary to make your Unicode environment ready: - -Install the locales package. The current version does want a newer glibc than we have in the archive, but this can be overridden with the `--force-depends` option to dpkg. The old glibc is good enough. - -Add a Unicode locale to `/etc/locale.gen`, and generate the locale information for that! For example, I am living in Germany, and normally use `de_DE` with the encoding ISO8859-1. My Unicode locale is `de_DE.UTF-8`, so I am adding that to `/etc/locale.gen`: - - de_DE.UTF-8 UTF-8 - -and rerun locale-gen: - - # locale-gen - -See also `/share/i18n/SUPPORTED`. You can also do this more conveniently with - - # dpkg-reconfigure locales - -Once you generated this, make it your default locale: - - # export LANG=de_DE.UTF-8 - -If you have also loaded the unicode font above, you are set up. Try for example to view the `examples/` files in the `ucs-fonts` package with less. - - # less fonts/examples/UTF_8-demo.txt - -You should see most of that file with the 9x15 font (a bit less with the 8x13 font). - -You should be able to do the above process with other encodings than UTF-8. But you should _always_ use a Unicode font, because the console client uses Unicode internally fo everything. - -## <a name="Application_specific_notes"> Application specific notes </a> - -If you enter unicode characters at the shell, libreadline loses track of the number of characters displayed (it is not aware of multi-byte encodings like UTF-8). This is fixed in readline 4.3 (which is not yet in Debian). - -If you use mutt, install `mutt-utf8` package. For lynx, edit `/etc/lynx.cfg`, making sure that `CHARACTER_SET` is set to `utf-8`. - -If you use other applications, try to search with google for "application-name utf8" or "application-name unicode". Often you find what you need. The issues are the same for the GNU/Hurd and GNU/Linux systems, so most of the information can be shared, except how to setup the system console to support Unicode, of course. - -The `console-server` watches for new hurdio terms (devices translated with `/hurd/term`) and adds them to `/dev/vcs` automatically. What this means is, if you create a new tty with `MAKEDEV`, and then attach something to it, it will now appear in `/dev/vcs`. When a term is disconnected from, it disappears from `/dev/vcs`. `/libexec/getty` is what is usually attached to a term. You can see this automatic adding and removing of terms from the `console-server` by typing the following: - - # cd /dev - # ls vcs/ - 1 2 3 4 5 6 - # MAKEDEV tty7 - # cat > tty7 & - [1]+ Stopped cat > tty7 - # ls vcs/ - 1 2 3 4 5 6 7 - # kill %1 - # ls vcs/ - 1 2 3 4 5 6 - -## <a name="Known_problems_and_important_mis"> Known problems and important missing features </a> - -Squeezed at the end so nobody sees it ;) - -**console server:** Is probably too lax in permission checking. Does not implement settable tab stops. Does not allow to change encoding at run time. Does not allow any other screen size but 80x25. - -Combining characters is not supported. - -**libcons/console-client:** If you have one virtual console active, and another one receives a bell character, you don't hear the bell. This is because only the active virtual console is watched for anything interesting to happen. I think that is ok, but you might be surprised if you are used to how it works on GNU/Linux. - -Copy & Paste not supported. - -**vga driver:** Does not recalculate the mode lines if the font height is changed. This makes font heights below 13 or over 16 infeasible. - -Should support other text modes (integrate svgatextmode?) - -**pc\_kbd driver:** No keyboard layout but US supported! Maybe in some cases left/right shift/ctrl/alt is allowed where both left and right should be allowed. Keyboard LEDs are only supported when using OSKIT-Mach or the CVS branch gnumach-1-branch of GNU Mach. - -**ncursesw driver:** Doesn't work properly on other terminals but UTF-8. Should not use C-w, this should be configurable. Does not support use of scroll back buffer. - -**Other programs:** Readline doesn't support multibyte encodings (4.2 and earlier). term doesn't either (all versions). - ----- - ----- - -Here's a June 2002 [status report](http://mail.gnu.org/archive/html/bug-hurd/2002-06/msg00549.html) - -In September 2002 there was a [request for testers](http://mail.gnu.org/archive/html/bug-hurd/2002-09/msg00121.html). There's been quite a bit of discussion on <bug-hurd@gnuNOSPAM.org> about updates, test results and changes. - --- [[Main/GrantBow]] - 22 Oct 2002 - -There are several patches for the console on savannah to deal with the shortcommings described in Marcus' email. [Patches ](http://savannah.gnu.org/patch/index.php?group_id=30&set=custom&msort=0&report_id=100&advsrch=0&go_report=Apply&category_id=162&assigned_to=0&status_id=1&chunksz=50) for broadcasting the bell event, for setting other text modes and a patch to make it possible to start XFree from the console can be found on savannah. - -An [experimental plugin to load XKB keymaps](http://kilobug.free.fr/hurd/xkb-0.3.tar.gz) exists, although it is alpha quality. - --- [[Main/MarcoGerards]] - 28 May 2004 - -Added examples that use repeaters needed by X. - --- [[Main/OgnyanKulev]] - 18 Sep 2004 diff --git a/hurd/critique.mdwn b/hurd/critique.mdwn deleted file mode 100644 index c432cc17..00000000 --- a/hurd/critique.mdwn +++ /dev/null @@ -1,20 +0,0 @@ -[[!meta copyright="Copyright © 2007, 2008 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]]."]]"""]] - -[[!meta title="A Critique of the GNU Hurd Multi-server Operating System"]] - -Neal Walfield and Marcus Brinkmann wrote a paper titled [*A Critique of -the GNU Hurd Multi-server Operating -System*](http://walfield.org/papers/200707-walfield-critique-of-the-GNU-Hurd.pdf). -This was published in ACM SIGOPS Operating Systems Review in July 2007. This -is sometimes referred to as *the critique*. - -The paper provides a technical overview of the Hurd's -architecture and critiques some of the decisions made. diff --git a/hurd/dde.mdwn b/hurd/dde.mdwn deleted file mode 100644 index 6327a1ef..00000000 --- a/hurd/dde.mdwn +++ /dev/null @@ -1,25 +0,0 @@ -[[!meta copyright="Copyright © 2009, 2010, 2011 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]] - - * [[community/gsoc/project ideas/driver glue code]] - - * [[open issues/user-space device drivers]] - - * [[open issues/device drivers and io systems]] - ---- - -There is an effort going on to make [[/DDE]] usable in GNU/Hurd -userspace. - -See Zheng Da's [[project page|zhengda]], as well as another [[guide]]. diff --git a/hurd/dde/guide.mdwn b/hurd/dde/guide.mdwn deleted file mode 100644 index bf41dd79..00000000 --- a/hurd/dde/guide.mdwn +++ /dev/null @@ -1,227 +0,0 @@ -[[!meta copyright="Copyright © 2010, 2011 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]]."]]"""]] - -This guide explains how to build and set up -a DDE-based network card driver -with Debian GNU/Hurd, -if your (wired) network card -is not supported by the old in-kernel drivers shipped with gnumach. - -This guide assumes that you have -an installation of Debian GNU/Linux on the same machine, -which helps in fetching the required packages -in absence of working networking in the Hurd. -The whole process is much more cumbersome otherwise. -It also assumes that apart from networking, -your Hurd system is already installed and operational. - -Debian now already includes dde support in both gnumach (>= -2:1.3.99.dfsg.git20120219-1) and hurd (>= 20120219-1), so in the steps below, -building gnumach will not be needed. Also, be sure to use the dde-debian branch -instead of dde. - - -We start by booting into Debian GNU/Linux, -so we can download everything we will need for building DDE. If you have already a way to download things from the Hurd image, skip to "Get DDE code" below. - -Once there, first mount the Hurd partition (as root): - - $ mount /dev/hdd1 /mnt -t ext2 # assuming your Hurd partition is hdd1 -- replace with whatever matches your setup - -Prepare apt offline configuration so we can get necessary packages: - - $ cd /mnt/etc/apt - - $ echo "deb http://ftp.debian-ports.org/debian unreleased main" >> sources.list # if you don't have sources.list set up yet on the Hurd system - - $ echo "deb-src http://ftp.debian-ports.org/debian unreleased main" >> sources.list - - $ echo "deb http://ftp.uk.debian.org/debian unstable main" >> sources.list - - $ echo "deb-src http://ftp.uk.debian.org/debian unstable main" >> sources.list - - $ wget http://www.gnu.org/software/hurd/hurd/running/debian/DebianAptOffline/apt.conf.offline - -Download the packages for offline installation: - - $ cd /mnt - - $ apt-get -c etc/apt/apt.conf.offline update - - $ apt-get -c etc/apt/apt.conf.offline build-dep hurd gnumach - - $ apt-get -c etc/apt/apt.conf.offline install git-core build-essential libpciaccess-dev libpcap0.8-dev hurd-dev zlib1g-dev - -Get DDE code: - - $ cd /mnt/home/me # assuming your user name on the Hurd system is "me" - - $ mkdir dde && cd dde - -Note: here, use dde-debian instead of dde if you have gnumach >= -2:1.3.99.dfsg.git20120219-1 already installed and running. Otherwise you will -get "vm_allocate_contiguous: (ipc/mig) bad request message ID" error messages. - - $ git clone git://git.sv.gnu.org/hurd/incubator.git -b dde hurd - - $ git clone git://git.sv.gnu.org/hurd/gnumach.git -b master-user_level_drivers - -Now comes the tricky part: -you need to find out -whether there is already a driver for your card -in the DDE source tree, -and otherwise get the driver code -from the official Linux source tree. - -For this, you have to find out which Linux driver -is responsible for your network card. -In this guide we will use the forcedeth driver -(for Nvidia nForce chipsets) as example. -We check whether there is already a `dde_forcedeth` directory -in the newly cloned `hurd_dde` tree. -If there isn't, we have to find and download -the right source file from Linux: - -Point a (JavaScript-capable) web browser at - - http://git.kernel.org/?p=linux/kernel/git/stable/linux-stable.git;a=tree;f=drivers/net;hb=refs/heads/linux-2.6.29.y - -(Note: you **have** to use some 2.6.29.y (whatever the y, prefer the latest), as -this is the version DDE is currently based on.) - -Find the right file to download -(forcedeth.c in this example); -then hit the "raw" link, -and save the resulting file (page) to /mnt/home/me/dde - -(If you happen to need one of the few drivers -that consist of more than one source file, -the process will be more complicated, -and can't be covered in this guide...) - - -Now everything should be in place, -so we can boot into Hurd to do the actual work. - -Once there, install the packages previously downloaded (again as root): - - $ apt-get build-dep hurd gnumach - - $ apt-get install git-core build-essential libpciaccess-dev libpcap0.8-dev hurd-dev zlib1g-dev - -Make sure we can build stuff as normal user: - - $ chown -R me ~me/dde - -Now you can log in with the normal user account to build stuff. - -Build a DDE-enabled Mach. Not needed if you have gnumach >= 2:1.3.99.dfsg.git20120219-1 already installed and running: - - $ cd ~me/dde/gnumach - - $ autoreconf -i && ./configure --enable-kdb --enable-device-drivers=none --enable-lpr --enable-floppy --enable-ide - - $ make - - -If not already present in DDE, -we need to prepare the driver for the network card (else, skip to "Having prepared the driver" below): - - $ cd ~me/dde/hurd - - $ cp -r dde_pcnet32 dde_forcedeth # using pcnet32 as template - - $ cd dde_forcedeth - - $ rm pcnet32.c # don't want the actual pcnet32 code here... - - $ cp ~me/dde/forcedeth.c . # ...but rather the forcedeth code - - $ sed -i 's/pcnet32/forcedeth/g' Makefile # adapt Makefile accordingly - - $ sed -i 's/pcnet32/forcedeth/g' .gitignore - - $ sed -i 's:-lhurd-slab:../libhurd-slab/libhurd-slab.a:' Makefile # fix up build system... XXX I guess this part is obsolete - - $ sed -i 's:-I/include:-I..:' Makefile # same - - $ nano forcedeth.c # Near the top of the file, there will be many #include lines. After the last one, add this: - - #include <ddekit/timer.h> - - $ cd .. - -Commit the new driver with git. -This will be helpful if we update the DDE code later; -as well as for creating a patch for later reuse -and/or upstream submission: - - $ git add dde_forcedeth - - $ git commit -a -m 'Add forcedeth driver' - - -Having prepared the driver, -we can now build the necessary Hurd and DDE bits: - - $ autoreconf -i && ./configure - - $ make libddekit libmachdev devnode pfinet # Hurd components. This is not needed if you have the Debian hurd-dev >= 20120219-1 package already installed. - - $ make -C libdde_linux26 # common DDE driver code -- uses a different Makefile system than the Hurd components! This is not needed if you have the Debian hurd-dev >= 20120219-2 package already installed. - -If you have the Debian hurd-dev >= 20120219-2 package already installed (and thus skipped the previous steps), run: - - $ make -C dde_forcedeth PKGDIR=/usr/share/libdde_linux26 # actual driver - -otherwise, after doing the previous steps, use: - - $ make -C dde_forcedeth # actual driver - -Install the various built components to their final destinations (as root). You only need to install dde_forcedeth if you are already running the Debian gnumach >= 2:1.3.99.dfsg.git20120219-1 and hurd-dev >= 20120219-1 packages: - - $ cd ~me/dde/ - - $ cp gnumach/gnumach /boot/gnumach_dde - - $ cp hurd/devnode/devnode hurd/pfinet/pfinet hurd/dde_forcedeth/dde_forcedeth /hurd - - -Now everything should be ready. -Before we can use the driver, -we have to boot with the newly built gnumach_dde -instead of the standard kernel. -(Adapt your grub configuration; -or manually edit the entry -in the boottime grub menu while testing.) - -Once there, set up the translators for the driver (as root): - - $ settrans -cap /dev/forcedeth /hurd/dde_forcedeth - -If that spews error "vm_allocate_contiguous: (ipc/mig) bad request message ID", -you are mixing things: either use the debian kernel and the dde-debian incubator -branch, or use your kernel built from the master-user_level_drivers branch and -the dde incubator branch, but don't make any mixture. - - $ settrans -cap /dev/eth0 /hurd/devnode -M /dev/forcedeth eth0 - -Finally, we can set up the actual network translator, -using something like: - - $ settrans -cap /servers/socket/2 /hurd/pfinet -i /dev/eth0 -a 192.168.1.194 -g 192.168.1.254 -m 255.255.255.0 - -For the exact syntax, -see the normal network setup documentation. -The only differences here -are the different location of the pfinet binary, -and the different syntax for the -i option. - -Check Arch/Hurd recipe on git://projects.archhurd.org/packages.git diff --git a/hurd/dde/guide/discussion.mdwn b/hurd/dde/guide/discussion.mdwn deleted file mode 100644 index a1cccad4..00000000 --- a/hurd/dde/guide/discussion.mdwn +++ /dev/null @@ -1,17 +0,0 @@ -[[!meta copyright="Copyright © 2011 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]]."]]"""]] - -ToDo: - -[[!tag open_issue_documentation]] - -* This guide is probably out of date in some points: the build system got reworked in the meantime I believe... -* The formatting here needs serious cleanup -* Might be nice to explain how to find out the right Linux driver, and in which source file it resides diff --git a/hurd/debugging.mdwn b/hurd/debugging.mdwn deleted file mode 100644 index d6e9c8b5..00000000 --- a/hurd/debugging.mdwn +++ /dev/null @@ -1,25 +0,0 @@ -[[!meta copyright="Copyright © 2007, 2008, 2010 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]]."]]"""]] - - -# Strategies - -* [[GDB]] -- the GNU debugger - * [[gdb/Backtrace]]s -* [[subhurd]] -- running another Hurd system in parallel -* [[rpctrace]] -- tracing [[RPC]]s - - -# About Specific Packages - - * [[glibc]] - * [[translator]]s - * [[trap_in_the_kernel]] diff --git a/hurd/debugging/gdb.mdwn b/hurd/debugging/gdb.mdwn deleted file mode 100644 index 1fede74f..00000000 --- a/hurd/debugging/gdb.mdwn +++ /dev/null @@ -1,15 +0,0 @@ -[[!meta copyright="Copyright © 2007, 2008 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]]."]]"""]] - -The [[GNU_debugger_*GDB*|/gdb]] works on GNU/Hurd -systems as it does on other system, but has some additional [hurd-specific -features](http://sourceware.org/gdb/current/onlinedocs/gdb_19.html#Hurd%20Native) -to offer, such as [[noninvasive_debugging]] (for avoiding [[deadlock]]s), for -example. diff --git a/hurd/debugging/gdb/noninvasive_debugging.mdwn b/hurd/debugging/gdb/noninvasive_debugging.mdwn deleted file mode 100644 index fa7a3c5b..00000000 --- a/hurd/debugging/gdb/noninvasive_debugging.mdwn +++ /dev/null @@ -1,16 +0,0 @@ -[[!meta copyright="Copyright © 2007, 2008 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]]."]]"""]] - -Sometimes using [[GDB]] on a [[system_server|translator]] can result in a [[deadlock]]. You -can however still use GDB by using the [`set -noninvasive`](http://sourceware.org/gdb/current/onlinedocs/gdb_19.html#Hurd%20Native) -option. This indicates to GDB to not stop the program but allows you to -nevertheless examine its state. Thus, you can get [[/gdb/backtrace]]s and values of -variables (and watch them change underneath you). diff --git a/hurd/debugging/glibc.mdwn b/hurd/debugging/glibc.mdwn deleted file mode 100644 index 028d4fe4..00000000 --- a/hurd/debugging/glibc.mdwn +++ /dev/null @@ -1,91 +0,0 @@ -[[!meta copyright="Copyright © 2007, 2008, 2010, 2011 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]]."]]"""]] - -Here are some hints about how to approach testing after nontrivial changes to -glibc have been done. - ---- - -First step is having the build of glibc succeed. This is actually more -difficult than one might expect as it involves (towards the end of the build -process -- unless you are cross-compiling, of course -- that the -newly created libraries and loader actually work: they'll be used to run the -`rpcgen` program. If that step doesn't succeed, it'll look similar to this: - - [...] - CPP='gcc -E -x c-header' [...]/build/elf/ld.so.1 --library-path [...] [...]/build/sunrpc/rpcgen [...] - Segmentation fault - ---- - -Unless cross-compiling, the next thing you'll probably want to do -is running the test suite, or parts of it. - -There is a list of [[known failures|open_issues/glibc]]. - ---- - -If you've been doing simple changes to glibc functions that end up in -`libc.so`, you may test them like this (like for a `strerror_l` implementation -in this case): - - $ LD_PRELOAD=./libc.so ./ld.so ./a.out 10 1073741928 de_DE.utf8 - 1073741928 (0x40000068): Computer bought the farm - 1073741928 (0x40000068): Der Computer hat den Bauernhof erworben - -You usually will only have luck using the new `libc.so` (from -`[glibc-build]/libc.so`) in combination together with the new `ld.so` (from -`[glibc-build]/elf/ld.so`): - - $ LD_PRELOAD=./libc.so ./a.out 10 1073741928 de_DE.utf8 - Killed - $ LD_PRELOAD=./libc.so /lib/ld.so ./a.out 10 1073741928 de_DE.utf8 - Killed - -Make sure static linking is working OK at all. Running the -`[glibc-build]/elf/sln` program (a stripped-down `ln` that is statically -linked) ought to test that. Also, static linking under various conditions will -already have been tested when running the test suite, especially in `elf/` and -`dlfcn/`. - -Make sure static linking with cthreads is working. If you can get an -`ext2fs.static` compiled and linked against the new glibc, that is good. - -[TODO]. - -Then debug its startup as a normal program on your working hurd. - - $ [...]/ext2fs.static --help - [...] - -Then try its full server startup. - - $ settrans -ca node [...]/ext2fs.static BACKING_STORE - $ ls -l node/ - [...] - -Make sure dynamic linking for servers is working. If you haven't broken the -ABI, you can just use an existing `/hurd/foobar` binary, started the way -glibc's `testrun.sh` does it. - -[TODO]: Is this the correct way to do that? - - $ settrans -ca node [glibc]/build/testrun.sh /hurd/ext2fs BACKING_STORE - $ cd node/ - [...] - ---- - -Test it in a [[subhurd]]. - ---- - -Test it on a real system. diff --git a/hurd/debugging/rpctrace.mdwn b/hurd/debugging/rpctrace.mdwn deleted file mode 100644 index fd24f081..00000000 --- a/hurd/debugging/rpctrace.mdwn +++ /dev/null @@ -1,95 +0,0 @@ -[[!meta copyright="Copyright © 2007, 2008, 2009, 2010, 2011 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]]."]]"""]] - -*rpctrace* is -- roughly -- an equivavlent to Linux's *strace* or Solaris' or -BSD's *truss*. It is used to trace [[remote_procedure_call|rpc]]s a process is -doing. - -See `rpctrace --help` about how to use it. - - -# Issues and Patches - -[[!tag open_issue_hurd]] - -* <http://savannah.gnu.org/patch/?2104> -- don't assert that local port names - are valid -* <http://savannah.gnu.org/bugs/?3939> -- `rpctrace`d program hangs when signal - that terminates or suspends it is sent - * <http://savannah.gnu.org/patch/?1633> -- terminated with `C-c` `rpctrace`d - programs hang -* <http://savannah.gnu.org/patch/?5580> -- more readable output - -* IRC, unknown channel, unknown date - - <youpi> how to rpctrace a translator ? - <youpi> ah, just settrans /usr/bin/rpctrace... - <youpi> hum, it hung, and killing it got a Mach panic (thread in unexpected - state) ... - -* IRC, unknown channel, unknown date - - <antrik> hm... for a funny effect, try running rpctrace on - /servers/socket/1, and then use dpkg... ;-) - -* IRC, unknown channel, unknown date. - - <youpi> the problem of rpctrace is that it's a man in the middle :) - <youpi> so in principle, by design authentication stuff shouldn't work - <antrik> I don't think the Hurd auth mechanism in any way prevents or tries to prevent man-in-the-middle... - <youpi> maybe, but just try, you'll see all kinds of issue as soon as you have authentication stuff - <youpi> and the basic reason is that being a man in the middle needs special care - <youpi> which rpctrace doesn't completely do - <antrik> it's a while since I have dived into rpctrace; but AIUI, it should work just fine if the proxying is done properly - <antrik> note that there is a number of known bugs in rpctrace, for which zhengda has sent patches... though I haven't reviewed all of them I think - <antrik> there are some nasty Mach operations that are really hard to proxy -- but I don't think the auth mechanism needs any of these... - -* IRC, freenode, #hurd, 2011-11-04 - - [[!taglink open_issue_documentation]] - - <mcsim> hello. Are there any documentation about understanding output - of rpctrace? - <braunr> no - <braunr> you should read the source code, best doc available - <braunr> if you have too many numbers and almost no symbolc names, - you're lacking rpc definition lists - <braunr> check that the gnumach-common package is installed, as it - provides the gnumach definitions - <braunr> (the glibc ones are almost always available) - <braunr> with those two, you should be fine for the beginning - <mcsim> gnumach-common is installed. And what is the name for glibc - package for gnumach definitions. - <mcsim> Also I'm using libraries specified by LD_LIBRARY_PATH. Does it - make influence on absence of symbolic names? - <braunr> no - <braunr> rpctrace --help - <braunr> see the --rpc-list=FILE option - <braunr> the default lists are in /usr/share/msgids/, with the .msgids - extension - <braunr> $ dpkg -S msgids - <braunr> gnumach-common: /usr/share/msgids/gnumach.msgids - <braunr> hurd: /usr/share/msgids/hurd.msgids - <braunr> ok, glibc has none, it's the hurd - <braunr> for more details about the output, read the source code - <braunr> it shouldn't be that hard to grasp - <mcsim> -I /usr/share/msgids helped - <mcsim> thank you - <braunr> it shouldn't have, it's the default path - <mcsim> but symbolic names appeared - <braunr> well, that's weird :) - <pinotree> braunr: the output of rpctrace --help should tell the - default dir for msgids - - -# See Also - -See also [[open_issues/librpci]]. diff --git a/hurd/debugging/subhurd.mdwn b/hurd/debugging/subhurd.mdwn deleted file mode 100644 index 7b5b07b1..00000000 --- a/hurd/debugging/subhurd.mdwn +++ /dev/null @@ -1,90 +0,0 @@ -# General Information - -* [[/hurd/subhurd]] - ---- - -# Debugging the Hurd Startup Process - -_one.full_ is the subhurd's root file system image and has been installed as -follows: [TODO] - -_Wx_ translates to terminal window _x_. - -W1 - - $ fsysopts one.full/ --readonly - $ sudo boot -I -d -s -D one.full/ one.full/boot/script.boot one.full.ext2 - Pausing. . . - -(In theory it shouldn't be neccessary to run the subhurd as user _root_, but in -practice [that doesn't work at the -moment](http://savannah.gnu.org/bugs/?17341).) - -W2 - - $ ps -Af - [...] - root 851 385 p4 0:00.01 boot -I -d -s -D one.full/ one.full/boot/script.boot one.full.ext2 - - 853 1 ? 0:00.00 ? - - 854 1 ? 0:00.00 ? - [...] - $ sudo gdb /var/tmp/one.full/hurd/ext2fs.static - [...] - (gdb) attach 853 - Attaching to program `/var/tmp/one.full/hurd/ext2fs.static', pid 853 - warning: Can't modify tracing state for pid 853: No signal thread - Can't fetch registers from thread 1: No such thread - -(The _boot_ program [could be modified to print out the -pids](http://savannah.gnu.org/bugs/?19254), so that one wouldn't have to fumble -with _ps_.) - -W3 - - $ sudo gdb /var/tmp/one.full/lib/ld.so.1 - [...] - (gdb) set solib-absolute-prefix /var/tmp/one.full - (gdb) attach 854 - Attaching to program `/var/tmp/one.full/lib/ld.so.1', pid 854 - warning: Can't modify tracing state for pid 854: No signal thread - Can't fetch registers from thread 1: No such thread - -W1 - - [<Enter>.] - /hurd/ext2fs.static --bootflags=-dsf --host-priv-port=38 --device-master-port=43 --exec-server-task=47 -Tdevice pseudo-root - /lib/ld.so.1 /hurd/exec - -Now that this step has been accomplished, you can set break points in GDB, etc. - -W2 - - (gdb) continue - Continuing. - warning: Can't wait for pid 853: No child processes - -W1 - - Hurd server bootstrap: ext2fs.static[pseudo-root] exec - -W3 - - (gdb) continue - Continuing. - warning: Can't wait for pid 854: No child processes - - Program received signal EXC_BAD_ACCESS, Could not access memory. - __mach_port_mod_refs (task=1, name=139802, right=1, delta=-1) - at /var/tmp/glibc-2_5-branch/build_--without-tls_--without-__thread/mach/RPC_mach_port_mod_refs.c:132 - 132 InP->Head.msgh_reply_port = __mig_get_reply_port(); - (gdb) x/i $pc - 0x168f2 <__mach_port_mod_refs+82>: call 0x151b0 <__mig_get_reply_port> - ---- - -Sources: - -* [[subhurd/running_a_subhurd]] -* <http://lists.gnu.org/archive/html/bug-hurd/2007-02/msg00030.html> -* [[Thomas_Schwinge|tschwinge]]'s mind diff --git a/hurd/debugging/translator.mdwn b/hurd/debugging/translator.mdwn deleted file mode 100644 index d439e17b..00000000 --- a/hurd/debugging/translator.mdwn +++ /dev/null @@ -1,15 +0,0 @@ -[[!meta copyright="Copyright © 2008 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]]."]]"""]] - -[[!inline -pages="hurd/debugging/translator/* and !*/discussion" -show=0 -feeds=no -actions=yes]] diff --git a/hurd/debugging/translator/capturing_stdout_and_stderr.mdwn b/hurd/debugging/translator/capturing_stdout_and_stderr.mdwn deleted file mode 100644 index b7cfc3c9..00000000 --- a/hurd/debugging/translator/capturing_stdout_and_stderr.mdwn +++ /dev/null @@ -1,37 +0,0 @@ -[[!meta copyright="Copyright © 2008, 2009, 2010 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]]."]]"""]] - -Sometimes it may already be helpful to capture a translator's `stdout` and -`stderr`, for example in this situation where [[translator/pfinet]] was -silently dying all the time, without any console output: - - $ sudo settrans -fgap ↩ - /servers/socket/2 ↩ - /bin/sh -c '/hurd/pfinet -i eth0 -a [...] > /tmp/stdout 2> /tmp/stderr' - $ [...] - $ cat /tmp/stdout - NET4: Linux TCP/IP 1.0 for NET4.0 - IP Protocols: ICMP, UDP, TCP - TCP: Hash tables configured (ehash 65536 bhash 65536) - $ cat /tmp/stderr - pfinet: ../../hurd.work/pfinet/ethernet.c:196: ethernet_xmit: Unexpected error: (os/device) invalid IO size. - -(Trying to run [[GDB]] in this case was of no help -- due to a bug in GDB -(supposedly) it wouldn't catch the fault.) - -Be made aware that both `stdout` and `stderr` will be block bufferend and no -longer line buffered when doing such a redirection, so you'll have to arrange -for appropriate `fflush`es on these, or force them to be line buffered again -using the appropriate glibc magic (`setvbuf`). Otherwise you'll see text in -the output files only if either glibc herself decides to flush (after some KiB -of text) the after translator exits. - -There is also a [[related open issue|open_issues/translator_stdout_stderr]]. diff --git a/hurd/debugging/translator/gdb.mdwn b/hurd/debugging/translator/gdb.mdwn deleted file mode 100644 index 82a50736..00000000 --- a/hurd/debugging/translator/gdb.mdwn +++ /dev/null @@ -1,53 +0,0 @@ -[[!meta copyright="Copyright © 2007, 2008 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]]."]]"""]] - -Say you want to try running file system server ([[`ext2fs`|translator/ext2fs]], -[[`jfs`|translator/jfs]], ...) against a modified version of -[[`libpager`|libpager]] and debug the latter one using [[debugging/GDB]]. - -Set the [[hurd/translator]] like this: - - $ settrans -fgap ↩ - jfs.img.i ↩ - /usr/bin/env ↩ - LD_LIBRARY_PATH=~tschwinge/tmp/hurd/hurd.ogi/build/libpager ↩ - "$PWD"/jfs.obj/jfs ↩ - "$PWD"/jfs.img - -Then, when starting GDB, start it like this (or use an equivalent method, of -course): - - $ LD_LIBRARY_PATH=~tschwinge/tmp/hurd/hurd.ogi/build/libpager ↩ - gdb ↩ - ~tschwinge/tmp/jfs/jfs.obj/jfs 15436 - GNU gdb 6.5-debian - [...] - Reading symbols from /lib/libdiskfs.so.0.3...Reading symbols from /lib/debug/lib/libdiskfs.so.0.3...done. - done. - Loaded symbols for /lib/libdiskfs.so.0.3 - Reading symbols from /devel4/tschwinge/tmp/hurd/hurd.ogi/build/libpager/libpager.so.0.3...done. - Loaded symbols for /devel4/tschwinge/tmp/hurd/hurd.ogi/build/libpager/libpager.so.0.3 - Reading symbols from /lib/libstore.so.0.3...Reading symbols from /lib/debug/lib/libstore.so.0.3...done. - done. - Loaded symbols for /lib/libstore.so.0.3 - [...] - (gdb) break pager_demuxer - Breakpoint 1 at 0x105c98d: file ../../libpager/demuxer.c, line 27. - [...] - Breakpoint 1, pager_demuxer (inp=0x12bded0, outp=0x12bbec0) at ../../libpager/demuxer.c:27 - 27 { - (gdb) list - 22 /* Demultiplex a single message directed at a pager port; INP is the - 23 message received; fill OUTP with the reply. */ - 24 int - 25 pager_demuxer (mach_msg_header_t *inp, - [...] - -Voilà. diff --git a/hurd/debugging/trap_in_the_kernel.mdwn b/hurd/debugging/trap_in_the_kernel.mdwn deleted file mode 100644 index 11f989e3..00000000 --- a/hurd/debugging/trap_in_the_kernel.mdwn +++ /dev/null @@ -1,27 +0,0 @@ -[[!meta copyright="Copyright © 2010 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 open_issue_gnumach open_issue_documentation]] - -IRC, #hurd, September 2010 - - <diegonc> when an application executes an out instruction in user mode, how is - kernel mode entered? general protection trap? - <youpi> some sort of trap, yes - <youpi> I'd rather think about illegal instruction, but yes - <diegonc> hm.. so to debug what happens inside that instruction I'll have to - break at the trap handler. Can I instruct kdb to stop only when a given task - caused the trap? - <youpi> applications usually don't trap, so what I usually do is to uncomment - the test at the end of user_trap() before the call to kdb_trap() - <diegonc> "if (debug_all_traps_with_kdb && .. " <- that test? - <youpi> yes - <youpi> so comment the test to make kdb_trap() called all the time - <diegonc> oh, I understand now :) diff --git a/hurd/documentation.mdwn b/hurd/documentation.mdwn deleted file mode 100644 index 48fd017c..00000000 --- a/hurd/documentation.mdwn +++ /dev/null @@ -1,73 +0,0 @@ -[[!meta copyright="Copyright © 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, -2009, 2011 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]]."]]"""]] - -# Introductory Material - - * [[What_Is_the_GNU_Hurd]] - - * [[Advantages]] - - * [[FAQ]] - - * [[*The_Hurd_and_Linux*|/hurd-and-linux]], a comment by Richard Stallman. - - * [[*Towards_a_New_Strategy_of_OS_Design*|/hurd-paper]], an architectural - overview by Thomas Bushnell, BSG. - - * [[*The_Hurd*|/hurd-talk]], a presentation by Marcus Brinkmann. - - * The *[[translator_primer]]*. - - * A document about *[[translators]]* by Marcus Brinkmann. - - * [[*A_Critique_of_the_GNU_Hurd_Multi-server_Operating_System*|critique]], an - analysis of the GNU Hurd on GNU Mach system, written by Neal Walfield and - Marcus Brinkmann. - -## External - - * [*Examining the Legendary HURD - Kernel*](http://www.informit.com/articles/printerfriendly.aspx?p=1180992), - an article by David Chisnall. - - Also covers a bit of GNU's and the Hurd's history, fundamental techniques - applied, comparisions to other systems. - - -# Development - - * *[[The_GNU_Hurd_Reference_Manual|reference_manual]]*. - - * The *[[Hurd_Hacking_Guide]]*, an introduction to GNU Hurd and Mach - programming by Wolfgang Jährling. - - * [*Manually Bootstrapping a - Translator*](http://walfield.org/pub/people/neal/papers/hurd-misc/manual-bootstrap.txt), - a text by Neal Walfield about how to *manually connect the translator to - the filesystem*. - - * [[*The_Authentication_Server*|auth]], the transcript of a talk about the - details of the authentication mechanisms in the Hurd by Wolfgang Jährling. - - * [*The Mach Paging Interface as Used by the - Hurd*](http://lists.gnu.org/archive/html/l4-hurd/2002-06/msg00001.html), a - text by Neal Walfield. - - * In the - [[Position_paper_*Improving_Usability_via_Access_Decomposition_and_Policy*|ng/position_paper]] - Neal Walfield and Marcus Brinkmann give an overview about how a future, - subsequent system may be architected. - - * [*Generalizing mobility for the Hurd*](http://users.student.lth.se/cs07fh9/2009-hammar-hurd-mobility.pdf), - a thesis written by Carl Fredrik Hammar, - investigates the mobility aspect of stores - and how it can be generalized and used for other applications. - The background chapter may be of interest to new developers. diff --git a/hurd/documentation/auth.html b/hurd/documentation/auth.html deleted file mode 100644 index 27f9ca2c..00000000 --- a/hurd/documentation/auth.html +++ /dev/null @@ -1,168 +0,0 @@ -[[!meta copyright="Copyright © 2002, 2008 Free Software Foundation, Inc."]] - -[[!meta license="Verbatim copying and distribution of this entire article is -permitted in any medium, provided this notice is preserved."]] - -[[!meta title="The Authentication Server, the transcript of a talk about the -details of the authentication mechanisms in the Hurd by Wolfgang Jährling"]] - -<H3><A NAME="contents">Table of Contents</A></H3> -<UL> - <LI><A HREF="#intro" NAME="TOCintro">Introduction</A> - <LI><A HREF="#ids" NAME="TOCids">How IDs are represented and used</A> - <LI><A HREF="#posix" NAME="TOCposix">POSIX and beyond</A> - <LI><A HREF="#servers" NAME="TOCservers">Related servers</A> -</UL> -<HR> - -<H3><A HREF="#TOCintro" NAME="intro">Introduction</A></H3> -<P> -In this text, which mostly resembles the talk I gave at Libre Software -Meeting 2002 in Bordeaux, I will describe what the auth server does, -why it is so important and which cool things you can do with it, both -on the programming and the user side. I will also describe related -programs like the password and fakeauth servers. Note that this text -is targeted at programmers who want to understand the auth mechanism -in detail and are already familiar with concepts like Remote Procedure -Calls (RPCs) as well as the way User- and Group-IDs are used in the -POSIX world. - -<P> -The auth server is a very small server, therefore it gives a useful -example when you want to learn how a server typically looks like. One -reason why it is so small is that the auth interface, which it -implements, consists of only four RPCs. You can find the interface in -hurd/hurd/auth.defs and the server itself in hurd/auth/. - -<H3><A HREF="#TOCids" NAME="ids">How IDs are represented and used</A></H3> -<P> -Each process holds (usually) one port to auth (an auth_t in C source, -which actually is a mach_port_t, of course). The purpose of auth is -to manage User-IDs and Group-IDs, which is the reason why users often -will have no choice but to make use of the systems main auth server, -which does not listen on /servers/auth; instead you inherit a port to -auth from your parent process. Each such port is (internally in the -auth server) associated with a set of effective User- and Group-IDs as -well as a set of available User- and Group-IDs. So we have four sets -of IDs in total. The available IDs can be turned into corresponding -effective IDs at any time. - -<P> -When you send an auth_getids RPC on the port you hold, you will get -information about which IDs are associated with it, so you can figure -out which permissions you have. But how will a server know that you -have these permissions and therefore know which actions (e.g. writing -into file "foo") it is supposed to do on your behalf and which not? -The establishing of a trusted connection to a server works as follows: - -<P><OL> -<LI>A user wants a server to know its IDs</LI> -<LI>The user requests a reauthentication from the server</LI> -<LI>In this request the user will include a port</LI> -<LI>Both will hand this port to auth</LI> -<LI>The user uses auth_user_authenticate</LI> -<LI>The server uses auth_server_authenticate</LI> -<LI>The server also passes a new port to auth</LI> -<LI>auth matches these two requests</LI> -<LI>The user gets the new port from auth</LI> -<LI>The server learns about the IDs of the user</LI> -<LI>The user uses the new port for further communication</LI> -</OL> - -<P> -We have different RPCs for users and servers because what we pass and -what we get back differs for them: Users get a port, and servers get -the sets of IDs, and have to specify the port which the user will get. - -<P> -It is interesting to note that auth can match the requests by -comparing two integers, because when you get the same port from two -people, you will have the same mach_port_t (which is nothing but an -integer). - -<P> -All of this of course only works if they use the same auth server, -which is why I said often you have no choice other than to use the -one main auth server. But this is no serious restriction, as the auth server has -almost no functionality one might want to replace. In fact, there is -one replacement for the default auth implementation, but more on that -later. - -<H3><A HREF="#TOCposix" NAME="posix">POSIX and beyond</A></H3> -<P> -Before we examine what is possible with this design, let us take a -short look at how the POSIX semantics are implemented on top of this -design. When a program that comes out of POSIX-land asks for its own -effective User- or Group-ID, we will tell it about the first of the -effective IDs. In the same sense, the POSIX real User- or Group-ID is -the first available ID and the POSIX saved User- or Group-ID is the -second available ID, which is why you have the same ID two times in -the available IDs when you log into your GNU/Hurd machine (you can -figure out which IDs you have with the program "ids", that basically -just does an auth_getauth RPC). When you lack one of those IDs (for -example when you have no effective Group-ID), a POSIX program asking -for this particular information will get "-1" as the ID. - -<P> -But as you can imagine, we can do more than what POSIX specifies. Fox -example, we can modify our permissions. This is always done with the -auth_makeauth RPC. In this RPC, you specify the IDs that should be -associated with the new port. All of these IDs must be associated -with either the port where the RPC is sent to or one of the additional -ports you can specify; an exception is the superuser root, which is -allowed to creat ports that are associated with arbitrary IDs. -Hereby you can convert available into effective IDs. - -<P> -This opens the door to a bunch of nice features. For example, we have -the addauth program in the Hurd, which makes it possible to add an ID -to either a single process or a group of processes if you hold the ID or know the -appropriate password, and there is a corresponding rmauth program that -removes an ID. So when you are working on your computer with GNU -Emacs and want to edit a system configuration file, you switch to -Emacs' shell-mode, do an "addauth root", enter the password, edit the -file, and when you are done switch back to shell-mode and do "rmauth -root". These programs have some interesting options, and there are -various other programs, for setting the complete list of IDs (setauth) -and so on. - -<H3><A HREF="#TOCservers" NAME="servers">Related servers</A></H3> -<P> -Finally, I want to explain two servers which are related to auth. The -first is the password server, which listens on /servers/password. If -you pass to it a User- or Group-ID and the correct password for it, it -will return a port to auth to you which is associated with the ID you -passed to it. It can create such a port because it is running as -root. So let us assume you are an FTP server process. You will start -as root, because you want to use port 21 (in this case, "port" does -not refer to a mach_port_t, of course). But then, you can drop all -your permissions so that you run without any ID. This makes it far -less dangerous to communicate with yet unknown users over the -network. But when someone now hands a username and password to you, -you can ask the password server for a new auth port. The password -server will check the data you pass to it, for example by looking into -/etc/shadow, and if it is valid, it will ask the auth server for a new -port. It receives this port from auth and then passes it on to you. -So you have raised your permissions. (And for the very curious: Yes, -we are well aware of the differences between this concept and -capabilities; and we also do have some kinds of capabilities in -various parts of the Hurd.) - -<P> -My second example is the fakeauth server. It also implements the auth -protocol. It is the part of the fakeroot implementation that gives a -process the impression that it runs as root, even if it doesn't. So -when the process asks fakeauth about its own IDs, fakeauth will tell -the process that it runs as root. But when the process wants to make -use of the authentication protocol described earlier in this text, -fakeauth will forward the request to its own auth server, which will -usually be the systems main auth server, which will then be able to -match the auth_*_authenticate requests. So what fakeauth does is -acting as a proxy auth server that gives someone the impression to run -as root, while not modifying what that one is allowed to do. - -<P> -At this point, I have said at least most of what can be said about the -auth server and the protocol it implements, so I will finish by saying -that it might be an interesting task (for you) to modify some existing -software to take advantage of the features I described here. diff --git a/hurd/documentation/hurd-and-linux.mdwn b/hurd/documentation/hurd-and-linux.mdwn deleted file mode 100644 index 678ea8da..00000000 --- a/hurd/documentation/hurd-and-linux.mdwn +++ /dev/null @@ -1,11 +0,0 @@ -[[!meta copyright="Copyright © 2009 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]]."]]"""]] - -[[!meta redir=/hurd-and-linux]] diff --git a/hurd/documentation/hurd-paper.mdwn b/hurd/documentation/hurd-paper.mdwn deleted file mode 100644 index 06c23662..00000000 --- a/hurd/documentation/hurd-paper.mdwn +++ /dev/null @@ -1,11 +0,0 @@ -[[!meta copyright="Copyright © 2009 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]]."]]"""]] - -[[!meta redir=/hurd-paper]] diff --git a/hurd/documentation/hurd-talk.mdwn b/hurd/documentation/hurd-talk.mdwn deleted file mode 100644 index 83dcaf74..00000000 --- a/hurd/documentation/hurd-talk.mdwn +++ /dev/null @@ -1,11 +0,0 @@ -[[!meta copyright="Copyright © 2009 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]]."]]"""]] - -[[!meta redir=/hurd-talk]] diff --git a/hurd/documentation/translator_primer.mdwn b/hurd/documentation/translator_primer.mdwn deleted file mode 100644 index e5c8c160..00000000 --- a/hurd/documentation/translator_primer.mdwn +++ /dev/null @@ -1,85 +0,0 @@ -[[!meta copyright="Copyright © 2011 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]]."]]"""]] - -# Small Examples on Using Translators - -The [[concept|concepts]] of user-space servers, [[translator]]s, is a very -powerful one. Here is an introductionary text. - - -## Intro - -The Hurd has some unique capabilities, and we created this simple image -to enable you to easily try three of them: - -* The simplest of translators: Hello World! -* Transparent FTP -* Mount a remote ISO file - -### Hello World - -To try out the simplest of translators, you can go the following simple steps: - - $ touch hello - $ cat hello - $ settrans hello /hurd/hello - $ cat hello - "Hello World!" - $ settrans -g hello - $ cat hello - -What you do with these steps is first verifying that the file "hello" is empty. - -Then you setup the translator /hurd/hello in the file/node hello. - -After that you check the contents of the file, and the translator returns "Hello World!". - -To finish it, -you remove the translator from the file "hello" -(and tell any active running instances to go away) -via "settrans -g hello". -Having done that, verify that now the file is empty again. - -### Transparent FTP - -We already setup a a transparent FTP translator for you at /ftp: - -With it you can easily access public FTP via the file system, for example the one from the GNU project: - - $ ls /ftp://ftp.gnu.org/ - -But you can also do this very easily yourself: - - $ # Setup the translator on the node ftp: - $ settrans -c ftp: /hurd/hostmux /hurd/ftpfs / - -and you can access FTP sites via the pseudo-directory ftp:, for example with - - $ ls ftp://ftp.gnu.org/ - -What you do here is setting up the translator /hurd/hostmux on ftp: and passing it the translator /hurd/ftpfs to use for resolving accesses as well as / as additional path component. - -### ISO file mount - -Now that we can access ftp.gnu.org transparently, let's mount a remote ISO file: - - $ settrans -c mnt /hurd/iso9660fs ftp://ftp.gnu.org/old-gnu/gnu-f2/hurd-F2-main.iso - $ ls mnt/ - -It is interesting to note that since the ISO9660 format is indexed, ftpfs does not have to download the whole ISO file, it merely fetches what iso9660fs requests. - - -These were only three basic usages of translators on the Hurd. We're sure you'll quickly see many other ways to use this. - -As a last comment: You can setup a translator on any node you have access to, so you can for example mount any filesystems as normal user. - -You might currently be logged in as root, but you could just as well do the same as normal user. - -Why don't you try it out? diff --git a/hurd/documentation/translators.html b/hurd/documentation/translators.html deleted file mode 100644 index 8ae2c180..00000000 --- a/hurd/documentation/translators.html +++ /dev/null @@ -1,236 +0,0 @@ -[[!meta copyright="Copyright © 1998, 1999, 2007, 2008 Free Software Foundation, -Inc."]] - -[[!meta license="Verbatim copying and distribution of this entire article is -permitted in any medium, provided this notice is preserved."]] - -[[!meta title="Translators"]] - -By Marcus Brinkmann. - -<ul> -<li><a href="#concept" name="TOC_concept">Concept</a></li> -<li><a href="#examples" name="TOC_examples">Examples</a></li> -<li><a href="#actpas" name="TOC_actpas">Passive Translators, Active Translators</a></li> -<li><a href="#manage" name="TOC_manage">Managing Translators</a></li> -</ul> -<h3><a href="#TOC_concept" name="concept">Concept</a></h3> -<p> -Before we take a closer look at translators, let us consider regular -filesystems. A filesystem is store for a hierarchical tree of directories -and files. You access directories and files by a special character string, -the path. Furthermore, there are symbolic links to refer to one file at -several places in the tree, there are hard links to give one and the same -file several names. There are also special device files for communication -with the hardware device drivers of the kernel, and there are mount points -to include other stores in the directory tree. Then there are obscure -objects like fifos and hard links.</p> -<p> -Although these objects are very different, they share some common -properties, for example, they have all an owner and a group associated with -them as well as access rights (permissions). This information is written in -inodes. This is a actually a further commonality: Every object has exactly -one inode associated with it (hard links are somewhat special as they share -one and the same inode). Sometimes, the inode has further information -stored in it. For example, the inode can contain the target of a symbolic -link.</p> -<p> -However, these commonalities are usually not exploited in the -implementations, despite the common programming interface to them. All -inodes can be accessed through the standard POSIX calls, for example -<code>read()</code> and <code>write()</code>. For example, to add a new -object type (for example a new link type) to a common monolithic unix -kernel, you would need to modify the code for each filesystem -seperately.</p> -<p> -In the Hurd, things work differently. Although in the Hurd a special -filesystem server can exploit special properties of standard object types -like links (in the ext2 filesystem with fast links, for example), it has a -general interface to add such features without modifying existing code.</p> -<p> -The trick is to allow a program to be inserted between the actual content of -a file and the user accessing this file. Such a program is called a -translator, because it is able to process the incoming requests in many -different ways. In other words, a translator is a Hurd server which provides -the basic filesystem interface.</p> -<p> -Translators have very interesting properties. From the kernels point of -view, they are just another user process. This means, translators can be run -by any user. You don't need root priviligies to install or modify a -translator, you only need the access rights for the underlying inode the -translator is attached to. Many translators don't require an actual file to -operate, they can provide information by their own means. This is why -the information about translators is stored in the inode.</p> -<p> -Translators are responsible to serve all file system operations that involve -the inode they are attached to. Because they are not restricted to the usual -set of objects (device file, link etc), they are free to return anything -that makes sense to the programmer. One could imagine a translator that -behaves like a directory when accessed by <code>cd</code> or -<code>ls</code> and at the same time behaves like a file when accessed by -<code>cat</code>.</p> -<h3><a href="#TOC_examples" name="examples">Examples</a></h3> -<h4>Mount Points</h4> -<p> -A mount point can be seen as an inode that has a special translator attached -to it. Its purpose would be to translate filesystem operations on the mount -point in filesystem operations on another store, let's say, another -partition.</p> -<p> -Indeed, this is how filesystems are implemented under the Hurd. A -filesystem is a translator. This translator takes a store as its argument, -and is able to serve all filesystem operations transparently.</p> -<h4>Device Files</h4> -<p> -There are many different device files, and in systems with a monolithical -kernel, they are all provided by the kernel itself. In the Hurd, all device -files are provided by translators. One translator can provide support for -many similar device files, for example all hard disk partitions. This way, -the number of actual translators needed is quite small. However, note that -for each device file accessed, a seperate translator task is started. -Because the Hurd is heavily multi threaded, this is very cheap.</p> -<p> -When hardware is involved, a translator usually starts to communicate with -the kernel to get the data from the hardware. However, if no hardware access -is necessary, the kernel does not need to be involved. For example, -<code>/dev/zero</code> does not require hardware access, and can therefore -be implemented completely in user space.</p> -<h4>Symbolic Links</h4> -<p> -A symbolic link can be seen as a translator. Accesing the symbolic link -would start up the translator, which would forward the request to the -filesystem that contains the file the link points to.</p> -<p> -However, for better performance, filesystems that have native support -for symbolic links can take advantage of this feature and implement -symbolic links differently. Internally, accessing a symbolic link would not -start a new translator process. However, to the user, it would still look -as if a passive translator is involved (see below for an explanation what a -passsive translator is).</p> -<p> -Because the Hurd ships with a symlink translator, any filesystem server that -provides support for translators automatically has support for symlinks (and -firmlinks, and device files etc)! This means, you can get a working -filesystem very fast, and add native support for symlinks and other features -later.</p> -<h3><a href="#TOC_actpas" name="actpas">Passive Translators, Active Translators</a></h3> -<p> -There are two types of translators, passive and active. They are really -completely different things, so don't mix them up, but they have a close -relation to each other.</p> -<h4>Active Translators</h4> -<p> -An active translator is a running translator process, as introduced above. -You can set and remove active translators using the -<code>settrans -a</code></a> -command. The <code>-a</code> option is necessary to tell -<code>settrans</code> that you want to modify the active translator.</p> -<p> -The <code>settrans</code> command takes three kind of arguments. First, you -can set options for the <code>settrans</code> command itself, like -<code>-a</code> to modify the active translator. Then you set the inode you -want to modify. Remember that a translator is always associated with an -inode in the directory hierarchy. You can only modify one inode at a time. -If you do not specify any more arguments, <code>settrans</code> will try to -remove an existing translator. How hard it tries depends on the force -options you specify (if the translator is in use by any process, you will -get "device or resource busy" error message unless you force it to go away).</p> -<p> -But if you specify further arguments, it will be interpreted as a command -line to run the translator. This means, the next argument is the filename of -the translator executable. Further arguments are options to the translator, -and not to the <code>settrans</code> command.</p> -<p> -For example, to mount an ext2fs partition, you can run -<code>settrans -a -c /mnt /hurd/ext2fs /dev/hd2s5</code>. The -<code>-c</code> option will create the mount point for you if it doesn't -exist already. This does not need to be a directory, by the way. To unmount, -you would try <code>settrans -a /mnt</code>.</p> -<h4>Passive Translators</h4> -<p> -A passive translator is set and modified with the same syntax as the active -translator (just leave away the <code>-a</code>, so everything said above is -true for passive translators, too. However, there is a difference: passive -translators are not yet started.</p> -<p> -This makes sense, because this is what you usually want. You don't want the -partition mounted unless you really access files on this partition. You -don't want to bring up the network unless there is some traffic and so -on.</p> -<p> -Instead, the first time the passive translator is accessed, it is -automatically read out of the inode and an active translator is started on -top of it using the command line that was stored in the inode. This is -similar to the Linux automounter functionality. However, it does not come as -an additional bonus that you have to set up manually, but an integral part of -the system. So, setting passive translators defers starting the translator -task until you really need it. By the way, if the active translator dies for -some reason, the next time the inode is accessed the translator is -restarted.</p> -<p> -There is a further difference: active translators can die or get lost. As -soon as the active translator process is killed (for example, because you -reboot the machine) it is lost forever. Passive translators are not transient -and stay in the inode during reboots until you modify them with the -<code>settrans</code> program or delete the inodes they are attached to. -This means, you don't need to maintain a configuration file with your mount -points.</p> -<p> -One last point: Even if you have set a passive translator, you can still -set a different active translator. Only if the translator is automatically -started because there was no active translator the time the inode was -accessed the passive translator is considered.</p> -<h3><a href="#TOC_manage" name="manage">Managing Translators</a></h3> -<p> -As mentioned above, you can use -<code>settrans</code></a> -to set and alter passive and active translators. There are a lot of options -to change the behaviour of <code>settrans</code> in case something goes -wrong, and to conditionalize its action. Here are some common usages:</p> -<ul><li><code>settrans -c /mnt /hurd/ext2fs /dev/hd2s5</code> mounts a -partition, the translator will stay across reboots.</li> -<li><code>settrans -a /mnt /hurd/ext2fs ~/dummy.fs</code> mounts a -filesystem inside a data file, the translator will go away if it dies.</li> -<li><code>settrans -fg /nfs-data</code> forces a translator to go away.</li> -</ul> -<p> -You can use the <code>showtrans</code></a> -command to see if a translator is attached to an inode. This will only show -you the passive translator though.</p> -<p> -You can change the options of an active (filesystem) translator with -<code>fsysopts</code> without actually restarting it. This is very -convenient. For example, you can do what is called "remounting a -partition read-only" under Linux simply by running <code>fsysopts -/mntpoint --readonly</code>. The running active translator -will change its behaviour according to your request if possible. -<code>fsysopts /mntpoint</code> without a parameter shows you the current -settings.</p> -<h4>Examples</h4> -<p> -I recommend that you start by reading the <code>/bin/mount</code> command, -it is only a small script. Because setting filesystem translators is -similar to mounting partitions, you can easily grasp the concept this way. -Make a file system image with <code>dd if=/dev/zero of=dummy.fs bs=1024k -count=8; mke2fs dummy.fs</code> and "mount" it with <code>settrans -c dummy -/hurd/ext2fs `pwd`/dummy.fs</code>. Note that the translator is not started -yet, no new <code>ext2fs</code> process is running (verify with <code>ps -Aux</code>). Check that everything is correct using <code>showtrans</code></p> -<p> -Now type <code>ls dummy</code> and you will notice the short delay that -occurs while the translator is started. After that, there will be no more -delays accessing dummy. Under Linux, one would say that you automounted a -loop file system. Check with <code>ps Aux</code> that there is an <code>ext2fs -dummy</code> process up and running now. Now put some files into the new -directory. Try to make the filesystem read-only with <code>fsysopts</code>. -Note how further write attempts fail now. Try to kill the active translator -with <code>settrans -g</code>.</p> -<p> -You should have some understanding of what is going on now. Now remember -that this was only <em>one</em> special server, the Hurd ext2fs server. -There are many more server in the <code>hurd</code> directory. Some of them -are for filesystems. Some are needed for file system features like links. -Some are needed for device files. Some are useful for networking. Imagine -"mounting" an FTP Server with <code>settrans</code> and downloading files -simply with the standard <code>cp</code> command. Or editing your web sites -with <code>emacs /ftp/homepage.my.server.org/index.html</code>!</p> diff --git a/hurd/faq.mdwn b/hurd/faq.mdwn deleted file mode 100644 index 413aaf3f..00000000 --- a/hurd/faq.mdwn +++ /dev/null @@ -1,20 +0,0 @@ -[[!meta copyright="Copyright © 2008, 2010 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]]."]]"""]] - -[[!meta title="GNU Hurd FAQ"]] - -See also other [[/FAQ]]. - -[[!inline -pages="hurd/faq/* and !*/discussion" -show=0 -feeds=no -actions=yes -rootpage="hurd/faq" postformtext="Add a new item titled:"]] diff --git a/hurd/faq/how_about_drivers.mdwn b/hurd/faq/how_about_drivers.mdwn deleted file mode 100644 index 0556fd28..00000000 --- a/hurd/faq/how_about_drivers.mdwn +++ /dev/null @@ -1,17 +0,0 @@ -[[!meta copyright="Copyright © 2009 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]]."]]"""]] - -[[!meta title="What drivers does GNU/Hurd have?"]] - -Currently, Mach integrates drivers from Linux 2.0 through some glue code. As -it's very old, that limits hardware support a lot, of course. We are however -working on using the DDE toolkit to run linux drivers in userland processes, -which provides both long-term support for new hardware and safety against driver -bugs. diff --git a/hurd/faq/how_to_switch_microkernels.mdwn b/hurd/faq/how_to_switch_microkernels.mdwn deleted file mode 100644 index 21f7a371..00000000 --- a/hurd/faq/how_to_switch_microkernels.mdwn +++ /dev/null @@ -1,15 +0,0 @@ -[[!meta copyright="Copyright © 2009, 2010 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]]."]]"""]] - -[[!meta title="How difficult would it be to switch to another microkernel?"]] - -One would have to reimplement the `mach/` and `sysdeps/mach/` parts of -[[glibc]] and [[libpthread]]. Quite a few other Hurd tools also assume a -[[microkernel/Mach]] kernel and would have to be adapted or rewritten. diff --git a/hurd/faq/off.mdwn b/hurd/faq/off.mdwn deleted file mode 100644 index 64009101..00000000 --- a/hurd/faq/off.mdwn +++ /dev/null @@ -1,25 +0,0 @@ -[[!meta copyright="Copyright © 2010 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]]."]]"""]] - -[[!meta title="How am I supposed to shut my Hurd system down?"]] - -The GNU/Hurd does not use SYSV runlevels, so commands like - - $ shutdown -h now - -will not work. Simply use the equivalent shortcut - - $ halt - -which is provided natively on GNU/Hurd, instead of from SYSV runlevels. - -Note that due to a bug, -we [[recommend you run syncfs|open_issues/sync_but_still_unclean_filesystem]] -prior to issuing the `halt` command. diff --git a/hurd/faq/old-stuff.mdwn b/hurd/faq/old-stuff.mdwn deleted file mode 100644 index df2058c0..00000000 --- a/hurd/faq/old-stuff.mdwn +++ /dev/null @@ -1,45 +0,0 @@ -In addition to the [general FAQ](http://www.gnu.org/software/hurd/docs.html#TOCfaq) there are the following typical newbie questions. (There is an [updated version](http://tuxou.ouvaton.org/hurd/) which is not official yet.) - -If you still have problems, do not hesitate to make use of the [[mailing lists]] or the [[IRC]]. - -* **_You say GNU, don't you mean GNU/Hurd?_** - * Yes and no. GNU refers to the system as a whole, while GNU/Hurd is more specific, saying that it is the GNU system running on the Hurd -- to differentiate it from the GNU system running on Linux, GNU/Linux. Also see [[GNU/GnuNames]] - -* **_What editor can I use?_** - * `nano` is the default editor on a fresh install, not `ae`, but a lot of editors are available. - -* **_Why can't I get the answers I need from Hurd hackers?_** - * This [document](http://www.catb.org/~esr/faqs/smart-questions.html) may help you understand some developers attitudes and social norms. - -* **_Where are the virtual consoles I use when running Linux?_** - * You need to [use screen](http://www.gnu.org/software/hurd/faq.en.html#q4-6) instead, also available when running GNU/Linux. - * The [new console](http://lists.debian.org/debian-hurd/2002/debian-hurd-200209/msg00054.html) by Marcus Brinkmann could also be used. It supports the Alt-Fn keys for switching like in Linux. NOTE: that message has an error in the configuration steps, it says `/dev/vts` when it means `/dev/vcs`. A more up-to-date howto is [[console]]. - -* **_What is a translator?_** - * The official FAQ [answers](http://www.gnu.org/software/hurd/faq.en.html#q4-2) this question by a reference to [hurd-doc-translator](http://www.debian.org/ports/hurd/hurd-doc-translator). - -* **_Where's the sauce?_** - * It's on [Savannah](http://savannah.gnu.org). See also the [GNU Development Resources](http://www.gnu.org/software/devel.html), for more information. - -* **_What is this "libio" stuff?_** - * There was an ABI change for glibc0.3. It's recommended you reinstall your GNU/Hurd system if you run a system installed before the summer of 2002. This is a similar cause for the various Linux distributions who changed from libc5 to libc6 or glibc2 around 1998. - -* **_What is GNU Mach vs. oskit-mach?_** - * These are different versions of the Mach microkernel that supports the Hurd that runs on top of it. For more info, see [[Mach]] - -* **_What software is available for GNU?_** - * Most (2/3) packages from [Debian](http://www.debian.org/) [GNU/Linux](http://www.gnu.org/gnu/linux-and-gnu.html) which aren't linux-specific ([Packages That Won't Be Ported](http://www.debian.org/ports/hurd/hurd-devel-debian)) are expected to work on GNU/Hurd too. See the database in <http://packages.debian.org/>. Notably, [GNOME](http://www.gnome.org), and [KDE](http://www.kde.org) work. See the [[porting/guidelines]] document for some common build problems and their solutions. - * If you can't fetch a package with "apt-get install ", try building it from source: "apt-get source && cd <package\_dir> && debian/rules binary". - * As of April 2010, 65% of Debian packages have been ported on the Hurd. Of course, bug testing is welcome. - -* **_How do I initialize a serial console on the Hurd?_** - * You can try out the Serial Howto at <http://www.nongnu.org/thug/serial-howto.txt> - * For a real serial console at boot time you need to rebuild your GNUmach 1.x kernel. For more info see the Utah release notes at [http://www.cs.utah.edu/flux/mach4-i386/html/mach4-UK22.html#serial\_console](http://www.cs.utah.edu/flux/mach4-i386/html/mach4-UK22.html#serial_console) - -* **_Will GNU work in Vmware?_** - * It's highly recommended and easier to get a full image for qemu. See [[Distrib]] - * It didn't use to, [Hurd bootstrap fails](http://lists.debian.org/debian-hurd/2002/debian-hurd-200207/msg00069.html). Vmware is not [free software](http://www.gnu.org/philosophy/free-sw.html) and it is [[Distrib/VmWare]]. We recommend to use [free](http://www.gnu.org/philosophy/free-sw.html) alternatives, like [[Distrib/BochsEmulator]]. - * A faster, more widespread and [free](http://www.gnu.org/philosophy/free-sw.html) recent alternative is [QEMU][[running/QEMU]]. You can find more informations on [[running/QEMU]]. - * If someone prefers using VMWare: - * It works with VMWare Workstation 4.0.5 build-6030. - * Running Debian GNU/HURD in VMWare works for me -- [[Main/MichaelAblassmeier]] - 03 Mar 2004 diff --git a/hurd/faq/old_faq.txt b/hurd/faq/old_faq.txt deleted file mode 100644 index 617d7661..00000000 --- a/hurd/faq/old_faq.txt +++ /dev/null @@ -1,562 +0,0 @@ -[[!meta copyright="Copyright © 2001, 2002, 2003, 2004, 2005, 2008 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]]."]]"""]] - - Frequently Asked Questions about the GNU Hurd - -This document attempts to answer the questions that most often plague -users when they are talking about, installing, using, compiling and -developing the GNU Hurd as well as its binary distribution Debian -GNU/Hurd. Be sure to read this before asking for help. - -The GNU Hurd is under active development and a stable version has not -yet been released. Be aware that: there is a lot of work yet to be -completed; you will find bugs; your system will crash. That said, there -is a lot of room for contributions at all levels: development of the -Hurd and Mach proper, porting applications, writing documentation and, -most importantly, user feedback. - -Should you have a question that is not answered by this document and you -feel that it should be, submit it and, if possible, with an answer. - -Each section is copyright its respective author(s). Permission is -granted to copy, distribute and/or modify this document under the terms -of the GNU Free Documentation License, Version 1.1 or any later version -published by the Free Software Foundation; with no Invariant Sections, -with no Front-Cover Texts and with no Back-Cover Texts. A copy of the -license is included in the file COPYRIGHT. - - Neal H Walfield - neal@cs.uml.edu - -? Installation - -?? What partition type should I use for my GNU/Hurd partitions? - -{MB} You should use an ext2 filesystem. Alternatively, you may use BSD -style ufs. The partition type number for ext2fs is 0x83 (this is the -same as in Linux), not 0x63 (GNU HURD). Thomas explains why 0x63 is the -wrong choice: - - One day we may have a new filesystem format, which would - probably be called the GNU Hurd filesystem format, and might - well use that partition code. - -Regardless, as Roland points out, it is always an error to use that code -for an ext2fs partition, - -?? How do I name partitions? - -{MB,NHW} I knew you would ask this. If I had to reduce this FAQ to only -one question, I'd choose this one. It is pretty easy, but you have to -know that there are actually several incompatibly naming convention. - -First, the Hurd: if the disk is question is a SCSI disk, you must know -the SCSI device number; if it is an IDE disk, you must know what -controller the disk is on and whether it is a master or a slave. The -Hurd uses the BSD naming convention which, is to say, disks are ordered -according to their physical location, numerically, starting from zero. -This naming scheme is quite similar to that found in Linux. There, the -master disk on the primary controller is designated as `hda' and the -slave as `hdb'. On the secondary controller, the master and the slave -are designated by `hdc' and `hdd' respectively. Under the Hurd, `hda' -would become `hd0', `hdb' would be referred to as `hd1', etc. - -In the Hurd, like in BSD, partitions are called `slices' and are -numbered starting from one. Thus, to name a particular partition, we -take the disk name, append a `s' and the partition number. Again, this -is similar to Linux except, there is no `s'. For instance, `hda1' would -become `hd0s1'. - -GRUB, the boot loader, uses a completely different nomenclature: it -probes the BIOS and appends each disk in turn to an array. Both disks -and partitions are enumerated using zero based arrays. The format is: -`hd (<disk>, <partition>)'. Thus, `hd (0, 1)' refers to the second -partition on the first drive detected by the BIOS. As Grub now has tab -completion, there is not a lot of guess work. - -?? Can I use partitions larger than 2GB? - -{MB} No, not currently. The filesystem servers need to be changed to -not map the whole store into memory, which is not too difficult. For -large files, some interfaces need to be changed, which is a bit harder -but still doable. - -?? How much swap do I need? - -{NHW} Generally, a lot; once you run out, Mach panics. I have at least -128MB of ram and 256MB of swap on all of machines running GNU/Hurd. - -?? Can I share swap space between GNU/Linux and GNU/Hurd? - -{NHW} Yes. The default pager recognises and respects Linux swap -partitions. It will also swap to a raw partition, i.e. anything that it -does not recognize as Linux swap. Therefore: BE CAREFUL. - -?? Why do I get ``Operation not permitted error''? - -{MB} You forgot to set the file system owner of the GNU/Hurd partition to -``hurd''. The Hurd uses additional information in the inodes to set -translators. To make this work, the partition must be marked as ``owned -by the Hurd''. This is normally done by passing the `-o hurd' option to -`mke2fs' when creating ext2 system from other operating systems -(filesystems created in GNU/Hurd automatically enable this option). -If you failed to do this, you can still use the `e2os' script. - -?? After `native-install' is finished, I had to write tthhiiss - wwaayy. In particular, I had to type `rreebboooott' to reboot. - -{MB} Funny, isn't it? In addition to the rescue `term' server in -`/tmp/console', another `term' server got started and is clobbing the -keyboard input. After a reboot this problem vanishes as only one `term' -server will remain. If `tar' would support translator, we would not -have this problem... Even if you don't experience this problem right -after the installation, reboot immediately so you don't hit this bug by -accident. - -? Setup - -?? How do I add a swap partition? - -{MB} A swap partition is also called a paging file. Usually, it is -sufficient to add the swap partition to `/etc/fstab', just as you would -under Linux. You can swap to a Linux swap partition and the Hurd will -honour the Linux swap signature (both versions). The Hurd will just as -happily swap to any other raw disk space and overwrite anything it -finds. So, be careful! - -If you want to swap to a file or make sure that it checks the Linux swap -signature before, you need to edit `/boot/servers.boot'. The syntax is -the partition device file name plus, optionally, the swap file inside an -ext2fs partition, followed by a space and then one of: -`$(add-raw-paging-file)', `$(add-linux-paging-file)', -`$(add-paging-file)'. The first works with any partition or file and -does not honour any swap signature or other data. The second has a -safety check and only uses the file if a Linux swap signature is found. -The third looks for a swap signature first and falls back to raw paging -if it failed to find one. This is also the default for entries in -`/etc/fstab'. - -?? How do I set up a network? - How do I set up a loopback device? - -{MB} In the former case, be sure that GNU Mach detected your network -card. Either way, you need to setup `pfinet'. Documentation can be -found at: - - http://www.debian.org/ports/hurd/hurd-doc-server#pfinet - -Don't forget to fill in `/etc/resolv.conf', `/etc/hosts', etc. - -Of course, you only need to do this if the installation routine didn't -do it for you. - -?? Can I use the GNU/Linux version of `e2fsck' on a GNU/Hurd partition? - -{MB} Yes, at least since `e2fsprogs-1.05'. Check this with `e2fsck -V' -first. - -{NHW} Do not try to defrag your partition as this utility does not know -about translators. - -?? Why are pipes not working? - -{MB} `settrans -fgc /servers/socket/1 /hurd/pflocal' should help. - -? Usage - -?? Where is the documentation? - -{NHW,MM} There are neither man pages nor info nodes for the Hurd -translators and commands. Documentation lives inside of the binaries -and can be found by passing the `--help' option to a given command. -For instance: - - # /hurd/ext2fs --help - -will tell you what types of options the ext2fs translator accepts. - -The GNU/Hurd User's Guide and the GNU Hurd Reference Manual both -provide some help about the usage of and concepts behind the GNU Hurd. -You can find them, among others, at: - - http://www.gnu.org/software/hurd/docs.html - -?? What is a translator? - -{MB} There is a text about translators available at: - - http://www.debian.org/ports/hurd/hurd-doc-translator - -Read this and ask further questions on the mailing lists. - -?? What is the login shell? - -{MB} The Hurd has the concept of a not-logged in user. This user has -neither user ids nor groups ids. This stems from the fact that the Hurd -supports uid and gid sets and one possibility is, of course, the empty -set. Rather than deny access in this case, filesystems in the Hurd offer a -fourth permission triplet (i.e. rwx) which is used to determine the -privileges for users with no credentials. This, however, needs to be -enabled on a file by file basis. By default, the `other' permission -triplet is used. - -The Hurd login shell is a shell running with neither uids nor gids. To -restrict access to your files, either enable and change the fourth -permission triplet or change the login shell of the `login' user in the -password file to `/bin/loginpr' which implements the standard login -prompt. - -?? How do I use non-US keyboard bindings? - -{NHW,FH} Take a look at: - - http://www.xs4all.nl/~mgerards/xkb8.tar.gz - -If you want a Debian package, you can add to your -'etc/apt/sources.list' - - deb http://debian.duckcorp.org/unstable/binary-hurd-i386/ ./ - -and then run - - apt-get install console-driver-xkb. - -?? How do I enable color on the console? - -{NHW} If you are using the GNU Mach microkernel, you can set your -terminal to `mach-color'. For instance: - - # export TERM=mach-color - -?? How can I enable virtual consoles? - -{AMS} This can be done by running the following command: - - console -d vga -d pc_kbd -d generic_speaker /dev/vcs - -If something went wrong, or if you just wish to exit the Hurd console -then hitting C-A-<backspace> will exit it. - -?? What is the status of X? - -{MB} It works! The packages are available at any Debian ftp mirror. -XFree86 4.0.2 is available, as are some of the v3 servers. Instructions -on how to use the packages are in the mailing list archive (link follow -later). - -?? Why does X not work? - -{MB} Try `export LD_LIBRARY_PATH=/usr/X11R6/lib'. This is a linker -issue. GNU/Hurd expects that `RPATH' is used, however, Debian takes -certain measures to avoid this. Note that this does not cut it for suid -binaries because of security implications. We expect to rectify this -by using `RUNPATH', which is specified in the new ELF standard. - -?? What are these strange pids `2' and `3'? - -{MB} Two is the kernel, three is the default pager and four is the root -filesystem. - -?? Why does `ps aux' give me strange output? - -{MB,MM} Try `ps Aux'. Indeed, under GNU/Hurd, `ps aux' doesn't list -all processes: it omits the session and group leaders, and the -processes without parent. - -?? I have a hung process that I want to kill, however, `ps' is now - hanging too. - -{MB} Interrupt it and pass it the `-M' option. - -{NHW} By default, `ps' gathers information from both the proc server and -the processes themselves (via their message port). If a process it -hung, it will not be able respond to its message port and thus, ps will -wait forever. The `-M' option instructs ps to not gather information -that would require use of the message port. - -?? Where are ... - -{MB} `fdisk' and `dmesg' are not yet ported. - -Instead of `free', use `vmstat' and `vminfo'. - -For kernel messages, read `/dev/klog' directly. Note, once you read -this, it is gone forever. - - -?? Is there a `/proc' filesystem? - -{MB} No. Maybe there will be an emulation filesystem someday for -programs that rely it. If you are wondering about the empty `/proc' -directory, this is a relict from a Debian GNU/Linux package -(specifically, `base-files'). - -You can probe for existing hardware devices with the devprobe utility. - -?? Why does the command `df' not work? - -{NHW} It does, you just have to tell it what filesystem to query. E.g. - - # df / - -?? Why are my translators dying? - -{NHW} Try passing the `-ap' flag to settrans. By default, settrans only -sets a passive translator, therefore, no output will show up on your -terminal. Using `-ap', however, sets both the active and the passive -translator which, means that the translator starts immediately and its -stderr is connected to you terminal. - -Additionally, the biggest problem is passing relative paths to passive -translators. You cannot predict what the current working directory of a -translator will be when it is setup as a passive translator. - -?? Why can I `read' a directory? - -{MB} It is important to understand that there is nothing special about a -directory under the Hurd, it is just another file. This fits in with -the translator concept where a translator can appear as a directory but -provide also as a file. - -? Trouble shooting - -?? When the APM support in the BIOS spins down my disk drives, the - Hurd is unable to wake up. What's wrong? - -{MB} APM is not supported in the current version of GNU Mach, sorry. -Please disable APM in your BIOS setup. - -?? What are these messages referring to `default pager', `paging', - and `pager request'? - -{MB} The default pager handles virtual memory allocation. If it can't -allocate a new memory page because you are out of memory, some terrible -things may happen. Whenever you get errors referring to any of these, -you either need more memory (make sure you have swap) or you have found -a memory leak. - -?? What is a gratuitous error? - -{MB} This comes from `strerror(EGRATUITOUS)'. If you check glibc's -documentation, it will say that this error code has no purpose. This, -however, is not quite true. You only get this when something terrible -happens. Thomas explains: - - More precisely `EGRATUITOUS' officially means that some server - has responded in an impossible or protocol-violating fashion. - There are some cases in the Hurd where `EGRATUITOUS' is returned - and probably something else should be chosen instead. - -If you can reproduce this error message, please report it. - -?? What does ``computer bought the farm'' mean ? - -{FH} This message is the text that corresponds to the errno code -`EIEIO'. Roland McGrath explains: - - That message is not output by any particular servers at - particular times; rather it is the perror text for the errno - code EIEIO, which is returned by various RPCs and functions - for a variety of "hopeless" error conditions. - - -?? What does ``/dev/hd0s1: MOUNTED READ-ONLY; MUST USE `fsysopts - --writable''' mean? - -{NHW} In this case, /dev/hd0s1 was not unmounted cleanly. The Hurd -will, on boot up, run ``fsck -p'' on any partitions that it finds in -/etc/fstab, so, you may want to consider adding this partition to that -file. If you are sure that the partition is fine, you can run: - - # fsysopts /home --writable - -to ask the translator sitting on /home to change from read-only to -read/write mode. Note that the command is being sent to the filesystem -and not the store (e.g. /dev/hd0s1). - -?? When GNU/Hurd crashes, GNU Mach automatically reboots. Is - there anyway I can make it pause so I can write down the error? - -{MB} Pass the `-H' option to init (add it to the boot command line), and -`init' will tell Mach to enter the kernel debugger instead to rebooting -it. At the debugger prompt (`db>'), you can type `reboot' any time to -reboot the system. - -? Porting - -?? What programs have been ported? - -{NHW} A lot, take a look at the Debian archive. Many programs, however, -do not necessarily need to be ported; they have just never been -compiled. - -?? Is porting easy? - -{NHW} Porting applications to GNU/Hurd is relatively easy assuming the -application is POSIX compliant as GNU/Hurd does its best to be a -conforming operating system. - -The most common error made by programmers is assuming the MAXPATHLEN and -PATH_MAX are defined. On most operating systems this is set to a few -thousand, however, on GNU/Hurd, there is no maximum and thus, this is -not set. The correct thing to do is to submit a patch to the upstream -author that allocates memory dynamically. - -?? How can I help? - -{NHW} A effort to compile all of the Debian packages is underway by Jeff -Bailey. Take a look at: - - http://people.debian.org/~jbailey/oasis/group/Debian/index.html - -to see what has been done and how you can help. - -? Compiling - -?? Where can I get the source? - -{AMS} Instructions on how to download the CVS tree from Savanah are -avaiable at https://savannah.gnu.org/cvs/?group=hurd - -{NHW} To get the source to the latest debian package, look on any -debian mirror. - -?? Can I cross compile? - -{NHW} Yes. If you are running Debian GNU/Linux on IA32, this is quite -easy as there is a cheap cross compiler available; all that is required -is installing the gcc-i386-gnu and mig-i386-gnu Debian packages. When -running configure, you will have to specify tools directly: - - # MIG=/usr/bin/i386-gnu-mig CC=/usr/bin/i386-gnu-gcc \ - ../src/hurd/configure ... - -If you are running another distribution, you will have to do this the -long way. You can find instructions at the Cross Compiling HOW-TO -available at: - - http://hurddocs.sourceforge.net/howto/cross.html - -Farid Hajji <farid.hajji@ob.kamp.net> also talks about his experiences -at: - - http://lists.debian.org/debian-hurd-0012/msg00062.html - -?? Any general tips? - -{NHW} Yeah, building in the source tree is untested. Try: - - # ../src/hurd/configure ... - -? Development - -?? What is OSKit-Mach? - -{NHW,FH} There are two versions of GNU Mac that are in use: GNU Mach -1.x and GNU Mach 2.x, formerly known as OSKit-Mach. The former uses -the drivers from Linux 2.0.x while the latter uses the University of -Utah's OSKit library for drivers. You can find out more about the -OSKit library at: - - http://www.cs.utah.edu/flux/oskit - -GNU Mach 2.x is usable, but some things are still missing or not -working, like the serial port and scsi drivers. This is why GNU Mach -2.0 hasn't released yet and the two versions coexist. - -?? Where is the documentation? - -{NHW} There were several books written on the Mach kernel. The -information that they contain is still mostly pertinent and should be -considered required reading for potential hackers. They can be found -at: - - http://www.cs.cmu.edu/afs/cs/project/mach/public/www/doc/publications.html - -The documentation for the Hurd is quite inadequate. The starting of a -book, ``The GNU Hurd'' is in the doc directory in the Hurd source. You -can read this using: - - # info hurd - -The authoritative place is, of course, the source code; that does not, -however, mean that we would not welcome more documentation. To get -started, take a look at <hurd>/doc/navigating. - -?? How do I make sure that my code is POSIX compliant? - -{NHW} Unfortunately, you have to buy the POSIX standard from IEEE. The -Single Unix Specification version 2, a superset of POSIX, is available -for free on the Internet. Try: - - http://www.unix-systems.org/online.html - -?? Who do I submit patches to? - -{NHW} If they are against the Hurd, Mach or MiG, send a patch to the -bug-hurd mailing list. - -If they are against other packages, the Debian BTS is a good place. In -this case, be sure to advise the debian-hurd mailing list of the bug. - -?? In what format should patches for the Hurd and GNU Mach be? - -{MB} All patches should be sent in unified context diff format (option -`-u' to GNU diff). It is helpful for us if you also use the `-p' -option which includes information about the function changed by a -patch. Changes that are similar can be grouped together in one file, -but unrelated changes should be sent in seperate files. The patches -can be included in the message or as a MIME attachement. They should -not be compressed and/or archived unless they are very large, and if -they are very large it is probably better to store them on-line at -some place and only sent an URL. - -Write a ChangeLog entry for each change, following the format of the -existing files. Here is an example: - - 2000-12-02 Marcus Brinkmann <marcus@gnu.org> - - * ops.c (op_readlink): Before returning, check if the buffer - pointed to by transp is ours. If not, munmap it. - (op_read): Likewise for bp. - (op_readdir): Don't alloca a buffer here. Instead initialize - BUF and BUFSIZE to 0 and let the server (eh, MiG) do it. - munmap BUF before returning. - -The file name and the name of the function changed should always be -spelled out completely, and not abbreviated or otherwise mangled (like -foo.{c,h}), because that would make searching for all changes to a -file or function impossible. Local variable names are all -capitalized. There are two spaces between sentences. You can use -``C-x 4 a'' in Emacs to add a new ChangeLog entry. If you do that -with the mark being in a function, Emacs will automatically fill in -the file and function name for you. - -Do not send in a patch for the ChangeLog file. Rather include the -ChangeLog entries in the message that contains the patch. Patches for -ChangeLog files often conflict. - -If you have the original source tree in the directory `hurd-orig', and -the modified source tree in the directory `hurd', the following -command will produce a good patch (please make sure there are no extra -files like backups in the modified tree, or leave away the option -`-N'). You will need to collect the ChangeLog entries seperately. - - # diff -x ChangeLog -Nurp hurd-orig hurd - - -Answers were given by (in chronological order): -* {NHW} Neal H Walfield <neal@cs.uml.edu> -* {MB} Marcus Brinkmann <Marcus.Brinkmann@ruhr-uni-bochum.de> -* {AMS} Alfred M. Szmidt <ams@gnu.org> -* {OK} Ognyan Kulev <ogi@fmi.uni-sofia.bg> -* {FH} Frédéric Henry <neryel@reveries.info> -* {MM} Manuel Menal <mmenal@hurdfr.org> diff --git a/hurd/faq/old_hurd_faq.txt b/hurd/faq/old_hurd_faq.txt deleted file mode 100644 index e6c6cb5a..00000000 --- a/hurd/faq/old_hurd_faq.txt +++ /dev/null @@ -1,289 +0,0 @@ -The Unofficial (and no longer maintained) GNU Hurd FAQ, Version 0.13 - -Contributions by: - -Michael I. Bushnell <mib@gnu.org> -Len Tower <tower@gnu.org> -Trent Fisher <trent@gnurd.uu.pdx.edu> -jlr@usoft.spb.su -Remy Card <Remy.Card@masi.ibp.fr> -Louis-Dominique Dubeau <hallu@info.polymtl.ca> - -Original Document by: Derek Upham <upham@cs.ubc.ca> - - -============================== - -Contents: - -Q0. Where can I get the Unofficial GNU Hurd FAQ? -Q2. Where can I get a copy? -Q3. Why bother writing a new OS when we have Linux and 386/BSD? -Q4. What's all this about Mach 3.0 (and Mach 4.0)? -Q5. Where can I find more information? -Q6. What's a proper machine? -Q7. What sort of machines will run Hurd in the future? -Q8. What is the current development status? -Q9. What sort of system would we have if the Hurd was bootable today? - -============================== - -Q0. Where can I get the Unofficial GNU Hurd FAQ? - -The Unofficial Hurd FAQ (what you are reading now) is occasionally -posted to the USENET newsgroup, gnu.misc.discuss. It is also -available from - - http://www.enci.ucalgary.ca/~gord/hurd/hurd-faq.txt (Broken Link ?) - -If you don't have WWW access, you may send mail to me, Gordon -Matzigkeit <gord@enci.ucalgary.ca> with a subject line that reads: - - Subject: send hurd-faq - -You should receive a PGP-signed copy of the current version of this -document in a matter of minutes. - - -Q2. Where can I get a copy? - -To put it simply, you can't. It is still under development (by -Michael Bushnell, Roland McGrath and Miles Bader). It is almost, but -not quite, at the point where you can do real work on it. Keep your -fingers crossed. - -Some people have actually bootstrapped it, but the work is not easy, -and the current snapshot won't work until a new multiserver boot -mechanism is made. - -If you *really* want to try it, beware that it is still pre-alpha -code, and that it will likely crash on you. See Trent Fisher's Hurd -pages (under question 5) for the latest information. - - -Q3. Why bother writing a new OS when we have Linux and 386/BSD? - -For one thing, Linux and BSD don't scale well. Hardware designers are -shifting more and more toward multiprocessor machines for performance, -and standard Unix kernels do not provide much multiprocessor support. -The Hurd, on the other hand, runs on top of the Mach 3.0 micro-kernel -[[1]] from CMU. Mach was designed precisely for multiprocessing -machines, so its portability should carry over nicely to the Hurd. - -In addition, the Hurd will be considerably more flexible and robust -than generic Unix. Wherever possible, Unix kernel features have been -moved into unprivileged space. Once there, anyone who desires can -develop custom replacements for them. Users will be able to write and -use their own file systems, their own `exec' servers, or their own -network protocols if they like, all without disturbing other users. - -The Linux kernel has now been modified to allow user-level file -systems, so there is proof that people will actually use features such -as these. It will be much easier to do under the Hurd, however, -because the Hurd is almost entirely run in user space and because the -various servers are designed for this sort of modification. - - -Q4. What's all this about Mach 3.0 (and Mach 4.0)? - -As mentioned above, Mach is a micro-kernel, written at Carnegie Mellon -University. A more descriptive term might be a greatest-common-factor -kernel, since it provides facilities common to all ``real'' operating -systems, such as memory management, inter-process communication, -processes, and a bunch of other stuff. Unfortunately, the system -calls used to access these facilities are only vaguely related to the -familiar and cherished Unix system calls. There are no "fork", -"wait", or "sleep" system-calls, no SIGHUPs, nothing like that. All -this makes it rather difficult to, say, port GNU Emacs to a Mach box. - -The trick is, of course, to write an emulation library. Unix programs -can then use (what they think are) POSIX system calls and facilities -while they are really using Mach system calls and facilities. - -The simplest way of going about this is to take an ordinary Unix -kernel, open it up, and rip out all the machine-specific guts; any -time the Unix kernel talks to the machine, replace the code with calls -to the Mach micro-kernel. Run this fake kernel on a Mach machine and -you end up with something that looks and acts just like Unix (even to -GNU Emacs). Note that the Unix kernel we have implemented is just one -Really Big Mach program (called a single-server). - -The Hurd, on the other hand, breaks the giant Unix kernel down into -various Mach programs running as daemons. Working in concert with -facilities placed in the C library, these daemons provide all of the -POSIX system-calls and features; from the outside they look just like -a standard Unix kernel. This means that, for practical purposes, -anything that you can port to Linux will also port to the Hurd. - -Of course, if a user wishes to run his own daemons, he can do that as -well.... - -Mach 4.0 is an enhanced version of Mach 3.0, put out by the people at -the University of Utah. They are working on another free operating -system, and part of it includes an enhanced, more flexible version of -Mach. The Hurd has moved to Mach 4.0, which is good, because it is a -lot easier to build than 3.0 was. - -You can find more information on Mach by browsing the Hurd pages given -in the next answer, or by looking at the Project Mach and Flux -homepages at: - -Carnegie Mellon University (for Mach versions before 4.0): - - http://www.cs.cmu.edu/afs/cs.cmu.edu/project/mach/public/www/mach.html - -the University of Utah (for Mach 4.0): - - http://www.cs.utah.edu/projects/flux/mach4/html/ - - -Q5. Where can I find more information? - -The June 1995 GNU's Bulletin contains the following official -information: - - The GNU Hurd now runs programs native. We have implemented both - shared libraries using ELF, & the popular `ext2' file system used - by Linux. It can run GCC, `make', Emacs, & most other GNU - utilities. Progress is being made so rapidly that by the time you - read this it probably does much more. It is right on the verge of - being self-hosting (able to run on its own well enough to compile - its own source code, & be used for its own development). We have - much better device supportm [sic] & some new utilities, including a - fancy `ps' & `settrans'. For a complete system we still have much - more work to do, but we will make an alpha release as soon as the - network software is finished & shared libraries have been well - tested. We have a mailing list to announce progress; to be added - to it, ask `hurd-announce-request@gnu.org'. - -The Portland State University CS department (via Trent Fisher) -maintains a WWW server with various Hurd documents, including Michael -Bushnell's Hurd paper, all the collected GNU's Bulletins, and various -announcements posted to "gnu.misc.discuss". The top-level GNU page is - - http://www.cs.pdx.edu/~trent/gnu/gnu.html - -and the Hurd page is - - http://www.cs.pdx.edu/~trent/gnu/hurd/hurd.html - -People in Europe might want to try the GNU WWW server for DESY -Germany, first: - - http://info.desy.de/gnu/www - -This site lacks culled, Hurd-specific information at the moment, but -it does have the last two GNU's Bulletins plus lots of general -information. - -There is a snapshot of the Hurd development tree on -"alpha.gnu.ai.mit.edu" in the "/gnu" directory. It is updated as -significant changes are made, and not guaranteed to run. - -You can subscribe to the Hurd announcement list by sending a request -to "hurd-announce-request@gnu.org". This is a moderated list -for distributing Hurd info to ``all and sundry'', and anyone can join. -In addition, there is a private (invitation-only) list for developers -to coordinate their efforts. It's not even worth thinking about -unless you (a) have a lot of free time on your hands, (b) know Unix -internals and Mach very well, and (c) have a proper machine. - - -Q6. What's a proper machine? - -A ``proper machine'', at the moment, means an x86 box running Mach 3.0 -(or 4.0), with FreeBSD 2.x, NetBSD 1.x, or Linux. - -A single-server OS is no longer required for development because by -the time the Hurd bootstrap mechanism is finished, the Hurd will -probably be self-hosting. - -Linux, FreeBSD, or NetBSD will only be required to splat the Hurd -binaries onto a partition of some sort, and to provide a way of -transferring files to the Hurd until the networking code is ready. - - -Q7. What sort of machines will run Hurd in the future? - -The first thing a prospective Hurd machine needs is a Mach 3.0 port. -According to the most recent "comp.os.mach" FAQ (which hasn't been -updated since February 1994), the following chips have redistributable -Mach micro-kernels and device drivers: - - Intel 80x86 (ISA and PS/2 buses) - Motorola 68000 (Sun 3) - Motorola 88000 (Omron Luna) - DEC Vax - DEC Pmax (DECstation 3100) - DEC Alpha - MIPS R4000 (DECstation 5000 et al.) - IBM RS/6000 - Apple Macintosh - -IBM is planning to run WorkplaceOS (the OS/2 successor) over Mach 3.0 -on the PowerPC chip (closely related to the RS/6000), so the PowerPC -will likely be added to this list soon. The University of Utah has -ported Mach 4.0 to the HP700, but it is not yet stable. - -Sun Sparc machines have a redistributable Mach microkernel, but the -device drivers require a SunOS 4.1.1 source license. - -In addition, any prospective Hurd machine needs a port of the GNU C -library. Version 1.07.4 of the library can handle the following -chips: - - Intel 80x86 (BSD, Dynix, Hurd, SCO, SysV) - Motorola 68000 (HP BSD, NEWS, Sun 4) - MIPS R4000 (Ultrix) - Sun Sparc (Solaris 2, Sun 4) - DEC Alpha (OSF/1, mostly finished) - -So if the next Hurd snapshot is self-hosting, we will be able to run -it (in theory) on Intel 80x86s, Motorola 68000s, MIPS R4000s and DEC -Alphas. - -People who can port the Mach micro-kernel to new architectures are -encouraged to do so. People who can port the GNU C library to new -chips (a much larger group) are also encouraged to do so. You can -help out here without knowing anything about Mach or having any -special machine. Note that once the GNU C library exists for a new -chip, for _any_ OS, making a Hurd port later is simple (and making -ports to other chips becomes easier as well---the effects are -cumulative). - -By current indications, the other hardware requirements (RAM, disk -space, and the like) will be about the same as those of BSD 4.4. - - -Q8. What is the current development status? - -Please see Trent Fisher's Hurd pages for details. - - -Q9. What sort of a system would we have if the Hurd was bootable -today? - -Quite likely, if you already use an end-user system like Linux, -FreeBSD, or NetBSD, you'll be disappointed with the Hurd. It will -take some time before the OS hackers really get to work on -applications and major enhancements. - -But, rest assured, Hurd development should proceed very rapidly. - -Of course, if you think you can help, or you just enjoy neat stuff, -then you'll probably like the Hurd. When you actually understand a -fraction of what's going on behind the scenes, it's very impressive. - -All I'm saying is that I'm not expecting all the Windows '95 users in -the world to switch to the Hurd right away. Wait a little while, -maybe 5-6 years (ample time for GNUStep and Guile to be in use), and -GNU users everywhere will be very happy that the FSF proceeded with -the Hurd. :) - - -============================== - -Footnotes: - -[[1]] Yes, I know that ``micro-kernel'' is about as apt a description -as ``Reduced Instruction Set Chip'', but we're stuck with it. diff --git a/hurd/faq/release.mdwn b/hurd/faq/release.mdwn deleted file mode 100644 index d80c6825..00000000 --- a/hurd/faq/release.mdwn +++ /dev/null @@ -1,15 +0,0 @@ -[[!meta copyright="Copyright © 2008 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]]."]]"""]] - -[[!meta title="When will the Hurd be released?"]] - -Next year. - -Save that, read about the Hurd's [[status]]. diff --git a/hurd/faq/slash_usr_symlink.mdwn b/hurd/faq/slash_usr_symlink.mdwn deleted file mode 100644 index 5c47f4e1..00000000 --- a/hurd/faq/slash_usr_symlink.mdwn +++ /dev/null @@ -1,20 +0,0 @@ -[[!meta copyright="Copyright © 2001, 2002, 2003, 2004, 2005, 2008 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]]."]]"""]] - -[[!meta title="Why is `/usr' a symbolic link to `.'?"]] - -The distinction between `/` and `/usr` has historical reasons. Back when [[Unix]] -systems were booted from two tapes, a small root tape and a big user tape. -Today, we like to use different partitions for these two spaces. The Hurd -throws this historical garbage away. We think that we have found a more -flexible solution called union filesystems, which allow to create virtual -filesystems which are the union of several other filesystems. However, support -for union filesystems is still in early development. diff --git a/hurd/faq/slash_usr_symlink/discussion.mdwn b/hurd/faq/slash_usr_symlink/discussion.mdwn deleted file mode 100644 index 219e14e4..00000000 --- a/hurd/faq/slash_usr_symlink/discussion.mdwn +++ /dev/null @@ -1,45 +0,0 @@ -[[!meta copyright="Copyright © 2012 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 open_issue_documentation]] - - -# IRC, freenode, #hurd, 2012-02-01 - - <marcusb> I remember the time when we had a /usr symlink. Now fedora 17 - will move / to /usr and have /foo symlinks. :) - <marcusb> braunr: - http://www.freedesktop.org/wiki/Software/systemd/TheCaseForTheUsrMerge - <marcusb> braunr: fedora and others are merging /bin, /sbin and some other - into /usr - <marcusb> braunr: back in 1998 we tried for two years or so to have /usr -> - .. in Debian GNU/Hurd, but eventually we gave up on it, because it broke - some stuff - <gnu_srs> marcusb: Hi, which one is better (in your opinion): / or /usr? - <marcusb> gnu_srs: fedora says that using /usr allows better separation of - distribution files and machine-local files - <braunr> marcusb: won't it break remote /usr ? - <marcusb> so you can atomically mount the OS files to /usr - <marcusb> gnu_srs: but in the end, it's a wash - <marcusb> personally, I think every package should get its own directory - <braunr> marcusb: what PATH then ? - <marcusb> braunr: well, I guess you'd want to assemble a union filesystem - for a POSIX shell - <braunr> marcusb: i don't see what you mean :/ - <braunr> ah this comes from Lennart Poettering - <marcusb> braunr: check out for example how http://nixos.org/ does it - <manuel> braunr: something like, union /package1/bin /package2/bin - /package3/bin for /bin, /package1/lib /package2/lib /package3/lib for - /lib, etc. I guess - <braunr> manuel: would that scale well ? - <marcusb> the idea that there is only one correct binary for each program - with the name foo is noble, but a complete illusion that hides the - complexity of the actual configuration management task - <braunr> marcusb: right diff --git a/hurd/faq/still_useful.mdwn b/hurd/faq/still_useful.mdwn deleted file mode 100644 index bffeaebd..00000000 --- a/hurd/faq/still_useful.mdwn +++ /dev/null @@ -1,46 +0,0 @@ -[[!meta copyright="Copyright © 2009 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]]."]]"""]] - -what are the advantages with the Hurd over Linux, in general of course, nothing -in depth - -> Flexibility for the user: -> -> transparent ftp -> -> $ cd /ftp://ftp.debian.org/debian -> $ ls -> -> personnal filesystem -> -> $ dd < /dev/zero > myspace.img bs=1M count=1024 -> $ mke2fs myspace.img -> $ settrans myspace /hurd/ext2fs myspace.img -> $ cd myspace - ->> Just curious, but I keep seeing these (and other similar) concepts being ->> brought up as the amazing selling points of the Hurd, but all of this is ->> entirely doable now in Linux with FUSE or things like it. - ->>> Nowadays, at LAST, yes, partly. - ->> I'm not sure if an ftp filesystem has been implemented for FUSE yet, but its ->> definately doable; and loopback filesystems like in your second example have ->> been supported for years. - ->>> As a normal user? And establish a tap interface connected through ppp over ->>> ssh or whatever you could want to imagine? - ->> What, then, are the major selling points or benefits? - ->>> These were just examples, Linux is trying to catch up in ugly ways indeed ->>> (yes, have a look at the details of fuse, it's deemed to be inefficient). ->>> In the Hurd, it's that way from the _ground_ and there is no limitation ->>> like having to be root or ask for root to add magic lines, etc. diff --git a/hurd/gcc.mdwn b/hurd/gcc.mdwn deleted file mode 100644 index 129aa8a9..00000000 --- a/hurd/gcc.mdwn +++ /dev/null @@ -1,11 +0,0 @@ -[[!meta copyright="Copyright © 2010 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]]."]]"""]] - -[[!meta redir=/gcc]] diff --git a/hurd/glibc.mdwn b/hurd/glibc.mdwn deleted file mode 100644 index 39bfed62..00000000 --- a/hurd/glibc.mdwn +++ /dev/null @@ -1,19 +0,0 @@ -[[!meta copyright="Copyright © 2007, 2008, 2009, 2010 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]]."]]"""]] - -[[General_information|/glibc]] about the glibc. - -For information about how the glibc integrates into the system, see sections -2.1 and 2.5 of the [[critique]]. - -[[Hurd-specific_API]]. - -[[Debugging_glibc|debugging/glibc]]. diff --git a/hurd/glibc/hurd-specific_api.mdwn b/hurd/glibc/hurd-specific_api.mdwn deleted file mode 100644 index 7ead63cd..00000000 --- a/hurd/glibc/hurd-specific_api.mdwn +++ /dev/null @@ -1,184 +0,0 @@ -[[!meta copyright="Copyright © 2002, 2007, 2008, 2010 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]]."]]"""]] - -[[!meta title="Hurd-specific glibc API"]] - -These functions have meaning only under Hurd. They are needed to get port -names that are used in native Hurd API (the [[RPC]]s to servers). The `.defs` -and `.h` files can be found in `/include/hurd` when all development files are -installed (Debian package `hurd-dev`.) Note that `.defs` are not included in C -programs -- they are used to produce `.h` files. - -<!-- TODO. Need to convert this to a proper table. --tschwinge --> - -<dl> - <p> - </p> - <dt><tt>file_t</tt></dt> - <dt><tt><b>getcwdir</b> (void);</tt></dt> - <p> - </p> - <dd>Get <tt>file_t</tt> port name of current working directory. See <tt>&lt;hurd/fs.defs&gt;</tt> and <tt>&lt;hurd/fs.h&gt;</tt>.</dd> - <p> - </p> - <dt><tt>int</tt></dt> - <dt><tt><b>setcwdir</b> (file_t);</tt></dt> - <dd>Set current working directory.</dd> - <p> - </p> - <dt><tt>file_t</tt></dt> - <dt><tt><b>getcrdir</b> (void);</tt></dt> - <dd>Get <tt>file_t</tt> port name of current root directory.</dd> - <p> - </p> - <dt><tt>int</tt></dt> - <dt><tt><b>setcrdir</b> (file_t);</tt></dt> - <p> - </p> - <dd>Set current root directory.</dd> - <p> - </p> - <dt><tt>file_t</tt></dt> - <dt><tt><b>file_name_lookup</b> (const char *file, int flags, mode_t mode);</tt></dt> - <dd>Open a port to FILE with the given FLAGS and MODE (see <tt>&lt;fcntl.h&gt;</tt>). The file lookup uses the current root and working directory. Returns a port to the file if successful; otherwise sets <tt>errno</tt> and returns <tt>MACH_PORT_NULL</tt>.</dd> - <p> - </p> - <dt><tt>file_t</tt></dt> - <dt><tt><b>file_name_lookup_under</b> (file_t startdir, const char *file, int flags, mode_t mode);</tt></dt> - <dd>Open a port to FILE with the given FLAGS and MODE (see <tt>&lt;fcntl.h&gt;</tt>). The file lookup uses the current root directory, but uses STARTDIR as the "working directory" for file relative names. Returns a port to the file if successful; otherwise sets <tt>errno</tt> and returns <tt>MACH_PORT_NULL</tt>.</dd> - <p> - </p> - <dt><tt>file_t</tt></dt> - <dt><tt><b>file_name_path_lookup</b> (const char *file_name, const char *path, int flags, mode_t mode, char **prefixed_name);</tt></dt> - <dd>Lookup FILE_NAME and return the node opened with FLAGS &amp; MODE (see <tt>hurd_file_name_lookup</tt> for details), but a simple file name (without any directory prefixes) will be consecutively prefixed with the pathnames in the <tt>:</tt> separated list PATH until one succeeds in a successful lookup. If none succeed, then the first error that wasn't ENOENT is returned, or ENOENT if no other errors were returned. If PREFIXED_NAME is non-NULL, then if the result is looked up directly, *PREFIXED_NAME is set to NULL, and if it is looked up using a prefix from PATH, *PREFIXED_NAME is set to malloc'd storage containing the prefixed name.</dd> - <p> - </p> - <dt><tt>file_t</tt></dt> - <dt><tt><b>file_name_split</b> (const char file, char **name);</tt></dt> - <dd>Split FILE into a directory and a name within the directory. The directory lookup uses the current root and working directory. If successful, stores in *NAME a pointer into FILE where the name within directory begins and returns a port to the directory; otherwise sets <tt>errno</tt> and returns <tt>MACH_PORT_NULL</tt>.</dd> - <p> - </p> - <dt><tt>file_t</tt></dt> - <dt><tt><b>directory_name_split</b> (const char *file, char **name);</tt></dt> - <p> - </p> - <dd>Split DIRECTORY into a parent directory and a name within the directory. This is the same as <tt>file_name_split</tt>, but ignores trailing slashes.</dd> - <p> - </p> - <dt><tt>FILE *</tt></dt> - <dt><tt><b>fopenport</b> (io_t port, const char *mode);</tt></dt> - <dd>Open a stream on a port. MODE is as for <tt>fopen</tt>. If successful, this consumes a user reference for PORT (which will be deallocated on fclose).</dd> - <p> - </p> - <dt><tt>int</tt></dt> - <dt><tt><b>openport</b> (io_t port, int flags);</tt></dt> - <p> - </p> - <dd>Open a [[unix/file_descriptor]] on a [[microkernel/mach/port]]. FLAGS - are as for <tt>open</tt>; flags affected by <tt>io_set_openmodes</tt> are - not changed by this. If successful, this consumes a user reference for - PORT (which will be deallocated on close.) See - <tt>&lt;hurd/io.defs&gt;</tt> and - <tt>&lt;hurd/io.h&gt;</tt>. - </dd> - <p> - </p> - <dt><tt>task_t</tt></dt> - <dt><tt><b>pid2task</b> (pid_t pid);</tt></dt> - <p> - </p> - <dd>Return the task control port of process PID. On error, sets <tt>errno</tt> and returns <tt>MACH_PORT_NULL</tt>.</dd> - <p> - </p> - <dt><tt>pid_t</tt></dt> - <dt><tt><b>task2pid</b> (task_t task);</tt></dt> - <dd>Return the PID of the task whose control port is TASK. On error, sets <tt>errno</tt> and returns -1. </dd> - <p> - </p> - <dt><tt>int</tt></dt> - <dt><tt><b>geteuids</b> (int n, uid_t *uidset);</tt></dt> - <dd>Get the effective UID set.</dd> - <p> - </p> - <dt><tt>int</tt></dt> - <dt><tt><b>seteuids</b> (int n, const uid_t *uidset);</tt></dt> - <dd>Set the effective UID set.</dd> - <p> - </p> - <dt><tt>auth_t</tt></dt> - <dt><tt><b>getauth</b> (void);</tt></dt> - <dd>Get port name of current authentication server. See <tt>&lt;hurd/auth.defs&gt;</tt> and <tt>&lt;hurd/auth.h&gt;</tt>.</dd> - <p> - </p> - <dt><tt>int</tt></dt> - <dt><tt><b>setauth</b> (auth_t);</tt></dt> - <p> - </p> - <dd>Set current authentication server.</dd> - <p> - </p> - <dt><tt>process_t</tt></dt> - <dt><tt><b>getproc</b> (void);</tt></dt> - <dd>Get port name of current process server. See <tt>&lt;hurd/process.defs&gt;</tt> and <tt>&lt;hurd/process.h&gt;</tt>.</dd> - <p> - </p> - <dt><tt>int</tt></dt> - <dt><tt><b>setproc</b> (process_t);</tt></dt> - <p> - </p> - <dd>Set current process server.</dd> - <p> - </p> - <dt><tt>mach_port_t</tt></dt> - <dt><tt><b>getcttyid</b> (void);</tt></dt> - <dd>Get the CTTY port.</dd> - <p> - </p> - <dt><tt>int</tt></dt> - <dt><tt><b>setcttyid</b> (mach_port_t);</tt></dt> - <dd>Set the CTTY port.</dd> - <p> - </p> - <dt><tt>kern_return_t</tt></dt> - <dt><tt><b>get_privileged_ports</b> (host_priv_t *host_priv_ptr, device_t *device_master_ptr);</tt></dt> - <dd>Fetch the host privileged port and device master port from the process server.</dd> - <p> - </p> - <dt><tt>mode_t</tt></dt> - <dt><tt><b>getumask</b> (void);</tt></dt> - <dd>Get the current `umask' value without changing it (this glibc functions is available only under GNU Hurd.)</dd> - <p> - </p> - <dt><tt>int</tt></dt> - <dt><tt><b>vpprintf</b> (io_t port, const char *format, va_list arg);</tt></dt> - <dd>Write formatted output to PORT, a Mach port supporting the i/o protocol, according to the format string FORMAT, using the argument list in ARG.</dd> - <p> - </p> - <dt><tt>thread_t</tt></dt> - <dt><tt><b>hurd_thread_self</b> (void);</tt></dt> - <dd>Return the current thread's thread port. This is a cheap operation (no [[system call]]), but it relies on Hurd signal state being set up.</dd> - <p> - </p> - <dt><tt>error_t</tt></dt> - <dt><tt><b>hurd_thread_cancel</b> (thread_t thread);</tt></dt> - <p> - </p> - <dd>Cancel pending operations on THREAD. If it is doing an interruptible RPC, that RPC will now return EINTR; otherwise, the "cancelled" flag will be set, causing the next <tt>hurd_check_cancel</tt> call to return nonzero or the next interruptible RPC to return <tt>EINTR</tt> (whichever is called first).</dd> - <p> - </p> - <dt><tt>int</tt></dt> - <dt><tt><b>hurd_check_cancel</b> (void);</tt></dt> - <p> - </p> - <dd>Test and clear the calling thread's "cancelled" flag.</dd> - <p> - </p> -</dl> diff --git a/hurd/hurd_hacking_guide.mdwn b/hurd/hurd_hacking_guide.mdwn deleted file mode 100644 index ea9aa259..00000000 --- a/hurd/hurd_hacking_guide.mdwn +++ /dev/null @@ -1,25 +0,0 @@ -[[!meta copyright="Copyright © 2007, 2008 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]]."]]"""]] - -Originally written by Wolfgang Jährling, the *Hurd Hacking Guide* contains an -introduction to GNU Hurd and GNU Mach programming, an overview of some of the -Hurd's features. It also contains a tutorial on writing your own -[[translator]]. - -Before using the code in the example (trivfs) please do read the Changelog. A lot of changes might have taken place. - - * [HTML version](http://www.gnu.org/software/hurd/hacking-guide/hhg.html) for - browsing online, - * [PostScript version](http://www.gnu.org/software/hurd/hacking-guide/hhg.ps) - [187kB, 37 pages], - * [ASCII text - version](http://www.gnu.org/software/hurd/hacking-guide/hhg.txt) [59kB], - * [Texinfo source](http://www.gnu.org/software/hurd/hacking-guide/hhg.texi) - [60kB]. diff --git a/hurd/interface.mdwn b/hurd/interface.mdwn deleted file mode 100644 index 53cd31f0..00000000 --- a/hurd/interface.mdwn +++ /dev/null @@ -1,16 +0,0 @@ -[[!meta copyright="Copyright © 2009, 2010 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]]."]]"""]] - -[[!meta title="Interfaces"]] - -/!\ Incomplete. - -[[!map pages="hurd/interface/* and !hurd/interface/*_*" -show=title]] diff --git a/hurd/interface/dir_link.mdwn b/hurd/interface/dir_link.mdwn deleted file mode 100644 index 0f1db578..00000000 --- a/hurd/interface/dir_link.mdwn +++ /dev/null @@ -1,11 +0,0 @@ -[[!meta copyright="Copyright © 2009 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]]."]]"""]] - -[[!meta redir=fs/23]] diff --git a/hurd/interface/dir_lookup.mdwn b/hurd/interface/dir_lookup.mdwn deleted file mode 100644 index 40e79538..00000000 --- a/hurd/interface/dir_lookup.mdwn +++ /dev/null @@ -1,11 +0,0 @@ -[[!meta copyright="Copyright © 2009 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]]."]]"""]] - -[[!meta redir=fs/18]] diff --git a/hurd/interface/dir_mkdir.mdwn b/hurd/interface/dir_mkdir.mdwn deleted file mode 100644 index bf386818..00000000 --- a/hurd/interface/dir_mkdir.mdwn +++ /dev/null @@ -1,11 +0,0 @@ -[[!meta copyright="Copyright © 2009 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]]."]]"""]] - -[[!meta redir=fs/20]] diff --git a/hurd/interface/dir_mkfile.mdwn b/hurd/interface/dir_mkfile.mdwn deleted file mode 100644 index 01828a03..00000000 --- a/hurd/interface/dir_mkfile.mdwn +++ /dev/null @@ -1,11 +0,0 @@ -[[!meta copyright="Copyright © 2009 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]]."]]"""]] - -[[!meta redir=fs/25]] diff --git a/hurd/interface/dir_notice_changes.mdwn b/hurd/interface/dir_notice_changes.mdwn deleted file mode 100644 index 5763a0a3..00000000 --- a/hurd/interface/dir_notice_changes.mdwn +++ /dev/null @@ -1,11 +0,0 @@ -[[!meta copyright="Copyright © 2009 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]]."]]"""]] - -[[!meta redir=fs/26]] diff --git a/hurd/interface/dir_readdir.mdwn b/hurd/interface/dir_readdir.mdwn deleted file mode 100644 index b41e8d49..00000000 --- a/hurd/interface/dir_readdir.mdwn +++ /dev/null @@ -1,11 +0,0 @@ -[[!meta copyright="Copyright © 2009 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]]."]]"""]] - -[[!meta redir=fs/19]] diff --git a/hurd/interface/dir_rename.mdwn b/hurd/interface/dir_rename.mdwn deleted file mode 100644 index 3839487f..00000000 --- a/hurd/interface/dir_rename.mdwn +++ /dev/null @@ -1,11 +0,0 @@ -[[!meta copyright="Copyright © 2009 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]]."]]"""]] - -[[!meta redir=fs/24]] diff --git a/hurd/interface/dir_rmdir.mdwn b/hurd/interface/dir_rmdir.mdwn deleted file mode 100644 index d69fdd30..00000000 --- a/hurd/interface/dir_rmdir.mdwn +++ /dev/null @@ -1,11 +0,0 @@ -[[!meta copyright="Copyright © 2009 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]]."]]"""]] - -[[!meta redir=fs/21]] diff --git a/hurd/interface/dir_unlink.mdwn b/hurd/interface/dir_unlink.mdwn deleted file mode 100644 index a8861bac..00000000 --- a/hurd/interface/dir_unlink.mdwn +++ /dev/null @@ -1,11 +0,0 @@ -[[!meta copyright="Copyright © 2009 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]]."]]"""]] - -[[!meta redir=fs/22]] diff --git a/hurd/interface/file_chauthor.mdwn b/hurd/interface/file_chauthor.mdwn deleted file mode 100644 index 6fcf97f1..00000000 --- a/hurd/interface/file_chauthor.mdwn +++ /dev/null @@ -1,11 +0,0 @@ -[[!meta copyright="Copyright © 2009 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]]."]]"""]] - -[[!meta redir=fs/02]] diff --git a/hurd/interface/file_check_access.mdwn b/hurd/interface/file_check_access.mdwn deleted file mode 100644 index 5ab4af57..00000000 --- a/hurd/interface/file_check_access.mdwn +++ /dev/null @@ -1,11 +0,0 @@ -[[!meta copyright="Copyright © 2009 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]]."]]"""]] - -[[!meta redir=fs/09]] diff --git a/hurd/interface/file_chflags.mdwn b/hurd/interface/file_chflags.mdwn deleted file mode 100644 index 6e55536b..00000000 --- a/hurd/interface/file_chflags.mdwn +++ /dev/null @@ -1,11 +0,0 @@ -[[!meta copyright="Copyright © 2009 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]]."]]"""]] - -[[!meta redir=fs/04]] diff --git a/hurd/interface/file_chmod.mdwn b/hurd/interface/file_chmod.mdwn deleted file mode 100644 index 0bbb8d92..00000000 --- a/hurd/interface/file_chmod.mdwn +++ /dev/null @@ -1,11 +0,0 @@ -[[!meta copyright="Copyright © 2009 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]]."]]"""]] - -[[!meta redir=fs/03]] diff --git a/hurd/interface/file_chown.mdwn b/hurd/interface/file_chown.mdwn deleted file mode 100644 index a99bcf85..00000000 --- a/hurd/interface/file_chown.mdwn +++ /dev/null @@ -1,11 +0,0 @@ -[[!meta copyright="Copyright © 2009 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]]."]]"""]] - -[[!meta redir=fs/01]] diff --git a/hurd/interface/file_exec.mdwn b/hurd/interface/file_exec.mdwn deleted file mode 100644 index 5f4b57f9..00000000 --- a/hurd/interface/file_exec.mdwn +++ /dev/null @@ -1,11 +0,0 @@ -[[!meta copyright="Copyright © 2009 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]]."]]"""]] - -[[!meta redir=fs/00]] diff --git a/hurd/interface/file_get_fs_options.mdwn b/hurd/interface/file_get_fs_options.mdwn deleted file mode 100644 index b04c70a3..00000000 --- a/hurd/interface/file_get_fs_options.mdwn +++ /dev/null @@ -1,11 +0,0 @@ -[[!meta copyright="Copyright © 2009 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]]."]]"""]] - -[[!meta redir=fs/30]] diff --git a/hurd/interface/file_get_storage_info.mdwn b/hurd/interface/file_get_storage_info.mdwn deleted file mode 100644 index 87166c90..00000000 --- a/hurd/interface/file_get_storage_info.mdwn +++ /dev/null @@ -1,11 +0,0 @@ -[[!meta copyright="Copyright © 2009 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]]."]]"""]] - -[[!meta redir=fs/15]] diff --git a/hurd/interface/file_get_translator.mdwn b/hurd/interface/file_get_translator.mdwn deleted file mode 100644 index 6c8565f4..00000000 --- a/hurd/interface/file_get_translator.mdwn +++ /dev/null @@ -1,11 +0,0 @@ -[[!meta copyright="Copyright © 2009 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]]."]]"""]] - -[[!meta redir=fs/28]] diff --git a/hurd/interface/file_get_translator_cntl.mdwn b/hurd/interface/file_get_translator_cntl.mdwn deleted file mode 100644 index befbf1a3..00000000 --- a/hurd/interface/file_get_translator_cntl.mdwn +++ /dev/null @@ -1,11 +0,0 @@ -[[!meta copyright="Copyright © 2009 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]]."]]"""]] - -[[!meta redir=fs/29]] diff --git a/hurd/interface/file_getcontrol.mdwn b/hurd/interface/file_getcontrol.mdwn deleted file mode 100644 index 94503b23..00000000 --- a/hurd/interface/file_getcontrol.mdwn +++ /dev/null @@ -1,11 +0,0 @@ -[[!meta copyright="Copyright © 2009 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]]."]]"""]] - -[[!meta redir=fs/11]] diff --git a/hurd/interface/file_getfh.mdwn b/hurd/interface/file_getfh.mdwn deleted file mode 100644 index 369afb17..00000000 --- a/hurd/interface/file_getfh.mdwn +++ /dev/null @@ -1,11 +0,0 @@ -[[!meta copyright="Copyright © 2009 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]]."]]"""]] - -[[!meta redir=fs/17]] diff --git a/hurd/interface/file_getlinknode.mdwn b/hurd/interface/file_getlinknode.mdwn deleted file mode 100644 index 64efb810..00000000 --- a/hurd/interface/file_getlinknode.mdwn +++ /dev/null @@ -1,11 +0,0 @@ -[[!meta copyright="Copyright © 2009 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]]."]]"""]] - -[[!meta redir=fs/16]] diff --git a/hurd/interface/file_lock.mdwn b/hurd/interface/file_lock.mdwn deleted file mode 100644 index 8860d24b..00000000 --- a/hurd/interface/file_lock.mdwn +++ /dev/null @@ -1,11 +0,0 @@ -[[!meta copyright="Copyright © 2009 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]]."]]"""]] - -[[!meta redir=fs/07]] diff --git a/hurd/interface/file_lock_stat.mdwn b/hurd/interface/file_lock_stat.mdwn deleted file mode 100644 index 78abebb5..00000000 --- a/hurd/interface/file_lock_stat.mdwn +++ /dev/null @@ -1,11 +0,0 @@ -[[!meta copyright="Copyright © 2009 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]]."]]"""]] - -[[!meta redir=fs/08]] diff --git a/hurd/interface/file_notice_changes.mdwn b/hurd/interface/file_notice_changes.mdwn deleted file mode 100644 index f6646410..00000000 --- a/hurd/interface/file_notice_changes.mdwn +++ /dev/null @@ -1,11 +0,0 @@ -[[!meta copyright="Copyright © 2009 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]]."]]"""]] - -[[!meta redir=fs/10]] diff --git a/hurd/interface/file_reparent.mdwn b/hurd/interface/file_reparent.mdwn deleted file mode 100644 index 80cd174e..00000000 --- a/hurd/interface/file_reparent.mdwn +++ /dev/null @@ -1,11 +0,0 @@ -[[!meta copyright="Copyright © 2009 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]]."]]"""]] - -[[!meta redir=fs/31]] diff --git a/hurd/interface/file_set_size.mdwn b/hurd/interface/file_set_size.mdwn deleted file mode 100644 index cf1e376c..00000000 --- a/hurd/interface/file_set_size.mdwn +++ /dev/null @@ -1,11 +0,0 @@ -[[!meta copyright="Copyright © 2009 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]]."]]"""]] - -[[!meta redir=fs/06]] diff --git a/hurd/interface/file_set_translator.mdwn b/hurd/interface/file_set_translator.mdwn deleted file mode 100644 index 4a43bdad..00000000 --- a/hurd/interface/file_set_translator.mdwn +++ /dev/null @@ -1,11 +0,0 @@ -[[!meta copyright="Copyright © 2009 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]]."]]"""]] - -[[!meta redir=fs/27]] diff --git a/hurd/interface/file_statfs.mdwn b/hurd/interface/file_statfs.mdwn deleted file mode 100644 index f5086d34..00000000 --- a/hurd/interface/file_statfs.mdwn +++ /dev/null @@ -1,11 +0,0 @@ -[[!meta copyright="Copyright © 2009 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]]."]]"""]] - -[[!meta redir=fs/12]] diff --git a/hurd/interface/file_sync.mdwn b/hurd/interface/file_sync.mdwn deleted file mode 100644 index 160c86ca..00000000 --- a/hurd/interface/file_sync.mdwn +++ /dev/null @@ -1,11 +0,0 @@ -[[!meta copyright="Copyright © 2009 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]]."]]"""]] - -[[!meta redir=fs/13]] diff --git a/hurd/interface/file_syncfs.mdwn b/hurd/interface/file_syncfs.mdwn deleted file mode 100644 index a52e92b0..00000000 --- a/hurd/interface/file_syncfs.mdwn +++ /dev/null @@ -1,11 +0,0 @@ -[[!meta copyright="Copyright © 2009 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]]."]]"""]] - -[[!meta redir=fs/14]] diff --git a/hurd/interface/file_utimes.mdwn b/hurd/interface/file_utimes.mdwn deleted file mode 100644 index ab09a58b..00000000 --- a/hurd/interface/file_utimes.mdwn +++ /dev/null @@ -1,11 +0,0 @@ -[[!meta copyright="Copyright © 2009 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]]."]]"""]] - -[[!meta redir=fs/05]] diff --git a/hurd/interface/fs.mdwn b/hurd/interface/fs.mdwn deleted file mode 100644 index 4f217c5a..00000000 --- a/hurd/interface/fs.mdwn +++ /dev/null @@ -1,25 +0,0 @@ -[[!meta copyright="Copyright © 1994, 1995, 1996, 1997, 1998, 1999, 2002, 2009 -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]]."]]"""]] - -[[!meta title="fs: Filesystem"]] - -All these objects also implement the generic IO facilities. - -To get or set the translator currently running on a file, use -[[`file_set_translator`|file_set_translator]], -[[`file_get_translator`|file_get_translator]], or -[[`file_get_translator_cntl`|file_get_translator_cntl]] on a port gotten with -the `FS_LOOKUP_NOTRANS` flag to [[`dir_lookup`|dir_lookup]]. You can send -these [[RPC]]s to a port to a translated node (looked up without -`FS_LOOKUP_NOTRANS`) to stack a new translator on top of the existing one. - -[[!map pages="hurd/interface/fs/* and !hurd/interface/fs/*/*" -show=title]] diff --git a/hurd/interface/fs/00.mdwn b/hurd/interface/fs/00.mdwn deleted file mode 100644 index 29b93731..00000000 --- a/hurd/interface/fs/00.mdwn +++ /dev/null @@ -1,30 +0,0 @@ -[[!meta copyright="Copyright © 1994, 1995, 1996, 1997, 1998, 1999, 2002, 2009 -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]]."]]"""]] - -[[!meta title="file_exec"]] - - routine file_exec ( - exec_file: file_t; - RPT - exec_task: task_t; - flags: int; - argv: data_t SCP; - envp: data_t SCP; - fdarray: portarray_t SCP; - portarray: portarray_t SCP; - intarray: intarray_t SCP; - deallocnames: mach_port_name_array_t SCP; - destroynames: mach_port_name_array_t SCP); - -Overlay a task with a file. Necessary initialization, including authentication -changes associated with set[ug]id execution must be handled by the filesystem. -Filesystems normally implement this by using [[`exec_newtask`|exec_newtask]] or -[[`exec_loadtask`|exec_loadtask]] as appropriate. diff --git a/hurd/interface/fs/01.mdwn b/hurd/interface/fs/01.mdwn deleted file mode 100644 index 7b9c7a31..00000000 --- a/hurd/interface/fs/01.mdwn +++ /dev/null @@ -1,20 +0,0 @@ -[[!meta copyright="Copyright © 1994, 1995, 1996, 1997, 1998, 1999, 2002, 2009 -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]]."]]"""]] - -[[!meta title="file_chown"]] - - routine file_chown ( - chown_file: file_t; - RPT - new_owner: uid_t; - new_group: gid_t); - -Change owner and/or group. diff --git a/hurd/interface/fs/02.mdwn b/hurd/interface/fs/02.mdwn deleted file mode 100644 index 3158d2c6..00000000 --- a/hurd/interface/fs/02.mdwn +++ /dev/null @@ -1,36 +0,0 @@ -[[!meta copyright="Copyright © 1994, 1995, 1996, 1997, 1998, 1999, 2002, 2009 -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]]."]]"""]] - -[[!meta title="file_chauthor"]] - - routine file_chauthor ( - chauth_file: file_t; - RPT - new_author: uid_t); - - Whan that Aprill with hith thoureth thoote - The droghte of March hath perthed to the roote, - And bathed every veyne in thwith licour, - Of which vertu engendred is the flour; - Whan Zephiruth eek with hith thweete breeth - Inthpired hath in every holt and heeth - The tender croppeth, and the yonge thonne - Hath in the Ram his halve courth yronne, - And thmale foweleth maken melodye, - That thlepen all the nyght with open ye - (Tho Priketh hem Nature in hir corageth), - Thanne longen folk to goon on pligrimageth, - And palmereth for to theken thtraunge thtrondeth, - To ferne halweth, kowthe in thondry londeth: - And thpethially, from every thireth ende - Of Engelond to Cantebury they wende, - The hooly blithful martyr for to theke, - That hem hath holpen whan that they were theeke. diff --git a/hurd/interface/fs/03.mdwn b/hurd/interface/fs/03.mdwn deleted file mode 100644 index d697ec90..00000000 --- a/hurd/interface/fs/03.mdwn +++ /dev/null @@ -1,19 +0,0 @@ -[[!meta copyright="Copyright © 1994, 1995, 1996, 1997, 1998, 1999, 2002, 2009 -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]]."]]"""]] - -[[!meta title="file_chmod"]] - - routine file_chmod ( - chmod_file: file_t; - RPT - new_mode: mode_t); - -Change mode bits. diff --git a/hurd/interface/fs/04.mdwn b/hurd/interface/fs/04.mdwn deleted file mode 100644 index d0386eab..00000000 --- a/hurd/interface/fs/04.mdwn +++ /dev/null @@ -1,19 +0,0 @@ -[[!meta copyright="Copyright © 1994, 1995, 1996, 1997, 1998, 1999, 2002, 2009 -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]]."]]"""]] - -[[!meta title="file_chflags"]] - - routine file_chflags ( - chflags_file: file_t; - RPT - new_flags: int); - -Change file flags. diff --git a/hurd/interface/fs/05.mdwn b/hurd/interface/fs/05.mdwn deleted file mode 100644 index 184e2ffd..00000000 --- a/hurd/interface/fs/05.mdwn +++ /dev/null @@ -1,23 +0,0 @@ -[[!meta copyright="Copyright © 1994, 1995, 1996, 1997, 1998, 1999, 2002, 2009 -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]]."]]"""]] - -[[!meta title="file_utimes"]] - - routine file_utimes ( - utimes_file: file_t; - RPT - new_atime: time_value_t; - new_mtime: time_value_t); - -Change access and modify times. - -If the microseconds value is -1 (all bits on) then the time should be set to -the current time and the remainder of the `time_value_t` ignored. diff --git a/hurd/interface/fs/06.mdwn b/hurd/interface/fs/06.mdwn deleted file mode 100644 index 393f1a9b..00000000 --- a/hurd/interface/fs/06.mdwn +++ /dev/null @@ -1,21 +0,0 @@ -[[!meta copyright="Copyright © 1994, 1995, 1996, 1997, 1998, 1999, 2002, 2009 -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]]."]]"""]] - -[[!meta title="file_set_size"]] - - routine file_set_size ( - trunc_file: file_t; - RPT - new_size: loff_t); - -Change the size of the file. If the size increases, new blocks are -zero-filled. After successful return, it is safe to reference mapped areas of -the file up to `new_size`. diff --git a/hurd/interface/fs/07.mdwn b/hurd/interface/fs/07.mdwn deleted file mode 100644 index d6408763..00000000 --- a/hurd/interface/fs/07.mdwn +++ /dev/null @@ -1,19 +0,0 @@ -[[!meta copyright="Copyright © 1994, 1995, 1996, 1997, 1998, 1999, 2002, 2009 -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]]."]]"""]] - -[[!meta title="file_lock"]] - - routine file_lock ( - lock_file: file_t; - RPT - flags: int); - -Apply/manipulate advisory lock. diff --git a/hurd/interface/fs/08.mdwn b/hurd/interface/fs/08.mdwn deleted file mode 100644 index fbb3d53b..00000000 --- a/hurd/interface/fs/08.mdwn +++ /dev/null @@ -1,21 +0,0 @@ -[[!meta copyright="Copyright © 1994, 1995, 1996, 1997, 1998, 1999, 2002, 2009 -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]]."]]"""]] - -[[!meta title="file_lock_stat"]] - - routine file_lock_stat ( - lock_file: file_t; - RPT - out mystatus: int; - out otherstatus: int); - -Return current lock status. `mystatus` tells what kind of lock the caller has; -`otherstatus` tells what kind of lock anyone has (including the caller). diff --git a/hurd/interface/fs/09.mdwn b/hurd/interface/fs/09.mdwn deleted file mode 100644 index 02c778c2..00000000 --- a/hurd/interface/fs/09.mdwn +++ /dev/null @@ -1,24 +0,0 @@ -[[!meta copyright="Copyright © 1994, 1995, 1996, 1997, 1998, 1999, 2002, 2009 -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]]."]]"""]] - -[[!meta title="file_check_access"]] - - routine file_check_access ( - file: file_t; - RPT - out allowed: int); - -Find out what kind of access this file permits the current user (regardless of -the current open modes for this port). `allowed` is a bitwise *or* of -`O_READ`, `O_WRITE`, and `O_EXEC`. This is not necessarily the same as what an -`open` or `exec` would allow; `O_EXEC` is set for *root* even if no executable -bits are on (in which case [[`file_exec`|file_exec]] should fail) and `O_WRITE` -is set a directory can be modified, even though it can't be written directly. diff --git a/hurd/interface/fs/10.mdwn b/hurd/interface/fs/10.mdwn deleted file mode 100644 index 56ce204f..00000000 --- a/hurd/interface/fs/10.mdwn +++ /dev/null @@ -1,20 +0,0 @@ -[[!meta copyright="Copyright © 1994, 1995, 1996, 1997, 1998, 1999, 2002, 2009 -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]]."]]"""]] - -[[!meta title="file_notice_changes"]] - - routine file_notice_changes ( - file: file_t; - RPT - port: mach_port_send_t); - -Notice changes to file `file`. Send notification messages (see -[[`fs_notify.defs`|fs_notify]]) to `port` as they occur. diff --git a/hurd/interface/fs/11.mdwn b/hurd/interface/fs/11.mdwn deleted file mode 100644 index 94aa4ee0..00000000 --- a/hurd/interface/fs/11.mdwn +++ /dev/null @@ -1,19 +0,0 @@ -[[!meta copyright="Copyright © 1994, 1995, 1996, 1997, 1998, 1999, 2002, 2009 -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]]."]]"""]] - -[[!meta title="file_getcontrol"]] - - routine file_getcontrol ( - file: file_t; - RPT - out control: mach_port_send_t); - -Return control port for this filesystem. diff --git a/hurd/interface/fs/12.mdwn b/hurd/interface/fs/12.mdwn deleted file mode 100644 index b69b591b..00000000 --- a/hurd/interface/fs/12.mdwn +++ /dev/null @@ -1,19 +0,0 @@ -[[!meta copyright="Copyright © 1994, 1995, 1996, 1997, 1998, 1999, 2002, 2009 -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]]."]]"""]] - -[[!meta title="file_statfs"]] - - routine file_statfs ( - file: file_t; - RPT - out info: fsys_statfsbuf_t); - -Return filesystem status. diff --git a/hurd/interface/fs/13.mdwn b/hurd/interface/fs/13.mdwn deleted file mode 100644 index 2e06e0c4..00000000 --- a/hurd/interface/fs/13.mdwn +++ /dev/null @@ -1,60 +0,0 @@ -[[!meta copyright="Copyright © 1994, 1995, 1996, 1997, 1998, 1999, 2002, 2009 -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]]."]]"""]] - -[[!meta title="file_sync"]] - - routine file_sync ( - file: file_t; - RPT - wait: int; - omit_metadata: int); - -Sync the individual file. If `omit_metadata` is set, then it is only necessary -for the server to updated the actual contents of the file, not any associated -metadata. - -# Implementation Examples - -Servers that either don't keep any unsynchronized state (or don't have a -backing store at all) can simply `return 0`. Examples: [[translator/nfs]]. - -## [[libtrivfs]] - -Pass the call through to the underlying node. - -### [[storeio]] / [[streamio]] - -Instead of to the underlying node, pass the call through to the backend -(device). - -## [[libnetfs]] - -Invoke `netfs_attempt_sync`. - -## [[libdiskfs]] - -Invoke `diskfs_file_update`. - -# Usage Examples - -## [[glibc]] - - * `fdatasync` - - `file_syncfs (FD, true, true)` -- invoke it on the passed file descriptor, - do wait for completion, do allow omitting to update the associated - metadata. - - * `fsync` - - `file_syncfs (FD, true, false)` -- invoke it on the passed file descriptor, - do wait for completion, don't allow omitting to update the associated - metadata. diff --git a/hurd/interface/fs/14.mdwn b/hurd/interface/fs/14.mdwn deleted file mode 100644 index a13c0bd8..00000000 --- a/hurd/interface/fs/14.mdwn +++ /dev/null @@ -1,67 +0,0 @@ -[[!meta copyright="Copyright © 1994, 1995, 1996, 1997, 1998, 1999, 2002, 2009 -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]]."]]"""]] - -[[!meta title="file_syncfs"]] - - routine file_syncfs ( - file: file_t; - RPT - wait: int; - do_children: int); - -Synchronize the entire filesystem. - -This function has a companion in [[`fsys_syncfs`|fsys_syncfs]], which is -invoked on the server's control port instead of an arbitrary node. Both of -them are usually implemented in equivalent ways. - -# Implementation Examples - -Servers that either don't keep any unsynchronized state (or don't have a -backing store at all) can simply `return 0`. Examples: [[translator/nfs]]. - -The implementation typically doesn't care on which specific node (as exported -by the implementing server) [[`file_syncfs`|file_syncfs]] is being invoked on. - -## [[libtrivfs]] - -Invoke [[`file_sync`|file_sync]] on the underlying node. Rationale: the -underlying node represents this filesystem's backend, and once this node is -synchronized, the whole [[libtrivfs]]-based filesystem is to be considered -synchronized. - -### [[storeio]] / [[streamio]] - -Instead of the to underlying node, pass the call through to the backend -(device). - -## [[libnetfs]] - -Invoke `netfs_attempt_syncfs`. - -## [[libdiskfs]] - -Invoke [[`fsys_syncfs`|fsys_syncfs]] on all active children, and invoke -`diskfs_sync_everything` and `diskfs_set_hypermetadata`. - -# Usage Examples - -## [[glibc]] - - * `sync` - - `file_syncfs ("/", false, true)` -- invoke it on the process' root directory - (`INIT_PORT_CRDIR`), don't wait for completion, do synchronize child - filesystems. - -## [[Hurd]] - - * [[`syncfs`|syncfs]] diff --git a/hurd/interface/fs/15.mdwn b/hurd/interface/fs/15.mdwn deleted file mode 100644 index 50dcce1b..00000000 --- a/hurd/interface/fs/15.mdwn +++ /dev/null @@ -1,23 +0,0 @@ -[[!meta copyright="Copyright © 1994, 1995, 1996, 1997, 1998, 1999, 2002, 2009 -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]]."]]"""]] - -[[!meta title="file_get_storage_info"]] - - routine file_get_storage_info ( - file: file_t; - RPT - out ports: portarray_t, dealloc; - out ints: intarray_t, dealloc; - out offsets: off_array_t, dealloc; - out data: data_t, dealloc); - -Return information on the storage used to hold this file. See the comment for -`enum file_storage_class` in `<hurd/hurd_types.h>` the details. diff --git a/hurd/interface/fs/16.mdwn b/hurd/interface/fs/16.mdwn deleted file mode 100644 index 8ba776c1..00000000 --- a/hurd/interface/fs/16.mdwn +++ /dev/null @@ -1,20 +0,0 @@ -[[!meta copyright="Copyright © 1994, 1995, 1996, 1997, 1998, 1999, 2002, 2009 -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]]."]]"""]] - -[[!meta title="file_getlinknode"]] - - routine file_getlinknode ( - file: file_t; - RPT - out linknode: mach_port_send_t); - -Return the node for hard links to this potentially translated file. This -returns a potentially unauthenticated node. diff --git a/hurd/interface/fs/17.mdwn b/hurd/interface/fs/17.mdwn deleted file mode 100644 index 8895434a..00000000 --- a/hurd/interface/fs/17.mdwn +++ /dev/null @@ -1,41 +0,0 @@ -[[!meta copyright="Copyright © 1994, 1995, 1996, 1997, 1998, 1999, 2002, 2009 -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]]."]]"""]] - -[[!meta title="file_getfh"]] - - routine file_getfh ( - file: file_t; - RPT - out filehandle: data_t, dealloc); - -Return a file handle for this file. This can be used by NFS and such. It is -not guaranteed that this call will work; if it doesn't, then this filesystem -cannot be NFS mounted. - -Currently file handles are only used by `nfsd` with the purpose of -having some stable representation of nodes (TODO: Add references). -The only translator library that implements `file_getfh` and the -complementary [[`fsys_getfile`|fsys_getfile]] is `libdiskfs`, so if -you are linking against a different library you should expect that the -filesystem exported by your translator will not be supported by `nfsd` -by default. - -If you would like your non-`libdiskfs` translator to be supported by -`nfsd`, you should implement these two RPCs on your own. The idea is -that to each node exported by your translator you should put in -correspondence a unique file handle. A file handle is a 28-byte -value. The first 4 bytes are not used. Then comes a 4-byte number -which should identify your node somehow (`libdiskfs` uses the index -into the internally maintained node cache). After it there comes a -4-byte number which should bear a similar function to the `st_gen` -field of a `stat` structure. Following this specification, you should -be able to implement `file_getfh` and `fsys_getfile` in a proper way -to get `nfsd` support. diff --git a/hurd/interface/fs/18.mdwn b/hurd/interface/fs/18.mdwn deleted file mode 100644 index dbe606f3..00000000 --- a/hurd/interface/fs/18.mdwn +++ /dev/null @@ -1,34 +0,0 @@ -[[!meta copyright="Copyright © 1994, 1995, 1996, 1997, 1998, 1999, 2002, 2009 -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]]."]]"""]] - -[[!meta title="dir_lookup"]] - - routine dir_lookup ( - start_dir: file_t; - RPT - file_name: string_t; - flags: int; - mode: mode_t; - out do_retry: retry_type; - out retry_name: string_t; - out result: mach_port_send_t); - -Translate a file name, following all symlinks. Upon return, if `do_retry` is -`FS_RETRY_MAGICAL` then `retry_name` specifies what to do, the list of -possibilities is documented in `<hurd/hurd_types.h>`; if `FS_RETRY_REAUTH`, -then `result` should be reauthenticated before being used. If `retry_name` is -the empty string and the retry type is `FS_RETRY_NORMAL`, then no further -[[`dir_lookup`|dir_lookup]] calls are required; `result` is the port to use. -Otherwise the [[`dir_lookup`|dir_lookup]] call should be repeated, sent to -`result` (or the reauthenticated port) with `retry_name` passed for -`file_name`. This call is required to be supported by all files (even -non-directories) if the filename is null, and should function in that case as a -re-open of the file. diff --git a/hurd/interface/fs/19.mdwn b/hurd/interface/fs/19.mdwn deleted file mode 100644 index 86625d44..00000000 --- a/hurd/interface/fs/19.mdwn +++ /dev/null @@ -1,29 +0,0 @@ -[[!meta copyright="Copyright © 1994, 1995, 1996, 1997, 1998, 1999, 2002, 2009 -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]]."]]"""]] - -[[!meta title="dir_readdir"]] - - routine dir_readdir ( - dir: file_t; - RPT - out data: data_t, dealloc[]; - entry: int; - nentries: int; - bufsiz: vm_size_t; - out amount: int); - -Read entries from the directory. Each entry is identified by an index number -starting at 0 and running through the file. This call fetches `nentries` (or -any convenient number if `nentries` is -1) entries starting at `entry`, -returning an array of struct directs in `data`. The number of entries -successfully read is returned in `amount`. If `entry` is bigger than the index -of the last entry, then 0 is returned in `amount`. If `bufsize` is nonzero, -never return more than `bufsize` bytes of data regardless. diff --git a/hurd/interface/fs/20.mdwn b/hurd/interface/fs/20.mdwn deleted file mode 100644 index da57f0b5..00000000 --- a/hurd/interface/fs/20.mdwn +++ /dev/null @@ -1,20 +0,0 @@ -[[!meta copyright="Copyright © 1994, 1995, 1996, 1997, 1998, 1999, 2002, 2009 -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]]."]]"""]] - -[[!meta title="dir_mkdir"]] - - routine dir_mkdir ( - directory: file_t; - RPT - name: string_t; - mode: mode_t); - -Create directory. diff --git a/hurd/interface/fs/21.mdwn b/hurd/interface/fs/21.mdwn deleted file mode 100644 index c562333a..00000000 --- a/hurd/interface/fs/21.mdwn +++ /dev/null @@ -1,19 +0,0 @@ -[[!meta copyright="Copyright © 1994, 1995, 1996, 1997, 1998, 1999, 2002, 2009 -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]]."]]"""]] - -[[!meta title="dir_rmdir"]] - - routine dir_rmdir ( - directory: file_t; - RPT - name: string_t); - -Remove directory. diff --git a/hurd/interface/fs/22.mdwn b/hurd/interface/fs/22.mdwn deleted file mode 100644 index 24fcdd9e..00000000 --- a/hurd/interface/fs/22.mdwn +++ /dev/null @@ -1,19 +0,0 @@ -[[!meta copyright="Copyright © 1994, 1995, 1996, 1997, 1998, 1999, 2002, 2009 -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]]."]]"""]] - -[[!meta title="dir_unlink"]] - - routine dir_unlink ( - directory: file_t; - RPT - name: string_t); - -Remove non-directory. diff --git a/hurd/interface/fs/23.mdwn b/hurd/interface/fs/23.mdwn deleted file mode 100644 index 44621d37..00000000 --- a/hurd/interface/fs/23.mdwn +++ /dev/null @@ -1,27 +0,0 @@ -[[!meta copyright="Copyright © 1994, 1995, 1996, 1997, 1998, 1999, 2002, 2009 -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]]."]]"""]] - -[[!meta title="dir_link"]] - - routine dir_link ( - dir: file_t; - RPT - file: file_t; - name: string_t; - excl: int); - -Create a hard link. - -If `dir` and `file` are not implemented by the same filesystem, `EXDEV` should -be returned. If the two filesystems, however can inter-operate and guarantee -the appropriate POSIX semantics, they can communicate by a private protocol and -allow hard links between them. If `excl` is set, then fail if `name` already -exists in `dir`. diff --git a/hurd/interface/fs/24.mdwn b/hurd/interface/fs/24.mdwn deleted file mode 100644 index aac2df60..00000000 --- a/hurd/interface/fs/24.mdwn +++ /dev/null @@ -1,24 +0,0 @@ -[[!meta copyright="Copyright © 1994, 1995, 1996, 1997, 1998, 1999, 2002, 2009 -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]]."]]"""]] - -[[!meta title="dir_rename"]] - - routine dir_rename ( - olddirectory: file_t; - RPT - oldname: string_t; - newdirectory: file_t; - newname: string_t; - excl: int); - -Rename file -- comments similar to those for [[`dir_link`|dir_link]] apply here -about `EXDEV`. If `excl` is set, then fail if `newname` already exists in -`newdirectory`. diff --git a/hurd/interface/fs/25.mdwn b/hurd/interface/fs/25.mdwn deleted file mode 100644 index 9b08d54f..00000000 --- a/hurd/interface/fs/25.mdwn +++ /dev/null @@ -1,25 +0,0 @@ -[[!meta copyright="Copyright © 1994, 1995, 1996, 1997, 1998, 1999, 2002, 2009 -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]]."]]"""]] - -[[!meta title="dir_mkfile"]] - - routine dir_mkfile ( - directory: file_t; - RPT - flags: int; - mode: mode_t; - out newnode: mach_port_send_t); - -Create a new file without linking it into the filesystem. You still must have -write permission on the specified directory, even though it will not actually -be written. Return in `newnode` a port to the file. `flags` are the same as -for [[`dir_lookup`|dir_lookup]], but `O_CREAT` and `O_TRUNC` are assumed even -if not specified. diff --git a/hurd/interface/fs/26.mdwn b/hurd/interface/fs/26.mdwn deleted file mode 100644 index 82a7bca1..00000000 --- a/hurd/interface/fs/26.mdwn +++ /dev/null @@ -1,20 +0,0 @@ -[[!meta copyright="Copyright © 1994, 1995, 1996, 1997, 1998, 1999, 2002, 2009 -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]]."]]"""]] - -[[!meta title="dir_notice_changes"]] - - routine dir_notice_changes ( - directory: file_t; - RPT - port: mach_port_send_t); - -Notice changes to directory `dir`. Send directory change notifications (see -[[`fs_notify.defs`|fs_notify]]) to `port` as they occur. diff --git a/hurd/interface/fs/27.mdwn b/hurd/interface/fs/27.mdwn deleted file mode 100644 index 9a7bd13f..00000000 --- a/hurd/interface/fs/27.mdwn +++ /dev/null @@ -1,29 +0,0 @@ -[[!meta copyright="Copyright © 1994, 1995, 1996, 1997, 1998, 1999, 2002, 2009 -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]]."]]"""]] - -[[!meta title="file_set_translator"]] - - routine file_set_translator ( - file: file_t; - RPT - passive_flags: int; - active_flags: int; - oldtrans_flags: int; - passive: data_t SCP; - active: mach_port_send_t); - -Set a translator for future lookups to a file. - -`passive` is the passive translator; `active` is the active translator. - -The `flags` are `FS_TRANS_*`, defined in `<hurd/hurd_types.h>`. `oldflags` are -sent in an [[`fsys_goaway`|fsys_goaway]] to an existing active translator if -there is one and it is to be killed. diff --git a/hurd/interface/fs/28.mdwn b/hurd/interface/fs/28.mdwn deleted file mode 100644 index 13ac4b7a..00000000 --- a/hurd/interface/fs/28.mdwn +++ /dev/null @@ -1,19 +0,0 @@ -[[!meta copyright="Copyright © 1994, 1995, 1996, 1997, 1998, 1999, 2002, 2009 -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]]."]]"""]] - -[[!meta title="file_get_translator"]] - - routine file_get_translator ( - file: file_t; - RPT - out translator: data_t, dealloc); - -Return the stored permanent translator for this file. diff --git a/hurd/interface/fs/29.mdwn b/hurd/interface/fs/29.mdwn deleted file mode 100644 index 1cc3950a..00000000 --- a/hurd/interface/fs/29.mdwn +++ /dev/null @@ -1,20 +0,0 @@ -[[!meta copyright="Copyright © 1994, 1995, 1996, 1997, 1998, 1999, 2002, 2009 -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]]."]]"""]] - -[[!meta title="file_get_translator_cntl"]] - - routine file_get_translator_cntl ( - file: file_t; - RPT - out translator_cntl: mach_port_send_t); - -Return the translator control port to the active translator (if any) for this -file. diff --git a/hurd/interface/fs/30.mdwn b/hurd/interface/fs/30.mdwn deleted file mode 100644 index 653af42f..00000000 --- a/hurd/interface/fs/30.mdwn +++ /dev/null @@ -1,20 +0,0 @@ -[[!meta copyright="Copyright © 1994, 1995, 1996, 1997, 1998, 1999, 2002, 2009 -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]]."]]"""]] - -[[!meta title="file_get_fs_options"]] - - routine file_get_fs_options ( - file: file_t; - RPT - out options: data_t, dealloc); - -Return the options describing the way the receiving filesystem is running. -(Suitable as an arg for [[`fsys_set_options`|fsys_set_options]]). diff --git a/hurd/interface/fs/31.mdwn b/hurd/interface/fs/31.mdwn deleted file mode 100644 index 32e7efda..00000000 --- a/hurd/interface/fs/31.mdwn +++ /dev/null @@ -1,21 +0,0 @@ -[[!meta copyright="Copyright © 1994, 1995, 1996, 1997, 1998, 1999, 2002, 2009 -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]]."]]"""]] - -[[!meta title="file_reparent"]] - - routine file_reparent ( - file: file_t; - RPT - parent: mach_port_t; - out new_file: mach_port_send_t); - -Return a new file, `new_file`, with the same semantics as `file`, but with -lookups of `..` (if `file` is a directory) redirected to `parent`. diff --git a/hurd/interface/fsys.mdwn b/hurd/interface/fsys.mdwn deleted file mode 100644 index cea10d30..00000000 --- a/hurd/interface/fsys.mdwn +++ /dev/null @@ -1,15 +0,0 @@ -[[!meta copyright="Copyright © 1992, 1993, 1994, 1995, 1996, 1997, 2002, 2009 -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]]."]]"""]] - -[[!meta title="fsys: Filesystem Control"]] - -[[!map pages="hurd/interface/fsys/* and !hurd/interface/fsys/*/*" -show=title]] diff --git a/hurd/interface/fsys/00.mdwn b/hurd/interface/fsys/00.mdwn deleted file mode 100644 index 68e0479e..00000000 --- a/hurd/interface/fsys/00.mdwn +++ /dev/null @@ -1,23 +0,0 @@ -[[!meta copyright="Copyright © 1992, 1993, 1994, 1995, 1996, 1997, 2002, 2009 -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]]."]]"""]] - -[[!meta title="fsys_startup"]] - - routine fsys_startup ( - bootstrap: mach_port_t; - RPT - openflags: int; - control_port: mach_port_send_t; - out realnode: mach_port_send_t); - -Sent by filesystem on its bootstrap port upon startup. `realnode` is the node -this filesystem is the translator for, opened with flags `flags` (`O_NOTRANS` -is assumed even if not provided). diff --git a/hurd/interface/fsys/01.mdwn b/hurd/interface/fsys/01.mdwn deleted file mode 100644 index 9cb95de5..00000000 --- a/hurd/interface/fsys/01.mdwn +++ /dev/null @@ -1,19 +0,0 @@ -[[!meta copyright="Copyright © 1992, 1993, 1994, 1995, 1996, 1997, 2002, 2009 -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]]."]]"""]] - -[[!meta title="fsys_goaway"]] - - routine fsys_goaway ( - fsys: fsys_t; - RPT - flags: int); - -Filesystem should go away. Bye. diff --git a/hurd/interface/fsys/02.mdwn b/hurd/interface/fsys/02.mdwn deleted file mode 100644 index 63b84c48..00000000 --- a/hurd/interface/fsys/02.mdwn +++ /dev/null @@ -1,33 +0,0 @@ -[[!meta copyright="Copyright © 1992, 1993, 1994, 1995, 1996, 1997, 2002, 2009 -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]]."]]"""]] - -[[!meta title="fsys_getroot"]] - - routine fsys_getroot( - fsys: fsys_t; - RPT - #ifdef FSYS_GETROOT_UREPLY - ureplyport ureply: mig_reply_port_t; - #endif - dotdot_node: mach_port_send_t; - gen_uids: idarray_t; - gen_gids: idarray_t; - flags: int; - out do_retry: retry_type; - out retry_name: string_t; - out file: mach_port_send_t); - -Return a file to the root of the filesystem. `flags` are as for -[[`dir_lookup`|dir_lookup]] (but `O_CREAT` and `O_EXCL` are not meaningful). -`do_retry`, `retry_name`, and `result` are as for [[`dir_lookup`|dir_lookup]]. -The port should be authenticated with `gen_uids` and `gen_gids` (except, of -course, for `FS_RETRY_REAUTH` and `FS_RETRY_MAGICAL). `dotdot_node` is an -unauthenticated port for the directory in which this root is located. diff --git a/hurd/interface/fsys/03.mdwn b/hurd/interface/fsys/03.mdwn deleted file mode 100644 index b0c033c2..00000000 --- a/hurd/interface/fsys/03.mdwn +++ /dev/null @@ -1,22 +0,0 @@ -[[!meta copyright="Copyright © 1992, 1993, 1994, 1995, 1996, 1997, 2002, 2009 -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]]."]]"""]] - -[[!meta title="fsys_getfile"]] - - routine fsys_getfile ( - fsys: fsys_t; - RPT - gen_uids: idarray_t; - gen_gids: idarray_t; - filehandle: data_t; - out file: mach_port_send_t); - -Get a file given a file handle (see [[`file_getfh`|file_getfh]]). diff --git a/hurd/interface/fsys/04.mdwn b/hurd/interface/fsys/04.mdwn deleted file mode 100644 index 7b370d2b..00000000 --- a/hurd/interface/fsys/04.mdwn +++ /dev/null @@ -1,58 +0,0 @@ -[[!meta copyright="Copyright © 2009 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]]."]]"""]] - -[[!meta title="fsys_syncfs"]] - - routine fsys_syncfs ( - fsys: fsys_t; - RPT - wait: int; - do_children: int); - -Synchronize the entire filesystem. - -This function has a companion in [[`file_syncfs`|file_syncfs]], which is -invoked on an arbitrary node instead of the server's control port. Both of -them are usually implemented in equivalent ways. - -# Implementation Examples - -Servers that either don't keep any unsynchronized state (or don't have a -backing store at all) can simply `return 0`. Examples: [[translator/symlink]], -[[translator/nfs]]. - -## [[libtrivfs]] - -Invoke [[`file_sync`|file_sync]] on the underlying node. Rationale: the -underlying node represents this filesystem's backend, and once this node is -synchronized, the whole [[libtrivfs]]-based filesystem is to be considered -synchronized. - -### [[storeio]] / [[streamio]] - -Instead of to the underlying node, pass the call through to the backend -(device). - -## [[libnetfs]] - -Invoke `netfs_attempt_syncfs`. - -## [[libdiskfs]] - -Invoke [[`fsys_syncfs`|fsys_syncfs]] on all active children, and invoke -`diskfs_sync_everything` and `diskfs_set_hypermetadata`. - -# Usage Examples - -## [[libdiskfs]] - -In the implementations of both [[`file_syncfs`|file_syncfs]] and -[[`fsys_syncfs`|fsys_syncfs]], [[`fsys_syncfs`|fsys_syncfs]] is invoked on all -active children. diff --git a/hurd/interface/fsys/05.mdwn b/hurd/interface/fsys/05.mdwn deleted file mode 100644 index 5caf6b17..00000000 --- a/hurd/interface/fsys/05.mdwn +++ /dev/null @@ -1,20 +0,0 @@ -[[!meta copyright="Copyright © 2009 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]]."]]"""]] - -[[!meta title="fsys_set_options"]] - - routine fsys_set_options ( - fsys: fsys_t; - RPT - options: data_t; - do_children: int); - -Pass a server-specific options string. This usually includes flags similar to -command line options, e.g., `--readonly`, or `--sync=30`. diff --git a/hurd/interface/fsys/06.mdwn b/hurd/interface/fsys/06.mdwn deleted file mode 100644 index c8ccbed8..00000000 --- a/hurd/interface/fsys/06.mdwn +++ /dev/null @@ -1,20 +0,0 @@ -[[!meta copyright="Copyright © 2009 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]]."]]"""]] - -[[!meta title="fsys_getpriv"]] - - routine fsys_getpriv ( - fsys: fsys_t; - RPT - out host_priv: mach_port_send_t; - out device_master: mach_port_send_t; - out fstask: mach_port_send_t); - -This is only implemented by bootstrap filesystems. diff --git a/hurd/interface/fsys/07.mdwn b/hurd/interface/fsys/07.mdwn deleted file mode 100644 index 4700416d..00000000 --- a/hurd/interface/fsys/07.mdwn +++ /dev/null @@ -1,19 +0,0 @@ -[[!meta copyright="Copyright © 2009 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]]."]]"""]] - -[[!meta title="fsys_init"]] - - routine fsys_init ( - fsys: fsys_t; - sreplyport reply_port: sreply_port_t; - proc_server: mach_port_send_t; - auth_handle: auth_t); - -This is only implemented by bootstrap filesystems. diff --git a/hurd/interface/fsys/08.mdwn b/hurd/interface/fsys/08.mdwn deleted file mode 100644 index 42ac277d..00000000 --- a/hurd/interface/fsys/08.mdwn +++ /dev/null @@ -1,23 +0,0 @@ -[[!meta copyright="Copyright © 2009 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]]."]]"""]] - -[[!meta title="fsys_forward"]] - - routine fsys_forward ( - server: mach_port_t; - RPT - requestor: mach_port_send_t; - argv: data_t); - -Ask `server` to provide [[`fsys`|fsys]] translation service for us. -`requestor` is the bootstrap port supplied to the original translator, and -`argv` are the command line arguments. If the recipient accepts the request, -he (or some delegate) should send [[`fsys_startup`|fsys_startup]] to -`requestor` to start the filesystem up. diff --git a/hurd/interface/fsys/09.mdwn b/hurd/interface/fsys/09.mdwn deleted file mode 100644 index fa5c4117..00000000 --- a/hurd/interface/fsys/09.mdwn +++ /dev/null @@ -1,19 +0,0 @@ -[[!meta copyright="Copyright © 2009 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]]."]]"""]] - -[[!meta title="fsys_get_options"]] - - routine fsys_get_options ( - server: fsys_t; - RPT - out options: data_t, dealloc); - -Return the options describing the operation of the receiving filesystem -(sutiable for [[`fsys_set_options`|fsys_set_options]]). diff --git a/hurd/interface/fsys_forward.mdwn b/hurd/interface/fsys_forward.mdwn deleted file mode 100644 index 1ab16003..00000000 --- a/hurd/interface/fsys_forward.mdwn +++ /dev/null @@ -1,11 +0,0 @@ -[[!meta copyright="Copyright © 2009 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]]."]]"""]] - -[[!meta redir=fsys/08]] diff --git a/hurd/interface/fsys_get_options.mdwn b/hurd/interface/fsys_get_options.mdwn deleted file mode 100644 index 5a48d24d..00000000 --- a/hurd/interface/fsys_get_options.mdwn +++ /dev/null @@ -1,11 +0,0 @@ -[[!meta copyright="Copyright © 2009 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]]."]]"""]] - -[[!meta redir=fsys/09]] diff --git a/hurd/interface/fsys_getfile.mdwn b/hurd/interface/fsys_getfile.mdwn deleted file mode 100644 index d292f265..00000000 --- a/hurd/interface/fsys_getfile.mdwn +++ /dev/null @@ -1,11 +0,0 @@ -[[!meta copyright="Copyright © 2009 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]]."]]"""]] - -[[!meta redir=fsys/03]] diff --git a/hurd/interface/fsys_getpriv.mdwn b/hurd/interface/fsys_getpriv.mdwn deleted file mode 100644 index 6c4332ba..00000000 --- a/hurd/interface/fsys_getpriv.mdwn +++ /dev/null @@ -1,11 +0,0 @@ -[[!meta copyright="Copyright © 2009 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]]."]]"""]] - -[[!meta redir=fsys/06]] diff --git a/hurd/interface/fsys_getroot.mdwn b/hurd/interface/fsys_getroot.mdwn deleted file mode 100644 index ff03c482..00000000 --- a/hurd/interface/fsys_getroot.mdwn +++ /dev/null @@ -1,11 +0,0 @@ -[[!meta copyright="Copyright © 2009 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]]."]]"""]] - -[[!meta redir=fsys/02]] diff --git a/hurd/interface/fsys_goaway.mdwn b/hurd/interface/fsys_goaway.mdwn deleted file mode 100644 index bf431a08..00000000 --- a/hurd/interface/fsys_goaway.mdwn +++ /dev/null @@ -1,11 +0,0 @@ -[[!meta copyright="Copyright © 2009 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]]."]]"""]] - -[[!meta redir=fsys/01]] diff --git a/hurd/interface/fsys_init.mdwn b/hurd/interface/fsys_init.mdwn deleted file mode 100644 index 2be8dfb9..00000000 --- a/hurd/interface/fsys_init.mdwn +++ /dev/null @@ -1,11 +0,0 @@ -[[!meta copyright="Copyright © 2009 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]]."]]"""]] - -[[!meta redir=fsys/07]] diff --git a/hurd/interface/fsys_set_options.mdwn b/hurd/interface/fsys_set_options.mdwn deleted file mode 100644 index 7f977c20..00000000 --- a/hurd/interface/fsys_set_options.mdwn +++ /dev/null @@ -1,11 +0,0 @@ -[[!meta copyright="Copyright © 2009 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]]."]]"""]] - -[[!meta redir=fsys/05]] diff --git a/hurd/interface/fsys_startup.mdwn b/hurd/interface/fsys_startup.mdwn deleted file mode 100644 index 21cbdee3..00000000 --- a/hurd/interface/fsys_startup.mdwn +++ /dev/null @@ -1,11 +0,0 @@ -[[!meta copyright="Copyright © 2009 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]]."]]"""]] - -[[!meta redir=fsys/00]] diff --git a/hurd/interface/fsys_syncfs.mdwn b/hurd/interface/fsys_syncfs.mdwn deleted file mode 100644 index 88955524..00000000 --- a/hurd/interface/fsys_syncfs.mdwn +++ /dev/null @@ -1,11 +0,0 @@ -[[!meta copyright="Copyright © 2009 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]]."]]"""]] - -[[!meta redir=fsys/04]] diff --git a/hurd/io_path.mdwn b/hurd/io_path.mdwn deleted file mode 100644 index c47b5dca..00000000 --- a/hurd/io_path.mdwn +++ /dev/null @@ -1,109 +0,0 @@ -[[!meta copyright="Copyright © 2008, 2010, 2011 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]]."]]"""]] - -[[!meta title="I/O Path"]] - -[[!tag open_issue_documentation]] <!-- Someone still needs to make a pass over -this text. --> - -[[!toc]] - - -# `read`, [[libtrivfs]] - -[[glibc]]'s `read` is in `glibc/sysdeps/mach/hurd/read.c:__libc_read`. - -A buffer (and its size) to store the to-be-read data in is supplied by the -caller of `read`. - -> `__libc_read` calls `glibc/hurd/fd-read.c:_hurd_fd_read`. - ->> `_hurd_fd_read` calls `__io_read`, which is an [[RPC]]: ->> `hurd/hurd/io.defs:io_read`. - ->>> Enter user-side RPC stub `glibc.obj/hurd/RPC_io_read.c:__io_read`. Process ->>> stuff, switch to kernel, etc. - -(For example) [[translator/hello]] server, [[libtrivfs]]-based. Enter -server-side RPC stub `hurd.obj/libtrivfs/ioServer.c:_Xio_read`. Process stuff, -call `hurd/trans/hello.c:trivfs_S_io_read`. - -A 2048 byte buffer is provided. - -> `trivfs_S_io_read`. Depending on the internal state, either a new memory -> region is set-up (and returned as out-of-line data), or the desired amount of -> data is returned in-line. - -Back in `_Xio_read`. - -If the 2048 byte buffer is not decided to be used (out-of-line case or bigger -than 2048 bytes case; server decides to instead provide a new memory region), -the [[`dealloc`|microkernel/mach/mig/documentation/dealloc]] flag is being set, -which causes Mach to unmap that memory region from the server's address space, -i.e., doing a memory *move* from the server to the client. - -Leave server-side RPC stub `_Xio_read`. - ->>> Return from kernel, continue client-side RPC stub `io_read`. Have to copy ->>> data. Three cases: out-of-line data (pass pointer to memory area); ->>> returned more data than fits into the originally supplied buffer (allocate ->>> new buffer, copy all data into it, pass pointer of new buffer); otherwise ->>> copy as much data as is available into the originally supplied buffer. ->>> I.e., in all cases *all* data which was provided by the server is made ->>> available to the caller. - ->> Back in `_hurd_fd_read`. If a new buffer has been allocated previously, or ->> the out-of-line mechanism has been used, the returned data now has to be ->> copied into the originally supplied buffer. If the server returned more ->> data than requested, this is a [[protocol_violation|EGRATUITOUS]]. - -> Back in `__libc_read`. - - -# `read`, [[hurd/translator/ext2fs]]/[[hurd/libdiskfs]] - -(For example) [[translator/ext2fs]] server, enter server-side RPC stub -`hurd.obj/libdiskfs/ioServer.c:_Xio_read`. Process stuff, call -`hurd/libdiskfs/io-read.c:diskfs_S_io_read`. - -A 2048 byte buffer is provided. - -> `diskfs_S_io_read` calls `_diskfs_rdwr_internal`. - ->> That calls `hurd/libpager/pager-memcpy.c:pager_memcpy`, which usually ->> basically just tells the kernel to virtually project the memory object ->> corresponding to the file in the caller process's memory. No read is ->> actually done. - - * Then, when the process actually reads the data, the kernel gets the user - page fault (`gnumach/i386/i386/trap.c:user_trap`), which calls `vm_fault`, - etc., until actually getting to `gnumach/vm/vm_fault/vm_fault_page` which - eventually calls `memory_object_data_request`, which is an [[RPC]], i.e., - that actually results into the [[translator/ext2fs]] server calling - `hurd/libpager/data-request.c:_pager_seqnos_memory_object_data_request`. - - * That calls `hurd/ext2fs/pager.c:pager_read_page`, which looks for where the - data is on the disk, and eventually calls - `hurd/libstore/rdwr.c:store_read`, which eventually calls `device_read`, - which is an [[RPC]], i.e., that actually gets into the kernel calling - `gnumach/linux/dev/glue/block.c:device_read`. - - * ext2fs eventually finishes the data_request() function, the kernel installs - the page into the process that got a fault. - - -# Documentation - - * In [*Linux kernel design patterns - part - 3*](http://lwn.net/Articles/336262/) (2009-06-22), Neil Brown gives a - nice overview of the related layering inside the Linux kernel, - including the VFS layer, page cache and directory entry cache - (dcache). diff --git a/hurd/libchannel.mdwn b/hurd/libchannel.mdwn deleted file mode 100644 index 3e19fb18..00000000 --- a/hurd/libchannel.mdwn +++ /dev/null @@ -1,68 +0,0 @@ -[[!meta copyright="Copyright © 2008, 2010 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]]."]]"""]] - -# libchannel - -*libchannel* was accepted as a project for [[Google_Summer_of_Code|community/gsoc]] (or -just GSoC) in 2007. It was written by Carl Fredrik Hammar who was mentored by -Richard Braun. - - -## Outline - -*libchannel* was intended to be used to cleanly and efficiently -implement *channel* translators that would correspond to character -device files. In other words, translators for input devices, sound, -network and the like. - -There are many cases where one wishes to stack translators over one -another. Take networking as an example, you may wish to have a pseudo -network device that balance traffic over two real devices. - -The problem with stacking translators this way is that it's -inefficient, for every RPC to the balancer a RPC is made to each of -the real devices. Now a RPC isn't really *that* expensive, but in a -more complex example with more layers the overhead of these RPC's makes -such a stacking infeasible. - -However, by using *libchannel* a translator can provide a description -of what it does (i.e. the code and data it uses), which a translator -layered untop can fetch and use directly. Now only strictly required -RPC's needs to be sent. - - -## Result - -By the end of GSoC 2007, *libchannel* had mostly reached the initial -goals. There some code missing, most notably the code for -transferring channels via RPC, but similar code was already present in -*libstore* and can be trivially adapted for *libchannel*. It also -needed more debugging. - -Despite these minor deficiencies, the project was considered a -success, never the less. - - -## Future directions - -However, while *libchannel* matched the original specifications. It's -believed that it's too inflexible to make use of in many specific -cases and that a more general solution is desired. While the -discussion isn't over yet, it seems *libchannel* will become a support -library to implement specialized channel libraries, e.g. *libaudio* -and *libnetwork* or similar. - -So work on *libchannel* will continue, in one form or another. - - -# Related - - * [*Van Jacobson's network channels*](http://lwn.net/Articles/169961/) - (2006-01-31) by Jonathan Corbet. diff --git a/hurd/libdiskfs.mdwn b/hurd/libdiskfs.mdwn deleted file mode 100644 index dd499785..00000000 --- a/hurd/libdiskfs.mdwn +++ /dev/null @@ -1,42 +0,0 @@ -[[!meta copyright="Copyright © 2011 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]]."]]"""]] - - -# Paging - -In the course of Maksym's [[translator/tmpfs]] work: - -IRC, freenode, #hurd, 2011-10-24: - - <mcsim> I've compared the way pagers are handled in ext2fs and found out - that for every file new pager is created when occurs reading or writing - to this file. Is it necessary? And can one pager handle several memory - objects? - <antrik> mcsim: yes, this in necessary. one pager port corresponds to one - memory object - <antrik> mcsim: note that a pager, from the kernel's point of view, is - essentially just the port used to communicated with the process - responsible for paging the object. how your process manages multiple - pager ports is up to you - <mcsim> so, how can I attach those pager_* functions, which are declared - now in pager-stubs.c to new pager? - <mcsim> or is it done automatically with all pagers, which I create, If - only I'm not using default one? - <antrik> I'm not sure how libpager works; but I suspect it's based on - libports. you probably need a port class for the pager ports, and add the - port for each new pager your create to that class - <antrik> (of course you also need to add it to some port bucket. if you use - a single dispatcher for everything, this would be the default bucket; if - you want a separate thread for pager handling, you'd have to create an - extra bucket for the pagers) - -This is the `diskfs_get_filemap` function that a `libdiskfs` client has to -provide; used in `libdiskfs/rdwr-internal.c:_diskfs_rdwr_internal`, which in -turn is used by the [[interface/io_read]]/[[interface/io_write]] RPCs. diff --git a/hurd/libfshelp.mdwn b/hurd/libfshelp.mdwn deleted file mode 100644 index 4eda91b6..00000000 --- a/hurd/libfshelp.mdwn +++ /dev/null @@ -1,29 +0,0 @@ -[[!meta copyright="Copyright © 2010 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]]."]]"""]] - -TODO. - - -# Open Issues - -[[!tag open_issue_hurd]] - - * IRC, unknown channel, unknown date - - <flavioc> antrik, i had some problems with CLISP. it goes into an infinite loop when there's no stdin or stdout (fshelp closes them when a translator starts). At first I tried to patch it but CLISP has very intricate dependencies on them, so I just created a wraper program (run-lisp-trans) that opens /dev/null as stdin and stdout and then exec's clisp - <marcus> flavioc, antrik: I would suggest to modify libfshelp to start translators with stdin/stdout mapped to /dev/null. - <marcus> or is there a good reason not to? - <flavioc> marcus, the problem is in clisp :-), it should not expect that stdin/stdout are always open - <marcus> flavioc: I agree, but there is really no point in making it hard. many programs will fail if stdin, stdout or stderr are not occupied. historically, they expect them to be there, so IMO libfshelp should be changed - <marcus> flavioc: it's a simple solution, works everywhere and shouldn't do any harm :) - <flavioc> marcus, I see. should I propose that on the mailing list? :-) - <marcus> flavioc: it might be simpler to just crack the svn server and sneak it in :) - <marcus> if you submit a patch I will look at it and check it in if it is ok - <marcus> and see if Roland is still watching ... :D diff --git a/hurd/libihash.mdwn b/hurd/libihash.mdwn deleted file mode 100644 index 03ebae82..00000000 --- a/hurd/libihash.mdwn +++ /dev/null @@ -1,57 +0,0 @@ -[[!meta copyright="Copyright © 2009, 2010, 2011 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 open_issue_hurd]] - - * Hurd libihash - - * old - - * new - - * hurd-l4 libhurd-ihash - - * [[viengoos libhurd-ihash|microkernel/viengoos/projects/new_hash_function]] - - IRC, unknown channel, unknown date - - <neal> so, we need a new ihash implementation - <neal> marcusb: When 80% full, the collision rate is very high. - <neal> marcusb: I tested using 512mb / 4096 entries - <neal> marcusb: Changing the load factor to 30% resulted in my program running more than an order of magnitude faster. - <marcusb> yeah, it shouldn't get so full - <marcusb> don't we do an exponential back-off in the array size? - <marcusb> of course it's clear we can do much better - <marcusb> the ihash algo is very simple - <marcusb> I'm not even sure it makes much sense to have a generic library - - -# Alternatives? - - * glibc - - * include/inline-hashtab.h - - * locale/programs/simple-hash.h - - * misc/hsearch_r.c - - * NNS; cf. f46f0abfee5a2b34451708f2462a1c3b1701facd - - * libstdc++: `unordered_map`, `tr1/unordered_map`, `ext/hash_map` - - * <http://cmph.sourceforge.net/> - - * <http://libhashish.sourceforge.net/> - - * <http://www.azillionmonkeys.com/qed/hash.html> - - * CCAN's htable, idtree diff --git a/hurd/libnetfs.mdwn b/hurd/libnetfs.mdwn deleted file mode 100644 index 8625f8bc..00000000 --- a/hurd/libnetfs.mdwn +++ /dev/null @@ -1,298 +0,0 @@ -[[!meta copyright="Copyright © 2007, 2008, 2010 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]]."]]"""]] - -#libnetfs - -##What This Is - -This document is an attempt at a short overview of the main concepts -used in the process of development of translators using -*libnetfs*. You will **not** find here a detailed description of the -required callbacks (for this take a look at -<http://www.debian.org/ports/hurd/reference-manual/hurd.html>). You -will **not** find a complete example of code either (usually, -*unionfs* is suggested as an example) - -##What libnetfs Is - -*libnetfs* is a Hurd library used in writing translators providing -some virtual directory structures. For example, if you would like to -create a translator which shows a *.tar* archive in a unpacked way, -you will definitely want to use *libnetfs*. However, it is important -to understand one thing: real filesystem servers (like *ext3* and -such) do **not** use *libnetfs*, instead, they rely on *libdiskfs*, -which is, generally speaking, seriously different from *libnetfs*. - -All in all, *libnetfs* is the library you would choose when you want -to write a translator which will show a file (or a directory) in a -modified way (for example, if you'd like to show only *.sh* files or -make an archive look unpacked). As different from *[[libtrivfs]]*, using -*libnetfs*, you can show to your clients not just a single file, but a -whole directory tree. - -##How It Works: Short Description - -With the aid of *libnetfs* a translator (supposedly) publishes a -directory tree. All lookups in this directory tree are directed to the -translator and the latter is free to provide whatever (consistent) -information as the result of the lookup. Of course, all other usual -requests like reading, writing, setting a translator, etc. are -directed to the translator, too. The translator has either to -implement the required functionality in the corresponding callback or -just return an appropriate error code (for example, EOPNOTSUPP), if -the callback is compulsory. - -##The Main Concepts: Nodes - -The most fundamental thing to understand about *libnetfs* is the -notion of a **node**. Nearly always there are two types of nodes in a -*libnetfs*-based translator: - -* Generic **node**, defined in *<hurd/netfs.h>*. This node contains - information read and written by the programmer (like field - *nn_stat*), as well as some internal information (like fields - *references* and *transbox*). Of course, the programmer is free to - use these fields at will, but they should know what they are doing. - -* Custom **netnode**, defined by the programmer and containing only - the information valuable for the programmer, but not for *libnetfs*. - -The generic node is probably the most important primitive introduced -by *libnetfs*. Callbacks receive the nodes they should work with as -parameters; some of them return nodes as the result of their -operation. To some extent of certainty, a *libnetfs* node can be -perceived similarly to a filesystem node -- the building-brick out of -which everything is composed. - -As it can be seen from the definition in *<hurd/netfs.h>*, a reference -to a netnode is stored in each generic node. In a way, a netnode can -be perceived as the custom attachment to the information contained in -a generic node. The link between these is quite strong. At first this -might not look like a very important thing, but let's analyze a simple -example: you would like to show the contents of a directory in a -filtered way. As a filtering criterion you would like to use the -result of the execution of a command specified as a command line -argument to the translator. If a client looks up a 'file' in the -directory tree provided by the translator, the latter should feed the -name of the file to the filtering command and decide whether to hide -this file or not upon receiving the result. - -To avoid trouble, the translator had better use the *absolute* name of -'file'. Obviously, the translator would like to organize all of the -nodes in a hierarchy. To make things work more or less fast, it is a -reasonable decision to construct the absolute path to a node at -creation and store it inside the netnode (which, in turn, is inside -the node). However, such an approach is not a good one when using -*libnetfs*. Generally speaking, a *new* generic node is created at -each lookup, and, together with it, a new netnode is constructed. The -conclusion is that a *libnetfs* node is a rather transient phenomenon, -and when we want to store some information which is relatively -expensive to obtain, we need something more than a generic node + -netnode. At this moment most of the translators (like *unionfs*, -*ftpfs*, etc.) introduce the concept of a **light node**. - -A **light node** is a user-defined node which contains some -information expensive to obtain, which had better not be stored -directly in a netnode. All netnodes, contained in generic nodes which -resulted in lookups of the same file, share references (pointers, -actually) to a single light node. Light nodes are created when the -first attempt to lookup a file is done, and they are destroyed when no -netnodes reference them. It is very important to understand that -*libnetfs* does **not** enforce the programmer to define light -nodes. Everything can be stored within netnodes inside generic -nodes. Light nodes are just a matter of organizing data in an -efficient way. - -Probably, you are already thinking ``Why cannot *netnodes* be shared? -Why do we need yet another notion?''. The answer is that the link -between a netnode and a *libnetfs* node should be one-to-one, because -netnodes usually store information specific of *only one* node, whilst -light nodes contain information common to several nodes. If one chose -to share netnodes, one would not be able to store additional -information per a *libnetfs* node, and this is quite a serious problem -in most practical problems. - -##Why a libnetfs Node Is Not Quit a Filesystem Node - -The most demonstrative argument in this case is the definition of -*struct node* in *<hurd/netfs.h>*. If you try to find in this -definition some reference to other generic node called *parent*, or an -array of references called *children* (which would be quite classical -for a member of a hierarchy), you will fail. There are fields *next* -and *prevp*, but these are for internal use and only include the node -in an internally maintained *list*, not a tree. Surprisingly enough, -*libnetfs* does **not** manage the tree-like structure for you. You -have to do that *on you own*. This is another moment when light nodes -come triumphantly to light. Most *libnetfs*-based translators organize -their light nodes in the tree-like structure reflecting the directory -tree shown to the user. When a lookup is performed, a light node is -either created or reused (if it has already been created in a previous -lookup). The result of the lookup is a *libnetfs* node created basing -on the information contained in the found light node. - -From the point of view of a *libnetfs* programmer, light nodes are the -conceptual filesystem nodes. A translator knows who is the parent of -who *only* from studying the links between light nodes. And a light -node does contain a reference to its parent and an array of references -to children. When a translator is asked to fetch a file, it finds this -file in the tree of light nodes firstly, creates a *libnetfs* node -based on the found light node, and returns the latter as the -result. Therefore, it is not quite right to perceive *libnetfs* nodes -as filesystem nodes. Instead, the focus of attention should stay upon -light nodes. - -##How It Works: A More Verbose Description - -At first let us see how the a *libnetfs*-based translator responds to -lookup requests. At the beginning the *netfs_attempt_lookup* callback -is called. It knows the generic *libnetfs* node corresponding to the -directory under which the lookup shall take place, the name it has to -lookup, and the information about the user requesting the lookup. This -callback is supposed to create a new *libnetfs* node corresponding to -the requested file or return an error. As it has been said before, -usually translators browse their hierarchy of light nodes to know -whether a file exists within a directory or not. Note that -*netfs_attempt_lookup* does not know the flags with which a -*file_name_lookup* call is done, what it has to do is just to provide -a new node or return an error. - -Then *netfs_validate_stat* callback is called and a node and -information about the user is passed inside. This callback is a rather -simple one: it has to assure that the *nn_stat* field of the supplied -node is valid and up to date. Translators which mirror parts of real -filesystem, like *unionfs*, usually treat the node corresponding to the -root of their node hierarchy in a specific way. The reason is that the -root node is not a mirror of a real file -- it is almost always a -directory in translators of this kind. - -The third stage is an invocation of -*netfs_check_open_permissions*. This callback is, probably, one of the -simplest in most cases. It knows some information about the user -requesting the open, about the node that is about to be returned to -the user, and about the flags supplied by the user in the call to -*file_name_lookup*. Besides that, this callback is provided with the -information whether the requested lookup ended in creating a new file -or whether the requested file already -existed. *netfs_check_open_permissions* has to decide if the user has -the right to access the resulting file under the permissions specified -in flags. It has to return either 0 or the corresponding error. - -These are the most basic steps of the lookup. Note that if the file -was requested with O_CREAT flag and *netfs_attempt_lookup* could not -locate this file, *netfs_attempt_create_file* is called. In many ways -a typical implementation of this callback might be similar to the -implementation of *netfs_attempt_lookup*. However, -*netfs_attempt_create_file* will most probably have to do less checks. - -Let's move to listing the contents of a directory. The corresponding -callback, *netfs_get_dirents* is triggered when a user invokes -*dir_readdir* upon a directory provided by the translator. The -parameters of *netfs_get_dirents* are therefore very similar to the -parameters of *dir_readdir*. Actually, translator *fakeroot* only -calls *dir_readdir* in this callback and nothing more. In translators -which need more complex handling (like filtering the contents) the -code of this is more sophisticated. Sometimes the listing of directory -entries happens in several stages: *netfs_get_dirents* may call -something like *node_entries_get*, and the latter may invoke -*dir_entries_get*. The latter function calls *dir_readdir* and -converts the result to an array of *struct dirent* -'s. *node_entries_get* converts the array of *struct dirent* 's to a -linked list and decides whether a specific file shall be included in -the result or not. Finally, *netfs_get_dirents* converts the linked -list provided by *node_entries_get* to the format of the result of -*dir_readdir* and returns the converted data to the user. The -described stages are the stages of listing directory entries in -*unionfs*, for instance. - -Other callbacks are, generally speaking, less sophisticated. For -example, when the client wants to read (write) from a node provided -by *netfs_attempt_lookup*, the callback *netfs_attempt_read* -(*netfs_attempt_write*) is triggered. Both callbacks have sets of -parameters to the corresponding *io_read* and *io_write* functions. - -While browsing the code of very many *libnetfs*-based translators, you -might notice that they define callbacks starting with -*netfs_S_*. Usually a name similar to that of one of the file -management function follows (like netfs_S_*dir_lookup*). These -callbacks are triggered when the corresponding functions are called on -files shown by the translator. Such translators override parts of the -core functionality provided by *libnetfs* to achieve better -performance or to solve specific problems. - -##Synchronization is Crucial - -A *libnetfs* programmer shall always keep in mind that, as different -from *[[libtrivfs]]*-based translators, *libnetfs*-based translators are -always multithreaded. To guard data against damage each node -incorporates a lock. Moreover, each light node usually contains a -lock, too. This happens because *libnetfs* nodes and light nodes are -loosely coupled and are often processed separately. - -##Node Cache - -Most of *libnetfs* translators organize a *node cache*. However, this -structure is not a real cache. The idea is to hold some control over -life and death of *libnetfs* nodes. The cache is usually a -doubly-linked list: each netnode contains a reference to the previous -node in the cache and a reference to the next one. When a new node is -created (for example, as a result of invocation of -*netfs_attempt_lookup*), it is registered in the cache and its number -of references is increased. It means that, by putting the node in the -cache, the translators gets hold of an extra reference to the -node. When in subsequent lookups the same nodes will be requested, the -translator can just reuse an already existing node. - -Of course, the cache is limited in size. When the cache gets -overgrown, the nodes located at the tail of the list are removed from -the cache and the references to them are dropped. This triggers their -destruction (undertaken by *libnetfs*). - -##What Files Are Usually Created - -If you take into a look at the sources *ftpfs* or *unionfs* you will -notice files with names similar to the following: - -* cache.{c,h} -- here the node implementation of the node cache - resides. - -* lib.{c,h}, dir.{c,h}, fs.{c,h} -- these contain the implementation - of some internals. For example, the function *dir_entriesget* - mentioned in the description of the process of listing directory - entries, will most probably reside in one of these files. - -* options.{c,h} -- here the option parsing mechanism is usually - placed. Argp parsers are implemented here. - -* <*translator_name*>.{c,h}, netfs.c -- the implementation of *netfs_\** - callbacks will most probably lie in these files. - -##What Netnodes and Light Nodes Usually Contain - -A **netnode** usually contains a reference to a light node, some flags -describing the state of the associated generic *libnetfs* node, and -the references to the previous and the next elements in the node -cache. - -A **light node** usually contains the name of the file associated with -this light node, the length of this name, some flags describing the -state of this light node. To make a light node fully usable in a -multithreaded program, a lock and a reference counter are almost -always incorporated in it. Since light nodes are organized in a -hierarchical way, they contain a reference to their parent, a -reference to their first child, and references to their siblings -(usually not very descriptively called *next* and *prevp*). - -##The End - -I very much hope this piece of text was at least a little -helpful. Here I tried to explain the things which I understood least -when I started learning *libnetfs* and which confused me most. Feel -free to complete this introduction :-) diff --git a/hurd/libpager.mdwn b/hurd/libpager.mdwn deleted file mode 100644 index d844743d..00000000 --- a/hurd/libpager.mdwn +++ /dev/null @@ -1,31 +0,0 @@ -[[!meta copyright="Copyright © 2007, 2008, 2010, 2011 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]]."]]"""]] - -Mach's [[microkernel/mach/external_pager_mechanism]]. - -Mach [[microkernel/mach/IPC]]'s [[microkernel/mach/ipc/sequence_numbering]]. - -[GNU Hurd Reference Manual: 4.2 Pager -Library](http://www.gnu.org/software/hurd/doc/hurd_5.html#SEC32). - - -# Writeback: Writing Out Dirty Pages - - -## Related - - * LWN, Jonathan Corbet, [*No-I/O dirty - throttling*](http://lwn.net/Articles/456904/), 2011-08-31. - - -# Open Issues - - * [[open_issues/linux_vmsig]] diff --git a/hurd/libports.mdwn b/hurd/libports.mdwn deleted file mode 100644 index 6f2cd46d..00000000 --- a/hurd/libports.mdwn +++ /dev/null @@ -1,37 +0,0 @@ -[[!meta copyright="Copyright © 2010, 2011 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]]."]]"""]] - -*libports* is a convenience library for easier handling of [[Mach -ports|microkernel/mach/port]]. It is documented in the [[Reference_Manual]]. - -*libports* is not (at least, not for now) a generalization / abstraction of -Mach ports to the functionality the Hurd needs, that is, it is not meant to -provide an interface independently of the underlying [[microkernel]]. - -*libports* does not itself depend on *[[libthreads]]*, but the appropriate -threading hooks are used if present, that is if *[[libthreads]]* is used by -another component. - - -# Message Processing - -## `ports_manage_multithreaded` - -When a message is recieved, the thread acting as receiver checks if any other -thread is also waiting for requests. If there is none, a new thread is -spawned. Thus, the current thread continues processing the message while the -newly created thread starts listening for new ones. ([[!taglink -open_issue_hurd]]: [[open_issues/multithreading]].) - -Also, there are configurable timeouts for [[translator]]s who want to go away -when they are not used. ([[!taglink open_issue_hurd]]: there used to be bugs -in this area, [[!message-id "87hev152we.fsf@becket.becket.net"]], but it may be -fixed as of [[!message-id "20111030210045.GA4983@myhost"]], -[[!GNU_Savannah_Git_hurd_hurd 9b5429e834cde56f73b8ff605e36afc7d9bb6e1b]].) diff --git a/hurd/libstore.mdwn b/hurd/libstore.mdwn deleted file mode 100644 index 8eac39fe..00000000 --- a/hurd/libstore.mdwn +++ /dev/null @@ -1,36 +0,0 @@ -[[!meta copyright="Copyright © 2007, 2008, 2009 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]]."]]"""]] - -`libstore` is used to provide a generic interface to access data (read/write) -on backing stores. - -It more than just a thin layer between [[GNU Mach|microkernel/mach/gnumach]] -devices (`hd0` for example) and the device node below `/dev/`... - - -# Available Stores - -[[!map pages="*_store and !*/discussion" -show=title]] - -At <http://www.kataplop.net/pub/info/projets> you can find some effort to make -some crypto store. - -At <http://www.trek.eu.org/devel/hurd/crypt-trans-0.0.3.tgz>, another package -can be found. - - -# Examples - -[[!inline -pages="hurd/libstore/examples/* and !*/discussion" -show=0 -feeds=no]] diff --git a/hurd/libstore/bunzip2_store.mdwn b/hurd/libstore/bunzip2_store.mdwn deleted file mode 100644 index bd5fc914..00000000 --- a/hurd/libstore/bunzip2_store.mdwn +++ /dev/null @@ -1,12 +0,0 @@ -[[!meta copyright="Copyright © 2007, 2008, 2009 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]]."]]"""]] - -[[!meta title="bunzip2 store: bunzip2 data on the fly"]] diff --git a/hurd/libstore/concat_store.mdwn b/hurd/libstore/concat_store.mdwn deleted file mode 100644 index 1d3a895a..00000000 --- a/hurd/libstore/concat_store.mdwn +++ /dev/null @@ -1,12 +0,0 @@ -[[!meta copyright="Copyright © 2007, 2008, 2009 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]]."]]"""]] - -[[!meta title="concat store: concatenate"]] diff --git a/hurd/libstore/copy_store.mdwn b/hurd/libstore/copy_store.mdwn deleted file mode 100644 index 5df5d220..00000000 --- a/hurd/libstore/copy_store.mdwn +++ /dev/null @@ -1,25 +0,0 @@ -[[!meta copyright="Copyright © 2000, 2007, 2008, 2009 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]]."]]"""]] - -[[!meta title="copy store: copy-on-write; discard changes on termination"]] - -A *copy* store is meaningful only with respect to a child store. What a *copy* -store does is to read the child store's entire contents into memory at startup -time and then use that buffer as the contents of the store thereafter. (The -code for this is in `libstore/copy.c`.) - -Because of how the interfaces are specified, reading the entire contents of a -[[*zero* store|zero store]] in fact means just `vm_allocate`ing fresh memory. -So, a *copy* store based on a [[*zero* store|zero store]] is just what you'd -get from `vm_allocate`ing some memory and passing it into -`store_buffer_create`. - -See a [[ramdisk example|examples/ramdisk]]. diff --git a/hurd/libstore/device_store.mdwn b/hurd/libstore/device_store.mdwn deleted file mode 100644 index 4b97f8cc..00000000 --- a/hurd/libstore/device_store.mdwn +++ /dev/null @@ -1,12 +0,0 @@ -[[!meta copyright="Copyright © 2007, 2008, 2009 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]]."]]"""]] - -[[!meta title="device store: Mach device access"]] diff --git a/hurd/libstore/examples/ramdisk.mdwn b/hurd/libstore/examples/ramdisk.mdwn deleted file mode 100644 index 33d33601..00000000 --- a/hurd/libstore/examples/ramdisk.mdwn +++ /dev/null @@ -1,32 +0,0 @@ -[[!meta copyright="Copyright © 2009 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]]."]]"""]] - - $ settrans --create --active ramdisk0 /hurd/storeio -T copy zero:32M - $ mkfs.ext2 -F -b 4096 ramdisk0 - [...] - $ settrans --active --orphan ramdisk0 /hurd/ext2fs.static ramdisk0 - $ df -h ramdisk0/ - df: Warning: cannot read table of mounted file systems - Filesystem Size Used Avail Use% Mounted on - - 32M 1.1M 30M 4% /media/data/home/tschwinge/ramdisk0 - -This uses [[settrans]] and [[storeio]] to create a ramdisk of 32 MiB by routing -a thusly sized [[zero store]] through the [[copy store]], connecting -that to the `ramdisk0` node, create a `ext2` filesystem on it, and replace the -translator running on the `ramdisk0` node with a instance of the [[`ext2fs` -translator|translator/ext2fs]] running on the same node ([[translator -stacking|translator/stacking]]). - -It is a [[!taglink open_issue_hurd]] why this does only work with -`ext2fs.static`, but not the dynamically linked `ext2fs` (`settrans: -/hurd/ext2fs: Translator died`). - -A (better) alternative would be using the [[`tmpfs` -translator|translator/tmpfs]], but that one is broken at the moment. diff --git a/hurd/libstore/examples/ramdisk/discussion.mdwn b/hurd/libstore/examples/ramdisk/discussion.mdwn deleted file mode 100644 index d73bf903..00000000 --- a/hurd/libstore/examples/ramdisk/discussion.mdwn +++ /dev/null @@ -1,72 +0,0 @@ -[[!meta copyright="Copyright © 2011 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 open_issue_hurd]] - - -# IRC, freenode, #hurd, 2011-10-15 - - <antrik> youpi: I'm not at all talking about ordinary tmpfs. I'm talking - about the proposed variant using a separate backing store - <antrik> youpi: and as you might remember, I once came up with a crazy - passive translator command line (based on another crazy passive - translator command line from tschwinge) that can automatically do the - mkfs - <antrik> so there is really very little benefit in using something else - than ext2fs when not paging to the swap partition - <antrik> real tmpfs IMHO is mostly useful precisely because it uses the - ordinary swap, and doesn't have an explicit size limit... - <youpi> well, it is still quite a waste to bounce data betwen page cache - and memory storage - <youpi> or is ext2fs able to map the store data directly? - <youpi> then there's only the medata bounce which is spurious - <youpi> and still, even a one-liner settrans doesn't fit with the "is just - an fs alternative for the existing tmpfs-mounting scripts" - <antrik> youpi: well, if the invocation is the major concern, it would be - trivial to write a tiny wrapper binary or script that acts like a - "normal" FS... - <youpi> antrik: could you write it then? - <antrik> you mean a shell script that uses ext2fs on a memory store to act - like a "proper" tmpfs? - <youpi> I mean whatever that permits to just run mount none /tmp -t tmpfs - <youpi> and just works already nowadays - <youpi> which we could e.g. ship instead of our currently-completely bugged - tmpfs - <antrik> I suspect the mount script just looks for /hurd/tmpfs in this - case? if so, that should indeed be pretty trivial. let's see if I can dig - up my crazy command line -- turning that into a "proper" script should be - quite easy I hope... - <antrik> hm... I digged up - http://lists.gnu.org/archive/html/bug-hurd/2007-04/msg00013.html ; but I - wonder how much of it is really necessary for a generic pseudo-tmpfs... - <antrik> the major complication seems to be the chmod, which I guess we - don't need for most use cases... - <youpi> I actually don't see why it's inlined there - <youpi> doesn't the caller do it if it needs it? - <youpi> ah, well, here there is no caller, it's just a passive entry - <antrik> is it a problem that this solution needs an extra node for the - store? - <youpi> yes - <youpi> because you need to say where it resides - <youpi> and there's no safe place - <youpi> since such safe place would typically be a mounted tmpfs - <antrik> I feared that much... - <antrik> I suspect we could work around this by not attaching the store to - any node; but this a) doesn't work in a shell script, and b) is much more - involved... - <antrik> hm... can we assume /dev/fd to be present? I have a vague crazy - idea... - <youpi> yes - <antrik> I consider hacking settrans so it grows an option which allows - passing the port to the translator as an FD, instead of attaching it to - any node... this way, we could work with anonymous translators in shell - scripts :-) - <antrik> (of course that's not less work than just doing the wrapper in - C... but it could be useful in other cases) diff --git a/hurd/libstore/file_store.mdwn b/hurd/libstore/file_store.mdwn deleted file mode 100644 index 5e9f6822..00000000 --- a/hurd/libstore/file_store.mdwn +++ /dev/null @@ -1,12 +0,0 @@ -[[!meta copyright="Copyright © 2007, 2008, 2009 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]]."]]"""]] - -[[!meta title="file store: use a file as a kind of block device"]] diff --git a/hurd/libstore/gunzip_store.mdwn b/hurd/libstore/gunzip_store.mdwn deleted file mode 100644 index 25fca4bf..00000000 --- a/hurd/libstore/gunzip_store.mdwn +++ /dev/null @@ -1,12 +0,0 @@ -[[!meta copyright="Copyright © 2007, 2008, 2009 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]]."]]"""]] - -[[!meta title="gunzip store: gunzip data on the fly"]] diff --git a/hurd/libstore/ileave_store.mdwn b/hurd/libstore/ileave_store.mdwn deleted file mode 100644 index 29b51b72..00000000 --- a/hurd/libstore/ileave_store.mdwn +++ /dev/null @@ -1,12 +0,0 @@ -[[!meta copyright="Copyright © 2007, 2008, 2009 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]]."]]"""]] - -[[!meta title="ileave store: interleave store (striping)"]] diff --git a/hurd/libstore/nbd_store.mdwn b/hurd/libstore/nbd_store.mdwn deleted file mode 100644 index 5874b162..00000000 --- a/hurd/libstore/nbd_store.mdwn +++ /dev/null @@ -1,12 +0,0 @@ -[[!meta copyright="Copyright © 2007, 2008, 2009 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]]."]]"""]] - -[[!meta title="nbd store: Linux-compatible network block device"]] diff --git a/hurd/libstore/part.mdwn b/hurd/libstore/part.mdwn deleted file mode 100644 index 5260d05d..00000000 --- a/hurd/libstore/part.mdwn +++ /dev/null @@ -1,33 +0,0 @@ -[[!meta copyright="Copyright © 2010, 2012 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]]."]]"""]] - -[[!meta title="part store"]] - -`part.c` - -Written by Neal in 2001, 2002. - -Useful if the microkernel / [[DDE]] / [[microkernel/mach/gnumach/ports/Xen]] -doesn't export *partition devices*, but only *raw* devices. - -Neal: - -> The motivation was to be able to evict the partitioning logic from Mach. - - -# Booting - -A similar problem is described in -[[community/gsoc/project_ideas/unionfs_boot]], and needs to be implemented. - - -# TODO - -How to use, etc. diff --git a/hurd/libstore/query_store.mdwn b/hurd/libstore/query_store.mdwn deleted file mode 100644 index 9ebf8e47..00000000 --- a/hurd/libstore/query_store.mdwn +++ /dev/null @@ -1,12 +0,0 @@ -[[!meta copyright="Copyright © 2007, 2008, 2009 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]]."]]"""]] - -[[!meta title="query store"]] diff --git a/hurd/libstore/remap_store.mdwn b/hurd/libstore/remap_store.mdwn deleted file mode 100644 index 158ffe95..00000000 --- a/hurd/libstore/remap_store.mdwn +++ /dev/null @@ -1,12 +0,0 @@ -[[!meta copyright="Copyright © 2007, 2008, 2009 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]]."]]"""]] - -[[!meta title="remap store"]] diff --git a/hurd/libstore/task_store.mdwn b/hurd/libstore/task_store.mdwn deleted file mode 100644 index e4426639..00000000 --- a/hurd/libstore/task_store.mdwn +++ /dev/null @@ -1,12 +0,0 @@ -[[!meta copyright="Copyright © 2007, 2008, 2009 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]]."]]"""]] - -[[!meta title="task store: Mach task store backend"]] diff --git a/hurd/libstore/typed_store.mdwn b/hurd/libstore/typed_store.mdwn deleted file mode 100644 index e71ff67f..00000000 --- a/hurd/libstore/typed_store.mdwn +++ /dev/null @@ -1,12 +0,0 @@ -[[!meta copyright="Copyright © 2007, 2008, 2009 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]]."]]"""]] - -[[!meta title="typed store: chainable stores"]] diff --git a/hurd/libstore/url_store.mdwn b/hurd/libstore/url_store.mdwn deleted file mode 100644 index 17a24e97..00000000 --- a/hurd/libstore/url_store.mdwn +++ /dev/null @@ -1,12 +0,0 @@ -[[!meta copyright="Copyright © 2007, 2008, 2009 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]]."]]"""]] - -[[!meta title="url store: typed store with URL syntax"]] diff --git a/hurd/libstore/zero_store.mdwn b/hurd/libstore/zero_store.mdwn deleted file mode 100644 index 4c53ab56..00000000 --- a/hurd/libstore/zero_store.mdwn +++ /dev/null @@ -1,19 +0,0 @@ -[[!meta copyright="Copyright © 2000, 2007, 2008, 2009 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]]."]]"""]] - -[[!meta title="zero store: empty block device"]] - -A *zero* store is what `/dev/zero` is (always reads zeros), the setting on -`/dev/zero` gives no name (i.e. size) and the default size is the maximum -possible. The only meaning of the size of a *zero* is what `st_size` will -report and what offsets it will let you try to read or write from--there is -never any data associated with a *zero* store. (The code for this is in -`libstore/zero.c`.) diff --git a/hurd/libthreads.mdwn b/hurd/libthreads.mdwn deleted file mode 100644 index 8b1a97e6..00000000 --- a/hurd/libthreads.mdwn +++ /dev/null @@ -1,28 +0,0 @@ -[[!meta copyright="Copyright © 2011 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]]."]]"""]] - -`libthreads` a.k.a. C threads. - - -# Internals - - -## Threads' Death - -C threads death doesn't actually free the thread's stack (and maybe not the -associated Mach ports either). That's because there's no way to free the stack -after the thread dies (because the thread of control is gone); the stack needs -to be freed by something else, and there's nothing convenient to do it. There -are many ways to make it work. - -However, it isn't really a leak, because the unfreed resources do get used for -the next thread. So the issue is that the shrinkage of resource consumption -never happens, but it doesn't grow without bounds; it just stays at the maximum -even if the current number of threads is lower. diff --git a/hurd/libtrivfs.mdwn b/hurd/libtrivfs.mdwn deleted file mode 100644 index b15aeabe..00000000 --- a/hurd/libtrivfs.mdwn +++ /dev/null @@ -1,31 +0,0 @@ -[[!meta copyright="Copyright © 1994, 1996, 1998, 1999, 2000, 2001, 2002, 2003, -2004, 2005, 2007, 2008, 2009, 2010 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]]."]]"""]] - -Certain [[translator]]s do not need to be very complex, because they represent -a single file rather than an entire directory hierarchy. The *trivfs library*, -which is declared in `<hurd/trivfs.h>`, does most of the work of implementing -this kind of translator. This library requires the [[iohelp|libiohelp]] and -[[ports|libports]] libraries. - -Using `libtrivfs` is not the only way to implement such a single-file -translator, but is a convenient abstraction: the library hides a lot of -low-level stuff and you just have to provide a number of call-back functions -and symbols in order to get a functioning (for file I/O, etc.) node in the file -system. - - -# Further Reading - - * In the *[[The_GNU_Hurd_Reference_Manual|reference_manual]]*: - <http://www.gnu.org/software/hurd/doc/hurd_6.html#SEC48>. - - * In the *[[Hurd_Hacking_Guide]]*: - <http://www.gnu.org/software/hurd/hacking-guide/hhg.html#An-Example-using-trivfs>. diff --git a/hurd/logo.mdwn b/hurd/logo.mdwn deleted file mode 100644 index 467e6ba8..00000000 --- a/hurd/logo.mdwn +++ /dev/null @@ -1,11 +0,0 @@ -[[!meta copyright="Copyright © 2010 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]]."]]"""]] - -[[!meta redir=/logo]] diff --git a/hurd/neighborhurd.mdwn b/hurd/neighborhurd.mdwn deleted file mode 100644 index 5a66f992..00000000 --- a/hurd/neighborhurd.mdwn +++ /dev/null @@ -1,25 +0,0 @@ -[[!meta copyright="Copyright © 2007, 2008 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]]."]]"""]] - -It is possible to run multiple instances of the Hurd -in parallel, on a single instance of Mach. Other than -performance [[crosstalk]], they are essentially isolated. -Practically, as many devices do not allow multiple -non-[[cooperating|cooperation]] users, e.g., hard drive and network -this is not currently possible. It can be overcome, -however, by [[virtualizing|virtualization]] these problematic devices. - -When extra hardware is not available, it is possible to use a -[[sub-Hurd|subhurd]]. - - -# Etymology - -*Neighborhurd* is a pun on *neighborhood*, and a stance against hierarchies. diff --git a/hurd/networking.mdwn b/hurd/networking.mdwn deleted file mode 100644 index bdf9def2..00000000 --- a/hurd/networking.mdwn +++ /dev/null @@ -1,33 +0,0 @@ -[[!meta copyright="Copyright © 2000, 2008, 2010 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]]."]]"""]] - -For each supported `PF_*` protocol family, there is a file `/servers/socket/N` -where `N` is the numberic value fo the `PF_*` symbol. Right now -[[`PF_LOCAL`|translator/pflocal]] (a.k.a. `PF_UNIX`) and -[[`PF_INET`|translator/pfinet]] (together with -[[`PF_INET6`|translator/pfinet/ipv6]]) are supported. - -User programs open those files, and use the `socket_create` [[RPC]] to make a -new socket. With that socket, they can use the other `socket_*` RPCs and also -the `io_*` RPCs. The `socket_*` RPCs are essentially clones of the [[Unix]] -[[system call]]s in question. - -The only exception is `sockaddrs`, which are implemented as [[ports|libports]] -instead of the opaque data arrays they are in the system calls. You manipulate -`sockaddr` ports with the `socket_create_address`, `socket_fabricate_address`, -and `socket_whatis_address` calls. The `sockaddr` port is then used in socket -calls like `socket_connect` and `socket_accept`. - -`PF_INET` `sockaddr` ports are manipulated with `socket_create_address` from -the usual `struct sockaddr_in`. `PF_LOCAL` `sockaddr` ports are stored by -`S_IFSOCK` filesystem nodes; you find the address associated with a node with -`ifsock_getsockaddr`. The [[file_system_server|translator]] will get a -`sockaddr` to return with `socket_fabricate_address`. diff --git a/hurd/ng.mdwn b/hurd/ng.mdwn deleted file mode 100644 index fbebb137..00000000 --- a/hurd/ng.mdwn +++ /dev/null @@ -1,92 +0,0 @@ -Hurd-ng is an effort to build a new operating system that preserves -the main design goals of the Hurd while fixing some of the Hurd's -shortcomings. There is not yet an official roadmap or a concrete -specification; indeed, much of the work is research oriented. - -These pages try to summarize the major discussions and ideas. - - -# Why ngHurd - -This section explains the motivations behind the new design: - - * [[Issues_with_L4_Pistachio]] - * [[Limitations_of_the_original_Hurd_design]] - - * History of the [[history/port_to_another_microkernel]] - - -# Work already done - -A [[critique]] of the original Hurd is available. - -A [[position_paper]] by Marcus Brinkmann and Neal H. Walfield can be found. - -A draft specification of the Hurd-NG interfaces has been, but is no longer, -available. - - -# Subjects - -## Design processus - -* [[Design Goals|DesignGoals]] -* [[Requirements For User|RequirementsForUser]] -* [[Design Principles|DesignPrinciples]] -* [[Philosophy]] - - -## Concepts - -* [[Security]] -* [[Capability Based Microkernel|CapabilityBasedMicrokernel]] -* [[First-class Receive Buffer|FirstClassReceiveBuffer]] -* [[PowerBox]] -* [[What is a Capability|WhatIsACapability]] -* [[What is a Constructor|WhatIsAConstructor]] -* [[What is a Spacebank|WhatIsASpacebank]] -* [[Trivial Confinement vs. Constructor vs. Fork|TrivialConfinementVsConstructorVsFork]] -* [[Copy vs. Revocable Copy vs. Map|CopyVsRevocableCopyVsMap]] -* [[Setuid vs. Constructor|SetuidVsConstructor]] -* [[Hurdish Applications for Persistence|HurdishApplicationsForPersistence]] -* [[What's in a Group|WhatsInAGroup]] -* [[The Polycast Interface|ThePolycastInterface]] -* [[Permission Bits|PermissionBits]] -* [[Cancellation Forwarding|CancellationForwarding]] - - -## Problems to solve - -* [[How Much Confinement Do We Want|HowMuchConfinementDoWeWant]] -* [[Shared Libraries|SharedLibraries]] -* [[Path Max|PathMax]] - - -## Implementation - -* [[Hurd Interafaces|HurdInterafaces]] -* [[Posix Layer|PosixLayer]] -* [[System Structure|SystemStructure]] - - -## Use Cases - -_please move me somewhere better! [[SamMason]]_ - -* [[Use Case User Filesystem|UseCaseUserFileSystem]] -* [[Use Case Private Keys|UseCasePrivateKeys]] - - -## Organization - -Summaries should obey the following structure: - -* if there is a consensus, it is clearly described -* if controversial points remain, there are also described after the consenus -* if no choice has been clearly made, all valid positions are descrbied -* withdrawed and invalid positions (prooved wrong, unrealistic, contradictory - to some design principle, etc.) should be described only very briefly, and - developed in a separate article - -Each time a point seems to be overly long with respect to the rest of the -article, it should be summarized in place and developed in a separate article. diff --git a/hurd/ng/cancellationforwarding.mdwn b/hurd/ng/cancellationforwarding.mdwn deleted file mode 100644 index 6b2977c7..00000000 --- a/hurd/ng/cancellationforwarding.mdwn +++ /dev/null @@ -1,56 +0,0 @@ -# <a name="Cancellation_forwarding"> Cancellation forwarding </a> - -## <a name="Rationale"> Rationale </a> - -When a request to a chain of one or more servers is needed from a server to process a request from its client, and the client cancels its request, there will be at least temporary resource leakage in the chain of servers. - -If the last server in the chain completes processing and gives a response to its client, there will be unnecessary CPU and memory usage from all the servers. And if one of the servers never completes, there will be permanent memory leakage. - -Timeouts are a way to avoid the permament memory leakage, at the cost of rendering the whole communication impossible above some system load, hence opening a denial of service possibility. They also only bring the duration of the memory leakage from an infinite to an arbitrary finite time that may have no relation with the operations of the servers. - -Cancellation forwarding is a mechanism that can be used to propagate, without additional overt communication, the information that initial request has been cancelled. It also bring the duration of the memory leakage to a finite time, but each server in the chain is able to use the protocol at key points of its operations (like before a costly operation), and because the protocol will not produce false positive results, it can be used at an arbitrary high frequency. The only tradeoff is between leakage time and checking overhead. - -## <a name="Protocol"> Protocol </a> - -* Each client that want to forward cancellation to its server increment the protected payload of the FCRB for which a sender's capability has been given to the server, thus invalidating the capability. -* Each server that wants to notice cancellation forwarding will either set up a watchdog, and ask the kernel to send heartbeats, or decide for deterministic check points in its operations. At each heartbeat or check point, the server checks that the reply capability to the FCRB of the client is not invalid, with a Discrim capability. - -## <a name="Example"> Example </a> - -Communication is described between 3 processes, client C and servers S and T. - -Notation: - -* FCRB->A means a FCRB whose receiver process is A - -### <a name="Successful_operation_"> Successful operation: </a> - -* C invokes a capability to S, giving S a capability c1 to a FCRB->C -* S sets up a watchdog that check that discrim.classify(c1) != clVoid -* S invokes a cap to T, giving T a cap c2 to a FCRB->S -* T sets up a watchdog that check that discrim.classify(c2) != clVoid - -( T successfully treat the request, now goes completion ) - -* T invokes c2 -* S reads the answer, and increments the PP of the FCRB->S -* S invokes c1 -* C reads the answer, and increments the PP of the FCRB->C - -### <a name="Uncomplete_operation_"> Uncomplete operation: </a> - -* C invokes a cap to S, giving S a cap c1 to a FCRB->C -* S sets up a watchdog that checks that discrim.classify(c1) != clVoid -* S invokes a cap to T, giving T a cap c2 to a FCRB->S -* T sets up a watchdog that checks that discrim.classify(c2) != clVoid - -( for any reason, C decides to stop, now goes cancellation ) - -* C increments the PP of the FCRB->C -* S watchdog notifies S of cancellation -* S increments the PP of the FCRB->S -* T watchdog notifies T of cancellation - ----- - --- [[Main/NowhereMan]] — originally designed in April 2006 diff --git a/hurd/ng/copyvsrevocablecopyvsmap.mdwn b/hurd/ng/copyvsrevocablecopyvsmap.mdwn deleted file mode 100644 index 0cda7e24..00000000 --- a/hurd/ng/copyvsrevocablecopyvsmap.mdwn +++ /dev/null @@ -1,6 +0,0 @@ -TBD, see: - -* <http://lists.gnu.org/archive/html/l4-hurd/2005-10/msg00274.html> -* <http://lists.gnu.org/archive/html/l4-hurd/2005-10/msg00023.html> - --- [[TomBachmann]] - 20 Jun 2006 diff --git a/hurd/ng/designgoals.mdwn b/hurd/ng/designgoals.mdwn deleted file mode 100644 index d04007c2..00000000 --- a/hurd/ng/designgoals.mdwn +++ /dev/null @@ -1,53 +0,0 @@ -# <a name="Design_Goals"> Design Goals </a> - -## <a name="The_Position_Paper"> The Position Paper </a> - -The [[position_paper]] tries to capture technical objectives. As has been -stated by Neal in [2], these are a number of scenarios we are interested in -addressing: - -* security: programs are not users; they should be constrained according to the user's intents -* resource management - * efficiency: facilitate use of local knowledge - * soft real-time: expose virtualized resources with useful access case characteristics -* integration: safe extension of the system - -## <a name="The_original_list"> The original list </a> - -These goals have been initially proposed by Bas Wijnen [1]. The list here is a slightly modified form, I tried to incorporate the content of the mailing list discussion. It has to be noted that there is no consensus about this list. There have been objections about both the number of goals stated and specific goals themselves. - -## <a name="Essential_Goals"> Essential Goals </a> - -* stability -* robustness -* resource accountability -* confinement -* support for most legacy applications -* extensibility -* no ACLs - -### <a name="On_Extensibility"> On Extensibility </a> - -Extensibility has often been a strong argument to support the multiserver approach. Therefore, I think, it has been rated to be an essential goal in our (preliminary) list, too. However, it has been [suggested](http://citeseer.ist.psu.edu/druschel97extensible.html) that this argument is of few or no interest for a general purpose OSes: it is argued that the benefits of extensible kernels can be migrated to conventional ones by defining exactly what the extension requires. "Conventional kernel" is here probably to be interpreted as "monolithic kernel". From the above, I think the first (naive) conclusion that could be drawn would be to abandon the multiserver approach and extensibility goal. - -However, I do believe there are benefits in multiserver environments you cannot get in a monolithic one, namely enhanced security and stability through protection boundaries. Also, whilst wanting to become adopted as general purpose OS, ngHurd still strives to allow for research also, so even according to the above-referenced paper extensibility is to be one of its goals. - -Therefore, I'd want to propose to weaken the impact of extensibility on the design, by lowering it to the category "Regular Goals". -- [[TomBachmann]] - 13 Dec 2006 - -## <a name="Regular_Goals"> Regular Goals </a> - -* confinement with endogenous verification -* soft real time -* setting diverse resource distribution policies -* persistent sessions for users - -## <a name="Optional_Goals"> Optional Goals </a> - -* small memory footprint -* support for all POSIX applications -* persistence - ----- - -* [1] <http://lists.gnu.org/archive/html/l4-hurd/2005-11/msg00037.html> -* [2] <http://lists.gnu.org/archive/html/l4-hurd/2007-01/msg00122.html> diff --git a/hurd/ng/designprinciples.mdwn b/hurd/ng/designprinciples.mdwn deleted file mode 100644 index 42faa52f..00000000 --- a/hurd/ng/designprinciples.mdwn +++ /dev/null @@ -1,39 +0,0 @@ -# <a name="Design_Principles"> Design Principles </a> - -A design principle is a test that lets us **reject** things. Hopefully, when combined with other design principles, it forms a basis for making coherent and consistent decisions about design goals and system features. [1] - -## <a name="Stated_design_principles"> Stated design principles </a> - -None defined yet, but there seems to be consensus that ngHurd should be a principle-driven design. - -## <a name="Potential_design_principles"> Potential design principles </a> - -Here is an incomplete list of potential design principles for the ngHurd. It is taken from [2]. I left out some principles I think do not apply or are not in question. Feel free to add more. - -### <a name="Principles_from_the_Multics_Proj"> Principles from the Multics Project </a> - -* _Economy of mechanism_: Keep the design as simple as possible. -* _Fail-safe defaults_: Base access decisions on permission rather than exclusion. -* _Least priviledge_: Components should have no more authority than they require. -* _Least common mechanism_: Minimize the amount of shared instances in the system. - -### <a name="Commonly_accepted_principles"> Commonly accepted principles </a> - -* _Separation of policy and mechanism_ -* _Least astonishment (also known as principle of least surprise):_ The system�s behavior should match what is naively expected. -* _Complete accountability_: All real resources held by an application must come from some accounted pool. -* _Safe restart_: On restart, the system must either already have, or be able to rapidly establish, a consistent and secure execution state. -* _Reproducibility_: Correct operations should produce identical results regardless of workload. - -### <a name="Principles_specific_to_EROS"> </a> Principles specific to EROS - -* _Credible policy_: If a security policy cannot be implemented by correct application of the system�s protection mechanisms, do not claim to enforce it. -* _Explicit authority designation_: Every operation that uses authority should explicitely designate the source of the authority it is using. -* _Relinquishable authority_: If an application holds some authority, it should be able to voluntarily reduce this authority. - ----- - -See also: - -* [1] <http://lists.gnu.org/archive/html/l4-hurd/2005-11/msg00120.html> -* [2] EROS: A Principle-Driven Operating System from the Ground Up diff --git a/hurd/ng/discussion.mdwn b/hurd/ng/discussion.mdwn deleted file mode 100644 index d4632bd5..00000000 --- a/hurd/ng/discussion.mdwn +++ /dev/null @@ -1,13 +0,0 @@ -[[!meta copyright="Copyright © 2009 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]]."]]"""]] - -To go beyond research project Hurd have to support thousands of various programs running on GNU/Linux nowadays. -It looks like ExoKernel approach http://pdos.csail.mit.edu/exo.html might be useful here. -Does somebody tried to look into something like Hurd exokernel + liblinux? diff --git a/hurd/ng/firstclassreceivebuffer.mdwn b/hurd/ng/firstclassreceivebuffer.mdwn deleted file mode 100644 index 30087bf2..00000000 --- a/hurd/ng/firstclassreceivebuffer.mdwn +++ /dev/null @@ -1,3 +0,0 @@ -TBD, see e.g. <http://coyotos.org/docs/ukernel/spec.html> and <http://www.coyotos.org/pipermail/coyotos-dev/2006-January/000391.html> - --- [[TomBachmann]] - 31 Aug 2006 diff --git a/hurd/ng/howmuchconfinementdowewant.mdwn b/hurd/ng/howmuchconfinementdowewant.mdwn deleted file mode 100644 index 1963ae73..00000000 --- a/hurd/ng/howmuchconfinementdowewant.mdwn +++ /dev/null @@ -1,93 +0,0 @@ -# <a name="How_Much_Confinement_Do_We_Want_"> How Much Confinement Do We Want? </a> - -**_NOTE:_** **I am absolutely sure this is incredibely incomplete and/or wrong.** **_This is not up to date!_** - -## <a name="Introduction"> Introduction </a> - -There has been a lot of traffic on the l4-hurd list lately. A good bit of this is related to the question this entry is about: How much confinement do we want? The idea not to implement the full confinement was (accidently?) raised by marcus, who planned to raise it _somewhen_, but not yet. - -## <a name="Terminology"> Terminology </a> - -In this section I try to sketch some terminology that came up _during_ the discussion. - -### <a name="Creator"> Creator </a> - -Creator we call the creator of the confined (constructor) object.[2] - -### <a name="Instantiator"> Instantiator </a> - -Instantiator we call the user of the confined (constructor) object. [2] - -### <a name="Encapsulation"> Encapsulation </a> - -Encapsulation means that information (including authority) cannot be extracted from a program without its consent. This is a restriction on "read in" behavior. [3] - -### <a name="Confinement"> Confinement </a> - -Confinement means that a program cannot communicate outward through unauthorized channels. This is a restriction on "write out" behavior. [3] - -### <a name="non_trivial_confinement"> non-trivial confinement </a> - -Marcus: \`\`[non-trivial confinement] is the confined constructor design pattern.'' [1] - -We speak about non-trivial confinement when creator != instantiator. [2] - -### <a name="trivial_confinement"> trivial confinement </a> - -Marcus: \`\`[trivial confinement] is what the Hurd will do'' [1] - -We speak about trivial confinement when creator == instantiator [2] - -### <a name="principle_of_user_freedom_autono"> principle of user freedom/autonomity </a> - -The principle of user freedom and autonomity means the right to use, inspect, alter and copy all resources attributed to/owned by the user.[4] - -### <a name="freedom_of_digital_information"> freedom of digital information </a> - -TBD - -## <a name="The_Positions"> The Positions </a> - -Here I try to sketch the different positions. - -### <a name="Use_and_Implement_Only_Trivial_C"> Use and Implement Only Trivial Confinement by Default </a> - -#### <a name="Pros"> Pros </a> - -* Follows the principle of user freedom -* **add more here** - -#### <a name="Cons"> Cons </a> - -* Possibly use cases for non-trivial confinement exist we cannot yet think of. -* **add more here** - -### <a name="Implement_Full_Confinement_and_U"> Implement Full Confinement and Utilize It </a> - -#### <a name="Pros"> Pros </a> - -* There are many years of experience with confinement. -* **add more here** - -#### <a name="Cons"> Cons </a> - -* It does not follow the principle of user freedom. -* **add more here** - -## <a name="Preliminary_Summary_Statements"> Preliminary Summary Statements </a> - -* [Jonathan](http://lists.gnu.org/archive/html/l4-hurd/2006-05/msg00018.html) - -## <a name="A_Try_to_Push_the_Discussion_int"> A Try to Push the Discussion into a Constructive Direction </a> - -Marcus started a challenge [5] to find a use case for non-trivial confinement that is interesting for the Hurd and cannot be implemented otherwise. The exact challenge definition can be found in the mail. - ----- - -* [1] <http://lists.gnu.org/archive/html/l4-hurd/2006-04/msg00339.html> -* [2] <http://lists.gnu.org/archive/html/l4-hurd/2006-04/msg00383.html> -* [3] <http://lists.gnu.org/archive/html/l4-hurd/2006-04/msg00415.html> -* [4] <http://lists.gnu.org/archive/html/l4-hurd/2006-05/msg00012.html> -* [5] <http://lists.gnu.org/archive/html/l4-hurd/2006-04/msg00407.html> - --- [[TomBachmann]] - 01 May 2006 diff --git a/hurd/ng/hurdishapplicationsforpersistence.mdwn b/hurd/ng/hurdishapplicationsforpersistence.mdwn deleted file mode 100644 index d785694b..00000000 --- a/hurd/ng/hurdishapplicationsforpersistence.mdwn +++ /dev/null @@ -1,5 +0,0 @@ -TBD, see: - -* <http://lists.gnu.org/archive/html/l4-hurd/2005-10/msg00081.html>; summary: passive translators started by the filesystem cannot be done right and persistence makes passive translators unnecessary - --- [[TomBachmann]] - 20 Jun 2006 diff --git a/hurd/ng/limitations_of_the_original_hurd_design.mdwn b/hurd/ng/limitations_of_the_original_hurd_design.mdwn deleted file mode 100644 index 96d8912b..00000000 --- a/hurd/ng/limitations_of_the_original_hurd_design.mdwn +++ /dev/null @@ -1,11 +0,0 @@ -[[!meta copyright="Copyright © 2008 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]]."]]"""]] - - * [[Critique]] diff --git a/hurd/ng/part1ownershipandcontracts.mdwn b/hurd/ng/part1ownershipandcontracts.mdwn deleted file mode 100644 index 7be1ec05..00000000 --- a/hurd/ng/part1ownershipandcontracts.mdwn +++ /dev/null @@ -1,163 +0,0 @@ -# <a name="Part_1_Ownership_And_Contracts"> Part 1: Ownership And Contracts </a> - -This is the first in a series of notes that will serve to formulate my position from ground-up. The way will not be straight-forward. I can not give you one particular, technical argument that addresses all my concerns. Instead, the evaluation involves a step of personal judgement (but only one). In this note, I will explain why I believe that this is necessarily the case, what this step is and what my stance on it is. - -This mail took me 5 hours to write, which means 1.5 lines per minute. It contains only a tiny part of my argument. I hope that this removes any doubts about my sincerity to address all issues, but also makes apparent the technical constraints in doing so "immediately", as has been requested from me several times. I have to ask for patience. As everybody else, I am doing this in my spare time. - -Let me jump right in at the technical level: I claim that every relationship between two processes falls into one of four categories. These four coarse categories provide a differentiation that is sufficient for my argument: - -## <a name="Process_Relationship_Categories"> Process Relationship Categories </a> - -* 0 - It is not possible for the processes to communicate via direct IPC. - -In all other categories, it is possible for the processes to communicate via direct IPC, because one of the processes, let me call it process A, has a capability to the other process, let me call it B. - -* 1 - The collective authority of process B, immediately[1] after the time it was instantiated, is necessarily a strict subset of the collective authority hold by process A at that time. - -[1] See my challenge-email to find a definition of the window of time that gives meaning to the word "immediately" in the case where process B is instantiated indirectly or directly because of an action in process A. If process B is instantiated independent of process A, just assume that the collective authority hold by process A is the empty set. - -* 2 - The set of collective authority of process B, immediately after the time it was instantiated, minus the collective authority of process A (if it existed), is necessarily not empty. Some of the capabilities in this non-empty set provide the ability to write-out. - -* 3 - The set of collective authority of process B, immediately after the time it was instantiated, minus the collective authority of process A (if it existed), is necessarily not empty. None of the capabilities in this non-empty set provide the ability to write-out. - -This categorization does not say anything about encapsulation. However, it is to be understood from the description that in category 0, 2 and 3, process B is encapsulated. If it were not, the collective authority that is hold by A would include the authority of B by transition. In category 1, it is to be understood that process B, in principle, can not be successfully encapsulated (to see this, pay attention to the fact that process A could pre-arrange its authority so that no capability it has provides the possibility for encapsulation). - -This categories provide a complete categorization for two important system structures: The EROS/Coyotos model, which relies on categories 0, 2 and 3, while making category 1 possible. And my recursive system structure model, which relies on categories 0, 1, and 2, but rejects 3. - -## <a name="Agenda"> Agenda </a> - -This provides the basis for a goal-based analysis. The agenda can be: - -1) It has to be demonstrated that the goals of the Hurd can be met by relying on the process relationships described by 0, 1 and 2. This of course must include an analysis of the goals of the Hurd. - -2) It is useful to reason about the rejection of category 3. What do we lose by omitting it? What goals can not be achieved by the Hurd if it rejects category 3? - -This sets the background. I will start with the second item on the list, and then work my way up. It would not be unreasonable to do it the other way around: I could state the goals of the Hurd, then demonstrate that we can achieve them by using the model I described earlier, and then look at the interaction with category 3 relationships. This would be the straighter way. However, a discussion of the goals of the Hurd can be easier followed if the background is set. So, let me finish this note with some general arguments about the properties of category 3, and what the factors can be that determine how you think about it. - -## <a name="Encapsulation_and_Confinement"> Encapsulation and Confinement </a> - -What is the exact nature of the relationship between process A and process B, where communication can (and does) occur, but process B is both encapsulated and confined? To discuss this, we have to define what we mean by the nature of process relationships. Two concepts come into my mind: Ownership and contracts. What do these words mean? - -In the course of the discussion, I will make use of citations from Hegel's Philosophy of Right. I am not relying on his argumentation, it is just a convenient source for some definitions, from which I want to work. - -## <a name="Ownership"> Ownership </a> - -Ownership is not a complicated concept. You can look it up in encyclopedias or dictionaries, or you can study philosophy. Hegel defines ownership this way (Paragraph 61): - -"Since the substance of the thing which is my property is, if we take the thing by itself, its externality, i.e. its non-substantiality --- in contrast with me it is not an end in itself (see � 42) and since in my use or employment of it this externality is realised, it follows that my full use or employment of a thing is the thing in its entirety, so that if I have the full use of the thing I am its owner. Over and above the entirety of its use, there is nothing left of the thing which could be the property of another." - -A shorter definition is that ownership is the exclusive right of a person to possess, use and dispose of a thing. Note that the right must be exclusive. It must also be complete. Also note that ownership refers to human beings, not things. Things can not own other things. Paragraph 42 in Hegel's work defines: - -"What is immediately different from free mind is that which, both for mind and in itself, is the external pure and simple, a thing, something not free, not personal, without rights." - -## <a name="Contracts"> Contracts </a> - -Hegel describes the transition from ownership to contracts in paragraph 71 this way: - -"One aspect of property is that it is an existent as an external thing, and in this respect property exists for other external things and is connected with their necessity and contingency. But it is also an existent as an embodiment of the will, and from this point of view the 'other' for which it exists can only be the will of another person. This relation of will to will is the true and proper ground in which freedom is existent. --- The sphere of contract is made up of this mediation whereby I hold property not merely by means of a thing and my subjective will, but by means of another person's will as well and so hold it in virtue of my participation in a common will." - -A contract is thus an agreement among agents to hold a property by means of a common will. - -## <a name="Mediating_Actors"> Mediating Actors </a> - -In the case of confinement and encapsulation, there are not just two agents engaging in a contract, there are three (at least). There must be three, because encapsulation and confinement means that neither the party that is encapsulated, nor the party that is confined comes to hold the other parties property. So, there must be a third agent which does hold both parties property, and which implements the common will of the participants. - -To find this agent, we just have to look for somebody who comes to hold the other parties property. In computer systems without "trusted computing" components, this is the owner of the machine (and/or the system administrator). In computer systems with "trusted computing" components, the mediating agent are the people or companies designing and building the "trusted computing" hardware. - -In either case, the mediating agent uses tools to implement the common will. In either case, the mediating agent has, not exclusive, but still quite complete ownership over the property that is part of the contract (possession, use and disposal). In either case, implementation of the common will depends on the well-behaviour of the mediating agent. - -## <a name="Contract_Requires_Consent"> Contract Requires Consent </a> - -If the mediating agent is supposed to implement the common will of the participants in a contract, it needs to know what the common will is. If a participant wants to engage in a contract, it needs to know what the contract means before the participant can make a proper judgement about participation. - -In the process of entering a contract, you are giving up, at least temporarily, possession of a thing you own. This is why entering a contract requires careful consideration and explicit consent. - -## <a name="Contracts_Are_Not_Private"> Contracts Are Not Private </a> - -I can not make the transition here from the rights of individuals to the structure and legitimation of civil societies. This is the subject matter of state philosophy. However, it suffices to say that the universal rights of individuals find (often, not always) expression in the laws of the civil society, and that it is civil society which is bestowed to resolve conflicts between the perceived particular rights of individuals. - -Because civil societies exist, and we live in them, and contracts are fundamental to the function of a society, every society has extensive and complex laws about how contracts are made, and what they can entail, and what their limitations are. The German Civil Code contains 2385 articles on 433 pages, and this is only one of the many laws that has something to say about the matter. There are other laws specific to contractual labor, anti-trust, publicly traded companies, publications, etc etc. - -## <a name="A_Matter_Of_Judgement"> A Matter Of Judgement </a> - -It is now appropriate to look again at the proposed system structures in their extremes (there are shades of gray, but they have not been seriously discussed so far). - -In my model, the computer remains the property of its owner. This property right is strongly protected. The system will not allow, by default, operations that let the owner unintentionally enter into a contract between two parties. Any such contract requires explicit consent. It also requires, every time that a contract is made, to explicitly choose the mediator and scope of the contract. In other words, the owner must be explicit about his particular will that should be part of the common will of the contract. - -In the EROS/Coyotos model employing "trusted computing", only part of the computer is the property of the owner. Another part of the computer is owned by the manufacturer of the "trusted computing" component. The system will, by design, perpetually give away possession of parts of the computer to other agents, by engaging constantly in contracts with them. The nature of these contracts is built firmly into the system structure: The mediator is always the agent that designed and implemented the "trusted computing" component. The default "common will" is to alienate all rights to the property, except the right to destroy it. - -These seem to me the only serious proposals. I recognize that my model makes it harder for people to engage into contracts when they want to. In my opinion, this is justified: Negotiating and implementing a contract is a fundamental process that can not be overly simplified. In fact, in any serious business, developing the contracts between collaborating agents is a very serious and essential part of the process. Business holders are acutely aware of the risks involved in engaging into a contract, and spent significant personnel and financial resources to limit their risks. - -There may be, in principle, a system that makes it convenient for users to engage in standard contracts selectively, explicitely and safely. For this, however, the mechanisms involved must allow for a broad range of expressions that reflects the structure of the existing society, and the user must be able to decide if the contract actually reflects the common will of the involved agents. This is far beyond what we can technically achieve, at least today, maybe forever. - -## <a name="On_The_Non_Technicality_Of_The_C"> On The Non-Technicality Of The Choice </a> - -Currently, we only know about the two possible extreme positions described above. There is an outstanding description of the properties of my model, and how they can be achieved. However, my claim is that the choice between these two options can not be made on technical grounds. Each system is self-consistent and provides an adequate solution to the task that it tries to solve. - -The choice therefore comes down to a personal preference, which may either be based on personal needs, or on a speculation on the future. - -However, let me raise some cautions that illustrate why I have made my choice the way I did. These cautions do not constitute an exhaustive list of my arguments. It is not necessary for me to give an exhaustive list. In the end, what system one would prefer to use is a personal decision that everybody has to make on their own grounds. - -## <a name="On_The_Effect_Of_Perpetual_Alien"> On The Effect Of Perpetual Alienation </a> - -Hegel remarks on the effect of perpetual alienation (my terminology) (paragraph 67): - -"Single products of my particular physical and mental skill and of my power to act I can alienate to someone else and I can give him the use of my abilities for a restricted period, because, on the strength of this restriction, my abilities acquire an external relation to the totality and universality of my being. By alienating the whole of my time, as crystallised in my work, and everything I produced, I would be making into another's property the substance of my being, my universal activity and actuality, my personality." - -He then continues to add a comparison to the nature of being a slave: - -"The distinction here explained is that between a slave and a modern domestic servant or day-labourer. The Athenian slave perhaps had an easier occupation and more intellectual work than is usually the case with our servants, but he was still a slave, because he bad alienated to his master the whole range of his activity." - -It is undisputed (I hope) that computers occupy more and more of our personal life. By doing so, they start to embody significant parts of our personality. We, as domain experts, are miles ahead of the general public in this regard, and it is our obligation to foresee such developments. By losing control over our computers, we risk losing the ability to act universally. This finds correspondence in the risk of losing general-purpose computers to [[TiVo]]-ized locked down embedded systems. - -## <a name="Passive_Defense_Is_Not_Sufficien"> Passive Defense Is Not Sufficient </a> - -The passive defense against this risk is not sufficient. You may hold the opinion that the "trusted computing" component is optional. The machine owner can switch it off, and ignore it. This is true, but it is true in the same way that people are free not to click on email attachments if they do not want to risk getting a virus. Security threats, and the risk of losing the substance of one's being is probably the biggest security threat of them all, requires active defense at all levels of the computer system. - -There have already been proposals for US law to require all computers to support "trusted computing", and to enforce its use when connecting to the internet. There are other methods of coercion as well. One method is to introduce a less harmful variant of control, and then change the conditions after it is widely established. Another method is the exploitation of a monopoly, or conspirations among large companies to ensure that there is no feasible alternative. Yet another method is to spread false information on how the technique will be used. All of these techniques and more have already been used, so these are not speculations, they are facts. - -Once you accept the loss of the substance of one's being as a security threat (I am not saying you need to accept that, but if you do, you will be able to follow my argument), all the same techniques and considerations apply to this security threat as to other security threats. And it is universally recognized (I hope) that passive defense is not sufficient in the context of active security threats. - -## <a name="Radical_Paradigm_Shifts"> Radical Paradigm Shifts </a> - -The "trusted computing" model embodies radical paradigm shifts in how some people think about ownership and contracts. Richard Stallman remarks (<http://www.gnu.org/philosophy/can-you-trust.html>): - -"A previous statement by the palladium developers stated the basic premise that whoever developed or collected information should have total control of how you use it. This would represent a revolutionary overturn of past ideas of ethics and of the legal system, and create an unprecedented system of control. The specific problems of these systems are no accident; they result from the basic goal. It is the goal we must reject." - -The idea that the agent who developed or collected information should be the sole arbitrator of how the information is used by other agents is in direct conflict with several social contracts on fair use, temporal boundaries on copyright protection, obligation to preserve information (for example audits, or evidence of a crime), and more. - -In short, the mediating agent (the implementors of the "trusted computing" component) is overreaching, in direct conflict to established laws. At the same time, for most people, organizations, businesses and in fact, quite a number of governments as well, the mediating agent will be unaccountable, because not only it will be represented by large companies that have assets at their disposal comparable to some of the smaller nations on the globe, but also, because the way the technology is implemented, it will be able to convincingly deny its own involvement (also, nominally, it is the only party which could have been involved in the matter at all). - -## <a name="On_The_Imbalance_Of_Defaults"> On The Imbalance Of Defaults </a> - -In the encapsulated, confined example, the confined party risks, by default, nothing, and the encapsulated party risks, by default, all the resources that is giving up temporarily, for the whole time of the contract, without any guarantee for a result. - -This is an imbalance of defaults from which a balanced, negotiated contract is difficult to achieve. I see no reason why it should be easier or harder to achieve a balanced, negotiated contract in either system. They start from two extremes, and the right solution is somewhere in the middle. However, my system does not contain a comparable mechanism which is imbalanced by default. Instead, every agent is in the same situation. Practically, I think that a balanced contract is more likely to be the result of equal starting conditions than from unequal starting positions. - -## <a name="Conservative_Choices"> Conservative Choices </a> - -In the above sense, my model is really ultra-conservative. The only assumption is that it is the owner of the computer who should be in control over it. This is in fact, a logical tautology. I do not make any further assumptions about what should be imposed. - -## <a name="The_Choice_Of_A_GNU_Generation"> </a> The Choice Of A GNU Generation - -If you read carefully the text by RMS on <http://www.gnu.org/philosophy/can-you-trust.html> you will find out that, although the text focusses on DRM, it really anticipates a much broader class of problems. The free software movement depends on the free software philosophy, it is its heart and soul. Even if you do not subscribe to the free software philosophy, you should be able to agree with the following statement: - -Every person on earth should be able to write useful computer programs and share them with their friends without fees. - -For this, several things are required: We must have access to hardware that obeys our command. If it doesn't, or even if it only makes it very hard, we can not write programs for it. We must have access to information about how to write useful programs. For this, we must learn, and one way to learn is to observe how the programs that our friends wrote work. Also, to write programs that are useful in the real world, we must be able to reverse-engineer other proprietary programs. We must be able to publish our own, original work unencumbered by legal problems like patents. - -All of these things must be easy, or otherwise our ability to do our work is in danger. In the context of this discussion, my model supports these operations easily. The "trusted computing" model puts them at such a high risk that it threatens the mere survival of free software. - -This is something that is very important to understand. It is highly unlikely that the GNU project would accept a technology that threatens its own survival. So, if you want to propose a use case for this technology for a GNU project, you have to demonstrate more than just that there are people who want to do this. You would have to demonstrate that the benefits compensate the risk. Because the risk is very serious and very great, the compensating benefit would have to be equally big. Because this is a GNU mailing list spawned off a GNU project with the intent to write an operating system for the GNU project, I think it is appropriate to point this out. - -This does not mean that I am not, personally, interested in hearing your ideas. Furthermore, and this is also important to understand, I do not believe anymore that there is a conflict between the free software philosophy and the goal of writing a secure and useful operating system. The possibility that there might be such a conflict has been a great concern of mine in the last half year. However, once I had resolved two important use cases (suid programs and cut&paste), I was able to see what parts of the security infrastructure were actually important to me, and which parts I think are a separable concern. From there, it was not difficult to generalize to the above analysis of ownership and contracts. - -## <a name="Outlook"> Outlook </a> - -This then, is my motivation for closely examining how (1) my model can be technically described, and (2) what its properties are, and (3) what its justifying design principles are. This sets the agenda for upcoming mails, so let me insert a breaking point here. - -Thanks, Marcus - ----- - -Note: this document has an [[Part1OwnershipAndContractsAddendum]]. diff --git a/hurd/ng/part1ownershipandcontractsaddendum.mdwn b/hurd/ng/part1ownershipandcontractsaddendum.mdwn deleted file mode 100644 index d64d9179..00000000 --- a/hurd/ng/part1ownershipandcontractsaddendum.mdwn +++ /dev/null @@ -1,31 +0,0 @@ -this is an addendum to my first note. It provides one more concern about the "trusted computing" model, an important clarification of the nature of my objection, and a retraction on the need for a new design principle. - -## <a name="Monoculture_Of_Service"> Monoculture Of Service </a> - -In the "trusted computing" model, it is suggested that all contracts, by default, use the same mediating agent. This introduces a single point of failure into the system architecture. It also concentrates social and political power into the hands of the mediating agent, which can (and will) be abused. - -In my model, all contracts have to be established explicitely, and there is no default mechanism. This will naturally cause people to choose a variety of contracts. For example, many contracts do not require a mediating agent at all, but the common will can be implemented by either of the involved parties. Often, there already is a suitable, local mediating agent available. - -## <a name="Quantitative_Differences_Cause_Q"> Quantitative Differences Cause Qualitative Differences </a> - -My main objection is thus that the pervasive use of the confined+encapsulated design pattern in the system architecture leads to a new qualitative difference between the systems. Every single contract in isolation may appear innocent. Their sum creates emerging behaviour that I consider a threat. - -It is an open question to me if the individual contracts indeed are innocent. In every civil society, there are some contracts that are invalid, even if you sign on to them. Some rights are well-recognized as inalienable. If such an inalienable right is contained in the confined+encapsulated design pattern or not is a difficult question that requires a much more careful analysis than I have attempted so far. - -However, even if every such individual contract is innocent, my objection still stands, because it is grounded not in the nature of the individual contract, but in the cummulative effect if it is used pervasively in the system architecture. - -In fact, it is not hard to see that if we take an individual contract of the confined+encapsulated sort, it can be straightforwardly implemented in my model with only one requirement beyond what I have already planned for: The user would need to be able to create a space bank that provides encapsulation. (Some more features are required to make it possible to create such services automatically without human inspection, but that is a minor point). However, the presence of this feature is a local property of the system architecture, not a global property. - -It is thus difficult for me to understand why it has been argued that not using this form of contract in the system architecture constitutes a de-facto ban of the ability to engage in such a contract. Quite the opposite, I think that engaging in such a contract is very well possible with only local, non-intrusive changes to the operating system to support some very specific functions. Maybe (I have not analyzed this) it does not make sense to engage in only one such contract with limited scope, maybe the very nature of the contract requires its pervasive use in the system architecture. If this is true (again, I do not know if this is true or not), this could be a first indication that this particular form of contract is not as innocent as it appears. - -## <a name="A_New_Design_Principle_"> A New Design Principle? </a> - -I have suggested before that I have formed a new design principle that provides a taxometer for the use of the confined+encapsulated design pattern. However, after having written my note I do not think that a new design principle is necessary. - -The only decision that has to be made is if the risk of losing the "substance of ones being", as it applies to the realm of one's computers, is a security threat or not. The rest follows quite logically from standard principles on how to design secure operating systems. - -The substance of my argument can thus be summarized in four simple words: - -**Ownership must be secured**. - -Thanks, Marcus diff --git a/hurd/ng/part2systemstructure.mdwn b/hurd/ng/part2systemstructure.mdwn deleted file mode 100644 index 0f94ff2a..00000000 --- a/hurd/ng/part2systemstructure.mdwn +++ /dev/null @@ -1,122 +0,0 @@ -This is part 2 in a small series of notes explaining my opinion on what is a good system structure for the Hurd. While the ideas in part 1 motivate the system structure presented here, the feasibility of this system structure in turn justifies my opinion as presented in part 1. However, either part can also be taken individually. There will probably not be a third part. - -# <a name="Part_2_System_Structure"> Part 2: System Structure </a> - -I will start with presenting the process hierarchy, explain some abstract design patterns, and then show some specific applications. - -Note that within this document, I will limit myself to certain types of operations and features. This does not mean that the system itself, by design, contains any measures to forbid or ban other types of operations. - -## <a name="Process_Hierachy"> Process Hierachy </a> - -A process is a protection domain. The initial configuration of the machine contains one or more processes with specific, but unspecified, relationships. These processes are called the "root processes". From the initial configuration, processes can be created and destroyed. - -## <a name="Resource_Management"> Resource Management </a> - -I do not make a disctinction between data and capability pages. Both are, for the course of this discussion, memory pages. - -Processes require at the very least some memory resources to keep the process state. Memory is allocated from containers, which therefore provide an abstraction for memory reserves. It is required that one of the root processes is a server implementing container objects. - -A container provides an interface that allows to allocate and return memory frames, and to create new containers with a new reserve limit (thus, containers form a hierarchy). Any successful allocation and deallocation from such a derived container will also be accounted for in all containers from which it is derived. A container can be destroyed, which will return all memory frames allocated from it, and thus recursively destroy all containers derived from it as well. - -## <a name="Process_Creation_And_Destruction"> Process Creation And Destruction </a> - -Any process which has access to a container from which a sufficient amount of memory can be allocated, can convert this memory into a process. The process is destroyed by deallocating the memory from which it was created. - -## <a name="Filling_In_the_Gaps"> Filling In the Gaps </a> - -The above description is actually mostly complete. What is missing is the description of a somewhat unrelated feature which allows process identification, a description of what the default mechanisms are in the system to support common design patterns, and an illustration that these design patterns are sufficient. - -## <a name="Canonical_Invariances"> Canonical Invariances </a> - -By default, every process is associated with one memory container, the primary container of the process. This is the container from which the process is allocated, and from which the process does all allocations for its own needs. Primary containers are by default not shared. - -## <a name="Canonical_Process_Creation"> Canonical Process Creation </a> - -To create a new process, by default, a process, the parent, creates a new container from its primary container, allocates some memory from it and converts it into a new process, the child. It then prepares the process to get it into a runnable state. This includes the following steps: First, a special executable image (allocated from the primary container of the child) is installed into the child's address space, which runs a cooperative protocol with the parent. Then, the parent provides the primary container of the child, and any other initial state that the child should receive, to the startup code. The startup code finally installs this initial state and starts to execute it. - -It is clear from this description that the child's existance is completely determined by the parent. - -## <a name="Canonical_Process_Destruction"> Canonical Process Destruction </a> - -Process destruction can be done either cooperatively, or forcibly. The -difference corresponds approximately to the difference between SIGTERM and -SIGKILL in [[Unix]]. To destroy a process cooperatively, a request message is -sent to a special capability implemented by the child process. The child can -then begin to tear down the program, and at some time send a request back to -the parent process to ask for forced process destruction. - -Forced process destruction can be done by the parent process without any cooperation by the child process. The parent process simply destroys the primary container of the child (this means that the parent process should retain the primary container capability). - -Because container destruction works recursively, forced process destruction works recursively as well. - -## <a name="Process_Hierarchy"> Process Hierarchy </a> - -From the above description it should be clear that containers and processes are organized in the same hierarchical tree structure, where every node corresponds to a process and its primary container, and every edge corresponds to a parent-child relationship. - -## <a name="Isolation"> Isolation </a> - -The ability to subdivide the container's resource reserves provides the ability to completely isolate sibling processes in the process hierarchy. By default, two processes, where neither is an ancestor of the other process, are completely isolated. Also, an ancestor is partially isolated from its child. To overcome this isolation, the two processes need the cooperation of at least all their respective ancestors up to the first common ancestor in the tree. An example should illustrate that: - - A - / \ - B C - / \ - D E - -In this picture, A is the direct parent of B and C, and C is the direct parent of D and E. A is a common ancestor of B, C, D and E. C is a comon ancestor of D and E. The isolation is by default complete between (B C), (B D), (B E), and (D E). There is partial isolation between (A B), (A C), (A D), (A E), (C D) and (C E). The isolation properties of A are, if it is a root node, defined by the initial configuration. - -If, for example, B and D should be able to communicate, the explicit or implicit permission needs to be provided by both A and C. - -## <a name="Confinement"> Confinement </a> - -Because of the recursive nature of the process hierarchy, and because the existance of a child is completely determined by its direct parent (which existance is completely determined by _its_ direct parent, etc), processes can be confined, and the confinement extends to all their child processes as well. - -In the above example, A confines B, C, D and E. C confined D and E. Thus, B and C are only confined by A, whereas D and E are confined by A and C. - -## <a name="Meaning_Of_Words_Such_As_Secure_"> Meaning Of Words Such As Secure, Want, External, etc </a> - -Because the existance of a child process is completely defined by its parent, its understanding of what is secure, what its needs are, what is "external" to itself and what is internal, etc, is completely defined by the parent as well. It therefore does not make sense to object to the above model by claiming that the child can not do what it wants to do, because what the child wants to do is completely defined by the parent, as are its abilities to do it. It also does not make sense to object that the child can not determine if a capability it got from the parent is safe to use, because it is the parent which defines for the child if a capability is safe to use or not. - -Any such objection has, at its root, some assumption that is different from the assumptions made in this model, and thus needs to be analysed and reasoned about outside of the model. - -## <a name="Identify_Operation"> Identify Operation </a> - -An branding operation exists which, at the micro-level, allows a server process to check if a certain capability is implemented by itself. The server can then provide an identify operation to its clients, which allow the clients to check with the server if a certain capability is implemented by it. The client can then refuse to use the capability if it is not authentic. - -## <a name="Applications"> Applications </a> - -I will now describe some common applications that need to be supported, and how they can be supported in the above system structure. To make this brief, I only include applications that have any significance in the confined+isolated discussion. There are other applications (pipes, daemonization, process management), which are important to discuss, but can be solved in identical ways in both types of system structures, so I am excluding them here. - -## <a name="System_Services"> System Services </a> - -[[Unix]]-style suid applications have been proposed as one application for -alternative process construction mechanisms. However, suid applications in -Unix are, from the perspective of the parent, not confined, only isolated. -Thus, they are readily replaced by a system service that is created by the -system software, and that runs as a sibling to any user process. Only the -ability to invoke the system service needs to be given to the user, not the -ability to instantiate it. - -In fact, no gain can derived from letting the user instantiate system services. In Unix, system services run on durable resources, which the user can not revoke. Thus, the system service needs to acquire its resources from a container that is not derived from the user's primary container. - -## <a name="Cut_amp_Paste"> Cut & Paste </a> - -In "[Design of the EROS Trusted Window System](http://www.eros-os.org/papers/usenix-sec2004.ps)", Shap et al describe a uni-directional communication mechanism that can be used for a cut&paste operation in a window manager, that is guaranteed to not allow backflow of information. The main challenge to do this is format conversion, which traditionally requires negotiation between the two parties. In the mechanism proposed, confined constructors are used to allow the sending party to provide format converters that can be used by the receiving party to convert into a format it understands. - -I think that in the context of a free software operating system, and considering the threat caused by proprietary document formats, it is fully sufficient and in fact appropriate for our needs to replace this mechanism with one in which the format converters are not provided as isolated programs, but where instead at least the binary image of the format converter is provided in read-only fasion to the receiver. - -Accepting this means, in practice, that in the proposed protocol, the format converter constructor capability can be replaced by the vector of capabilities, which must be transitive read-only, which is put into the constructor by the sending party before sealing. The sending party then can instantiate these programs itself. - -This alternative mechanism breaks with the principle of least authority, because it values other principles with a higher priority. - -## <a name="Suspicious_Collaboration"> Suspicious Collaboration </a> - -Two agents in the system can collaborate suspiciously by means of a third agent. In the process, they rely on the third agent to implement the common will. This third agent can even be a constructor-like service. The validity of the service can either be established by the abovely described "Identify" operation, or, in principle, if the underlying operating system exposes the functionality of a "trusted computing" component, the two agents can even get all the guarantees and restrictions imposed by such a component. There is nothing in the system structure above that can prevent this[1]. The changes needed in the underlying operating system are purely local changes with no effect on the overall system structure. - -[1] I should add here that my analysis is limited to technical constraints. There may be further legal constraints imposed by software licenses such as the upcoming GPL v3, which draft has an anti-DRM provision. - -I said earlier that this makes it hard for me to understand why it has been said that the above system structure constitutes a "ban" on this mechanism. I believe, without having inquired further, that the reason must be that the suspicious collaboration in the above sense is a contract with limited scope. Any information that is passed from the mediating agent to either of the two parties will subsequently not be controlled further. This is in fact always true. The only difference is what the scope of the mediating agent is. - -In "locked down" computer systems, the mediating agent has a scope that extends to all of the operating system. For example, the window manager would be part of the mediating agent, and conspire with other components to not allow some information displayed to be read out or modified. Or it could reduce the quality of the information if such a read out occurs (as is required by HDCP licenses, for example). In the danger of repeating myself here, the differences that surfaced in the discussion are probably rooted in the issue of scope. The scope problem is not visible under a microsope, but is only revealed as emergent behaviour by a macroscopic analysis of the resulting system. - -Thanks, Marcus diff --git a/hurd/ng/pathmax.mdwn b/hurd/ng/pathmax.mdwn deleted file mode 100644 index 1ea337e9..00000000 --- a/hurd/ng/pathmax.mdwn +++ /dev/null @@ -1,3 +0,0 @@ -TBD, see <http://lists.gnu.org/archive/html/l4-hurd/2005-11/msg00038.html> and [Vulnerabilities in Synchronous IPC Designs](http://citeseer.ist.psu.edu/shapiro03vulnerabilities.html) - --- [[TomBachmann]] - 20 Jun 2006 diff --git a/hurd/ng/permissionbits.mdwn b/hurd/ng/permissionbits.mdwn deleted file mode 100644 index eac00057..00000000 --- a/hurd/ng/permissionbits.mdwn +++ /dev/null @@ -1,3 +0,0 @@ -TBD, see: <http://lists.gnu.org/archive/html/l4-hurd/2006-04/msg00231.html> - --- [[TomBachmann]] - 20 Jun 2006 diff --git a/hurd/ng/philosophy.mdwn b/hurd/ng/philosophy.mdwn deleted file mode 100644 index 1f952017..00000000 --- a/hurd/ng/philosophy.mdwn +++ /dev/null @@ -1,8 +0,0 @@ -Markus Brinkmann made the effort to sketch precisely the principles that motivate his choices about the design of the new Hurd, and particularily those affecting user freedom. - -This effort has led to a text in two parts: - -* [[Part1OwnershipAndContracts]] ([[Part1OwnershipAndContractsAddendum]]) -* [[Part2SystemStructure]] - -See also further commentary made on the l4-hurd list: <http://lists.gnu.org/archive/html/l4-hurd/2006-08/msg00123.html> diff --git a/hurd/ng/position_paper.mdwn b/hurd/ng/position_paper.mdwn deleted file mode 100644 index abc781da..00000000 --- a/hurd/ng/position_paper.mdwn +++ /dev/null @@ -1,15 +0,0 @@ -[[!meta copyright="Copyright © 2007, 2008 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]]."]]"""]] - -Neal Walfield and Marcus Brinkmann wrote a paper titled [*Improving Usability -via Access Decomposition and Policy -Refinement*](http://walfield.org/papers/20070104-walfield-access-decomposition-policy-refinement.pdf) -where they give an overview about how a future, subsequent system may be -architected. This is sometimes referred to as *the position paper*. diff --git a/hurd/ng/powerbox.mdwn b/hurd/ng/powerbox.mdwn deleted file mode 100644 index 412d16d3..00000000 --- a/hurd/ng/powerbox.mdwn +++ /dev/null @@ -1,19 +0,0 @@ -# <a name="The_Powerbox"> The Powerbox </a> - -## <a name="Rationale"> Rationale </a> - -In a [[CapabilityBasedMicrokernel]], an application might be used with the very minimal set of capabilities that is needed to execute it, that is read-only access to it's libraries and files, plus maybe access to a specific IP connection or configuration directory. - -Thus when the user asks to open or save a file, the dialog used to choose the file could also serve the purpose of granting the appropriate capabilities to the application. - -This dialog is named the powerbox. - -## <a name="Links"> Links </a> - -* [Plash powerbox](http://plash.beasts.org/powerbox.html) -* [E and Cap Desk](http://www.combex.com/tech/edesk.html) -* [Polaris: Toward Virus Safe Computing for Windows XP](http://www.hpl.hp.com/personal/Alan_Karp/polaris.pdf) -* [The E Language in a Walnut](http://www.skyhunter.com/marcs/ewalnut.html#SEC45) - search for "Powerbox Capability Manager" -* [The Darpa Browser](http://www.combex.com/papers/darpa-report/html/index.html) - see Appendix 5 - --- [[Main/NowhereMan]] - 28 Apr 2006 diff --git a/hurd/ng/requirementsforuser.mdwn b/hurd/ng/requirementsforuser.mdwn deleted file mode 100644 index d23221c3..00000000 --- a/hurd/ng/requirementsforuser.mdwn +++ /dev/null @@ -1,59 +0,0 @@ -Requirements for the user tell what a computer system should look like from a user's perspective. Here are three of such requirements: - -* Awareness -* Security -* Flexibility - -# <a name="Requirements"> Requirements </a> - -<a name="AwarenessRequirement"></a> - -## <a name="Awareness"> Awareness </a> - -The user must know what the operations are he can perform in the operating system. He must also know about their consequences and relevant side effects, and what the possible results are. At any point where the system can not make the right decision automatically, the user must have the ability to influence the path chosen. - ----- - -**Awareness means that the user knows what happens.** - ----- - -<a name="SecurityRequirement"></a> - -## <a name="Security"> Security </a> - -The user must be sure that his actions have predictable consequences, even in the presence of actively hostile influence. If there is a component in the system that the user can not control, the user must be able to contain its impact, either by simply ignoring it (shielding), or by imposing restrictions (confinement). - ----- - -**Security means that the user controls what can happen _to_ his resources.** - ----- - -<a name="FlexibilityRequirement"></a> - -## <a name="Flexibility"> Flexibility </a> - -The user must have a range of options available that support him to achieve an arbitrary but well-defined goal that can be stated within the legitimate resources the user controls. - ----- - -**Flexibility means that the user controls what can happen _with_ his resources.** - ----- - -# <a name="Relationships"> Relationships </a> - -For me, Awareness is a requirement for both, security and flexibility. The options that are presented to the user must be meaningful and clear to him. Otherwise, how is he in a position to make a decision where the system can't? This does not mean that the user must be aware of every detail that goes on, but he must be aware of the higher-level consequences of all actions (and non-actions) that he performs. - -I don't know about you, but everytime some dialog box in an application I use for the first time asks me if I want to babble-gabble the froob through the bibskadenga, I just click on the biggest of the buttons presented, or the one with the nicest color, and hope for the best. So, "Awareness" is just a basic usability requirement. - -Security ensures that the action the user can undertake never have so dramatic consequences that the user loses control over his session and associated resources, at least not without explicitely and consciously requesting it (note that Awareness is required here). - -A flexible system will not achieve these goals simply by restricting the users ability to perform his tasks. It will offer the broadest range of alternatives possible, without compromising the other goals. - ----- - -Adapted from: - -* <http://lists.gnu.org/archive/html/l4-hurd/2005-11/msg00242.html> diff --git a/hurd/ng/setuidvsconstructor.mdwn b/hurd/ng/setuidvsconstructor.mdwn deleted file mode 100644 index 87cce8df..00000000 --- a/hurd/ng/setuidvsconstructor.mdwn +++ /dev/null @@ -1,6 +0,0 @@ -TBD, see e.g.: - -* <http://lists.gnu.org/archive/html/l4-hurd/2005-10/msg00167.html> -* <http://lists.gnu.org/archive/html/l4-hurd/2005-10/msg00203.html> - --- [[TomBachmann]] - 20 Jun 2006 diff --git a/hurd/ng/sharedlibraries.mdwn b/hurd/ng/sharedlibraries.mdwn deleted file mode 100644 index d4969420..00000000 --- a/hurd/ng/sharedlibraries.mdwn +++ /dev/null @@ -1,3 +0,0 @@ -TBD, see <http://lists.gnu.org/archive/html/l4-hurd/2005-12/msg00034.html> - --- [[TomBachmann]] - 20 Jun 2006 diff --git a/hurd/ng/systemstructure.mdwn b/hurd/ng/systemstructure.mdwn deleted file mode 100644 index ef069edd..00000000 --- a/hurd/ng/systemstructure.mdwn +++ /dev/null @@ -1,3 +0,0 @@ -TBD, see: <http://lists.gnu.org/archive/html/l4-hurd/2006-05/msg00324.html> -(thread). Also, note that this is derived from [[Philosophy]]. See the -interface spec and the [[position_paper]] as well. diff --git a/hurd/ng/thepolycastinterface.mdwn b/hurd/ng/thepolycastinterface.mdwn deleted file mode 100644 index 702364cf..00000000 --- a/hurd/ng/thepolycastinterface.mdwn +++ /dev/null @@ -1,52 +0,0 @@ -# <a name="The_Polycast_Interface"> The Polycast Interface </a> - -## <a name="Introduction"> Introduction </a> - -In the current Hurd, all fs objects implement both directory and file methods. This means every program that accesses a file object has to decide whether to treat it as a file or a directory. This is no problem for programs that only know about files or directories, but there is a wide range of programs that understand both files and directories simultaneously (e.g. rm -R), and they are confused when they see objects that are files as well as directories. This causes erratic behaviour. For example, "grep \*" will search through the binary content of directories (because it treats them as files). - -Sometimes, the file and directory interface are refered to as \`\`facets'' of the object. - -## <a name="The_Problem"> The Problem </a> - -The problem is **much** worse than it might look like. Consider the case where one translator might reasonably implement two or more file interfaces, like a translator that simultaneously presents a .tar.bz2 file view, a .tar.gz file view and a directory view. Then you have a fundamental semantic issue: - -_A method call in isolation has no meaning. It can only be interpreted in the context of a particular interface._ - -## <a name="A_Solution"> A Solution </a> - -The solution is simple: whenever a method is invoked, the interface has to be known. This implies two things: a) we do not use multiple inheritance and b) support for some sort of \`\`casting'' is needed. For illustration, look at the inheritence graph for an object that provides both directory and file methods: - - file dir - \ / - dir_file - -This graph can be converted into one using only single inheritence: - - poly_type - \ / - file dir - -Where **poly\_type provides the methods get\_supported\_types() and get\_facet(type) for casting: get\_supported\_types returns a list of types which this object can be viewed as. get\_facet returns a new object with a new type, but the object is, at the server side, intimately related to the original object with the original type**. - -To give another example: the translator that provides .tar.bz2, .tar.gz and dir views would use the following inheritance graph: - - poly_type - / \ - file dir - / \ - tbz_file tgz_file - -tbz\_file and tgz\_file do not provide new methods, they exist only to distinct interfaces. - -## <a name="Usability_Considerations"> Usability Considerations </a> - -In order for the polycast interface to be useful, it has to work together with legacy applications (that are unaware of it). As either the [[PowerBox]] or the shell grant authority to applications, there can be some private agreement between the user and these components on how to express different interfaces of objects. For example foo:as\_dir could designate the directory facet of objecte foo. Also, different interfaces could be bound to different different names (either automatically or explicitely) - ----- - -see also: - -* <http://lists.gnu.org/archive/html/l4-hurd/2006-02/msg00002.html> -* <http://lists.gnu.org/archive/html/l4-hurd/2006-02/msg00003.html> - --- [[TomBachmann]] - 30 Apr 2006 diff --git a/hurd/ng/trivialconfinementvsconstructorvsfork.mdwn b/hurd/ng/trivialconfinementvsconstructorvsfork.mdwn deleted file mode 100644 index 949895e7..00000000 --- a/hurd/ng/trivialconfinementvsconstructorvsfork.mdwn +++ /dev/null @@ -1,92 +0,0 @@ -# <a name="About_this_page"> About this page </a> - -This page compares trivial confinement, the constructor mechanism, and POSIX fork(). First there is a short description of the process, then there is a discussion about the differences. - -This comparison is about a simple situation: there is a parent process P, which wants to spawn a child process C. We assume that P holds capabilities A and B. The end result should be that C holds a copy of A, but not of B. - -# <a name="Trivial_Confinement"> Trivial Confinement </a> - -For trivial confinement, there is a [[system call]] to create a process from -some memory pages. P performs the following steps: - -* Allocate some memory and put the code image of the child into that memory. This can be done by P, or for example by the file system which then gives the resulting memory (space bank) to P. -* Perform the [[system call]] on that memory. The result is a capability to C. -* Send A to C using the returned capability. - -Note that it is up to the implementation of the system what happens with P's access to the memory which holds the child. For example, it is probably a good idea if it is at least unmapped, so it cannot accidentily write things in it. It could even be revoked, so that it can't write things in it, even if it wants to. - -# <a name="Constructor"> Constructor </a> - -With the constructor mechanism, there are programs running on the system for the purpose of starting new programs. This means that the process is split in two steps. They need not be performed by the same party, in fact they often aren't. So there are two parents, P1 and P2. The first step: - -* P1 sends a message to the meta-constructor M (a constructor to create new constructors) sending it the code image for the child (and due to the limitation of this discussion, no initial capabilities). -* In respose, M creates a C-constructor and passes a capability to it to P1. - -The second step: - -* P2 somehow receives a copy of the capability to the C-constructor. -* P2 uses the capability to tell the C-constructor it should build a new process. It provides memory and processor time for the purpose. -* The C-constructor uses a method similar to Trivial Confinement to actually create C. It passes the capability C back to P2 as a reply to the capability invocation. -* P2 passes A throught the returned capability to C. - -This mechanism is targeted at a specific use pattern, namely that a process is created once, and then spawned many times. - -# <a name="POSIX_Fork"> </a> POSIX Fork - -POSIX fork, or rather fork+exec, is how things are done on many current -systems. It may be insightful to see it included in the comparison, especially -for people who are new to the subject. There are two [[system call]]s, fork -and exec. Fork will create a clone of the current process, including all the -capabilities (that is, [[unix/file_descriptor]]s) of the parent (except the -ones which have explicitly been excluded). Exec is a [[system call]] which -really goes to the filesystem, not the kernel (although on systems which use -it, the filesystem usually resides in the kernel), and asks it to spawn a new -process from the contents of a certain path in place of the caller. This -passes all capabilities to the new process. The procedure is: - -* P calls fork(), creating P'. -* P' drops B. -* P' calls exec(), turning P' into C. - -# <a name="Fork_vs_the_others"> Fork vs the others </a> - -Fork is bad. The following text should convince the reader that we do not want to use fork. If it fails to do so, please write your reply to <l4-hurd@gnuNOSPAM.org>. We can then improve this text, either by using better arguments, or by saying that fork is acceptable after all. :-) - -First of all, it must be clear that we are using a capability-based system. This offers a lot of security that POSIX doesn't have. The actual solution presented below doesn really work on POSIX, because C can simply reopen all the files. After all, it is running as the same user, with all the same rights, as P. This is not the case in a capability based system. Every process needs a capability to do things. The closest to the POSIX concept of a "user" is a bunch of capabilities to all objects that the user is allowed to handle. However, even if P has all those capabilities, that doesn't mean C does as well. So for example, if P doesn't give a capability to the user's home directory (and it probably will not do that indeed, but it'll give a private part instead which C can use for files), then C cannot get access to the files in there. And so in particular, if P has a capability to ~/.ssh/id\_dsa, and it doesn't give it to C, then C cannot simply call open and get the capability from there, because the file isn't in its file system. - -The big difference between fork and the other options is capability B. B is a private capability of P. P does not want it to be passed anywhere. In all cases this is achieved. However, fork needs to be explicit about this. If P (or actually P') forgets to drop B, everything will still work (C didn't use B anyway). However, if C contains a security bug and is taken over by a cracker, then that cracker has access to B. This means that due to a simple mistake, the concequences of a compromised C are bigger than they need to be. This problem is of course even bigger if C is untrusted code in the first place, because it doesn't even need to be "taken over" then, it may simply be malicious. - -In contrast, the other two options don't pass anything by default. If there is a similar mistake there, they would forget to pass A to C. That will soon be noticed, because C actually needs A (otherwise it shouldn't receive it). So C will fail to work. This will quickly be fixed, resulting in a better program. - -## <a name="Solving_the_problem"> Solving the problem </a> - -The problem of fork+exec can be solved. It is if the default would be to not pass capabilities to the new process, but specify a list of capabilities that it should keep, or (like in the other cases) pass them over a new channel which is implicitly created during the fork. However, in that case the only difference with trivial confinement is that P' dies in the process (and thus must be created to prevent P from dying). Almost any use of exec is in practice preceded by a fork for this purpose. It would be easier to make trivial confinement the default operation and let P die directly after it in the rare case that it should. - -The only reason for continuing to use fork+exec would be that it is what -existing programs do. However, they break anyway if they need to specify which -[[unix/file_descriptor]]s to pass. So they need to be adapted. Therefore, it's -better to make the usual spawning method the primitive one, and emulate the -other. - -# <a name="Trivial_Confinement_vs_Construct"> Trivial Confinement vs Constructor </a> - -Note: the following has not been extensively discussed on the mailing list, and no consensus has been reached AFAIK. This is the personal opinion of Bas Wijnen. - -The difference between trivial confinement and the constructor is one of control. With trivial confinement, P is in full control of the process (and since P is under full control of its own parent, that parent also fully controls C, and the parent's parent as well, etc. Note that the chain of parents is usually short). For example, if P is a debugger, it could choose to put some breakpoints into C before starting it. With the constructor, this control lies with P1. However, P2 is likely the one who will want to use the debugger. The constructor is explicitly designed to allow this type of control by the programmer (or system administrator) over the user. - -In the Hurd we want to enable the user to do these sort of things. We specifically don't want the administrator to use such control. So we do not need to provide the means for it in our system. (Note that not using a constructor doesn't actually guarantee that this kind of control is impossible.) - -Except for the control, there is really only one other difference, and that's address space separation. The constructor puts the code for process spawning into its own address space. This means that it cannot be corrupted by broken programs. Extending this principle would mean that every library call should be turned into a server which performs the operation for you. This is however also what trivial confinement does to a large extent anyway. - -What it doesn't do is protect the code image against bugs in P. In the constructor the trusted and well-tested constructor code is handling the image, for trivial confinement the (very possibly) buggy program P. In particular, when starting a program from a file system, with trivial confinement the operation is: - -* Ask the file system for the code, receive a capability to a space bank with a copy (on write) of it. -* Make the [[system call]] to turn it into a program. - -Now this isn't much more complicated than the constructor which does: - -* Ask the filesystem (which the constructor is part of) to spawn a new process. - -Therefore I am not so convinced that we want a constructor. It gets in the way of debugging, for example, and it doesn't really give any gain. - --- [[BasWijnen]] - 13 Jun 2006 diff --git a/hurd/ng/usecaseprivatekeys.mdwn b/hurd/ng/usecaseprivatekeys.mdwn deleted file mode 100644 index 3cb65af2..00000000 --- a/hurd/ng/usecaseprivatekeys.mdwn +++ /dev/null @@ -1,17 +0,0 @@ -_Private Keys_ as used by SSH servers, clients and generally by any cryptographic software need to be stored and manipulated securely. These may get replaced with smartcards soon, but in the mean time it appears to be an interesting use case. - -All [[Unix]] systems that I am aware of do not allow secrets to be protected in -a manner that I would feel is appropiate. A users compromised web browser -could either read your private key file or talk to the very popular ssh-agent -program and get your secrets out (not sure how popular distributions are -configured, but it can be done). - -The requirements so far are: - -* The secrets should not be available to general programs -* The ability to use secrets for their intended purpose (signing/encryption/decryption/ssl streams) -* Programs using decrypted data should be, by default, confined so that the data can't escape -* Must be able to backupand restore secrets securely -* Upgrading the agent software must be possible! using the backup/restore mechanism? - --- [[Main/SamMason]] - 11 Jan 2007 diff --git a/hurd/ng/usecaseuserfilesystem.mdwn b/hurd/ng/usecaseuserfilesystem.mdwn deleted file mode 100644 index 4e4fdf35..00000000 --- a/hurd/ng/usecaseuserfilesystem.mdwn +++ /dev/null @@ -1,14 +0,0 @@ -### <a name="User_Loadable_Filesystems"> User Loadable Filesystems </a> - -These appear as _translators_ in the current Hurd and something similar needs to appear in the next hurd. - -* The user should be able to dynamically add and remove translators -* For some reason it seems appropiate to have seperate namespaces (VFS's) for each user (this is quite a departure from [[Unix]]. [[SamMason]]) -* translators can be used to expose the structure of an archive file -* translators can be provide access to remote file systems - -Anything else? - -Probably not something we want to worry about now; but I'm guessing that the semantics of the new kernel will be sufficently different from Mach that some rewriting of the existing translators will be needed. From a pragmatic point of view it would be _nice_ if there wasn't too much change. - --- [[Main/SamMason]] - 11 Jan 2007 diff --git a/hurd/ng/whatisacapability.mdwn b/hurd/ng/whatisacapability.mdwn deleted file mode 100644 index f3a42dd8..00000000 --- a/hurd/ng/whatisacapability.mdwn +++ /dev/null @@ -1,3 +0,0 @@ -TBD, see e.g.: <http://www.eros-os.org/essays/capintro.html> - --- [[TomBachmann]] - 20 Jun 2006 diff --git a/hurd/ng/whatisaconstructor.mdwn b/hurd/ng/whatisaconstructor.mdwn deleted file mode 100644 index 583babe9..00000000 --- a/hurd/ng/whatisaconstructor.mdwn +++ /dev/null @@ -1,6 +0,0 @@ -TBD, see: - -* <http://lists.gnu.org/archive/html/l4-hurd/2005-10/msg00157.html> -* <http://lists.gnu.org/archive/html/l4-hurd/2006-05/msg00056.html> - --- [[TomBachmann]] - 16 May 2006 diff --git a/hurd/ng/whatisaspacebank.mdwn b/hurd/ng/whatisaspacebank.mdwn deleted file mode 100644 index 607501db..00000000 --- a/hurd/ng/whatisaspacebank.mdwn +++ /dev/null @@ -1,3 +0,0 @@ -TBD, see e.g. <http://eros-os.org/design-notes/SpaceBank.html> or <http://eros-os.org/papers/shap-thesis.ps> - --- [[TomBachmann]] - 31 Aug 2006 diff --git a/hurd/ng/whatsinagroup.mdwn b/hurd/ng/whatsinagroup.mdwn deleted file mode 100644 index 219f4ed0..00000000 --- a/hurd/ng/whatsinagroup.mdwn +++ /dev/null @@ -1,3 +0,0 @@ -TBD, see <http://lists.gnu.org/archive/html/l4-hurd/2006-03/msg00001.html> - --- [[TomBachmann]] - 20 Jun 2006 diff --git a/hurd/porting.mdwn b/hurd/porting.mdwn deleted file mode 100644 index c94572a4..00000000 --- a/hurd/porting.mdwn +++ /dev/null @@ -1,14 +0,0 @@ -[[!meta copyright="Copyright © 2009 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]]."]]"""]] - - * [[Guidelines]] - * [[System_API_Limitations]] - - * Debian: [[running/debian/Porting]] diff --git a/hurd/porting/guidelines.mdwn b/hurd/porting/guidelines.mdwn deleted file mode 100644 index 2618cd90..00000000 --- a/hurd/porting/guidelines.mdwn +++ /dev/null @@ -1,366 +0,0 @@ -[[!meta copyright="Copyright © 2002, 2003, 2005, 2007, 2008, 2009, 2010, 2011, -2012 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]]."]]"""]] - -This is a compilation of common porting problems and their solutions. - - -Additionally to this page, also see the section *General Porting Issues* of -<http://www.debian.org/ports/hurd/hurd-devel-debian><!-- TODO: merge these two -pages. -->, as well as further Debian-specific [[running/debian/porting]] -information. - -There is a separate page about [[System_API_Limitations]]. - -You may ask on the [[mailing lists/bug-hurd]] mailing list for details or -questions about fixing bugs. - -## <a name="GNU build system"> GNU build system </a> - -For a good overview of the components in the GNU build system, see -<http://en.wikipedia.org/wiki/GNU_build_system> and -<http://www.gnu.org/s/hello/manual/autoconf/index.html>. - -The GNU build system distinguishes between 'build', 'host' and 'target' machines. -The 'build' machine is where compilers are run, the 'host' machine where the package -being built will run, and for cross compiling the 'target' machine, on which the compiler -built will generate code for. - -When using GNU autotools to configure a package config.guess and config.sub from autotools-dev -are used to find out the build machine identity: CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM. -For GNU/Hurd config.guess gives 'i686-unknown-gnu0.3'. Sometimes a quadruple is used -adding KERNEL, e.g. for Linux on an amd64: 'x86_64-unknown-linux-gnu'. This -is however actually a triple, it just happens that the operating system part -unfortunately contains a '-'. config.sub is used to -canonicalize on these triplets, e.g. config.sub i686-gnu gives 'i686-pc-gnu'. - -On Debian systems the build Makefile is debian/rules and some Debian packages will set $host to -'i486-pc-gnu'. This is accomplished with the 'dpkg-architecture -qDEB_HOST_GNU_TYPE' construct -forwarded to configure in debian/rules, e.g. configure --host=$DEB_HOST_GNU_TYPE. -Another way to set $build, $host etc is via the Debian dh_auto_configure script from the debhelper -package which uses the Perl code autoconf.pm to find out these variables. - -## <a name="autoconf"> Fixing configure.{ac,in} </a> - -The GNU/Hurd (and GNU/kFreeBSD) toolchain is extremely close to the GNU/Linux toolchain. -configure.ac thus very often just needs to be fixed by using the same cases as Linux, that is, turn - - switch "$host_os" in - case linux*) - -into - - switch "$host_os" in - case linux*|k*bsd-gnu*|gnu*) - -for a host_os case statement, or - - switch "$host" in - case *-linux*) - -into - - switch "$host" in - case *-linux*|*-k*bsd-gnu*|*-gnu*) - -If separate case is needed, make sure to put *-gnu* *after* *-linux*: - - switch "$host" in - case *-linux*|*-k*bsd-gnu*) - something;; - - case *-gnu*) - something else;; - -because else *-gnu* would catch i386-pc-linux-gnu for instance... - -Note: some of such statements are not from the source package itself, but from aclocal.m4 which is actually from libtool. In such case, the package simply needs to be re-libtoolize-d. - -## <a name="Undefined_bits_confname_h_tt_mac"> Undefined `bits/confname.h` macros (`PIPE_BUF`, ...) </a> - -If macro `XXX` is undefined, but macro `_SC_XXX` or `_PC_XXX` is defined in `bits/confname.h`, you probably need to use `sysconf`, `pathconf` or `fpathconf` to obtain it dynamicaly. - -The following macros have been found in this offending situation (add more if you find them): `PIPE_BUF` - -An example with `sysconf`: (when you find a `sysconf` offending macro, put a better example) - - #ifndef XXX - #define XXX sysconf(_SC_XXX) - #endif - /* offending code using XXX follows */ - -An example with `fpathconf`: - - #ifdef PIPE_BUF - read(fd, buff, PIPE_BUF - 1); - #else - read(fd, buff, fpathconf(fd, _PC_PIPE_BUF) - 1); - #endif - /* note we can't #define PIPE_BUF, because it depends - on the "fd" variable */ - -## <a name="Bad_File_Descriptor"> Bad File Descriptor </a> - -If you get Bad File Descriptor error when trying to read from a file (or accessing it at all), check the `open()` invocation. The second argument is the access method. If it is a hard coded number instead of a symbol defined in the standard header files, the code is screwed and should be fixed to either use `O_RDONLY`, `O_WRONLY` or `O_RDWR`. This bug was observed in the `fortunes` and `mtools` packages for example. - -## <a name="PATH_MAX_tt_MAX_PATH_tt_MAXPATHL">`PATH_MAX`, `MAX_PATH`, `MAXPATHLEN`, `_POSIX_PATH_MAX`</a> - -<http://pubs.opengroup.org/onlinepubs/009695399/basedefs/limits.h.html> - -Every unconditionalized use of `PATH_MAX`, `MAX_PATH` or `MAXPATHLEN` is a POSIX incompatibility. If there is no upper limit on the length of a path (as its the case for GNU), this symbol is not defined in any header file. Instead, you need to either use a different implementation that does not rely on the length of a string or use `sysconf()` to query the length at runtime. If `sysconf()` returns -1, you have to use `realloc()` to allocate the needed memory dynamically. Usually it is thus simpler to just use dynamic allocation. Sometimes the amount is actually known. Else, a geometrically growing loop can be used: for instance, see [Alioth patch](http://alioth.debian.org/tracker/download.php/30628/410472/303735/1575/cpulimit-path-max-fix.patch) or [Pulseaudio patch](http://bugs.debian.org/cgi-bin/bugreport.cgi?msg=5;filename=patch-pulse;att=1;bug=522100). Note that in some cases there are GNU extensions that just work fine: when the `__GLIBC__` macro is defined, `getcwd()` calls can be just replaced by `get_current_dir_name()` calls. - -Note: constants such as `_POSIX_PATH_MAX` are only the minimum required value -for a potential corresponding `PATH_MAX` macro. They are not a replacement for -`PATH_MAX`, just the minimum value that one can assume. - -Note 2: Yes, some POSIX functions such as `realpath()` actually assume that -`PATH_MAX` is defined. This is a bug of the POSIX standard, which got fixed in -the latest revisions, in which one can simply pass `NULL` to get a dynamically -allocated buffer. - -## <a name="ARG_MAX"> `ARG_MAX` </a> - -Same rationale as `PATH_MAX`. There is no limit on the number of arguments. - -## <a name="IOV_MAX"> `IOV_MAX` </a> - -Same rationale as `PATH_MAX`. There is no limit on the number of iovec items. - -## <a name="MAXHOSTNAMELEN_tt_"> `MAXHOSTNAMELEN` </a> - -Same as `PATH_MAX`. When you find a `gethostname()` function, which acts on a static buffer, you can replace it with Neal's [xgethostname function](http://walfield.org/pub/people/neal/xgethostname/) which returns the hostname as a dynamic buffer. For example: - -Buggy code: - - char localhost[MAXHOSTNAMELEN]; - ... - gethostname(localhost, sizeof(localhost)); - -Fixed code: - - #include "xgethostname.h" - ... - char *localhost; - ... - localhost = xgethostname(); - if (! localhost) - { - perror ("xgethostname"); - return ERROR; - } - ... - /* use LOCALHOST. */ - free (localhost); - -## <a name="NOFILE_tt_"> `NOFILE` </a> - -Replace with `getrlimit(RLIMIT_NOFILE,...)` - -## <a name="GNU_specific_define_tt_"> </a> GNU specific `#define` - -If you need to include specific code for GNU/Hurd using `#if` ... `#endif`, then you can use the `__GNU__` symbol to do so. But think (at least) thrice! before doing so. In most situations, this is completely unnecessary and will create more problems than it may solve. Better ask on the mailing list how to do it right if you can't think of a better solution. - -## <a name="sys_errlist_tt_vs_strerror_tt_"> `sys_errlist[]` vs. `strerror()` </a> - -If a program has only support for `sys_errlist[]` you will have to do some work to make it compile on GNU, which has dropped support for it and does only provide `strerror()`. Steinar Hamre writes about `strerror()`: - -`strerror()` should be used because: - -* It is the modern, POSIX way. -* It is localized. -* It handles invalid signals/numbers out of range. (better errorhandling and not a buffer-overflow-candidate/security risk) - -`strerror()` should always be used if it is available. Unfortunaly there are still some old non-POSIX systems that do not have `strerror()`, only `sys_errlist[]`. - -Today, only supporting `strerror()` is far better than only supporting `sys_errlist[]`. The best (from a portability viewpoint), however is supporting both. For configure.in, you will need: - - AC_CHECK_FUNCS(strerror) - -To `config.h.in`, you need to add: - - #undef HAVE_STRERROR - -Then something like: - - #ifndef HAVE_STRERROR - static char * - private_strerror (errnum) - int errnum; - { - extern char *sys_errlist[]; - extern int sys_nerr; - - if (errnum > 0 && errnum <= sys_nerr) - return sys_errlist[errnum]; - - return "Unknown system error"; - } - #define strerror private_strerror - #endif /* HAVE_STRERROR */ - -You can for example look in the latest coreutils (the above is a simplified version of what I found there.) Patches should of course be sent to upstream maintainers, this is very useful even for systems with a working `sys_errlist[]`. - -Of course, if you don't care about broken systems (like MS-DOG) not supporting `strerror()` you can just replace `sys_errlist[]` directly (upstream might not accept your patch, but debian should have no problem) - -## <a name="C++_error_t"> C++, `error_t` and `E*` </a> - -On the Hurd, `error_t` is an enumeration of the `E*` constants. However, C++ -does not like `E*` integer macros being directly assigned to that enumeration. In short, replace - - error_t err = EINTR; - -by - - error_t err = error_t(EINTR); - -## <a name="Missing_termio_h_tt_"> Missing `termio.h` </a> - -Change it to use `termios.h` (check for it properly with autoconf `HAVE_TERMIOS_H` or the `__GLIBC__` macro) - -Also, change calls to `ioctl(fd, TCGETS, ...)` and `ioctl(fd, TCSETS, ...)` with `tcgetattr(fd, ...)` and `tcsetattr(fd, ...)`. - -## <a name="AC_HEADER_TERMIO_tt_"> `AC_HEADER_TERMIO` </a> - -The autoconf check for `AC_HEADER_TERMIO` tryes to check for termios, but it's only really checking for termio in `termios.h`. It is better to use `AC_CHECK_HEADERS(termio.h termios.h)` - -## <a name="_IOT"> missing `_IOT` </a> - -This comes from ioctls. Fixing this is easy if the structure members can be expressed by using the _IOT() macro, else it's simply impossible... See `bits/termios.h` for an instance: - -`#define _IOT_termios /* Hurd ioctl type field. */ \ - _IOT (_IOTS (tcflag_t), 4, _IOTS (cc_t), NCCS, _IOTS (speed_t), 2)` - -The rationale behind is that on the Hurd ioctl numbers actually encode how the -data should be transferred via RPC: here `struct termios` holds 4 members of -type `tcflag_ts`, then `NCCS` members of type `cc_tsi` and finaly 2 members of -type `speed_ts`, so the RPC mecanism will know how to transfer them. - -As you can see, this limits the number of contiguous kinds of members to 3, and -in addition to that (see the bitfield described in `ioctls.h`), the third kind -of member is limited to 3 members. This is a design limitation, there is no way -to overcome it at the moment. - -Note: if a field member is a pointer, then the ioctl can't be expressed -this way, and that makes sense, since the server you're talking to -doesn't have direct access to your memory. Ways other than ioctls must -then be found. - -## <a name="SA_SIGINFO"> `SA_SIGINFO` </a> - -Implemented by Jérémie Koenig, pending upload in Debian eglibc 2.13-19. - -## <a name="SA_NOCLDWAIT"> `SA_NOCLDWAIT` </a> - -Not implemented yet. - -## <a name="SOL_IP"> `SOL_IP` </a> - -Not implemented yet. - -## <a name="HZ"> `HZ` </a> - -Linuxish and doesn't even make sense since the value may vary according to the running kernel. Should use `sysconf(_SC_CLK_TCK)` or `CLK_TCK` instead. - -## <a name="SIOCDEVPRIVATE"> `SIOCDEVPRIVATE` </a> - -Oh, we should probably provide it. - -## <a name="MAP_NORESERVE"> `MAP_NORESERVE` </a> - -Not POSIX, but we could implement it. - -## <a name="O_DIRECT"> `O_DIRECT` </a> - -Long story to implement. - -## <a name="PTHREAD_ERRORCHECK_MUTEX_INITIALIZER_NP"> `PTHREAD_ERRORCHECK_MUTEX_INITIALIZER_NP` </a> - -We could easily provide it; - -## <a name="PTHREAD_STACK_MIN"> `PTHREAD_STACK_MIN` </a> - -We should actually provide it. - -## <a name="types"> `linux/types.h` or `asm/types.h` </a> - -These are not POSIX, `sys/types.h` and `stdint.h` should be used instead. - -## <a name="iopl"> `iopl` </a> - -Not supported and actually very dangerous (permits userland to completely disable interruptions...). Replace with `ioperm(0, 65536, 1)`. - -## <a name="iopl"> `semget`, `sem_open` </a> - -Not implemented, will always fail. Use `sem_init()` instead if possible. - -## <a name="net/..."> `net/if_arp.h`, `net/ethernet.h`, etc. </a> - -Not implemented, not POSIX. Try to disable the feature in the package. - -## <a name="parport"> <linux/parport.h> <linux/ppdev.h> </a> - -There is no programming interface for the parallel port on GNU/Hurd yet. - -## <a name="cdrom"> <linux/cdrom.h> </a> - -Use <sys/cdrom.h> instead. - -## <a name="baud"> CBAUD </a> - -This is not actually standard; cfsetspeed, cfsetispeed, or cfsetospeed should be used instead. - -## <a name="errno"> `errno` values </a> - -When dealing with `errno`, you should always use the predefined error codes defined with the `E*` constants, instead of manually comparing/assigning/etc with their values. - -For example (C/C++): - - /* check whether it does not exist */ - if (errno == 2) - ... - -or Python: - - # check whether it does not exist - try: - ... - except OSError, err: - err.errno == 2: - ... - -This is wrong, as [the actual values of the `E*` are unspecified (per POSIX)](http://www.opengroup.org/onlinepubs/009695399/functions/xsh_chap02_03.html#tag_02_03). You must always use the predefined constants for the possible errors. - -For example (C/C++): - - /* check whether it does not exist */ - if (errno == ENOENT) - ... - -With Python, you can use the [`errno` module](http://docs.python.org/library/errno.html) for the various constants: - - # check whether it does not exist - try: - ... - except OSError, err: - import errno - err.errno == errno.ENOENT: - ... - -## <a name="libdl"> undefined reference to `dlopen`, `dlsym`, `dlclose` </a> - -Configure script often hardcode the library that contains dlopen & such (`-ldl'), and only for Linux. Simply add the other GNU OS cases: replace `linux*' with `linux*|gnu*|k*bsd*-gnu` - -## <a name="linux_headers"> Missing `linux/types.h`, `asm/types.h`, `linux/limits.h`, `asm/byteorder.h`, `sys/endian.h`, `asm/ioctl.h`, `asm/ioctls.h`, `linux/soundcard.h` </a> - -These are often used (from lame rgrep results) instead of their standard equivalents: `sys/types.h` (or `stdint.h` for fixed-size types), `limits.h`, `endian.h`, `sys/ioctl.h`, `sys/soundcard.h` - -## <a name="linux_features"> Missing `sys/*.h`, `linux/*.h`</a> - -These are linuxish things, they may not have Hurd equivalents yet, better disable the code. diff --git a/hurd/porting/system_api_limitations.mdwn b/hurd/porting/system_api_limitations.mdwn deleted file mode 100644 index 1615ccc0..00000000 --- a/hurd/porting/system_api_limitations.mdwn +++ /dev/null @@ -1,29 +0,0 @@ -[[!meta copyright="Copyright © 2003, 2004, 2005, 2009, 2010, 2011 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]]."]]"""]] - -Sometimes building or running a program will fail due to bugs in the system API -implementation (in [[glibc]] and the [[Hurd]]). Make sure you check this list -and know them before porting, otherwise you'll end up debugging something just -to find out its an already known bug. - -Taken from the bug lists in [[running/Debian]] BTS. If you find more of them -(and it is clear in the bug log that it is a bug), please add them to the list -below. - -These are the known system API limits that have porting implications. - -**_[\#47998](http://bugs.debian.org/47998): `msgget` IPC not implemented_** - -**_[[nice() doesn't work|open_issues/nice_vs_mach_thread_priorities]]_**. - -**_[\#187391](http://bugs.debian.org/187391): libc0.3-dev: `sockaddr_un.sun_path` can't be assigned a `const char *` when compiling with g++_**<br />**breaks:** fam, gail<br />**status:** maybe this should be in [[PortingIssues]] (see _long_ bug log) - -**_[\#190367](http://bugs.debian.org/190367): libc0.3-dev: `fcntl` `F_GETLK` not implemented (`ENOSYS`)_**<br />**breaks:** gnome-session (and others) from running<br />**error:** misc lock-related errors diff --git a/hurd/reference_manual.mdwn b/hurd/reference_manual.mdwn deleted file mode 100644 index 9337b784..00000000 --- a/hurd/reference_manual.mdwn +++ /dev/null @@ -1,18 +0,0 @@ -[[!meta copyright="Copyright © 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 -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]]."]]"""]] - -*The GNU Hurd Reference Manual* documents the architecture, the usage and the -programming of the GNU Hurd. At the moment, the manual is quite incomplete. - - * [HTML version](http://www.gnu.org/software/hurd/doc/hurd_toc.html) for - browsing online, - * [PostScript version](http://www.gnu.org/software/hurd/doc/hurd.ps) - [1020KiB, 91 pages]. diff --git a/hurd/running.mdwn b/hurd/running.mdwn deleted file mode 100644 index a96a78c4..00000000 --- a/hurd/running.mdwn +++ /dev/null @@ -1,25 +0,0 @@ -[[!meta copyright="Copyright © 2007, 2008, 2009, 2011 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]] - -There are several different ways to run a GNU/Hurd system: - -* [[Distrib]] - Distributions based on the Hurd -* [[microkernel/mach/gnumach/ports/Xen]] - In Xen -* [[Live_CD]] -* [[QEMU]] - In QEMU -* [[VirtualBox]] - In VirtualBox -* [[vmware]] (**non-free!**) - -* [[FAQ]] - -* [[Public_hurd_boxen]] diff --git a/hurd/running/arch_hurd.mdwn b/hurd/running/arch_hurd.mdwn deleted file mode 100644 index 0e6075bb..00000000 --- a/hurd/running/arch_hurd.mdwn +++ /dev/null @@ -1,21 +0,0 @@ -[[!meta copyright="Copyright © 2010 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]]."]]"""]] - -[[!meta title="Arch Hurd"]] - -Arch Hurd is a port of Arch Linux to the GNU Hurd, founded on 2010-01-04 by Michael Walker (Barrucadu) and, with input from a variety of people including Allan McRae (allan), Matthias Lanzinger (melpo), and Alexander Preisinger (giselher), the project has made excellent process. There is a livecd available on the Arch Hurd website, with which you can try or install Arch Hurd. - -### Links - -* Official Website: <http://www.archhurd.org> -* Installation Guide: <http://wiki.archhurd.org/wiki/Installation_Guide> -* Mailing Lists: <http://lists.archhurd.org> -* Forum: <http://bbs.archhurd.org> -* IRC: #archhurd on irc.freenode.net diff --git a/hurd/running/bee.mdwn b/hurd/running/bee.mdwn deleted file mode 100644 index f5eb132c..00000000 --- a/hurd/running/bee.mdwn +++ /dev/null @@ -1,6 +0,0 @@ -[Bee GNU/Hurd](http://bee.es.gnu.org/) - -Castellano distribution, pkgsrc package based. [[BochsEmulator]] image -available too. They have their own -[wiki](http://es.gnu.org/cgi-bin/beewiki.pl?Wiki_Bee_GNU) and a [mailing -list](http://bee.es.gnu.org/?p=mail&l=en) (no archive). diff --git a/hurd/running/debian.mdwn b/hurd/running/debian.mdwn deleted file mode 100644 index fcd4d49b..00000000 --- a/hurd/running/debian.mdwn +++ /dev/null @@ -1,24 +0,0 @@ -[[!meta title="Debian GNU/Hurd"]] - -# Debian Resources -- Official page about the Debian GNU/Hurd port: [Debian GNU/Hurd](http://www.debian.org/ports/hurd/) -- Debian [[FAQ]] — Frequently Asked Questions - -## QEMU Image -[[!inline pages=hurd/running/debian/qemu_image raw=yes feeds=no]] - -# Installing -- [Installation Instructions](http://www.debian.org/ports/hurd/hurd-install) - - [Upgrading K11 or K14 based systems to unstable](http://lists.debian.org/debian-hurd/2007/09/msg00007.html) -- [[After_install]] — Do this to get networking, new console and X - -# Contributing -- [[Porting]] — Helping with porting packages - * [[Patch_submission]] — How to submit patches for build failures -- [[Creating_image_tarball]] - -# Additional Information -- [Presentation](http://people.debian.org/~mbanck/talks/hurd_lt2004/html/) - *Debian GNU/Hurd*, [[MichaelBanck]], LinuxTag 2004 Karlsruhe -- [[Status]] -- [Archive Qualification](http://wiki.debian.org/ArchiveQualification/hurd-i386) diff --git a/hurd/running/debian/CDNotesHome.mdwn b/hurd/running/debian/CDNotesHome.mdwn deleted file mode 100644 index a154415b..00000000 --- a/hurd/running/debian/CDNotesHome.mdwn +++ /dev/null @@ -1,7 +0,0 @@ -Charles, here's a place for you! As usual, you can find [more information here](http://www.debian.org/ports/hurd/hurd-cd). Past notes may be of help as well. - ----- - -It seems the building of the CDs is being passed to the University of Calicut. [Re: latest ISO images](http://lists.debian.org/debian-hurd/2007/07/msg00095.html) K 14 is the latest stable, L1 is the development version. - --- [[Main/GrantBow]] - 24 Jul 2007 diff --git a/hurd/running/debian/CrossInstall.mdwn b/hurd/running/debian/CrossInstall.mdwn deleted file mode 100644 index 1cde150c..00000000 --- a/hurd/running/debian/CrossInstall.mdwn +++ /dev/null @@ -1,76 +0,0 @@ -## <a name="Easy_install_with_CrossHurd"> Easy install with CrossHurd </a> - -Qurious about the Hurd? Have a 1-5 GiB partition free? Let's install GNU/Hurd on it! - -### <a name="Preparing_the_partition"> Preparing the partition </a> - -We'll assume you have a partition ready, for the sake of argument we use an example here: /dev/hda3 is the Hurd partition (type: Linux) and /dev/hda4 is the Linux swap that we'll reuse. - -First we create the Ext2 filesystem, notice the `hurd` option. - - # mke2fs -o hurd /dev/DEVICE - -Next we create a useful mountpoint and mount the partition. - - # mkdir /gnu - # mount /dev/hda3 /gnu - -### <a name="Retrieving_CrossHurd"> Retrieving CrossHurd </a> - -Unless you don't run Debian GNU/Linux download it from <http://packages.debian.org/crosshurd>, or simply apt-get the package from Testing or Unstable. - - # apt-get install crosshurd - -### <a name="Cross_installing"> Cross installing </a> - -The crosshurd package only operates in the given target directory, which is the first question asked when running the program. - - # cd /gnu - # crosshurd - -Answer the questions you get: $ What is the target directory?: `/gnu` $ Target Debian system?: gnu $ Target CPU?: i386 - -Now the program starts retrieving all the necessary base packages. - -### <a name="Preparing_to_reboot"> Preparing to reboot </a> - -When all packages have been extracted we must prepare [[GRUB]] for the Hurd when we reboot. Add the below entry to your `/boot/grub/menu.lst` file to boot the Hurd in single user mode (-s). Single user mode is needed only for the two reboots when running the Native Install. - - title GNU (kernel GNUmach 1.3) - root (hd0,2) - kernel /boot/gnumach.gz root=device:hd0s3 -s - module /hurd/ext2fs.static \ - --multiboot-command-line=${kernel-command-line} \ - --host-priv-port=${host-port} \ - --device-master-port=${device-port} \ - --exec-server-task=${exec-task} \ - -T typed ${root} $(task-create) $(task-resume) - module /lib/ld.so.1 /hurd/exec $(exec-task=task-create) - -**_Nota Bene:_** In your menu file there should be no extra white space after the back slashes. - -### <a name="Native_install"> Native install </a> - -Ah, reboot and select "GNU (kernel GNUmach 1.3)" from the Grub menu. At the prompt, setup TERM and run the native-install script. - - # export TERM=mach - # ./native-install - -When done the native install requests that you reboot once again and rerun native-install. This time you will be asked a lot of questions, see the [[Hurd/InstallNotes]] for details. - - # reboot - ... - # export TERM=mach - # ./native-install - -Done, continue setting up your system, see the [[Hurd/InstallNotes]] for more help. - --- [[Main/JoachimNilsson]] - 22 Mar 2005 - ----- - -Jeff Bailey has set up a system where you can install a Hurd system without having to use CDs. It's another type of cross-installation method which uses Debian package management tools to get the packages required as opposed to the one single big tarball. - -As of 2005-03-22, the latest version of crosshurd is 1.7.11. It can be found at <http://packages.debian.org/crosshurd>. - --- [[Main/PeterMelville]] - 12 Jun 2004 diff --git a/hurd/running/debian/DebianAptOffline.mdwn b/hurd/running/debian/DebianAptOffline.mdwn deleted file mode 100644 index 9596040d..00000000 --- a/hurd/running/debian/DebianAptOffline.mdwn +++ /dev/null @@ -1,62 +0,0 @@ -[[!meta copyright="Copyright © 2005, 2007, 2008 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]]."]]"""]] - -# How to Installing Packages without a Network Connection from your Hurd Installation - -This procedure is based on that found in -`/usr/share/doc/apt-doc/offline.text.gz` (Debian package `apt-doc`). - -This requires having apt installed on the Host operating system. - -Put a copy of [apt.conf.offline](DebianAptOffline/apt.conf.offline) -into your Debian GNU/Hurd installations /etc/apt/ directory. - -## If you _can_ mount your Debian GNU/Hurd partition from another OS, which can connect to the Internet - -As root on the internet connected OS: - - # mount /dev/DEBIAN_GNU_HURD_PARTITON /mnt - # cd /mnt - # apt-get -c etc/apt/apt.conf.offline {update, upgrade, install foo, etc.} - -Then, reboot into your Debian GNU/Hurd installation and as root, run: - - # apt-get {update, upgrade, install foo, etc.} - -## If you _cannot_ mount your Debian GNU/Hurd partition under another OS. - -From your Debian GNU/Hurd installation run, as the root user: - - # tar cf myhurdsconf.tar /etc/apt/{apt.conf.offline,sources.list} /var/lib/dpkg/status - -Copy _myhurdsconf.tar_ to the remote system. - -This copies your apt configuration and the status of your system -(what packages are installed, which versions, etc.) - -From the remote sytem, as any user, run: - - $ mkdir myhurd - $ cd myhurd - $ tar -xf myhurdsconf.tar - $ mkdir -p var/lib/apt/lists/partial var/cache/apt/archives/partial tmp - $ apt-get -c etc/apt/apt.conf.offline {update, upgrade, install foo, etc.} - $ tar cf myhurdsconf.tar etc/apt/{apt.conf.offline,sources.list} var/ - -Copy _myhurdsconf.tar_ back to your Debian GNU/Hurd system. - -Finally, from your Debian GNU/Hurd installation as the root user: - - # mkdir tmp - # cd tmp - # tar -xf myhurdsconf.tar - # mv var/cache/apt/archives/*.deb /var/cache/apt/archives/ - # mv var/lib/apt/lists/*_* /var/lib/apt/lists/ - # apt-get {update, upgrade, install foo, etc.} diff --git a/hurd/running/debian/DebianAptOffline/apt.conf.offline b/hurd/running/debian/DebianAptOffline/apt.conf.offline deleted file mode 100644 index 59aed564..00000000 --- a/hurd/running/debian/DebianAptOffline/apt.conf.offline +++ /dev/null @@ -1,23 +0,0 @@ - APT - { - /* This is not necessary if the two machines are the same arch, it tells - the remote APT what architecture the Debian machine is */ - Architecture "hurd-i386"; - - Get::Download-Only "true"; - }; - - Dir - { - /* Use the disc for state information and redirect the status file from - the /var/lib/dpkg default */ - State "./var/lib/apt"; - State::status "./var/lib/dpkg/status"; - - // Binary caches will be stored locally - Cache::archives "./var/cache/apt/archives/"; - Cache "./tmp/"; - - // Location of the source list. - Etc "./etc/apt/"; - }; diff --git a/hurd/running/debian/DebianDpkgArchitecture.mdwn b/hurd/running/debian/DebianDpkgArchitecture.mdwn deleted file mode 100644 index c768ff4e..00000000 --- a/hurd/running/debian/DebianDpkgArchitecture.mdwn +++ /dev/null @@ -1,27 +0,0 @@ -The output of dpkg-archicture on Debian's hurd-i386 port: - -DEB\_BUILD\_ARCH=hurd-i386 - -DEB\_BUILD\_ARCH\_OS=hurd - -DEB\_BUILD\_ARCH\_CPU=i386 - -DEB\_BUILD\_GNU\_CPU=i486 - -DEB\_BUILD\_GNU\_SYSTEM=gnu - -DEB\_BUILD\_GNU\_TYPE=i486-gnu - -DEB\_HOST\_ARCH=hurd-i386 - -DEB\_HOST\_ARCH\_OS=hurd - -DEB\_HOST\_ARCH\_CPU=i386 - -DEB\_HOST\_GNU\_CPU=i486 - -DEB\_HOST\_GNU\_SYSTEM=gnu - -DEB\_HOST\_GNU\_TYPE=i486-gnu - --- [[Main/MichaelBanck]] - 14 Jan 2006 diff --git a/hurd/running/debian/DebianIntegrationDeveloper.mdwn b/hurd/running/debian/DebianIntegrationDeveloper.mdwn deleted file mode 100644 index 8b34cb7b..00000000 --- a/hurd/running/debian/DebianIntegrationDeveloper.mdwn +++ /dev/null @@ -1,15 +0,0 @@ -Currently, the [Debian](http://www.debian.org) Project consists of two distinct classes of people - Users and Developers. There is a [Quality Assurance](http://qa.debian.org) group that exists to try to help bridge this gap, however it is not as strong as some people would like it to be. In many ways, a DID is another name for what Debian currently classifies as QA. - -A Debian Integration Developer (DID) is a middle-person, someone to assist users and developers. From a [user](http://www.debian.org/support) perspective they answer, categorize and enhance bug reports with patches or Policy suggestions and generally help with user-level integration of multiple Debian software packages as installed. From a [developer](http://www.debian.org/devel/) perspective they update Debian specific package defaults and configuration systems. Upon reflection, this is also a group of folks that can be described as containing both Developer status (maintaining one package) and those who do not feel comfortable classifying themselves as developers. These groups share common goals. - -Besides these two perspectives, there is also a range of tasks that fall into the domain of "[Quality Assurance](http://qa.debian.org)." Tasks necessary to perform on a range of individual packages such as Policy compliance checking, debconf use, /etc/alternatives and similar debian configuration mechanisms that integrate. The Work Needed and Prospective Packages system is an important function. Questions are sometimes raised regarding the diligence or MIA status of developers, in a way, ensuring the overall quality of the debian operational infrastructure. Gathering feedback from users and developers regarding enhancements and changes to these systems. Helping to Integrate the various infrastructure groups when responding to the environment in which Debian resides in is raising the quality of the organization. Many of the tasks that exist in this grey area can be accomplished by non-packaging maintaining users if they understand how Debian and package maintenance works. - -The more I write and think about this area, the more clearly the concept of idealistic leadership is brought to mind. Yet keys to the success of Debian can be directly attributed to the lack of a centralized organizational structure and a strong set of negotiated policies. - -Software dependencies can be very complex. There is often a need for a semi-knowledgable developer (DID or QA) to understand how things work best in a coordinated manner, how best to Integrate. This is also a natural path from which to recruit new package maintainers if assistance is provided along the way. Another separate group that subscribe to a [mail list](http://lists.debian.org) and perform this extremely valuable service is [Debian-Mentors](http://lists.debian.org/debian-mentors/). - -Recognition for the significance of contribution is one reason to give this group of helpful people more courage and identity in helping the Debian project in a clearly defined and less daunting a way. The [devel](http://www.debian.org/devel) page has relevant links. There is a page describing [how you can help](http://www.debian.org/devel/join/), but (indicating the mentality) it's simply a link to the same page as the first step in the [new maintainer process](http://www.debian.org/devel/join/). Behind this first page is the real [new maintainer page](http://www.debian.org/devel/join/newmaint). There's also a [TODO list](http://www.debian.org/devel/todo/) but it's very very broad. - -Perhaps a little bit of this resides in all members of the Debian community and is an important ingredient to the project's overall success. This may be because the developers are in fact, also the users. This can be extremely demanding for new users of Debian. It does take time to come up to speed with what Debian is about, [who participates](http://www.debian.org/intro/organization) to keep it running as it does and what processes exist. The Bug Tracking System's [pseudo-package list](http://www.debian.org/Bugs/pseudo-packages) may give great insight into some processes. - --- [[Main/GrantBow]] - 25 Feb 2004 diff --git a/hurd/running/debian/DebianPackages.mdwn b/hurd/running/debian/DebianPackages.mdwn deleted file mode 100644 index 7e09dce0..00000000 --- a/hurd/running/debian/DebianPackages.mdwn +++ /dev/null @@ -1,43 +0,0 @@ -There are many different systems related to Debian that are related to the efforts. Some of these target information to/from upstream developers, some to end users. Here are some useful links. - -<dl> - <dt><a href="http://qa.debian.org/developer.php" target="_top">Developer Packages Overview</a></dt> - <dd> new system! </dd> -</dl> - -<dl> - <dt><a href="http://bugs.debian.org" target="_top">Bug Tracking System</a></dt> - <dd> also see [[Distrib/BtsFiling]], use a URL like <nop>http://bugs.debian.org/<em>bug-number</em> or <nop>DebianBug:<em>number</em> in a topic using the [[TWiki/InterWikis]] format. </nop></nop></dd> -</dl> - -<dl> - <dt><a href="http://packages.debian.org" target="_top">Package lookup</a></dt> - <dd> also use a URL like <nop>http://packages.debian.org/<em>package-name</em> or <nop>DebianPackage:<em>name</em> in a topic. </nop></nop></dd> -</dl> - -<dl> - <dt><a href="http://packages.qa.debian.org" target="_top">Package Tracking System</a></dt> - <dd><nop>PTS:<em>name</em> in a topic. Email based tracking system to get notices of all package activity - used for packages that highly interest you. This is a new system for Debian and was recently <a href="http://lists.debian.org/debian-devel-announce/2002/debian-devel-announce-200201/msg00011.html" target="_top">announced</a>. </nop></dd> -</dl> - -<dl> - <dt><a href="http://www.debian.gr.jp/~kitame/maint.cgi" target="_top">Package &amp; Maintainer lookup</a></dt> - <dd> from Takuo Kitame </dd> -</dl> - -<dl> - <dt><a href="http://buildd.debian.org/" target="_top">Buildd System</a></dt> - <dd> system to compile and upload binary packages from source automatically. </dd> -</dl> - -<dl> - <dt><a href="http://db.debian.org/" target="_top">Maintainer LDAP</a></dt> - <dd> LDAP directory with the information of Debian developers. </dd> -</dl> - -<dl> - <dt><a href="http://ftp-master.debian.org/testing/update_excuses.html" target="_top">testing "update excuses"</a></dt> - <dd> not needed for Hurd yet. </dd> -</dl> - --- [[Main/GrantBow]] - 15 Jan 2003 diff --git a/hurd/running/debian/DebianTranslatorPolicy.mdwn b/hurd/running/debian/DebianTranslatorPolicy.mdwn deleted file mode 100644 index 7092a761..00000000 --- a/hurd/running/debian/DebianTranslatorPolicy.mdwn +++ /dev/null @@ -1,40 +0,0 @@ -**_This page describes the Debian packaging policy for translators._** - -## <a name="Package_Naming_Scheme"> Package Naming Scheme </a> - -Candidates for package naming schemes (_foofs_ is a filesystem based translator, e.g. _tarfs_, _bar_ is a node based translator, e.g. _random_): - -* _foofs-translator_, _bar-translator_ [current favourite] - -* _foofs_, _bar_ [this will make searching somewhat more of a hassle and may easily conflict with already used package names] - -* _foofs-trans_, _bar-trans_ - -* _hurd-translator-foofs_, _hurd-translator-bar_ - -Do we need to destinguish between file system and node based translators? - -Source packages should be called whatever the tarball/cvs module says. - -## <a name="Where_to_Put_Files"> Where to Put Files </a> - -The translators should go into _/hurd_. - -## <a name="What_about_setting_passive_trans"> What about setting passive translators in _/servers_ or _/dev_? </a> - -The idea is that the package should set passive translators in its _postinst_ instructions. - -There may, however, be difficulties with that: it's perfectly valid to have two different _random_ translator packages installed (they won't conflict with each other as long as their file names don't clash), but which one should sit on _/dev/random_ and _/dev/urandom_? Debian's _alternatives system_ doesn't help here, because the translators may need different command line arguments. - -One idea is to have the _postinst_ instructions set the passive translator if there isn't already one set on the relevant node(s). - -## <a name="Short_Long_Description_Guideline"> Short/Long Description Guidelines </a> - - [packagename]: Foo translator for [doing bar]. - Foo is a GNU/Hurd translator which does [bar]. - -## <a name="Miscellaneous"> Miscellaneous </a> - -There could / should be a meta package (or even more than one) that just depends e.g. on all installable translators, so that they'll conveniently find their way into the system by just installing that meta package. - --- [[Main/MichaelBanck]] - 10 Mar 2006 diff --git a/hurd/running/debian/GNUDebianBuildProcess.mdwn b/hurd/running/debian/GNUDebianBuildProcess.mdwn deleted file mode 100644 index 55a9c6aa..00000000 --- a/hurd/running/debian/GNUDebianBuildProcess.mdwn +++ /dev/null @@ -1,133 +0,0 @@ -components, required and somewhat related - BEFORE you have .debs - -### <a name="Software_States"> Software States </a> - -see [Debian Policy Manual](http://www.debian.org/doc/debian-policy/). - -* Upstream source -* Debian Source Package - * Build-depends -* Debian Binary Package - * Essential - boolean, default is no/unset, see Policy [ref](http://www.debian.org/doc/debian-policy/ch-controlfields.html#s-f-Essential) - * Architecture - policy [ref](http://www.debian.org/doc/debian-policy/ch-controlfields.html#s-f-Architecture) - * Section (main, contrib, non-free, non-US/main, non-US/contrib, non-US/non-free) - * updates, security - * Subsection (admin, base, comm, contrib, devel, doc, editors, electronics, embedded, games, gnome graphics, hamradio, interpreters, kde, libs, libdevel, mail, math, misc, net, news, non-US, non-free, oldlibs, otherosfs, perl, python science, shells, sound, tex, text, utils, web, x11) - * Priority (required, important, standard, optional, extra) policy [ref](http://www.debian.org/doc/debian-policy/ch-archive.html#s-priorities) - * a particular set of packages is called the [Base System](http://www.debian.org/doc/debian-policy/ch-binary.html#s3.7) -* Source and binary package upload example from [new maintainers guide](http://www.debian.org/doc/maint-guide/ch-build.en.html) - * gentoo\_0.9.12.orig.tar.gz - * gentoo\_0.9.12-1.dsc - * gentoo\_0.9.12-1.diff.gz - * gentoo\_0.9.12-1\_i386.deb - * gentoo\_0.9.12-1\_i386.changes - -### <a name="Groups"> Groups </a> - -* software author(s) -* Debian Package Maintainers, Co-Maintainers & uploaders -* ftp-masters -* buildd admins - It seems the two primary buildd admins are Ryan Murray and James Troup. -* QA -* bug-filers -* porters for supported platforms (i386, m69k, sparc, alpha, powerpc, arm, mips, mipsel, hppa, ia64, s390) -* porters for unreleased platforms (amd64, sh) -* porters of non-linux platforms (hurd-i386, netbsd-i386, netbsd-alpha, freebsd-i386) -* International translation providers -* system administrators -* users - -### <a name="Build_Debian_Archive_amp_Debian_"> Build, Debian Archive & Debian Systems Software </a> - -* wanna-build available in the buildd [CVS](http://m68k.debian.org/buildd/getting.html) -* buildd [CVS](http://m68k.debian.org/buildd/getting.html), [statistics](http://buildd.debian.org/stats/) -* [quinn-diff](http://buildd.debian.org/quinn-diff/) with anon-CVS - * July 2002 (samosa.sh ?) hurd output [http://buildd.debian.org/quinn-diff/output/unstable/by\_priority-hurd-i386.txt](http://buildd.debian.org/quinn-diff/output/unstable/by_priority-hurd-i386.txt) - * email [reference](http://lists.debian.org/debian-hurd/2000/debian-hurd-200012/msg00168.html) -* [katie](http://ftp-master.debian.org) (was dinstall), ftp-master - * update-excuses [output](http://ftp-master.debian.org/testing/update_excuses.html) -* andrea, see wanna-build for source (no longer at <http://buildd.debian.org/andrea/> ) -* [madison](http://www.debian.org/doc/developers-reference/ch-resources.en.html#s-madison) from developer's reference -* [fakeroot](http://packages.qa.debian.org/fakeroot) -* [sbuild](http://packages.qa.debian.org/sbuild) -* [pbuilder](http://packages.qa.debian.org/pbuilder) -* turtle [reference](http://lists.debian.org/debian-hurd/2001/debian-hurd-200103/msg00328.html) -* [Package Tracking System](http://lists.debian.org/debian-devel-announce/2002/debian-devel-announce-200201/msg00011.html) (PTS) -* [Bug Tracking System](http://bugs.debian.org) (BTS) - * Release Critical mailing to <debian-devel-announce@lists.debianNOSPAM.org> -* [Work Needed and Prospective Packages](http://www.debian.org/devel/wnpp/) (WNPP) -* [Lintian](http://lintian.debian.org/) -* [apt-proxy](http://packages.qa.debian.org/apt-proxy) or [apt-cacher](http://packages.qa.debian.org/apt-cacher) -* [reportbug](http://packages.qa.debian.org/reportbug) -* [dpkg](http://packages.qa.debian.org/dpkg) -* [apt](http://packages.qa.debian.org/apt) -* grep-dctrl -* dpkg-awk - -also see appendix A [Overview of Debian Maintainer Tools](http://www.debian.org/doc/developers-reference/ap-tools.en.html) in the Developer's Reference. - -### <a name="Input_amp_Output_Files_Formats"> Input & Output Files/Formats </a> - -* sources file from an archive -* packages file from an archive -* log from build process -* lintian report -* debcheck report -* upstream related files (tar.gz, dsc [[SampleDscFile]]) -* source deb -* binary deb -* /etc/apt/sources.list file -* bug reports -* web pages -* location to upload files for incoming: ftp-master.debian.org:/org/ftp.debian.org/incoming/ or via ftp to /pub/UploadQueue/ - -<table border="1" cellpadding="1" cellspacing="0"> - <tr> - <th bgcolor="#99CCCC"><strong>Inputs</strong></th> - <th bgcolor="#99CCCC"><strong>1</strong></th> - <th bgcolor="#99CCCC"><strong>2</strong></th> - <th bgcolor="#99CCCC"><strong>3</strong></th> - <th bgcolor="#99CCCC"><strong>4</strong></th> - </tr> - <tr> - <td> </td> - <td> X </td> - <td> </td> - <td> </td> - <td> </td> - <th bgcolor="#99CCCC"><strong>1</strong></th> - </tr> - <tr> - <td> </td> - <td> </td> - <td> X </td> - <td> </td> - <td> </td> - <th bgcolor="#99CCCC"><strong>2</strong></th> - </tr> - <tr> - <td> </td> - <td> </td> - <td> </td> - <td> X </td> - <td> </td> - <th bgcolor="#99CCCC"><strong>3</strong></th> - </tr> - <tr> - <td> </td> - <td> </td> - <td> </td> - <td> </td> - <td> X </td> - <th bgcolor="#99CCCC"><strong>4</strong></th> - </tr> - <tr> - <td> </td> - <td colspan="4"> </td> - <th align="right" bgcolor="#99CCCC"><strong>Outputs</strong></th> - </tr> -</table> - -also see [[GNUDebianPackages]] for information on what you can do AFTER you have .debs. - --- [[Main/GrantBow]] - 03 March 2004 diff --git a/hurd/running/debian/GNUDebianPackages.mdwn b/hurd/running/debian/GNUDebianPackages.mdwn deleted file mode 100644 index de1798ad..00000000 --- a/hurd/running/debian/GNUDebianPackages.mdwn +++ /dev/null @@ -1,103 +0,0 @@ -tools for AFTER you have .debs - -### <a name="Software_States"> Software States </a> - -* Debian Source Package -* Debian Binary Package - * Component (main, contrib, non-free, non-US, updates, security) - * Priority - * Section - * installed state - installed, half-installed, not-installed, unpacked, half-configured, config-files - -### <a name="Groups"> Groups </a> - -* bug-filers -* users - -* Debian Package Maintainers, Co-Maintainers & uploaders -* ftp-masters -* QA -* porters for supported platforms (i386, m69k, sparc, alpha, powerpc, arm, mips, mipsel, hppa, ia64, s390) -* porters for unreleased platforms (amd64, sh) -* porters of non-linux platforms (hurd-i386, netbsd-i386, netbsd-alpha, freebsd-i386) -* International translation providers -* system administrators - -### <a name="Software_amp_Systems"> Software & Systems </a> - -* dselect -* wajig -* grep-dctrl -* dpkg-awk -* [reportbug](http://packages.qa.debian.org/reportbug) -* [dpkg](http://packages.qa.debian.org/dpkg) -* [apt](http://packages.qa.debian.org/apt) - -* [apt-proxy](http://packages.qa.debian.org/apt-proxy) or [apt-cacher](http://packages.qa.debian.org/apt-cacher) -* [Package Tracking System](http://lists.debian.org/debian-devel-announce/2002/debian-devel-announce-200201/msg00011.html) (PTS) -* [Bug Tracking System](http://bugs.debian.org) (BTS) - * Release Critical mailing to <debian-devel-announce@lists.debianNOSPAM.org> -* [Work Needed and Prospective Packages](http://www.debian.org/devel/wnpp/) (WNPP) -* [katie](http://ftp-master.debian.org) (was dinstall), ftp-master - * update-excuses [output](http://ftp-master.debian.org/testing/update_excuses.html) - -### <a name="Input_amp_Output_Files_Formats"> Input & Output Files/Formats </a> - -* sources file from an archive -* packages file from an archive -* source deb -* binary deb -* /etc/apt/sources.list file -* bug reports -* web pages - -<table border="1" cellpadding="1" cellspacing="0"> - <tr> - <th bgcolor="#99CCCC"><strong>Inputs</strong></th> - <th bgcolor="#99CCCC"><strong>1</strong></th> - <th bgcolor="#99CCCC"><strong>2</strong></th> - <th bgcolor="#99CCCC"><strong>3</strong></th> - <th bgcolor="#99CCCC"><strong>4</strong></th> - </tr> - <tr> - <td> </td> - <td> X </td> - <td> </td> - <td> </td> - <td> </td> - <th bgcolor="#99CCCC"><strong>1</strong></th> - </tr> - <tr> - <td> </td> - <td> </td> - <td> X </td> - <td> </td> - <td> </td> - <th bgcolor="#99CCCC"><strong>2</strong></th> - </tr> - <tr> - <td> </td> - <td> </td> - <td> </td> - <td> X </td> - <td> </td> - <th bgcolor="#99CCCC"><strong>3</strong></th> - </tr> - <tr> - <td> </td> - <td> </td> - <td> </td> - <td> </td> - <td> X </td> - <th bgcolor="#99CCCC"><strong>4</strong></th> - </tr> - <tr> - <td> </td> - <td colspan="4"> </td> - <th align="right" bgcolor="#99CCCC"><strong>Outputs</strong></th> - </tr> -</table> - -also see [[GNUDebianBuildProcess]] for tools BEFORE you have .debs - --- [[Main/GrantBow]] - 03 March 2004 diff --git a/hurd/running/debian/GnuDebianRelationship.mdwn b/hurd/running/debian/GnuDebianRelationship.mdwn deleted file mode 100644 index 94fd6265..00000000 --- a/hurd/running/debian/GnuDebianRelationship.mdwn +++ /dev/null @@ -1,32 +0,0 @@ -I have hesitated in starting this page due to the sensitive nature of this relationship and the (May 2002) flame war on debian-devel and other mail lists. I believe that rather than guessing about relevant points of the discussion, the facts should be presented in a clear manner. I hope the facts presented here are accurate and precise enough to be helpful in the ongoing discussion. I have not read all messages in all relevant threads. - -This is a work in progress. Please email me directly if you have comments or suggestions. - -* Debian Advantages of Hurd [[porting/guidelines]] Efforts - * One of the first ports to non-Linux system along with \*BSD and win32. - * Official GNU system distribution. - -* Debian Disadvantages of Hurd [porting/guidelines]] Efforts - * Perceived zealous GNU and FSF promotion. - -* Hurd Port Advantages of Debian - * Glibc use. - * Gcc use. - * Debian reputation - * Debian mirror infrastructure - ftp, both official and private. Includes bandwidth, hardware, maintenance efforts. - * Debian www infrastructure - many languages supported, mirrors. - * [Debian developer machine](http://db.debian.org/machines.cgi) infrastructure, many architectures, compile farm, buildd software. - * Many Debian Developers maintaining software packages, bug reports, porting efforts. - * Bug tracking system - BTS infrastructure - * Package infrastructure architecture capabilities are improving. dpkg update in progress. - -* Hurd Port Disadvantages of Debian - * Possible DFSG vs. Free Software compatibility issues. - * BTS Severity practices/use for unreleased ports issues. - * Debian non-parallel development issues. - * [Architecture handling](http://master.debian.org/~brinkmd/arch-handling.txt) issues. - * Linux base history with assumed Linux assumptions. - * Possible incompatibility of third party standards compliance issues. i.e. LSB, FHS, GNU Coding Standards - * Perceived zealous Debian promotion. - --- [[Main/GrantBow]] - 22 May 2002 diff --git a/hurd/running/debian/MediaPressKitDiscuss.mdwn b/hurd/running/debian/MediaPressKitDiscuss.mdwn deleted file mode 100644 index 2bd97290..00000000 --- a/hurd/running/debian/MediaPressKitDiscuss.mdwn +++ /dev/null @@ -1,76 +0,0 @@ -# <a name="Media_Press_Kit"> Media / Press Kit </a> - -## <a name="Problem"> Problem </a> - -Debian awareness not as high as other Linux distributions. Some people don't take Debian seriously because of it's organizational structure. Target audience lacks education. Most current Debian users are rather skilled and sometimes PERCIEVED as arrogant. "Non-technical" participation is not fully recognized. - -## <a name="Target_Audience"> Target Audience </a> - -* non-users without any experience of Debian. - * Technically-minded people will often be convinced already of why they should use Debian -* casual users who might be interested in Debian -* ammunition for those who are campaigning to have Debian used - * With our backgrounds, we could emphasize that we can provide material in the langauge that decision-makers can understand. - -## <a name="Debian_Resources"> Debian Resources </a> - -It's important to identify and work with the existing infrastructures for this type of thing. More research about who is out there that is interested in press relations needs to be done before showing the work completed to others. - -* [Contacts](http://www.debian.org/contact) page includes <press@debianNOSPAM.org> but I don't know who's behind that alias. I'll send an email right now to find out. -* [Events team](http://www.debian.org/events/) - * Mail list [debian-events-na](http://lists.debian.org/debian-events-na) - * Mail list [debian-events-eu](http://lists.debian.org/debian-events-eu) -* Debian Weekly News [DWN](http://www.debian.org/News/weekly/) and their mail list [debian-news](http://lists.debian.org/debian-news) -* [debian-announce](http://lists.debian.org/debian-announce) and their [News page](http://www.debian.org/News/) -* [DebianPlanet.org](http://www.debianplanet.org) -* Others? - -## <a name="Solution_Goal"> Solution / Goal </a> - -* persuade people to use Debian -* give target audience realistic expectations of running GNU/Linux - * skills expected - * differences from what they already know -* educate target audience about benefits and advantages of Debian. -* give target audience realistic expectations of running Debian - * skills expected - * differences from what they already know -* background materials, "marketing collateral" - -You have proposed two documents that sound on target to me. - -<dl> - <dt>[[WhyDebian]]</dt> - <dd> A bullet list meant to give a quick answer. </dd> - <dt>[[DebianProductSheet]]</dt> - <dd> includes interesting facts </dd> -</dl> - -The third is a collection of success stories which is more of a process than a clearly defined deliverable in itself. That sounds wonderful. - -I think another active process for tracking recent news (if it doesn't already exist) should also be useful for similar purposes. - -## <a name="Result"> Result </a> - -* two documents: Why Debian? & Debian Product Sheet - * these will be documents of a Debian media/press kit - * processes to keep these documents updated over time. For example, every release. - * beginning of a central repository for info about Debian -* a web repsitory for success stories - * some kind of link or integration with current website. -* increased appreciation by official Debian organization for non-technical participation. -* increased non-technical Debian user involvement -* increased adoption of Debian GNU/Linux by users. -* consideration for using SPI funds for hiring part-time PR resources - --- [[Main/GrantBow]] - 13 Jan 2003 - -[This article](http://www.theage.com.au/articles/2003/01/08/1041989994382.html) was in the [most recent](http://www.debian.org/News/weekly/2003/02/) version of the [Debian Weekly News](http://www.debian.org/News/weekly/). - --- [[Main/GrantBow]] - 15 Jan 2003 - -Here are some interesting urls from [this issue](http://www.debian.org/News/weekly/2003/03/) of the Debian Weekly news: - -**Debian Presentations.** Wolfgang Borgert was [looking](http://lists.debian.org/debian-devel-0301/msg00991.html) for a set of slides on dpkg, apt-get and debconf. Javier Fern�ndez-Sanguino Pe�a [intends](http://lists.debian.org/debian-devel-0301/msg01022.html) to provide a 'presentations' section in the [Debian Documentation Project](http://cvs.debian.org/ddp/?cvsroot=debian-doc) (DDP) and has already created an [archive](http://dat.etsit.upm.es/~jfs/debian/www/ddp/slides/) of slides. Whilst the Debian web site does link to [talks](http://www.debian.org/events/talks) given by developers and some [sample slides](http://www.debian.org/events/materials/slides/), it is difficult to gather this information and publish it in a homogeneous way. Talks should be reported to <events@debianNOSPAM.org> and forwarded to him. - --- [[Main/GrantBow]] - 22 Jan 2003 diff --git a/hurd/running/debian/SampleDscFile.mdwn b/hurd/running/debian/SampleDscFile.mdwn deleted file mode 100644 index d3b7b9f8..00000000 --- a/hurd/running/debian/SampleDscFile.mdwn +++ /dev/null @@ -1,24 +0,0 @@ - -----BEGIN PGP SIGNED MESSAGE----- - Hash: SHA1 - - Format: 1.0 - Source: glibc - Version: 2.3.2.ds1-11 - Binary: libc6, libc6-s390x, locales, libc0.3-prof, libc6.1-dev, libc6-i686, libc1-pic, libc6.1-dbg, glibc-doc, libc6-dev-sparc64, libc0.3-dbg, libc6.1-pic, libc6-dbg, libc0.3, libc0.3-pic, libc6.1-prof, libc6.1, libc6-dev-s390x, libc1, libc0.3-dev, libc6-sparcv9, nscd, libc1-dev, libc6-pic, libc6-prof, libc1-prof, libc-udeb, libc6-sparc64, libc6-dev, libc1-dbg - Maintainer: GNU Libc Maintainers - Architecture: any - Standards-Version: 3.6.1.0 - Build-Depends: gettext (>= 0.10.37-1), make (>= 3.80-1), dpkg-dev (>= 1.4.1.5), debianutils (>= 1.13.1), tar (>= 1.13.11), bzip2, texinfo (>= 4.0), linux-kernel-headers (>= 2.5.999-test7-bk-9) [!hurd-i386], mig (>= 1.3-2) [hurd-i386], hurd-dev (>= 20020608-1) [hurd-i386], gnumach-dev [hurd-i386], texi2html, file, gcc-3.3, autoconf, binutils (>= 2.14.90.0.5) [!s390], binutils (>= 2.13.90.0.4-1) [s390], sed (>= 4.0.5-4), gawk, debhelper (>= 4.0.0) - Build-Depends-Indep: perl, po-debconf - Uploaders: Ben Collins , GOTO Masanori , Philip Blundell , Jeff Bailey , Daniel Jacobowitz - Files: - b982bf6ad7ebc8622d3b81d51c44b78a 13246448 glibc_2.3.2.ds1.orig.tar.gz - 2951fde13e9ba21d70d8c7e580849730 1997696 glibc_2.3.2.ds1-11.diff.gz - - -----BEGIN PGP SIGNATURE----- - Version: GnuPG v1.2.3 (GNU/Linux) - - iD8DBQFADZsWbgOPXuCjg3cRAg9LAJ9r3ioJNdzloaM4qQu3FJj2R3y7pQCeNPD+ - i03WJeMdyAhKjHGM2sRqWVk= - =37je - -----END PGP SIGNATURE----- diff --git a/hurd/running/debian/SoftwareLicensing.mdwn b/hurd/running/debian/SoftwareLicensing.mdwn deleted file mode 100644 index e236fea1..00000000 --- a/hurd/running/debian/SoftwareLicensing.mdwn +++ /dev/null @@ -1,116 +0,0 @@ -There are differences betwen the [Debian Free Software Guidelines](http://www.debian.org/social_contract#guidelines) (DFSG) and [Free Software](http://www.fsf.org/philosophy/free-sw.html) as defined by the Free Software Foundation. The FSF's GNU project is the sponsor of the GNU/Hurd project. Debian GNU/Hurd is a "port" or distribution of this software. I have not yet performed a comparison between the list of acceptable DFSG licenses (if a list exists) and the acceptable Free Software [license list](http://www.gnu.org/licenses/license-list.html). (Perhaps not directly related but for reference, here's the Open Source [license list](http://www.opensource.org/licenses/index.html)) - -What will this consist of? In the end the result will need to be simply a list of packages with their license marked next to them. This will be relatively simple for those packages that use a standard license. Software that has it's own custom license will need to be categorized. - -I am thinking of ways to automatically check the licenses and to get lists of the various "Priority:" packages. I thought this list of package names would be easy to obtain. The first step is getting the list of packages. This is possible by parsing /var/lib/dpkg/available, using dpkg or using apt-cache. - -The next step is checking the licenses of the packages. There is no dpkg package field available for license. A script that checks licenses will involve using "apt-get source" to check the COPYING and/or similar files in each package. - --- [[Main/GrantBow]] - 5 Oct 2002 - -I used the following command on an old Hurd machine to get the 22 packages with Essential in their description. I've listed them and put them in a table at the end of this topic. - - sed -e '/./{H;$!d;}' -e 'x;/Essential\:\ yes/!d' /var/lib/dpkg/status | egrep ^Package | sort - -base-files base-passwd bash bsdutils debianutils diff dpkg e2fsprogs fileutils findutils grep gzip hostname hurd ncurses-base ncurses-bin perl-base sed shellutils tar textutils util-linux - -Using `base` instead of `Essential\:\ yes` above I find 64 additional packages. - -adduser alsa-base apt autoconf2.13 bug cpp-3.0 cvs debconf debconf-utils debhelper debiandoc-sgml debian-policy developers-reference exim fetchmail-common g++-3.0 gcc-3.0 gcc-3.0-base gettext gettext-base gnumach groff groff-base inetutils libc0.3 libc0.3-dev libdb2 libdb2++ libdb2-dev libdb2++-dev libdb2-util libdb3 libgdbmg1 libncurses5 libnet-perl libpam0g libpam-runtime libperl5.6 libpopt0 libpopt-dev libreadline4 libstdc++3 libstdc++3-dev libwrap0 libxaw7 man-db mawk mutt netbase passwd perl python python2.1 screen sgmltools-lite slang1 ssh tcpd texinfo xfree86-common xlibs xserver-common xterm xutils - --- [[Main/GrantBow]] - 11 Jan 2003 - -<table border="1" cellpadding="1" cellspacing="0"> - <tr> - <td> Name </td> - <td> Compatible License? </td> - </tr> - <tr> - <td> base-files </td> - <td> </td> - </tr> - <tr> - <td> base-passwd </td> - <td> </td> - </tr> - <tr> - <td> bash </td> - <td> </td> - </tr> - <tr> - <td> bsdutils </td> - <td> </td> - </tr> - <tr> - <td> debianutils </td> - <td> </td> - </tr> - <tr> - <td> diff </td> - <td> </td> - </tr> - <tr> - <td> dpkg </td> - <td> </td> - </tr> - <tr> - <td> e2fsprogs </td> - <td> </td> - </tr> - <tr> - <td> fileutils </td> - <td> </td> - </tr> - <tr> - <td> findutils </td> - <td> </td> - </tr> - <tr> - <td> grep </td> - <td> </td> - </tr> - <tr> - <td> gzip </td> - <td> </td> - </tr> - <tr> - <td> hostname </td> - <td> </td> - </tr> - <tr> - <td> hurd </td> - <td> </td> - </tr> - <tr> - <td> ncurses-base </td> - <td> </td> - </tr> - <tr> - <td> ncurses-bin </td> - <td> </td> - </tr> - <tr> - <td> perl-base </td> - <td> </td> - </tr> - <tr> - <td> sed </td> - <td> </td> - </tr> - <tr> - <td> shellutils </td> - <td> </td> - </tr> - <tr> - <td> tar </td> - <td> </td> - </tr> - <tr> - <td> textutils </td> - <td> </td> - </tr> - <tr> - <td> util-linux </td> - <td> </td> - </tr> -</table> diff --git a/hurd/running/debian/after_install.mdwn b/hurd/running/debian/after_install.mdwn deleted file mode 100644 index 36c37281..00000000 --- a/hurd/running/debian/after_install.mdwn +++ /dev/null @@ -1,85 +0,0 @@ -First steps after installation. - -So you have managed to get past the first `native-install` runs in single-user -mode? - -Time to get to work. - -[[!toc]] - - -### Get Networking Running - -[[Network]]. - -Check if your NIC was detected by GNU Mach: - - # devprobe eth0 - -`devprobe` (run as user *root*) will print `eth0` on successful detection. If -it doesn't, your NIC was not detected correctly. You can then try to do the -following (also as user *root*) for getting details: - - # cat /dev/klog > ~/klog - [Wait a second, then press `Ctrl-C'.] - -Now examine the `~/klog` file. - -If the NIC was detected: - - # settrans -fgap /servers/socket/2 /hurd/pfinet -i eth0 -a 192.168.1.3 -g 192.168.1.1 -m 255.255.255.0 - -Or read about how to configure [[DHCP]]. - - -# Setup GRUB - -You surely want grub to have a nice menu entry able to boot GNU, instead of -typing a boring arcane. There are Debian-specific scripts that may help -you. See [[GRUB]]'s page for this. - - -# Setup `apt-get` - -Sometimes getting `apt-get` to work is not straightforward. Good mirrors to -put in `/etc/apt/sources.list` are: - - deb http://ftp.debian.org/debian unstable main contrib - deb-src http://ftp.debian.org/debian unstable main contrib - deb http://ftp.debian-ports.org/debian unreleased main - deb-src http://ftp.debian-ports.org/debian unreleased main - -`apt-get` update a couple of times if some file fails to download. - -If when doing your first `apt-get`, `dpkg` complains of missing programs, get root in a login shell (`su -`). - -Installing packages without having a network connection is described -[[Distrib/DebianAptOffline]]. - -# [[translator/Random]] - -You often need `scp` and `ssh`. There is now a `random-egd` package available which uses -a random translator by Ryan Hunter and the entropy gathering daemon as entropy source. - -See [[Translator/random]] for more information. - -# [[Console]] - -The latest Hurd package in Debian, plus the `native-install` script, creates -all necessary device nodes and other magic. You just need to edit -`/etc/default/hurd-console` to tune the parameters and tell it to start at -bootup. - -You can also call the Hurd console manually with the proper arguments: - - console -d vga -d pc_kbd --repeat=kbd -d pc_mouse --repeat=mouse \ - -d generic_speaker -c /dev/vcs - - -# [[Hurd/DebianXorg]] - -You first must have setup the virtual console. See above. - -# What about package XYZ? - -See if you can find a useful tip in [[package_troubleshooting]]. diff --git a/hurd/running/debian/creating_image_tarball.mdwn b/hurd/running/debian/creating_image_tarball.mdwn deleted file mode 100644 index ac91dab4..00000000 --- a/hurd/running/debian/creating_image_tarball.mdwn +++ /dev/null @@ -1,21 +0,0 @@ -[[!meta copyright="Copyright © 2008 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]]."]]"""]] - -The following [[anonftpsync-ports]] is used to create a local Debian GNU/Hurd -repo. You will need atleast 12G of disk space. Change the -"TO=/home/foo/rsync-debian-ports" to your desired target directory. - -Run it using: - - sudo sh anonftpsync-ports - -In /home/foo/rsync-debian-ports, you will find the following directories: - - base dists indices pool pool-hurd-i386 project diff --git a/hurd/running/debian/creating_image_tarball/anonftpsync-ports b/hurd/running/debian/creating_image_tarball/anonftpsync-ports deleted file mode 100644 index 0988dbde..00000000 --- a/hurd/running/debian/creating_image_tarball/anonftpsync-ports +++ /dev/null @@ -1,180 +0,0 @@ -#! /bin/sh -set -e - -# This script originates from http://www.debian.org/mirror/anonftpsync -# modified by Martin Zobel-Helas <zobel@debian.org>, 2005-01-16 -# these modifications are published under the terms of the GNU GPL -# Modifications: -# + some more documentation about variables -# + added ARCH_EXCLUDE -# + mirror in a safe way, first /pool, then /dists and the rest -# modified by Aurelien Jarno <aurel32@debian.org>, 2007-12-02 -# these modifications are published under the terms of the GNU GPL -# + modifications to mirror debia,-ports.org -# Version: $Id: anonftpsync,v 1.18 2005/10/28 15:25:54 aba Exp $ - - -# Note: You MUST have rsync 2.0.16-1 or newer, which is available in slink -# and all newer Debian releases, or at http://rsync.samba.org/ - -# Set the variables below to fit your site. You can then use cron to have -# this script run daily to automatically update your copy of the archive. - -# Don't forget: -# chmod 744 anonftpsync - -# TO is the destination for the base of the Debian mirror directory -# (the dir that holds dists/ and ls-lR). -# (mandatory) - -TO=/home/foo/rsync-debian-ports - -# RSYNC_HOST is the site you have chosen from the mirrors file. -# (http://www.debian-ports.org/mirrors) -# (mandatory) - -RSYNC_HOST=rsync.debian-ports.org - -# RSYNC_DIR is the directory given in the "Packages over rsync:" line of -# the mirrors file for the site you have chosen to mirror. -# (mandatory) - -RSYNC_DIR=debian/ - -# LOGDIR is the directory where the logs will be written to -# (mandatory) - -LOGDIR=/var/log/rsync-debian-ports - -# ARCH_EXCLUDE can be used to exclude a complete architecture from -# mirrorring. Please use as space seperated list. -# Possible values are: -# armel hurd-i386 kfreebsd-amd64 kfreebsd-i386 -# -# There is one special value: source -# This is not an architecture but will exclude all source code in /pool -# -# eg. -# ARCH_EXCLUDE="hurd-i386" -# -# With a blank ARCH_EXCLUDE you will mirror all availible architectures -# (optional) - -ARCH_EXCLUDE="armel kfreebsd-amd64 kfreebsd-i386 m68k" - -# EXCLUDE is a list of parameters listing patterns that rsync will exclude. -# The following example would exclude mostly everything: -#EXCLUDE="\ -# --exclude binary-hurd-i386/ --exclude binary-kfreebsd-i386/ -# --exclude *_hurd-i386.deb --exclude *_knetbsd-i386.deb \ -# --exclude stable/ --exclude testing/ --exclude unstable/ \ -# --exclude source/ \ -# --exclude *.orig.tar.gz --exclude *.diff.gz --exclude *.dsc \ -# --exclude /base/ --exclude /bochs/ --exclude /obsolete/ \ -# " - -# With a blank EXCLUDE you will mirror the entire archive. -# (optional) - -EXCLUDE="--exclude binary-kfreebsd-i386/ --exclude *_knetbsd-i386.deb \ - --exclude source/ --exclude *.orig.tar.gz --exclude *.diff.gz \ - --exclude /bochs/ --exclude /obsolete/ \ - --exclude *kfreebsd* --exclude *m68* --exclude *sh* \ - " - -# MAILTO is the address to send logfiles to; -# if it is not defined, no mail will be sent -# (optional) - -MAILTO= - -# There should be no need to edit anything below this point, unless there -# are problems. - -#-----------------------------------------------------------------------------# - -# Check for some environment variables -if [ -z $TO ] || [ -z $RSYNC_HOST ] || [ -z $RSYNC_DIR ] || [ -z $LOGDIR ]; then - echo "One of the following variables seems to be empty:" - echo "TO, RSYNC_HOST, RSYNC_DIR or LOGDIR" - exit 2 -fi - -if ! [ -d ${TO}/project/trace/ ]; then - # we are running mirror script for the first time - mkdir -p ${TO}/project/trace -fi - -# Note: on some non-Debian systems, hostname doesn't accept -f option. -# If that's the case on your system, make sure hostname prints the full -# hostname, and remove the -f option. If there's no hostname command, -# explicitly replace `hostname -f` with the hostname. -HOSTNAME=`hostname -f` - -LOCK="${TO}/Archive-Update-in-Progress-${HOSTNAME}" - -# Exclude architectures defined in $ARCH_EXCLUDE -for ARCH in $ARCH_EXCLUDE; do - EXCLUDE=$EXCLUDE"\ - --exclude binary-$ARCH/ \ - --exclude disks-$ARCH/ \ - --exclude installer-$ARCH/ \ - --exclude Contents-$ARCH \ - --exclude Contents-$ARCH.gz \ - --exclude *_$ARCH.deb \ - --exclude *_$ARCH.udeb \ - --exclude pool-$ARCH/" - if [ "$ARCH" == "source" ]; then - SOURCE_EXCLUDE="\ - --exclude *.tar.gz \ - --exclude *.diff.gz \ - --exclude *.dsc " - fi -done - -# Logfile -LOGFILE=$LOGDIR/debian-mirror-ports.log - -# Get in the right directory and set the umask to be group writable -# -cd $HOME -umask 002 - -# Check to see if another sync is in progress -if lockfile -! -l 10800 -r 0 "$LOCK"; then - echo ${HOSTNAME} is unable to start rsync, lock file exists - exit 1 -fi -# Note: on some non-Debian systems, trap doesn't accept "exit" as signal -# specification. If that's the case on your system, try using "0". -trap "rm -f $LOCK > /dev/null 2>&1" exit - -set +e - -# First sync /pool-* -rsync --recursive --links --hard-links --times --verbose \ - $EXCLUDE $SOURCE_EXCLUDE \ - $RSYNC_HOST::$RSYNC_DIR/pool-* $TO >> $LOGFILE 2>&1 -result=$? - -if [ 0 = $result ]; then - # Now sync the remaining stuff - rsync --recursive --links --hard-links --times --verbose --delete-after \ - --exclude "Archive-Update-in-Progress-${HOSTNAME}" \ - --exclude "project/trace/" \ - --exclude "/pool-*/" \ - $EXCLUDE \ - $RSYNC_HOST::$RSYNC_DIR $TO >> $LOGFILE 2>&1 - - date -u > "${TO}/project/trace/${HOSTNAME}" -else - echo "ERROR: Help, something weird happened" | tee -a $LOGFILE - echo "mirroring /pool-* exited with exitcode" $result | tee -a $LOGFILE -fi - - -if ! [ -z $MAILTO ]; then - mail -s "debian ports archive synced" $MAILTO < $LOGFILE -fi - -savelog $LOGFILE diff --git a/hurd/running/debian/dhcp.mdwn b/hurd/running/debian/dhcp.mdwn deleted file mode 100644 index 8d351aae..00000000 --- a/hurd/running/debian/dhcp.mdwn +++ /dev/null @@ -1,31 +0,0 @@ -[[!meta copyright="Copyright © 2011 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 open_issue_porting]] - -In order to use DHCP, you need to install the `ifup` and `isc-dhcp-client` -packages, and manually create the following two symbolic links: - - # ln -s ../rcS.d/S06ifupdown-clean ../rcS.d/S11networking /etc/rc.boot/ - -During execution at boot time, the `S11networking` script will emit some error -messages while trying to configure the loopback interface. These are not -fatal. - -Debian GNU/Hurd doesn't currently execute's Debian standard `/etc/rcS.d/*` boot -scripts, but has its own `/libexec/rc` script -- which integrates scripts from -`/etc/rc.boot/` instead. - - -# Open Issues - - * [[!debbug 616290]] - - * [[Proper Hurdy DHCP support|hurd/translator/pfinet/dhcp]] diff --git a/hurd/running/debian/faq.mdwn b/hurd/running/debian/faq.mdwn deleted file mode 100644 index 8aaadf9c..00000000 --- a/hurd/running/debian/faq.mdwn +++ /dev/null @@ -1,21 +0,0 @@ -[[!meta copyright="Copyright © 2007, 2009, 2010 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]]."]]"""]] - -[[!meta title="Debian GNU/Hurd FAQ"]] - -See also [[after_install]] instructions, and other [[/FAQ]]. - -[[!inline -pages="hurd/running/debian/faq/* and !*/discussion" -show=0 -feeds=no -actions=yes -rootpage="hurd/running/debian/faq" postformtext="Add a new item titled:"]] diff --git a/hurd/running/debian/faq/2_gib_partition_limit.mdwn b/hurd/running/debian/faq/2_gib_partition_limit.mdwn deleted file mode 100644 index 195191cb..00000000 --- a/hurd/running/debian/faq/2_gib_partition_limit.mdwn +++ /dev/null @@ -1,13 +0,0 @@ -[[!meta copyright="Copyright © 2007, 2008 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]]."]]"""]] - -[[!meta title="2 GiB Partition Limit"]] - -The 2 GiB limit has been removed in Debian GNU/Hurd. diff --git a/hurd/running/debian/faq/512_mib_ram_limit.mdwn b/hurd/running/debian/faq/512_mib_ram_limit.mdwn deleted file mode 100644 index f89a5c01..00000000 --- a/hurd/running/debian/faq/512_mib_ram_limit.mdwn +++ /dev/null @@ -1,21 +0,0 @@ -[[!meta copyright="Copyright © 2007, 2008 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]]."]]"""]] - -[[!meta title="512 MiB RAM Limit"]] - -Just like any 32bit OS without bad tricks, GNU Mach does not cope well with lots -of memory. Newer versions of the Debian `gnumach` package will limit themselves -to around 1 GiB of memory. If you want more, you can twiddle the VM_MAX_ADDRESS -limit between kernelland and userland in i386/include/mach/i386/vm_param.h. - -If you have an older version, or still experience problems with `vmstat` (see -above) reported much less memory than you have, the best is to limit the memory -it can see via GRUB's `upppermem` feature. Add `uppermem 786432` to GRUB's Hurd -entry in `menu.lst`. diff --git a/hurd/running/debian/faq/apt_umount.mdwn b/hurd/running/debian/faq/apt_umount.mdwn deleted file mode 100644 index db0dbfd1..00000000 --- a/hurd/running/debian/faq/apt_umount.mdwn +++ /dev/null @@ -1,25 +0,0 @@ -[[!meta copyright="Copyright © 2007, 2008 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]]."]]"""]] - -[[!meta title="apt: unmount cdroms"]] - -You can add a shell script umount so that apt can automatically unmount cdroms. - - #!/bin/sh - # Filename: /usr/bin/umount - - settrans -fg "$@" - -Give executable permission to the script. - - # chmod +x /usr/bin/umount - -In `/etc/fstab` add a trailing `/` after cdrom like `/cdrom/` since apt uses a -trailing `/`. diff --git a/hurd/running/debian/faq/bad_hypermeta_data.mdwn b/hurd/running/debian/faq/bad_hypermeta_data.mdwn deleted file mode 100644 index bc960e30..00000000 --- a/hurd/running/debian/faq/bad_hypermeta_data.mdwn +++ /dev/null @@ -1,15 +0,0 @@ -[[!meta copyright="Copyright © 2007, 2008 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]]."]]"""]] - -If you get the error `bad hypermeta data` when trying to mount an ext3 -partition from GNU/Linux, that is usually because the file system has not been -unmounted cleanly (maybe GNU/Linux got suspended to disk) and the Hurd cannot -mount it as ext2 without checking. Either boot back into GNU/Linux and unmount -it or you can try to run `fsck.ext3` from GNU/Hurd directly. diff --git a/hurd/running/debian/faq/debugging_inside_glibc.mdwn b/hurd/running/debian/faq/debugging_inside_glibc.mdwn deleted file mode 100644 index 91b71d64..00000000 --- a/hurd/running/debian/faq/debugging_inside_glibc.mdwn +++ /dev/null @@ -1,19 +0,0 @@ -[[!meta copyright="Copyright © 2007, 2008, 2009 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]]."]]"""]] - -To get [[debugging]] information for glibc, you need to install the -`libc0.3-dbg` package. At the place [[debugging/GDB]] looks for debugging -symbols by default (`/usr/lib/debug/lib/`), Debian's `libc0.3-dbg` stores only -the frame unwind information used for backtracing. If you want to step into -glibc while debugging, you need to add `LD_LIBRARY_PATH=/usr/lib/debug` to -debugged program's environment (`set env VAR value` from the GDB command line). -If that still does not work, try `LD_PRELOAD=/usr/lib/debug/libc.so.0.3` -instead. diff --git a/hurd/running/debian/faq/debugging_translators.mdwn b/hurd/running/debian/faq/debugging_translators.mdwn deleted file mode 100644 index b55484e1..00000000 --- a/hurd/running/debian/faq/debugging_translators.mdwn +++ /dev/null @@ -1,15 +0,0 @@ -[[!meta copyright="Copyright © 2007, 2008 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]]."]]"""]] - -In order to [[debug|debugging]] translators and being able to step into glibc -during it, you need the `hurd-dbg` and `libc0.3-dbg` packages installed. If you need to debug the initialization of the translator, -start the translator like `settrans -P /foo /usr/bin/env -LD\_LIBRARY\_PATH=/usr/lib/debug /hurd/foofs`. The `-P` option will make it -pause and you will be able to attach [[debugging/GDB]] to the process. diff --git a/hurd/running/debian/faq/dev_random.mdwn b/hurd/running/debian/faq/dev_random.mdwn deleted file mode 100644 index 3b5fdffe..00000000 --- a/hurd/running/debian/faq/dev_random.mdwn +++ /dev/null @@ -1,17 +0,0 @@ -[[!meta copyright="Copyright © 2007, 2008 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]]."]]"""]] - -[[!meta title="/dev/random"]] - -There is no random device by default as no secure implementation has been -finished yet. An easy (but very insecure) work-around is to copy a binary file -like `/bin/bash` to `/dev/random` and `/dev/urandom`. A slightly more secure -alternative is installing the `random-egd` from the `debian-ports` repository. - diff --git a/hurd/running/debian/faq/df.mdwn b/hurd/running/debian/faq/df.mdwn deleted file mode 100644 index bbd3a7b9..00000000 --- a/hurd/running/debian/faq/df.mdwn +++ /dev/null @@ -1,19 +0,0 @@ -[[!meta copyright="Copyright © 2007, 2008 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]]."]]"""]] - -There is no `/etc/mtab` (due to dynamic translator startup, its content is hard -to define actually, see -[[the mtab GSoC project idea|community/gsoc/project_ideas/mtab]]), -so just running `df` will yield the following error. - - df: cannot read table of mounted file systems - -Pass `df` a path like `df /` or `df ./` to see the disk usage of that particular -file system. diff --git a/hurd/running/debian/faq/eata.mdwn b/hurd/running/debian/faq/eata.mdwn deleted file mode 100644 index fa7dbdec..00000000 --- a/hurd/running/debian/faq/eata.mdwn +++ /dev/null @@ -1,13 +0,0 @@ -[[!meta copyright="Copyright © 2010 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]]."]]"""]] - -In some virtual machines (e.g. VirtualBox), "probing eata on XXX" may be -quite long. This is apparently due to poor efficiency of the virtualizer, not -Mach. There is no such issue on real hardware or using qemu/kvm. diff --git a/hurd/running/debian/faq/free_memory.mdwn b/hurd/running/debian/faq/free_memory.mdwn deleted file mode 100644 index c1c0a83c..00000000 --- a/hurd/running/debian/faq/free_memory.mdwn +++ /dev/null @@ -1,11 +0,0 @@ -[[!meta copyright="Copyright © 2007, 2008 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]]."]]"""]] - -Run `vmstat` to see memory and swap usage. diff --git a/hurd/running/debian/faq/hurd_console.mdwn b/hurd/running/debian/faq/hurd_console.mdwn deleted file mode 100644 index c4a619a1..00000000 --- a/hurd/running/debian/faq/hurd_console.mdwn +++ /dev/null @@ -1,12 +0,0 @@ -[[!meta copyright="Copyright © 2007, 2008 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]]."]]"""]] - -Edit `/etc/default/hurd-console` to configure the Hurd console and enable it on -bootup. See [[console]] for further information about the Hurd console. diff --git a/hurd/running/debian/faq/kernel_logs.mdwn b/hurd/running/debian/faq/kernel_logs.mdwn deleted file mode 100644 index ff14ce5f..00000000 --- a/hurd/running/debian/faq/kernel_logs.mdwn +++ /dev/null @@ -1,13 +0,0 @@ -[[!meta copyright="Copyright © 2007, 2008 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]]."]]"""]] - -The kernel logs are written to `/dev/klog`. Run `cat /dev/klog > foo` as root -and hit `ctrl+c` after a few seconds to catch the logs. You can do this only -once and do not do this in single-user mode (where `ctrl+c` does not work). diff --git a/hurd/running/debian/faq/other_repositories.mdwn b/hurd/running/debian/faq/other_repositories.mdwn deleted file mode 100644 index 88781d46..00000000 --- a/hurd/running/debian/faq/other_repositories.mdwn +++ /dev/null @@ -1,16 +0,0 @@ -[[!meta copyright="Copyright © 2007, 2008 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]]."]]"""]] - -If you want to use the `apt-get source` facility, make sure that -`/etc/apt/sources.list` contains a line like - - deb-src http://ftp.de.debian.org/debian unstable main - -... replacing _de_ with your homeland's code. diff --git a/hurd/running/debian/faq/ps_hangs.mdwn b/hurd/running/debian/faq/ps_hangs.mdwn deleted file mode 100644 index febfeb59..00000000 --- a/hurd/running/debian/faq/ps_hangs.mdwn +++ /dev/null @@ -1,12 +0,0 @@ -[[!meta copyright="Copyright © 2007, 2008 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]]."]]"""]] - -If `ps` hangs, try `ps -M` which might still work by not getting detailed -information from processes. diff --git a/hurd/running/debian/faq/reporting_bugs.mdwn b/hurd/running/debian/faq/reporting_bugs.mdwn deleted file mode 100644 index 40781ab0..00000000 --- a/hurd/running/debian/faq/reporting_bugs.mdwn +++ /dev/null @@ -1,19 +0,0 @@ -[[!meta copyright="Copyright © 2007, 2008 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]]."]]"""]] - -Please try to reproduce bugs which are not obviously Hurd-specific on Debian -GNU/Linux and then file them there. - -If you find a genuine issue in Debian GNU/Hurd, please file it in our Alioth -bug tracker at -<http://alioth.debian.org/tracker/?atid=411594&group_id=30628&func=browse> -If you find a bug in the Hurd or GNU Mach themselves, either file a bug against -the respective Debian packages, or directly at -<http://savannah.gnu.org/bugs/?group=hurd> diff --git a/hurd/running/debian/faq/sata_disk_drives.mdwn b/hurd/running/debian/faq/sata_disk_drives.mdwn deleted file mode 100644 index dad10cb9..00000000 --- a/hurd/running/debian/faq/sata_disk_drives.mdwn +++ /dev/null @@ -1,11 +0,0 @@ -[[!meta copyright="Copyright © 2008 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]]."]]"""]] - -GNU Mach does not support SATA disk drives (/dev/sda etc. in GNU/Linux) natively, so using device:sd0s1 will not work, sd* devices are for SCSI drives only. The only way to get those drives to work is to put them into compatibility mode in the BIOS, if such an option exists. GNU Mach will then recognize them as hda etc. diff --git a/hurd/running/debian/faq/sshd_only_works_for_root_logins.mdwn b/hurd/running/debian/faq/sshd_only_works_for_root_logins.mdwn deleted file mode 100644 index 1a3c46e1..00000000 --- a/hurd/running/debian/faq/sshd_only_works_for_root_logins.mdwn +++ /dev/null @@ -1,20 +0,0 @@ -[[!meta copyright="Copyright © 2007, 2008, 2010 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]]."]]"""]] - -This isssue has been fixed in the Debian hurd / libc0.3 packages as of 2010-11. -Retire this item sometime after 2011. - ---- - -Privilege seperation does not work with Hurd currently. You need to explicitely -set `PrivilegeSeparation` to `no` in `/etc/ssh/sshd_options`, just commenting out -the entry will not work as it is on by default. Also make sure you have -`/dev/random`, see below. diff --git a/hurd/running/debian/faq/xserver-common.mdwn b/hurd/running/debian/faq/xserver-common.mdwn deleted file mode 100644 index d1b17f31..00000000 --- a/hurd/running/debian/faq/xserver-common.mdwn +++ /dev/null @@ -1,12 +0,0 @@ -[[!meta copyright="Copyright © 2007, 2008 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]]."]]"""]] - -You need to run `dpkg-reconfigure x11-common` and select `Anybody` for -starting X as there is no way to detect console users currently. diff --git a/hurd/running/debian/package_troubleshooting.mdwn b/hurd/running/debian/package_troubleshooting.mdwn deleted file mode 100644 index c6236c2f..00000000 --- a/hurd/running/debian/package_troubleshooting.mdwn +++ /dev/null @@ -1,49 +0,0 @@ -This page reports known Hurd-specific bugs, quirks and corresponding solutions and workarounds with Debian GNU/Hurd package installation and working. - -## <a name="Dpkg_wants_external_programs_"> Dpkg wants external programs? </a> - -It may be that dpkg wants external GNU/Linux-specific programs that it can't found or that just don't exist on the Hurd. You can trick dpkg by copying and running this script as root: - - #!/bin/bash - ln -s /sbin/ldconfig /bin/ldconfig - ln -s /bin/true /bin/update-rc.d - ln -s /bin/true /bin/start-stop-daemon - ln -s /bin/true /bin/install-info - ln -s /bin/true /bin/update-alternatives - -## <a name="SSH_not_working"> </a> SSH not working - -You must set up the [[translator/random]] device first. - -## <a name="An_X_package_hangs_at_startup_wi"> An X package hangs at startup without error messages </a> - -Observed with GTK programs like xchat, synaptic, inkscape. It is an issue with -[[libpthread]] that (as of 04 Feb 2007) is still unresolved. Sorry. - -## <a name="Borked_fonts_on_GTK_app"> </a> Borked fonts on GTK app - -This is related to issues in Pango. - -* Install pango-dev package -* Run as root: - - pango-querymodules > /etc/pango/pango.modules - -## <a name="Installing_a_package_seems_to_ha"> Installing a package seems to hang forever </a> - -There are various reasons for this. - -* If interrupting the process with ctrl-c gives a line like that: - - File "/usr/lib/python2.4/os.py", line 723, in urandom - bytes += read(_urandomfd, n - len(bytes)) - KeyboardInterrupt - -it is the random device fault. Follow the [[translator/random]] guide. If you already did, try _anyway_ to detach and reattach the translators. - -## <a name="Cannot_compile_even_trivial_C_pr"> Cannot compile even trivial C programs </a> - -Check to have installed the following: - - apt-get install build-essential - apt-get install libc-dev diff --git a/hurd/running/debian/patch_submission.mdwn b/hurd/running/debian/patch_submission.mdwn deleted file mode 100644 index 1dd8a4db..00000000 --- a/hurd/running/debian/patch_submission.mdwn +++ /dev/null @@ -1,66 +0,0 @@ -[[!meta copyright="Copyright © 2007, 2008, 2011 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]]."]]"""]] - -If you fixed a Debian package which *FTBFS* (fails to build from source), you -should submit the patch so that all users can profit from your work. - -If it is not a Debian-specific patch, you should strongly consider submitting -the patch upstream for inclusion. This applies even more so if it is a GNU -package, or otherwise frequently used package, or you know upstream anyway. - -If you had to change the code considerably and are not 100% sure you did not -introduce a regression, or are not very experienced with these kinds of code -changes, you should first submit your patch for review to the [Debian alioth -patch -tracker](http://alioth.debian.org/tracker/?atid=410472&group_id=30628&func=browse). - -If the patch is trivial, or one of the Debian porters approved your patch for -submission, submit the patch to the Debian BTS (bug tracking system). You can -either use the reportbug tool, or just simple mail. In any case, you should -follow these guidelines: - - * The submission address is <submit@bugs.debian.org>. - - * The mail's subject (which will become the bug's title) should be - `SOURCE-PACKAGE: FTBFS on hurd-i386: REASON`. - - * The first lines of the mail's body (the so-called *pseudo-header*): - - Package: PACKAGE - Severity: important -- not *serious* - Version: VERSION -- the version of the source package in unstable. - Tags: patch -- if you include a ready-to-be-applied patch. - User: debian-hurd@lists.debian.org - Usertags: hurd - X-Debbugs-CC: debian-hurd@lists.debian.org - -The last three lines are used to to change the current *User* to the specified -value (the default is the email sender/from address), specify *Usertags* to add -the specified tags for the current user, and *X-Debbugs-CC* so that the -[[mailing list|mailing_lists/debian-hurd]] knows about your report. - -In the bug description, mention that the package fails to build on hurd-i386 -and (if possible) quote the failure. If possible, point to the failing build -log from <http://buildd.debian-ports.org/build.php> or elsewhere. - -Then, explain the failure (Debian maintainers usually do not know much about -Hurd-specific failures), and attach the patch. - -The patch should be in unidiff form. - -If the package uses a patch system, it is preferable to submit the patch in a -ready-to-use form (e.g. as a *dpatch*), but this is not required. Also, try to -keep the patch small, e.g., do not submit a 100 KiB autotools diff for a -one-line change in `configure.in` or a `Makefile.am`, but in this case mention -that autotools need to be rerun and let the maintainer choose (you can suggest -you would file a complete diff if the maintainer prefers). - -Last but not least, try to be courteous. diff --git a/hurd/running/debian/porting.mdwn b/hurd/running/debian/porting.mdwn deleted file mode 100644 index b57b295e..00000000 --- a/hurd/running/debian/porting.mdwn +++ /dev/null @@ -1,56 +0,0 @@ -[[!meta copyright="Copyright © 2007, 2008, 2009, 2010, 2011 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]]."]]"""]] - -[[!meta title="Debian packages that need porting"]] - -[[!tag stable_URL]] - -More than half of the Debian archive has been compiled successfully on the -Hurd, however, many programs fail to build for various reasons. - -A [list of build failures including error -messages](http://unstable.buildd.net/buildd/hurd-i386_Failed.html) can be -found, as well as a [preliminary -analysis](http://lists.debian.org/debian-hurd/2007/07/msg00000.html) of them and [solutions](http://lists.debian.org/debian-hurd/2007/07/msg00001.html), and some more details in [[hurd/porting/guidelines]]. [Graphs and statistics](http://people.debian.org/~sthibault/) about the consequence in terms of build dependencies are available. - -There is a mailing list, -[debian-hurd-build-logs](http://lists.alioth.debian.org/mailman/listinfo/debian-hurd-build-logs), -where *builds logs from the Debian GNU/Hurd autobuilders* are posted. It is a -high-traffic and high-volume list, and for that reason *not* archived, so you -have to subscribe to see the messages. - -It might be a good idea to record your intention to port something either in -the list below or in the [Alioth task -tracker](http://alioth.debian.org/pm/task.php?group_project_id=34&group_id=30628&func=browse) -so other people do not do duplicated work. - -Also, the [[community/HurdFr]] guys maintain their own [liste des travaux de -packaging](http://wiki.hurdfr.org/index.php/Liste_des_travaux_de_packaging). - -Aside from the Alioth task tracker, here is a list of some packages (the -important ones, as they're, e.g., blocking other packages from being built) -that need someone to work on them. - -When you have a patch to submit, please adhere to the [[patch_submission]] -guidelines. - -There is also further information available about [[hurd/porting]]. - -[[!map -pages="tagged(open_issue_porting) and !tagged(fixed_in_debian) and !*/discussion" -show=title]] - -[[!inline -pages="tagged(open_issue_porting) and !tagged(fixed_in_debian) and !*/discussion" -show=0 -feeds=no -actions=yes -rootpage="open_issues" postformtext="Add a new item titled:"]] diff --git a/hurd/running/debian/qemu_image.mdwn b/hurd/running/debian/qemu_image.mdwn deleted file mode 100644 index 809bf7b1..00000000 --- a/hurd/running/debian/qemu_image.mdwn +++ /dev/null @@ -1,23 +0,0 @@ -[[!meta copyright="Copyright © 2011 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]]."]]"""]] - -There is a QEMU image with [[Debian GNU/Hurd|debian]] pre-installed available -as <http://people.debian.org/~sthibault/hurd-i386/debian-hurd.img.tar.gz>. - -Usage: - - $ wget http://people.debian.org/~sthibault/hurd-i386/debian-hurd.img.tar.gz - $ tar -xz < debian-hurd.img.tar.gz - $ qemu -net nic,model=rtl8139 -net user -hda debian-hurd-*.img - -Just in case you were wondering: the *root* password is *root*. - -[[!if test="destpage(hurd/running/qemu)" then="" else="For more detailed -instructions, please see the [[hurd/running/QEMU]] page."]] diff --git a/hurd/running/debian/status.mdwn b/hurd/running/debian/status.mdwn deleted file mode 100644 index 95e48edc..00000000 --- a/hurd/running/debian/status.mdwn +++ /dev/null @@ -1,4 +0,0 @@ -Debian GNU/Hurd is currently an official, non-releasing Debian port. I.e., there is no testing or stable distribution. - - - [Build daemon/archive status](http://unstable.buildd.net/buildd/hurd-i386_stats) - - [Number of registered users](http://buildd.net/cgi/archvote.phtml) diff --git a/hurd/running/distrib.mdwn b/hurd/running/distrib.mdwn deleted file mode 100644 index befb015d..00000000 --- a/hurd/running/distrib.mdwn +++ /dev/null @@ -1,149 +0,0 @@ -Working distributions of GNU/Hurd: - -* [[Debian]] - -GNU/Hurd distributions in early stages of development: - -* [[Arch|arch_hurd]] (features a LiveCD) -* [[Nix]] -* [[Gentoo]] -* [[GNU]] - -<!-- Bee GNU/Hurd doesn't seem to exist anymore. -* [[Bee]] ---> - -# Issues - -<dt>[[SoftwareLicensing]]</dt> -<dd> The copyright and license information for software that is distributed with the Hurd software is important. Debian has its DFSG guidelines. Other distributions will need to address these same issues. </dd> - -[[GnuDebianRelationship]] - - -## <a name="Installation"> Installation </a> - -<dl> - <dt> Install Instructions</dt> - <dd> Currently, <a href="http://www.debian.org/ports/hurd/hurd-install" target="_top">Debian's installation instructions</a> are the most up-to-date. [[Hurd/InstallNotes]] is an errata companion document with more helpful hints that have not yet been incorporated. </dd> -</dl> - -<dl> - <dt>[[CrossInstall]]</dt> - <dd> Another way to install a system. </dd> -</dl> - -<dl> - <dt> Release Information</dt> - <dd> About the latest CD release. Includes errata, known bugs and fixes. See [[CDNotesHome]] and [[TarballNotesHome]] for summaries </dd> -</dl> - -<dl> - <dt>[[GRUB]]</dt> - <dd> A quick reference and explanation. </dd> -</dl> - -<dl> - <dt>[[InstallTips]]</dt> - <dd> Info on how to install without a cd drive or linux installed as well as a few tips. </dd> -</dl> - -Another installation method is using an emulated environment. The [[BochsEmulator]] was originally the recommended virtual machine solution, however most have switched over to QEMU, as it runs faster. - -* [[hurd/running/QEMU]] - A guide on how to use QEMU to run the hurd. -* [[BochsFAQ]] - Common questions you should read. -* [[VmWare]] - Why using it is discouraged. - -<dl> - <dt> Debian Installer</dt> - <dd> Work has been started by James Morrison and Glenn <nop>McGrath to [[PortDebootstrap]]. There is also a [[NewDebianInstaller]]. Why should Hurd folks care? It's important because this is the next generation installer that is intended to be used by all ports when Sarge is released. </nop></dd> -</dl> - - -# Using - -Debian [[debian/after_install]] instructions are a must-read to prepare an -usable system. - -[[debian/Package_troubleshooting]] reports known bugs, quirks and workarounds -about getting applications to work (if possible). - - -# For Developers - -<dl> - <dt>[[SavannahProjects]]</dt> - <dd> Savannah is a CVS & Bug system evolved from a free version of the code that powers <a href="http://sf.net" target="_top">sourceforge.net</a>. It has forked and been slightly modified for use by FSF, GNU and non-GNU projects. Actual Development takes place here. There is also a <a href="http://savannah.gnu.org/people/?group=hurd" target="_top">help wanted</a> list. </dd> -</dl> - -<dl> - <dt>[[porting/guidelines]] FAQ</dt> - <dd> What does it take to move a piece of Debian packaged software to the GNU/Hurd port? </dd> -</dl> - -<dl> - <dt>[[BuildingTheHurd]]</dt> - <dd> A summary by the Gentoo folks, thanks <a href="http://cvs.gentoo.org/~avenj/" target="_top">Jon Portnoy</a> - <a href="mailto:avenj@gentooNOSPAM.org">avenj@gentooNOSPAM.org</a></dd> -</dl> - -<dl> - <dt> Debian Infrastructure</dt> - <dd> Testing is critical in helping the development effort. Bugs (defect reports) can be filed against the Debian software package in which they are found. [[debian/patch_submission]] tells how to file a Debian bug report. [[DebianPackages]] has some information about how Debian splits the software into packages and some references. There is a buildd autobuilder compiling the Debian Sid archive software for the GNU/Hurd port. [[BuilddStatus]] includes information on the buildd & turtle efforts. </dd> -</dl> - -<dl> - <dt><a href="http://hurd.she.kicks-ass.org:8084/uninstallable/" target="_top">Uninstallable packages</a></dt> - <dd> Many packages depend on these uninstallable packages. So building one of them will allow other to be build too. </dd> -</dl> - -<dl> - <dt> Technical References</dt> - <dd> There are many standards and documents that might be applicable for those interested in developing software. </dd> -</dl> - -* GNU [Coding Standards](http://www.gnu.org/prep/standards.html) -* [[TestSuites]] - Posix, Perl, results feedback, etc. -* [[Documentation]] -* [[System_API_Limitations]] -* [[CodeAnnouncements]] - Recent coding projects related to the Hurd - -<dl> - <dt> Debian <a href="http://www.debian.org/devel/" target="_top">Developer's Corner</a></dt> - <dd> The following references are provided as a starting point for those interested in helping to package software for Debian GNU/Hurd and Debian GNU/Linux. </dd> -</dl> - -* [Policy Manual](http://www.debian.org/doc/debian-policy/) -* Developer's [Reference](http://www.debian.org/doc/developers-reference/) -* New Maintainers [Guide](http://www.debian.org/doc/maint-guide/) -* There are many Debian email lists - -<dl> - <dt> Debian Todo</dt> - <dd> Packages needing attention. A possible use of this site could be to help track similar needs via [[HurdWnpp]]. This is not yet implemented. </dd> -</dl> - -<dl> - <dt>[[GnuDistributionRumors]]</dt> - <dd> There are some discussions and several rumors circulating about creating a completely new distribution, not using a Debian architecture. </dd> -</dl> - -# Misc. - -<dl> - <dt> Why a separate section of the website for this?</dt> - <dd> There are fundamentally different issues about distributions compared with coding. Distributions are concerned with final default configurations of packaged software and system integration as they use many software packages and help give users a sense of using an OS "product." </dd> -</dl> - -<dl> - <dt>[[WhyDebian]]</dt> - <dd> A one page document focused on Debian aimed at users to answer their question "Why Debian?" </dd> -</dl> - -<dl> - <dt>[[DebianProductSheet]]</dt> - <dd> Technical description of Debian aimed at those interested in Debian. </dd> -</dl> - -* [Misc. Docs @Etherhogz](http://www.etherhogz.org/doc/) (broken) -* [Ognyan Kulev Collection](http://debian.fmi.uni-sofia.bg/~ogi/hurd/links/index.html) of links (unsupported) -* [2000 Jim Franklin Collection](http://angg.twu.net/the_hurd_links.html) of links diff --git a/hurd/running/faq.mdwn b/hurd/running/faq.mdwn deleted file mode 100644 index 2746a20a..00000000 --- a/hurd/running/faq.mdwn +++ /dev/null @@ -1,20 +0,0 @@ -[[!meta copyright="Copyright © 2009, 2010 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]]."]]"""]] - -[[!meta title="General FAQ About Running GNU/Hurd"]] - -See also other [[/FAQ]]. - -[[!inline -pages="hurd/running/faq/* and !*/discussion" -show=0 -feeds=no -actions=yes -rootpage="hurd/running/faq" postformtext="Add a new item titled:"]] diff --git a/hurd/running/faq/native-install_doesnt_finish.mdwn b/hurd/running/faq/native-install_doesnt_finish.mdwn deleted file mode 100644 index a852e1dd..00000000 --- a/hurd/running/faq/native-install_doesnt_finish.mdwn +++ /dev/null @@ -1,24 +0,0 @@ -[[!meta copyright="Copyright © 2009 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]]."]]"""]] - -Copying baseGNU to the virtual disk works. Even booting got through but when I -try to run native-install it never gets to the very end. First time it froze on -*sed* package, the other time on *sysv-rc*. - -> How much memory did you configure for the [[QEMU]] system? It may simply be -> -- I've seen this myself -- that the system runs out of memory, as at the -> native-install stage (I think at least) swap is not yet configured and -> enabled. What I've been doing is: boot (with -s), MAKEDEV hdWHATEVER in -> /dev/ for the swap device, run /hurd/mach-defpager, followed by swapon -> /dev/hdWHATEVER. Does this help? - ->> Thank You very much, more memory solved the freezing. - -[[!tag open_issue_hurd]] diff --git a/hurd/running/gentoo.mdwn b/hurd/running/gentoo.mdwn deleted file mode 100644 index ef72bfad..00000000 --- a/hurd/running/gentoo.mdwn +++ /dev/null @@ -1,34 +0,0 @@ -* [Archived try at a Gentoo GNU/Hurd](http://www.mundurat.net/ggh/) - -Unofficial port to Gentoo and the portage system. It was -[announced](http://forums.gentoo.org/viewtopic.php?t=41939&postdays=0&postorder=asc&start=0) -March 17, 2003 in the Gentoo forums. There's a #gentoo and a #gentoo-hurd IRC channel similar to -[[IRC]]. - -### State of the GGH, 2009-05 - -> *Did you work a bit more on the Gentoo GNU/Hurd?* - -I tried to resume my work 3-4 months ago but I found some problems with -portage and python functions not implemented on Hurd so I stopped. I think -that back in 2006 with portage 2.0.54 those functiones weren't necessary. - -> *And do you have some information which might help others advance what you began?* - -I just have all the ebuilds and binary packages I merged online on -[http://www.mundurat.net/ggh/portage](http://www.mundurat.net/ggh/portage). - -To continue my work just take a Debian/Hurd and install portage by hand. - -Once there take the profile and start bootstraping portage and all the -ebuild it needs (patch, python, bzip2...). - -The major problems are: - -- combine the perfect gcc/binutils/glibc/gnumach/hurd and to be able to boot -- lack of development on gnumach/hurd and current 'degraded' status. - -I don't think I can help much right now, but if you have any other -question just write me. - -MiKeL diff --git a/hurd/running/gnu.mdwn b/hurd/running/gnu.mdwn deleted file mode 100644 index 94012ef5..00000000 --- a/hurd/running/gnu.mdwn +++ /dev/null @@ -1,82 +0,0 @@ -# <a name="The_GNU_Operating_System"> </a> The GNU Operating System - -The GNU Operating System, or GNU System as it is more commonly known, will be a -complete [[Unix]]-like operating system composed entirely of [free -software](http://www.gnu.org/philosophy/free-sw.html). The creation of the GNU -System is one of the goals of the [GNU Project](http://www.gnu.org/), which was -[launched in 1983](http://www.gnu.org/gnu/initial-announcement.html) by -[Richard Stallman](http://www.stallman.org/). - - - -[[gnu/GNU]]. - -It is our wish and goal to establish a new direction for the GNU system distribution. To that end, this page will begin setting some direction. This was spawned by several discussions over a few days on the Hurd mailing lists and IRC. - -This is not intended to detract from Debian GNU/Hurd and we should help them where we can. - -I really want this to be more of a community driven effort in the spirit of say, Ubuntu. We all have different motivations and skill levels but we need a common goal to get this system going. - -These are just some quick notes I am making late at night. Let's clean this up. - -## <a name="Motivations"> Motivations </a> - -1. There is a possibility that Debian drops support for GNU/Hurd. -2. Other GNU/Linux distributions do not support the Hurd infrastructure well. -3. Benefiting from the Hurd design and using a microkernel. -4. Freedom. - -## <a name="Community"> Community </a> - -1. Let's establish some ground rules. -2. We need infrastructure - * Wiki for community documentation - * Mailing lists like gnu-system-discuss exists for mostly technical items - * IRC channels like #hug and ##hurd - * Perhaps less formal and less intimidating channels and mailing lists would involve broader parts of the community -3. We need a community vision and direction. - * Let's work together for a common goal - * Let's establish goals and priorities and get resources on them. (More later) - * Major goal to create a system making full use of Hurd features? - * We should never hesitate to throw away existing stuff whenever it hinders us to make good use of Hurd features - * However, we should try to reuse existing stuff (from Debian for example) as long as it doesn't limit our possibilities or impose considerable overhead - * Let's have fun. It's GNU and it's important but let's enjoy ourselves. - -## Download - - * Official GNU snapshot <http://www.update.uu.se/~ams/GNU> - * Extended GNU distribution <http://i-hug.sarovar.org/downloads/GNU/extended/> - -## <a name="Tools"> Tools </a> - -1. Developer Needs - * RPC Trace -2. Installer - * Native installer would be preferred but we can bootstrap GNU/Linux for now if necessary -3. Package Management - * There is a proposal to use stowfs. Let's get this going and test it out. Can it be made to work? How long will it take? - * Repository for packages - * Probably we can host it on the GNU servers - * Bug / Issue tracking - * Probably we should set up a Savannah project - * How to handle experimental patches to the core packages (Hurd, Mach, libc etc.) that are not in official CVS yet? - -## Resources - - * [[Universal_package_manager]] - * How to [[set_up_GNU|setup]] and archiver for GNU - * [[Create_an_image]] - -## <a name="Todo"> Todo </a> - -1. AMS had made a GNU release. We can try it and test it to good use. We can fix broken things in it, and enhance it. - * The snapshot is very old. Probably better to build something from current stuff, even if it means more work - * ams said that he would like to get a new snapshot out that would be on a Live CD and using stowfs. I think what we need to do is start using/fixing GNU System Creator (GSC) to build packages for this effort. -2. GNU is all about freedom AND ease of use. So, given installers are by nature quite complex, how should we install GNU on users's computers? I think ams's GSC comes into play here, maybe ams or sdschulze could (re-)write specifications of GSC. -3. Until we have an installer ready, we could go the Gentoo-like route, and have every part manually installed. A good installation documentation may help. Our next milestone may be just this (in case ams hasn't already done it): - * have a good installation document out, with all the required packages hosted at gnu.org or savannah.org - * get stowfs working -4. Maybe try to use hacked Debian packages until we get native ones? -5. Move on, start coding, documenting, packaging. - -I tried refactoring this page, but didn't get far. -- [[Main/AaronHawley]] - 18 Feb 2006 diff --git a/hurd/running/gnu/create_an_image.mdwn b/hurd/running/gnu/create_an_image.mdwn deleted file mode 100644 index c7a97a4e..00000000 --- a/hurd/running/gnu/create_an_image.mdwn +++ /dev/null @@ -1,97 +0,0 @@ -[[!meta copyright="Copyright © 2007, 2008 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]]."]]"""]] - -Creating a bootable qemu image from a root filesystem and bootloader - -1. Create a hard disk image - - qemu-img create -f qcow <imagename.img> <size>G - -2. Use a live CD (better to have a lighter OS like system rescue CD to make the - process faster) and the image created to boot. - - qemu -cdrom /dev/cdrom -hda <imagename.img> -boot d - -3. Once system is booted use a partition editing tool (like fdisk, cfdisk, - parted, gparted, qtparted ...) to partition the image. - - cfdisk - - create the necessary partitions (root and swap partitions boot, home ... if - required) - -4. Create a file system for the root partition - - mke2fs /dev/hda1 - -5. Mount the partition - - mkdir disk - mount /dev/hda1 disk - -6. Copy the file system from the host machine to the mounted directory (use a - compressed file system to make the copying faster) - - Grab the GNU snapshot from ams' site - <http://www.update.uu.se/~ams/home/slask/GNU/> - - scp <user>@<host>:<path to the compressed file system> disk - -7. Uncompress the files - - cd disk - tar -jxvf <compressed filesystem> - -8. Unmount the mounted partition - - cd .. - umount disk - -9. power off the guest OS. - - poweroff - -10. To make the file system bootable download a grub floppy image - - <http://hurd.in/pub/Hurd/HurdOnVMware/grub.img> - -11. Run qemu to boot into your brand new system - - qemu -hda <hard disk image.img> -fda grub.img -boot a - -Happy Hacking !! - - -Make your new system boot from the hard disk - -1. Mount your grub image - - mkdir floppy - mount -t ext2 -o loop grub.img floppy - -2. Use previous steps 2 and 5 to boot from a liveCD and mount the partition - - cd disk/boot - scp -r <user>@<host>:<path to mounted floppy image directory>/boot/grub - -3. Poweroff the guest - - poweroff - -4. Boot new system using floppy image previous step 11 - - use install to hard disk option if you used the above grub image - - or go to grub command line and type - - root (hd0,0) - setup (hd0) - - Now you have a bootable system image. Enjoy Maadi !! diff --git a/hurd/running/gnu/gnu.mdwn b/hurd/running/gnu/gnu.mdwn deleted file mode 100644 index 3ee5f657..00000000 --- a/hurd/running/gnu/gnu.mdwn +++ /dev/null @@ -1,27 +0,0 @@ -## <a name="GNU_FSF_amp_RMS"> </a> GNU, FSF & RMS - -GNU stands for GNU's Not [[Unix]]. It is a project announced in 1983 by -[[RichardStallman]] (RMS). The Free Software Foundation -([FSF](http://www.fsf.org/fsf/fsf.html)) was founded in 1985 to act as a parent -organization for GNU and many other projects. GNU and some non-GNU projects -are now hosted on the [Savannah](http://savannah.gnu.org) platform similar to -SourceForge.net. - -<dl> -<dt>[[History]]</dt> -<dd> Background information about the GNU Project. </dd> -<dt>[[Names]]</dt> -<dd> A page describing the name GNU itself and it's usage. </dd> -<dt>[[Manifesto]]</dt> -<dd> A founding document that still influences the system's technical design and moral philosophy. </dd> -<dt> FAQ Link</dt> -<dd> What is the relation between <a href="http://www.gnu.org/software/hurd/faq.en.html#q1-2" target="_top">GNU and Hurd</a>? </dd> -<dt> Assisting</dt> -<dd> If you would like to help the GNU movement visit the official site at <a href="http://www.gnu.org" target="_top">http://www.gnu.org</a>. </dd> -<dt>[[SoftwareProjects]]</dt> -<dd> Information about other GNU projects. </dd> -<dt><a href="http://lists.gnu.org/mailman/listinfo/gnu-system-discuss" target="_top">gnu-system-discuss</a></dt> -<dd> Mailing list for discussion about the GNU system. </dd> -</dl> - -[[TODO]]. diff --git a/hurd/running/gnu/history.mdwn b/hurd/running/gnu/history.mdwn deleted file mode 100644 index f321c961..00000000 --- a/hurd/running/gnu/history.mdwn +++ /dev/null @@ -1,7 +0,0 @@ -The GNU project has a long history. For software projects, it is exceptionally long. For social movements it is quite short. Although, its history is incomplete, and is being made now (to which you could contribute). - -* [Announcement](http://www.gnu.org/gnu/initial-announcement.html): The original announcement made in 1983 by [[RichardStallman]]. -* [The GNU Project](http://www.gnu.org/gnu/gnu-history.html): A summary by [[RichardStallman]]. -* [History of the GNU Project](http://www.gnu.org/gnu/thegnuproject.html): About the GNU Project, by [[RichardStallman]]. - -Page started from links at [[GNU]]. -- [[Main/AaronHawley]] - 17 Feb 2006 diff --git a/hurd/running/gnu/manifesto.mdwn b/hurd/running/gnu/manifesto.mdwn deleted file mode 100644 index c2a3294f..00000000 --- a/hurd/running/gnu/manifesto.mdwn +++ /dev/null @@ -1,5 +0,0 @@ -Written early in the life of the GNU project, the GNU manifesto still influences the design of the GNU system. - -* [The GNU Manifesto](http://www.gnu.org/gnu/manifesto.html) - -Started page. -- [[Main/AaronHawley]] - 17 Feb 2006 diff --git a/hurd/running/gnu/names.mdwn b/hurd/running/gnu/names.mdwn deleted file mode 100644 index fcab6a11..00000000 --- a/hurd/running/gnu/names.mdwn +++ /dev/null @@ -1,8 +0,0 @@ -The GNU stands for GNU's Not [[Unix]]. It is a project as described in [[GNU]]. - -What can be confusing is the usage. GNU can stand for: - -* an entire system as envisioned in 1983. GNU/Hurd is a synonym. -* GNU components when used with the Linux kernel: GNU/Linux This term has been adopted by the [Debian project](http://www.debian.org) but is not recognized as widely as the FSF would like. - --- [[Main/GrantBow]] - 03 Mar 2004 diff --git a/hurd/running/gnu/richardstallman.mdwn b/hurd/running/gnu/richardstallman.mdwn deleted file mode 100644 index d6688850..00000000 --- a/hurd/running/gnu/richardstallman.mdwn +++ /dev/null @@ -1,6 +0,0 @@ -Richard Stallman (or ''RMS'') is the found of the GNU project, the Free Software Foundation and author of numerous GNU software packages. More useful information about Richard is available from his Wikipedia entry or his personal Web site. - -* [Wikipedia: Richard Stallman](http://en.wikipedia.org/wiki/Richard_Stallman/): Entry at Wikipedia -* [Stallman dot org](http://www.stallman.org/): Personal Web site. - -Page started. This seems like the appropriate Wiki to have the page. -- [[Main/AaronHawley]] - 17 Feb 2006 diff --git a/hurd/running/gnu/setup.mdwn b/hurd/running/gnu/setup.mdwn deleted file mode 100644 index 2fb30c7b..00000000 --- a/hurd/running/gnu/setup.mdwn +++ /dev/null @@ -1,84 +0,0 @@ -[[!meta copyright="Copyright © 2007, 2008 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]]."]]"""]] - -Setup is very easy (You need a GNU/Linux system to install GNU, we are developing an installer for GNU and if you want to help us join us on [gnu-system-discuss](http://lists.gnu.org/mailman/listinfo/gnu-system-discuss)), just follow these steps ... - -## Step 1: Find a home for GNU - -create a partition with minimum of 800 MB (if you want to install programs later you might need to allocate more space) - -It comes with GNU Emacs 21.4, gcc 4.0, gdb 6.3, parted, wget and many more - -Note: 2GB limit for partitions is no more there, it is fixed - -## Step 2: Create GNU Hurd filesystem on the partition - - # mke2fs -o hurd /dev/hdd6 - -## Step 3: Grab a snapshot of the GNU - -from <http://www.update.uu.se/~ams/home/slask/GNU/> or Extended GNU from <http://i-hug.sarovar.org/downloads/GNU/extended/> - -## Step 4: Extract the snapshot to the newly created partition - - # mount /dev/hdd6 /mnt - # cd /mnt - # tar -jxvf <path to downloaded location>/GNU--2006-01-08.tar.bz2 - -Wait for the extraction to complete, depending on the system configuration the time varies. The compressed image is 178MB and it uncompresses to about 750MB - -## Step 5: Configure grub to boot GNU - -This can be tricky since the partition naming is different for linux, grub and hurd - -My configuration look like this ... - - title GNU (also known as GNU/Hurd)(Single user) - root (hd0,5) - kernel /boot/gnumach.gz root=device:hd3s6 -s - module /hurd/ext2fs.static --multiboot-command-line=${kernel-command-line} --host-priv-port=${host-port} --device-master-port=${device-port} --exec-server-task=${exec-task} -T typed ${root} $(task-create) $(task-resume) - module /lib/ld.so.1 /hurd/exec $(exec-task=task-create) - - title GNU (also known as GNU/Hurd)(Multi-user) - root (hd0,5) - kernel /boot/gnumach.gz root=device:hd3s6 - module /hurd/ext2fs.static --multiboot-command-line=${kernel-command-line} --host-priv-port=${host-port} --device-master-port=${device-port} --exec-server-task=${exec-task} -T typed ${root} $(task-create) $(task-resume) - module /lib/ld.so.1 /hurd/exec $(exec-task=task-create) - - grub linux hurd - hd0,5 hdd6 hd3s6 - -If you have only one harddisk it will be hd0 for grub wherever you connect it. -But linux and hurd names depend on whether you connect it as primary master -(hda or hd0), primary slave (hdb or hd1) [this is my cdrom drive], secondary - master (hdc or hd2) or secondary slave (hdd or hd3) [this is my precious -Maxtor 2GB hard disk]. - -The partition naming of hurd is similar to BSD slices. hda1 is hd0s1, hda2 is - hd0s2 ... - -In my case the root device is hd0s6 (hdd6) - -## Step 6: Now boot into your brand new GNU System. - -It will do some initial setup and you will get a prompt. -Now reboot into your configured GNU System. - - # reboot - -## Step 7: Start using your GNU system - -Here is the GNU/Hurd users guide. It starts from the basics. <http://www.gnu.org/software/hurd/users-guide/using_gnuhurd.html> - -*Warning! : It is not yet ready for normal use, it is a developer's release.* - -So when you encounter bugs report it to bug-hurd@gnu.org - -Join us on gnu-system-discuss <http://lists.gnu.org/mailman/listinfo/gnu-system-discuss> to help finish the GNU System. diff --git a/hurd/running/gnu/softwareprojects.mdwn b/hurd/running/gnu/softwareprojects.mdwn deleted file mode 100644 index 4790c5c9..00000000 --- a/hurd/running/gnu/softwareprojects.mdwn +++ /dev/null @@ -1,8 +0,0 @@ -Some of the GNU software effects the Hurd development directly or indirectly. Here's a place for notes about these changes. The official sources are the GNU software [Directory](http://www.gnu.org/directory/) (sponsored by the UN!), [Projects](http://www.gnu.org/projects/), [Packaging](http://www.gnu.org/software/packaging/) and [savannah](http://savannah.gnu.org/) pages, but this page is for Hurd related notes about them. - -<dl> - <dt> GCC</dt> - <dd> deb packages of gcc-{3.2,3.3} are available for testing from <a href="http://people.debian.org/~mbanck/hurd-gcc-4.0/" target="_top">http://people.debian.org/~mbanck/hurd-gcc-4.0/</a> ./ </dd> -</dl> - -* [[Universal_package_manager]] and archiver for GNU diff --git a/hurd/running/gnu/todo.mdwn b/hurd/running/gnu/todo.mdwn deleted file mode 100644 index e2dc2e89..00000000 --- a/hurd/running/gnu/todo.mdwn +++ /dev/null @@ -1,6 +0,0 @@ -There are varying things to be done for the operating system requiring a variety of effort, and skills. The following are todo lists with a focus on meeting needs for releasing the GNU system. - -* [Alfred Szmidt's todo list](http://lists.gnu.org/archive/html/gnu-system-discuss/2006-06/msg00056.html) - Post to gnu-system-discuss on 21 Jun 2006. -* [Hurd Task list](http://savannah.gnu.org/task/?group=hurd) - Maintained on the GNU Savannah list. - -Page started. -- [[Main/AaronHawley]] - 29 Jun 2006 diff --git a/hurd/running/gnu/universal_package_manager.mdwn b/hurd/running/gnu/universal_package_manager.mdwn deleted file mode 100644 index bf1b92e0..00000000 --- a/hurd/running/gnu/universal_package_manager.mdwn +++ /dev/null @@ -1,158 +0,0 @@ -[[!meta copyright="Copyright © 2007, 2008, 2009 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]]."]]"""]] - -## Mission - -"To enable the GNU System to install packages of any format like rpm, deb, -ebuild... so that GNU System will be able to use softwares packaged by projects like Debian and Gentoo" - -## Features - -Basically all package management schemes follow similar approach, it will have a single binary archive containing the actual software and some metadata like packages it requires, what all it provides ... So when we install an rpm package this tool will help rpm tool to recognise the packages installed by stow and it will be stowed instead of the normal rpm way of installing in /usr. - -There can be both aproaches - - * Re-implement rpm, dpkg... to recognise stow as backend instead of its own data store. In that case we will have to re-implement, apt-rpm, yum ... - * Implement a translator which reads stow and show it as an rpm data store for yum, deb data store for apt-get ... - -One goal is obviously choice of packaging and hence availability of more packages. Also this gives maintainers a choice to continue building packages for GNU in the format they are already familiar with. The second goal is to demonstrate the flexibility GNU offers in implementing functionality in filesystems (open/read/write interface). - -## Why? - - * The GNU Hurd provides a lot of advanced features and functionalities. We aim to exploit those features. - * Combining translators with UnionFS gives a very exciting package manager. - * We could use the good features of existing packaging systems like deb, rpm, ebuilds, ports ... plus unionfs and hurd translator is a compelling combination. - -With the increased flexibility in implementing filesystems as per the requirements, we can implement the functionality similar to apt-get, emerge or yum... (dependency tracking, versions tracking...) in the filesystem itself. - -## What? - - * Have a basic filesystem based package manager - * Write translators to convert between GNU's packaging format and the existing one's like rpm, deb ... - -## How? - - * Installation of a package is just drag the package (be it a tgz, rpm, deb or an exe) and drop it to the package manager. - - * apt-cache search vim --> ls -al /packages/meta/ |grep vim - * apt-get install vim --> install vim - -Just a sample script. - - $ cd /packages/meta/vim/current/depends - $ for i in `ls *` - $ do - $ if [ -f /packages/binary/$i ] - $ then - $ echo "$i is installed" - $ else - $ install $i - $ fi - $ done - -The same can be achieved using any of the languages or front ends or even manual copying. - -If all the dependencies are there - - $ cp -r /ftp/ftp.gnu.org/packages/binary/vim/7.0 /packages/binary/vim/7.0 - -## Implementation Details - -Lets take the example of rpm, it is simply a cpio archive with software and -meta data as its contents. Just extract it to stow directory with a name -package-version. When apt-get or yum asks for information about already -installed packages read the stow tree and return back the requested data. - -Same case for ebuild. We can provide these details to any packaging system -in the way it wants using a translator. So support for a new format is -just writing the new translator. - -## Initial idea - -A bit more complex than the earlier scheme but it is more exciting and we can look at this scheme seriously once we have the simple scheme working. - -All packages are installed at -`/packages/binary/<packagename>/<packageversion>`. - -For example vim 6.4 version can be installed from source like - - # cd vim64 - # ./configure --prefix=/packages/binary/vim/6.4 - # make - # make install - -Now if you have another vim version, say 7.0 then just follow the steps - - # cd /packages/source/vim - # CP /<pathtovimtarball>/vim-7.0.tar.bz2 - # tar -jxvf vim-7.0.tar.bz2 - # mv vim70 7.0 - # ./configure --prefix=/packages/binary/vim/7.0 - # make - # make install - -You have 2 versions of vim and how can you specify which one is the current version? You can symlink the current version to select the version you would like to see as default - - # ln -s /packages/binary/vim/7.0 /packages/vim/current - -## Metadata: /packages/meta - -Dependency information is stored as a symbolic link to the required packages in a subdirectory called depends. - -## Requirement - -We will require unionfs support if we chose to go through path 2 (which is what I like because we can really show off with translators.) - - * Developing status - planning - * Near term goal - implement stow backend for dpkg - * High priority task - make unionfs work on boot. Mail from AMS to gnu-system-discuss on problem statement <http://www.mail-archive.com/gnu-system-discuss@gnu.org/msg00198.html> - -## Developer Guidelines. - - * GNU coding standards <http://www.gnu.org/prep/standards/> - - -## FAQ - Frequently asked questions - - 1. How can I join this project? - -OK. I will give you steps. - -i. Install a GNU System by folowing [[these_instructions|setup]] - -ii. Read about GNU Design: [[Towards_a_New_Strategy_of_OS_Design|hurd-paper]] - -iii. Read about translators <http://www.debian.org/ports/hurd/hurd-doc-translator> - -iv. Try out these cool [[translator_examples|translator/examples]] - -v. Add your name below and give a shout in the list. - - -## Comments?? - -Add your comments here - -## Interested? - -To join the project just list your name below. - - 1. PraveenA - 2. IsaacPraveen - 3. VikramVincent - 4. MaheshM - 5. Nidhin Raghavan - 6. Ajish.B - 7. Ambili.B - 8. Abhradip Mukherjee - 9. Ermenegildo Fiorito - 10. Oltion Doda - 11. Russell James diff --git a/hurd/running/live_cd.mdwn b/hurd/running/live_cd.mdwn deleted file mode 100644 index c9360594..00000000 --- a/hurd/running/live_cd.mdwn +++ /dev/null @@ -1,27 +0,0 @@ -[[Arch Hurd|hurd/running/arch_hurd/]] offers Hurd LiveCDs at <http://www.archhurd.org/gethurd.php>. - -Also you can download a gzipped iso of a Hurd Live CD at -<http://www.superunprivileged.org/hurd/live-cd/>. - -The Superunpriveleged crew also offers a tiny Hurd Live CD that is under 10 -MiB: <http://www.superunprivileged.org/hurd/tiny-cd/> - -Use it like this: - - $ qemu -cdrom hurd-tiny-cd-20060722.iso - -A more recent Live CD can be found at <http://teythoon.cryptobitch.de/hurd/livecd/hurd-live-install-1273300101.iso.xz>. - -It can be run with qemu via - - $ wget http://teythoon.cryptobitch.de/hurd/livecd/hurd-live-install-1273300101.iso.xz - $ xz -d hurd-live-install-1273300101.iso.xz - $ qemu -cdrom hurd-live-install-1273300101.iso - -These [[!wikipedia LiveCD]]s should be useful for those who want to try out the -Hurd before they commit to installing it on their hard disks. In addition to -that, the bootable Hurd CDs should enable us to have a native installer instead -of relying on Linux. - -* [[RequirementsForLiveCD]] -* [[BuildingHurdLiveCD]] diff --git a/hurd/running/nix.mdwn b/hurd/running/nix.mdwn deleted file mode 100644 index 663589f6..00000000 --- a/hurd/running/nix.mdwn +++ /dev/null @@ -1,27 +0,0 @@ -[[!meta copyright="Copyright © 2012 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]]."]]"""]] - -[[!meta title="Nix-based GNU/Hurd System"]] - -<http://www.nixos.org/> - - * <http://hydra.nixos.org/jobset/gnu/hurd-master> - - * <http://hydra.nixos.org/job/gnu/hurd-master/qemu_image/latest/download> - - * <http://hydra.nixos.org/job/gnu/hurd-master/qemu_test> - ---- - -This QEMU image is not (yet) comparable to NixOS, because the latter provides -extra features, such as whole-system configuration (including services, etc.), -and whole-system transactional update and rollback. It is is cross-built using -Nix, and because of that, it uses per-package installation directories under -`/nix/store`. diff --git a/hurd/running/qemu.mdwn b/hurd/running/qemu.mdwn deleted file mode 100644 index fcf58d8a..00000000 --- a/hurd/running/qemu.mdwn +++ /dev/null @@ -1,351 +0,0 @@ -[[!meta copyright="Copyright © 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 -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]]."]]"""]] - -This page discusses things for [[Unix]] systems, there is a separate page for -[[Microsoft_Windows]] systems. - -# Readily Available Images - -You can use the following images to give the GNU/Hurd a try. - -## Debian GNU/Hurd - -[[!inline pages=hurd/running/debian/qemu_image raw=yes feeds=no]] - -## [[Nix]] - -## Unofficial Images - -Note that the following images are unofficial ones: they have been prepared by -volunteers and may not have been tested extensively. - -* [Disk image](http://draketo.de/dateien/hurd/bab-hurd-qemu-2008-10-29.img.tar.bz2) - with a short intro on translators. Just start it with 'qemu *disk_image.img*'. - It should work without any of the configuration below. If you want to know what you can do - with it, please have a look at [[its_wikipage|hurd/running/qemu/babhurd_image]]. And when - you use it, please [tell me your experience with it](http://draketo.de/contact)! - [[community/weblogs/ArneBab]] - -# Arch Hurd Live CD - -Also you can use QEMU to easily try one of the -[[Hurd_LiveCDs|hurd/running/live_cd/]]. - - -# What is Needed to create a QEMU image - -## Debian Installer - -Instructions for creating a qemu image from the install CDs from debian installer can be found in the README alongside the d-i Hurd images: <http://people.debian.org/~sthibault/hurd-i386/installer/cdimage/> - -## Old method - -1. First thing is to install [[/QEMU]]. -2. A [[grub]] boot disk for the floppy disk image needed for booting. The [0\.97 version](ftp://alpha.gnu.org/gnu/grub/grub-0.97-i386-pc.ext2fs) works fine. I downloaded it and renamed to `floppy.img`. Alternatively, the Debian grub-disk package (up till version 0.97-28) is fine as well. -3. You will need a [Debian/Hurd installation CD](http://www.debian.org/ports/hurd/hurd-cd). K16 works fine. - -# KVM acceleration - -Check if your CPU supports kvm: - - $ egrep '^flags.*(vmx|svm)' /proc/cpuinfo - -#### If you don't have hardware support (slow): - $ apt-get install qemu - -Do not enable kernel-kqemu, as that assumes some particular behavior from the guest kernel, which we are reluctant to artificially add to gnumach. - -If QEMU with KVM is not available, [[Virtualbox]] reportedly has better -performance. - -#### If you have hardware support (recommended): - $ apt-get install qemu-kvm - $ modprobe kvm - -Intel VTx/VTd: Enable Intel kvm in the BIOS - -On a HP xw4600 Workstation: F10, Security->System Security; Enable VTx and VTd - -Check that the kvm module is loaded: - - $ lsmod|grep kvm - kvm_intel 38050 0 - kvm 213800 1 kvm_intel - - $ ls -l /dev/kvm - crw-rw----+ 1 root kvm 10, 232 Mar 14 15:02 /dev/kvm - -Add yourself to the kvm group: - - $ adduser your_user kvm; logout; login - -AMD SVM (AMD-V): Enable AMD-V in the BIOS if not enabled. - -Check that the kvm module is loaded: - - $ lsmod|grep kvm - kvm_amd 31862 0 - kvm 214088 1 kvm_amd - -More info on kvm at: http://www.linux-kvm.org/page/FAQ - -If your machine supports hardware acceleration, you should really use the kvm variant of qemu, as it speeds things quite a lot. Note however that kvm tends to make assumptions when accelerating things in the linux kernel, you may need some -no-kvm-something option. At the moment in Debian you need to pass - - -no-kvm-irqchip - -to the command line, see below, if you are running Linux kernels 2.6.37 or 2.6.38 else IRQs may hang sooner or later. The kvm irq problems will be solved in kernel 2.6.39. - -/!\ Note that there are known performance issues with KVM on Linux 2.6.39 -kernels, compared to 2.6.32: [[!debbug 634149]]. We're preparing on a change -on our side to work around this. - - -# HAP/EPT/NPT acceleration - -Performance will be yet better if HAP (EPT or NPT) is available: - - $ grep ept /proc/cpuinfo - $ grep npt /proc/cpuinfo - -# Installing Debian/Hurd with QEMU using the Debian installer - -Note: If you have hardware support, replace the qemu commands below with kvm, e.g. qemu-ing -> kvm-img. - -First off you will need to create a disk image using `qemu-img`. I have set mine to 4 GiB, although you should be able to get away with less. - - $ qemu-img create hd0.img 4G - -Next you will want to start up QEMU and begin the installation process. - - $ qemu -m 512 -hda hd0.img -cdrom mini.iso -net nic,model=rtl8139 -net user - -Now at his point do the regular install using `hd0` as your harddrive. Partition it and install the base system. - -In the installer make your choice of install option: Default install (or your choice) - - Language: English - Country, territory or area: your_choice - Locale: your_choice - -Note that even if you can set the country and locale, your local keyboard is not yet supported. - -In case of problems with timezone or locale settings do the following after the installation is completed - - To get the correct timezone: - $ dpkg-reconfigure tzdata - To get your locale setting: - $ nano /etc/locale.gen - $ locale-gen - -Network: Now configured automatically with dhcp - - IP address: 10.0.2.15 - Netmask: 255.255.0.0 - Gateway: 10.0.2.2 - Nameserver: 10.0.2.3 - - Qemu network setup: - QEMU VLAN <------> Firewall/DHCP server <-----> Internet - | (10.0.2.2) - | - ----> DNS server (10.0.2.3) - | - ----> SMB server (10.0.2.4) - -Partitioning method: Guided (or your choice) - -Partitioning `/dev/hd0`: All files in one partition. - -**Important**: Since partman does not yet mount other partitions than / automatically at reboot, it is crucial that you choose this option for now. - -Once you have finished installing the base system (might take some time) the system is rebooted and next boot will be from the hard disk. Now you are able to log in to your newly installed GNU/Hurd system. - -Also see another text about how to [[gnu/create_an_image]] for the -[[GNU_system|gnu]]. - -## Running the installed system - -Starting qemu/qemu-kvm: - - $ kvm -m 512 -net nic,model=rtl8139 -net user,hostfwd=tcp::5555-:22 -hda hd0.img -vga vmware - vmsvga_value_write: guest runs Linux. - -Note: See below on port forwarding in the networking section. - -Note: Using the vmware vga driver is useful for setting up X windows, see [Debian GNU/Hurd](http://www.debian.org/ports/hurd/hurd-install) - -If you have problems with grub hanging during boot with the vmware vga driver: Disable the graphic boot - - $ nano /etc/default/grub - uncomment GRUB_TERMINAL=console - $ /usr/sbin/update-grub - -### A few words about the qemu console - -During the graphical emulation, you can use the following keys: - - <Ctrl><Alt>-f Toggle full screen - <Ctrl><Alt>-u Restore the screen's un-scaled dimensions - <Ctrl><Alt>-n Switch to virtual console 'n'. Standard console mappings are: - 1 Target system display - 2 Monitor - 3 Serial port - <Ctrl><Alt> Toggle mouse and keyboard grab. - - -# Transferring Files - -## Mounting Disk Image on Host - -You may wish to mount your disk image on your host system to transfer files. To do this you will first need to find the offset of the partition you wish to mount. - - # fdisk -ul hd0.img - ... - 128 heads, 63 sectors/track, 0 cylinders, total 0 sectors - Units = sectors of 1 * 512 = 512 bytes - - Device Boot Start End Blocks Id System - hd0.img1 * 63 3515903 1757920+ 83 Linux - hd0.img2 3515904 4193279 338688 82 Linux swap / Solaris - -Now take the number of sectors for the beginning of the partition and multiply it by the sector size. My partition starts at sector 63 and I have a sector size of 512 therefore my offset is 32256. For a start at 2048 the ofsset is 1048576. - - # mount -o loop,offset=32256 hd0.img /mnt/diskimage - -## Having QEMU create *virtual FAT disk images* - -[Link to the manual](http://www.nongnu.org/qemu/qemu-doc.html#SEC25). - -QEMU has a facility to create FAT file systems on-the-fly: - - qemu [...] -hdc fat:[somewhere] - -The Hurd [[`fatfs`_translator|translator/fatfs]] currently is read-only, but -for testing executables (etc.) that is enough. And it is much easier than -loop-mounting the file systems images. (Also you don't need `root' rights.) - -However, note that there is a bug in [[translator/fatfs]]: [[!GNU_Savannah_bug -25961]]. - - -# Networking in QEMU - -Some further notes about [[networking]] and home hints about -[[networking/sharing_files]]. - -## Internet Access - -If you just want to access the internet from within QEMU, you can setup pfinet for QEMU's user-networking: - - # settrans -afgp /servers/socket/2 /hurd/pfinet -i eth0 -a 10.0.2.15 -g 10.0.2.2 -m 255.255.255.0 - # echo "nameserver 10.0.2.3" > /etc/resolv.conf - -If you are on [[Debian GNU/Hurd|debian]], you can even use [[debian/DHCP]]. - -To get ssh working: - - # apt-get install random-egd openssh-server (Similarly for telnet if preferred) - -(See also <http://www.nongnu.org/qemu/qemu-doc.html#SEC32>.) - -Outgoing internet connections should just work then. -Testing it can be difficult with a minimal installation, -but `apt-get update` should work after you have filled out -`/etc/apt/sources.list`. -After that you should be able to install other network packages, -but note that `ping` doesn't work with QEMU's user-networking stack. - -If you want to connect from the host system to the Hurd system running in QEMU, you can use port forwarding in QEMU or to setup something more advanced, like bridged networking. - -## Port Forwarding in QEMU -(In the following we assume we use kvm!) - -#### Logging in to Hurd from a terminal in your host system -This is the recommended way to work with a Command Line Interface (CLI) since all your keyboard and locale settings are preserved. - -a) with ssh (assuming you have installed openssh-server) - - $ kvm -m 1024 -net nic,model=rtl8139 -net user,hostfwd=tcp::5555-:22 -hda hd0.img & - -Logging in to the running Hurd: - - $ ssh -p5555 localhost - -Copying files: - - 1) On your host - To Hurd: scp -p -P5555 file localhost: - From Hurd: scp -p -P5555 localhost:file . - 2) On Hurd - To host: scp -p file {10.0.2.2,your_host_ip}: . - From host: scp -p {10.0.2.2,your_host_ip}:file . - -b) with telnet (assuming you have installed a telnet server, like telnetd) - - $ kvm -m 1024 -net nic,model=rtl8139 -net user,hostfwd=tcp::5556-:23 -hda hurd-install.qemu & - -Logging in to the running Hurd: - - $ telnet localhost 5556 - -c) With the tap interface, see below. - -## Bridged Networking - -### What is Needed - -1. Your Linux kernel will need 802.1d Ethernet Bridging support and TUN/TAP device driver support. -2. You will need to install [bridge-utils](http://bridge.sourceforge.net). - - -### Setting Up the Host Bridge - -You need to setup a bridge on the host first. This assumes `eth0` is down. I have modified my hosts network startup scripts to automatically setup a bridge, you may want to do this also. - - # brctl addbr br0 - # ifconfig eth0 0.0.0.0 promisc up - # brctl addif br0 eth0 - -At this point you will need to setup `br0` as you would normally `eth0` (`dhcpcd br0` for example). - -### The qemu-ifup Script - -This script gets called when QEMU starts and will attach the tun device to the bridge. QEMU will look for this file at `/etc/qemu-ifup` and that is where I keep mine. - - #!/bin/sh - sudo ifconfig $1 0.0.0.0 promisc up - sudo brctl addif br0 $1 - - -### Setting up the Network in the Hurd - -Now it is time to start-up your QEMU Hurd system and get networking going in there. - -**Important:** Remember you may need to use the `-M isapc` or `-isa` flag if using an older version of the gnumach package. - - $ qemu -hda hd0.img -cdrom debian-K9-hurd-i386-CD1.iso -fda floppy.img -boot a -net nic -net tap - -Once you have logged in as `root` run the `pfinet` translator with values that apply to your network. Think of your QEMU client as another computer in your network. - - # settrans -fgap /servers/socket/2 /hurd/pfinet -i eth0 -a xxx.xxx.xxx.xxx -g xxx.xxx.xxx.xxx -m xxx.xxx.xxx.xxx - -That should do it! Do not forget to edit/update `/etc/resolv.conf` to get DNS working. - - -# Related Links - -These are links that users may find helpful. - -Debian [[debian/after_install]] -- good source of information pertaining to your -system after installation. - -[[Image_for_L4]] -- a QEMU image for the Hurd/L4 project. - -<http://eyeside.net/hurd/Hurd-on-QEMU.html> diff --git a/hurd/running/qemu/babhurd_image.mdwn b/hurd/running/qemu/babhurd_image.mdwn deleted file mode 100644 index c0952fcf..00000000 --- a/hurd/running/qemu/babhurd_image.mdwn +++ /dev/null @@ -1,67 +0,0 @@ -What this little Hurd image can do ----------------------------------- - -### About this text - -This is the README file accompanying a -[disk\_image](http://draketo.de/dateien/hurd/bab-hurd-qemu-2008-10-29.img.tar.bz2) for -[[running_the_GNU/Hurd_via_qemu|hurd/running/qemu]]. To run the disk image, just use *'qemu -disk_image.img'*. - -You can find the custom *.bashrc* used to tell the user about it as well as this text itself -in the Mercurial repository [hurd_intro](http://bitbucket.org/ArneBab/hurd_intro). - -### Intro - -The Hurd has some unique capabilities, and we created this simple image -to enable you to easily try two of them: - -* The simplest of translators: Hello World! -* Transparent FTP - -### Hello World - -To try out the simplest of translators, you can go the following simple steps: - - $ cat hello - $ setrans hello /hurd/hello - $ cat hello - "Hello World!" - $ settrans -g hello - $ cat hello - -What you do with these steps is first verifying that the file "hello" is empty. - -Then you setup the translator /hurd/hello in the file/node hello. - -After that you check the contents of the file, and the translator returns "Hello World!". - -To finish it, you tell the translator to go away from the file "hello" via "settrans -g hello" and verify that now the file is empty again. - -### Transparent FTP - -We already setup a a transparent FTP translator for you at /ftp: - -With it you can easily access public FTP via the file system, for example the one from the GNU project: - - $ ls /ftp://ftp.gnu.org/ - -But you can also do this very easily yourself: - - $ # Setup the translator on the node ftp: - $ settrans -c ftp: /hurd/hostmux /hurd/ftpfs / - -and you can access FTP sites via the pseudo-directory ftp:, for example with - - $ ls ftp://ftp.gnu.org/ - -What you do here is setting up the translator /hurd/hostmux on ftp: and passing it the translator /hurd/ftpfs to use for resolving accesses as well as / as additional path component. - - -These were only two basic usages of translators on the Hurd. We're sure you'll quickly see many other ways to use this. - -As a last comment: You can setup a translator on any node you have access to, so you can for example mount any filesystems as normal user. - -You might currently be logged in as root, but you could just as well do the same as normal user. - -Why don't you try it out? diff --git a/hurd/running/qemu/discussion.mdwn b/hurd/running/qemu/discussion.mdwn deleted file mode 100644 index 1ce14b01..00000000 --- a/hurd/running/qemu/discussion.mdwn +++ /dev/null @@ -1,144 +0,0 @@ -[[!meta copyright="Copyright © 2005, 2006, 2007, 2008, 2009, 2010, 2011 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 open_issue_documentation]] - -# Using Partitions - -[[IRC]], #hurd, 2007-07-04. - - <azeem-uni> so, is there a way to use a Debian GNU/Hurd partition - (/dev/hda6) with qemu directly? - <tschwinge> Don't dare to do that, please. - <tschwinge> It will lead to inconsistencies. - <tschwinge> Because the Linux kernel thinks that it has complete control - over the disk, or something. - <tschwinge> In theory you could run something like ``-hda /dev/hda'', - having GRUB installed on there to offer you to boot your Hurd system from - hda6 and that will even work, but then don't get the idea to stop qemu, - mount that partition on your Linux system and restart qemu. That's where - I got lots of inconsistencies then, afterwards. - <azeem-uni> it's probably the same problem as having that partition - mounted, suspending to disk, booting into it in the Hurd, and resume - Linux - <neal> right - <tschwinge> That's a different problem. - <tschwinge> Then the partitoon is still mounted. - <neal> no, I think it is basically the same problem - <tschwinge> The file system stuff is cached in the kernel. - <neal> you have data that has not been written to disk yet - <tschwinge> Right. - <neal> and neither is prepared for the resource to be shared - <tschwinge> In the azeem-uni scenarion the data is on the file system layer - and in my scenarion it's some disk block caching inside the Linux kernel, - I guess. - <azeem-uni> anyway, do you guys think if I use -hda /dev/hda and tell Grub - to boot off /dev/hda6, that the rest of hda should be fine, right? - <azeem-uni> maybe adding -snapshot makes it totally safe - <neal> azeem: Should be fine. - <tschwinge> Yes. - -The problem is actually that the linux block cache doesn't make any consistency -between /dev/hda and /dev/hda6, so if you give /dev/hda to qemu, qemu writings -won't be consistent with mounting /dev/hda6 in linux. You can give /dev/hda6 -directly to qemu and it will be fine. - - -# Host-side Writeback Caching - -IRC, freenode, #hurd, 2011-06-07 - - <braunr> hm, i guess i should have used cache=writeback with kvm before - starting the debian installer :/ - <braunr> ah yes, much better - <braunr> this shows how poor the state of our I/O drivers and subsystem is - :/ - <antrik> indeed... still no clustered pageout :-( - <braunr> and no I/O scheduler either - <braunr> although an I/O scheduler has limited value without clustered - pageouts - <braunr> since one of its goals is to pack related I/O requests together eh - <braunr> i wonder if the wiki mentions using cache=writeback to speed up - qemu performances - <braunr> it would help those unable to use kvm a lot - <braunr> and even those running kvm too - <braunr> kvm -m $RAM \ -monitor stdio \ -drive - cache=writeback,index=0,media=disk,file=hd0.img \ - <braunr> etc.. - <braunr> the idea is that qemu doesn't open its disk file synchronously - <braunr> changes are queued in the host page cache before being flushed to - the disk image - <braunr> but if you brutally close your qemu instance, you're likely to - loose file system consistency - <braunr> ext2fs will think it has committed its metadata to the disk, but - the disk image won't be updated synchronously - <braunr> on my machine (which is quite fast), my kvm has installed debian - like 10 times faster than without the option - <antrik> braunr: I don't think killing qemu should hurt in this - case... probably only matters when the host machine dies - <braunr> antrik: ah yes, right - <braunr> it really makes everything faster, even downloading, since I/O - requests aren't interleaved between networking RPCs - <antrik> regarding I/O sheduler... this discussion came up before, but I - don't remember the outcome -- doesn't the glued Linux driver actually - come with one? - <braunr> i don't remember either - <antrik> braunr: err... I don't think interleaving has anything to do with - it... I guess it's simply the fact that downloading writes the result to - disk, which suffers from lacking clustered pageout like everything else - <antrik> (my internet connection is too slow though to notice :-) ) - <braunr> well, if there is no I/O during downloading, downloading is faster - :) - -IRC, freenode, #hurd, 2011-06-08 - - <braunr> youpi: does xen provide disk caching options ? - <youpi> through a blktap, probably - <braunr> ok - -([[microkernel/mach/gnumach/ports/Xen]], *Host-side Writeback Caching*.) - - <braunr> we should find the pages mentioning qemu on the wiki and add the - options to enable disk image caching - <braunr> it really makes the hurd run a lot faster - <braunr> as a workaround for emulators until I/O is reworked, ofc - -IRC, freenode, #hurd, 2011-06-09 - - <gnu_srs> braunr recommends to use writeback caching with kvm. Is this - really recommended with the frequent crashes I experience? - <youpi> provided that you terminate your kvm normaly (i.e. quitting it, not - killing it), there should be no difference - <jkoenig> I think the host's stability is what matters - <jkoenig> the data presumably sits in linux's cache even if qemu dies - violently - <gnu_srs> But the freezes I see force me to kill kvm :-( - <youpi> maybe kvm doesn't even do caching indeed, I don't know - <youpi> gnu_srs: you can quit even when frozen - <youpi> use the console - <youpi> (the kvm console) - <jkoenig> gnu_srs, "Writeback caching will report data writes as completed - as soon as the data is present in the host page cache. This is safe as - long as you trust your host. If your host crashes or loses power, then - the guest may experience data corruption." (from the qemu manpage) - -IRC, freenode, #hurd, 2011-06-11 - - <gnu_srs> braunr: If you are online. For me setting the parameters -drive - cache=writeback,index=0,media=disk,file=hd0.img does not show any speed - improvement at all compared to the default. - <braunr> gnu_srs: what's your complete qemu command line ? - <gnu_srs> kvm -m 1024 -net nic,model=rtl8139 -net - user,hostfwd=tcp::5556-:22 -drive - cache=writeback,index=0,media=disk,file=hd0.img -cdrom netinst.iso - <braunr> what qemu version ? - <gnu_srs> qemu-kvm 0.14.1+dfsg-1: Sorry, I cannot be online until - tomorrow again. diff --git a/hurd/running/qemu/image_for_l4.mdwn b/hurd/running/qemu/image_for_l4.mdwn deleted file mode 100644 index 515f51bc..00000000 --- a/hurd/running/qemu/image_for_l4.mdwn +++ /dev/null @@ -1,376 +0,0 @@ -This page is initially taken from <http://perso.ens-lyon.fr/alexandre.buisse/hurd.html> with the following signature: - -> 04-02-2005 Alexandre Buisse -> -> Send any comments or ameliorations to <Nattfodd@gmailNOSPAM.com> - ----- - -This is a howto on how to get a working image of Hurd/L4 with qemu, on ia32 arch. - -# <a name="1_Floppy_image"> 1. Floppy image </a> - -You will need the following : - -* automake 1.7 (or greater) -* autoconf 2.53 (or greater) -* grub -* the CVS version of hurd-l4, which you can retrieve from the savannah server: `cvs -z3 -d:pserver:anonymous@cvs.savannah.gnu.org:/sources/hurd co hurd-l4` -* two flavours of Pistachio, the L4 kernel, which can be found at <http://www.l4ka.org/projects/pistachio/download.php>. Take the demodisk for ia32 (`pistachio-ia32-0.4-demodisk.bin.bz2`), we'll checkout the CVS later (the 0.4 tarball isn't recent enough). - -We will begin with the hurd itself (these steps are taken from the `README`). - - $ cd hurd-l4 - $ autoreconf -f -i -s - -You shouldn't have any warnings with this autoreconf. If that is not the case, it probably hasn't used the good version of automake or autoconf. For instance, on Gentoo Linux, you must set WANT\_AUTOCONF to 2.5 and WANT\_AUTOMAKE to 1.7. - - $ ./configure --enable-maintainer-mode --prefix=/l4 - $ make - $ make install - $ mkdir /l4/boot - $ install -s laden/laden /l4/boot - $ install -s wortel/wortel /l4/boot - $ install -s physmem/physmem /l4/boot - $ install -s task/task /l4/boot - $ install -s deva/deva /l4/boot - $ install -s ruth/ruth /l4/boot - -Now we'll prepare the Pistachio kernel : - - $ cd .. - $ cvs -d:pserver:guest:guest@cvs.l4ka.org:/public-cvs login - $ cvs -z3 -d:pserver:guest@cvs.l4ka.org:/public-cvs co pistachio - $ cd pistachio - -We must apply some patchs for it to work properly with The Hurd. They are located in `hurd-l4/README`: - - $ patch -p1 < ../hurd-l4/README - -We will first compile sigma0 (and some other tools) : - - $ cd user - $ autoreconf -f -i -s - $ mkdir BUILDDIR - $ cd BUILDDIR - -We need to change the linkbase of sigma0 : - - $ ../configure --with-s0-linkbase=0x40000 --prefix=/l4 - $ make - $ make install - -And now the kernel itself : - - $ cd ../../kernel - -You can use any builddir as long as the directory doesn't yet exist. - - $ make BUILDDIR=/tmp/pistachio-build - $ cd /tmp/pistachio-build - $ vi Makeconf.local - -You should modify the first three lines to : - - ARCH=ia32 - CPU=i586 - PLATFORM=pc99 - -now run: - - $ make menuconfig - -Set the options as they fit you but for qemu to work, you must have the following hardware : - - IA32 Basic Architecture - Pentium1 Processor Type - -You can now: - - $ make - -You should obtain a file named ia32-kernel into your build directory. - - $ cp ia32-kernel /l4/boot - $ cp /l4/libexec/l4/sigma0 /l4/boot - -We now have to modify a little bit the demodisk to use the kernel and servers we just obtained : - - $ mkdir qemu - $ mkdir qemu/image - $ cd qemu - $ cp ~/pistachio-ia32-0.4-demodisk.bin.bz2 . - $ bunzip2 pistachio-ia32-0.4-demodisk.bin.bz2 - $ mount -o loop pistachio-ia32-0.4-demodisk.bin image - $ cd image/boot - $ cp /l4/boot/* . - $ cd grub - $ vi menu.lst - -Your should edit `menu.lst` to make it look like : - - title GNU Hurd on L4 - kernel /boot/laden -D -o serial,uart1,speed=9600 - module /boot/ia32-kernel - module /boot/sigma0 - module /boot/wortel -D -o serial,uart1,speed=9600 - module /boot/physmem - module /boot/task - module /boot/deva - module /boot/task - module /boot/ruth - -The two -D are intended for debug, you can delete them if you want. It is possible that filenames are limited to 8 characters, check your image/boot directory for ia32-kernel. If it has been renamed into ia32-ker, modify the according line in menu.lst - -When you start qemu, you will have two windows : the shell from which you launched it and a VGA window. You can interact with L4 in both windows (switching with the `config/console` command in the debugger). You can choose to have wortel and laden output to the serial device (the shell), which is default behaviour, or to VGA (change `-o serial,urt1,speed=9600` by `-o vga` in your menu.lst). - -The image is now ready : - - $ cd ../../../ - $ umount image - -We can launch qemu: - - $ qemu -dummy-net -serial stdio -fda pistachio-ia32-0.4-demodisk.bin -boot a - -Congratulations, you just booted Hurd/L4 ! To start the Kernel Debugger, press `ESC`. To switch the KDB mode from character (I find it unusable) to command line, type - - > c - /conf> m - -# <a name="2_Disk_Image"> 2. Disk Image </a> - -Everything went fine, and Hurd/L4 should have shown you a nice boot on our floppy image. Our next step will be to make banner run and show us its nice ASCII Art on this brand new OS. - -However, there is one problem : banner linked with the libc weights about 6MB, and we only have a 1.44MB floppy. We will then begin with making an image of a whole hard disk instead of a simple floppy. - -We still will work with qemu, of course, but we'll also use Bochs to install Grub on the image (I have not yet tried with qemu). - -To begin with, some mathematics. We'll make a 30MB image but you can adapt this value to your need. A disk is made of heads, cylinders and sectors (we won't go in detail about what these really mean). A sector has a constant size of 512 bytes and there are at most 255 heads and 63 sectors. The total size of a disk is C \* H \* S \* 512. We'll use the maximum capacity for S and 16 sectors and that will give us how much cylinders we need : C = E(30,000,000 / (16 \* 63 \* 512)) = 58. The exact size of our image will then be : 58 \* 16 \* 63 \* 512 = 29,933,568 bytes and we will have 58 \* 16 \* 63 = 58464 pieces of 512 bytes. - -Let's create it : we use the magic command `dd` on the special device which contain an infinity of 0. - - $ dd if=/dev/zero of=hurd_l4.img bs=512 count=58464 - 58464+0 records in - 58464+0 records out - -We will mount it in loopback : - - $ losetup /dev/loop0 hurd_l4.img - -We need now to have it recognized as a hard disk : - - $ fdisk -u -C58 -S63 -H16 /dev/loop0 - Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel - Building a new DOS disklabel. Changes will remain in memory only, - until you decide to write them. After that, of course, the previous - content won't be recoverable. - - Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite) - - Command (m for help): - -We should create a new primary partition (press: `'n'`, `'p'`, `'1'`, default, default) and toggle it bootable (`'a'`, `'1'`). Now, if you press `'p'`, you should see something like : - - Command (m for help): p - - Disk /dev/loop0: 29 MB, 29933568 bytes - 16 heads, 63 sectors/track, 58 cylinders, total 58464 sectors - Units = sectors of 1 * 512 = 512 bytes - - Device Boot Start End Blocks Id System - /dev/loop0p1 * 63 58463 29200+ 83 Linux - -If everything is fine (especially check the `Start` and `End` fields), you can press `'w'` to write the table on the disk: - - Command (m for help): w - The partition table has been altered! - - Calling ioctl() to re-read partition table. - - WARNING: Re-reading the partition table failed with error 22: Invalid argument. - The kernel still uses the old table. - The new table will be used at the next reboot. - Syncing disks. - -You will have noticed that the partition only starts at the 63rd sector. The beginning of the disk contains the MBR which is used for booting. We must then remount the disk making sure that this part is skipped before formating it. We know that a sector uses 512 bytes so we should begin at 63 \* 512 = 32256 : - - $ losetup -d /dev/loop0 - $ losetup -o32256 /dev/loop0 hurd_l4.img - -Now comes time to format it into a decent filesystem : - - $ mke2fs /dev/loop0 - mke2fs 1.35 (28-Feb-2004) - Filesystem label= - OS type: Linux - Block size=1024 (log=0) - Fragment size=1024 (log=0) - 7328 inodes, 29200 blocks - 1460 blocks (5.00%) reserved for the super user - First data block=1 - 4 block groups - 8192 blocks per group, 8192 fragments per group - 1832 inodes per group - Superblock backups stored on blocks: - 8193, 24577 - - Writing inode tables: done - Writing superblocks and filesystem accounting information: done - - This filesystem will be automatically checked every 22 mounts or - 180 days, whichever comes first. Use tune2fs -c or -i to override. - -We should now be able to mount it the right way : - - $ mkdir mnt - $ losetup -d /dev/loop0 - $ mount -o loop,offset=32256 hurd_l4.img mnt/ - -Here comes grub time (I assume you have the grub files in `/boot/grub` and the `menu.lst` we've obtained in the previous section is in `~/`) : - - $ mkdir -p mnt/boot/grub - $ cp /boot/grub/stage1 /boot/grub/stage2 /boot/grub/e2fs_stage1_5 mnt/boot/grub/ - $ cp ~/menu.lst mnt/boot/grub - -We will make a grub bootimage and boot it with bochs : - - $ cat stage1 stage2 > grubboot.img - -Copy the following into `.bochsrc` (replace the parts in caps by the right info) : - - config_interface: textconfig - display_library: x - romimage: file=/usr/share/bochs/BIOS-bochs-latest, address=0xf0000 - megs: 32 - vgaromimage: /usr/share/bochs/VGABIOS-elpin-2.40 - floppya: 1_44=PATH_TO_YOUR_GRUBBOOT_IMAGE, status=inserted - ata0: enabled=1, ioaddr1=0x1f0, ioaddr2=0x3f0, irq=14 - ata1: enabled=0, ioaddr1=0x170, ioaddr2=0x370, irq=15 - ata0-master: type=disk, path="PATH_TO_YOUR_DISK_IMAGE", cylinders=NUMBER_OF_CYLINDERS, heads=16, spt=63 - newharddrivesupport: enabled=1 - boot: a - - log: /dev/stdout - panic: action=ask - error: action=report - info: action=report - debug: action=ignore - debugger_log: - - com1: enabled=1, dev=/dev/ttyS0 - vga_update_interval: 300000 - keyboard_serial_delay: 250 - keyboard_paste_delay: 100000 - floppy_command_delay: 500 - ips: 1000000 - mouse: enabled=0 - private_colormap: enabled=0 - fullscreen: enabled=0 - screenmode: name="sample" - keyboard_mapping: enabled=0, map=/usr/share/bochs/keymaps/x11-pc-fr.map - i440fxsupport: enabled=0 - -And start Bochs with this configuration : - - $ bochs -qf .bochsrc - -When asked, choose `5. begin simulation`. It is possible that you enter first into a debugger, answer `'c'` to make it continue. You should see a grub commandline. Tell it to install grub on the disk : - - grub> root (hd0,0) - Filesystem type is ext2fs, partition type 0x83 - - grub> setup (hd0) - Checking if "/boot/grub/stage1" exists... yes - Checking if "/boot/grub/stage2" exists... yes - Checking if "/boot/grub/e2fs_stage1_5" exists... yes - Running "embed /boot/grub/e2fs_stage1_5 (hd0)"... 15 sectors are embedded. succeeded - Running "install /boot/grub/stage1 (hd0) (hd0)1+15 p (hd0,0)/boot/grub/stage2/boot/grub/menu.lst"... succeeded. - Done. - -Quit by pressing `^C q` in the shell from which you launched bochs. Our image is now ready. Copy all the releving files in `mnt/boot` like for the floppy and then umount it and launch qemu : - - $ cp /l4/boot/* mnt/boot/ - $ umount mnt - $ qemu -serial stdio -dummy-net -hda hurd_l4.img -boot c - -# <a name="3_Running_Banner"> 3. Running Banner </a> - -Still under construction but you should have no problems following `hurd-l4/libc/README` now that the hdd image works. - ----- - --- [[Main/OgnyanKulev]] - 05 Feb 2005 - -I didn't bother to licence it as it is so small, but consider it is under some sort of creative commons that allows redistribution and modification. <br /> -- Alexandre Buisse < <nattfodd@gmailNOSPAM.com> > - --- [[Main/JoachimNilsson]] - 05 Feb 2005 - -Comments from Marcus Brinkmann: - -> Thanks a lot for that. Some comments: -> -> $ ../configure --with-s0-linkbase=0x40000 --prefix=/l4 -> -> I'd recommend to explain how to use `--without-com0` here (or whatever it is called, don't remember) to choose VGA output, or how to configure the serial port. If you use vga, no `-o` option to laden and wortel should be used so you get all output on vga (but of course you can also mix it, whatever you want). -> -> Serial 1 is currently going to be used for remote debugging of userland apps. -> -> QEMU supports up to four serial ports, I use: `-serial stdio` and `-serial pty` and then I get the debugging output and kernel debugger in the terminal I started qemu in, and can use the pty for remote debugging with gdb (the latter doesn't work yet). -> -> Next: -> -> You should modify the first three lines to : -> ARCH=ia32 -> CPU=i586 -> PLATFORM=pc99 -> -> I never did that. I did change the menu item Processor Type to Pentium1 though. Maybe it has the same effect (and then your document would be a bit redundant here). -> -> Somebody should at some point document all those menu options, some are quite useful for debugging! -> -> Thanks, Marcus - --- [[Main/OgnyanKulev]] - 05 Feb 2005 - -I've been doing this sort of thing (See also `info grub` for making bootable eltorito grub cd ISOs): - - $ cd /usr/src/controlled/qemu-images - $ ls -R l4 - ls -R l4 - l4: - boot deva ia32-kernel laden physmem sigma0 task wortel - - l4/boot: - grub - - l4/boot/grub: - menu.lst stage2_eltorito - - $ cd /usr/src/controlled/qemu-images # dir above "l4" dir. - $ mkisofs -R -b boot/grub/stage2_eltorito -no-emul-boot \ - -boot-load-size 4 -boot-info-table \ - -o /usr/src/controlled/qemu-images/l4.iso l4 - - $ qemu -boot d -cdrom /usr/src/controlled/qemu-images/l4.iso - --- [[Main/DerekDavies]] - 07 Feb 2005 - -You don't need a compiler targeting the Hurd. The above works with a compiler targeting Linux which are quite a bit easier to find. By adding "--target=i686-unknown-linux-gnu" to my configure line, I was able to cross compile hurd-l4 from Cygwin. - --- [[Main/MichaelAdams]] - 22 Feb 2005 - -A bootable CD iso image is now available at <http://gnuppix.org> - --- [[Main/ChristopheDevine]] - 03 Mar 2005 - -Included the anonymous password in the CVSROOT for L4. - --- [[Main/NowhereMan]] - 19 Mar 2005 - -I was able to use qemu instead of bochs to install grub on the new disk image. Just use: - - qemu -dummy-net -serial stdio -fda grubboot.img -hda hurd_l4.img -boot a - -and then the commands to type in the grub shell are the same. - --- [[Main/MatteoSettenvini]] - 05 May 2005 diff --git a/hurd/running/qemu/microsoft_windows.mdwn b/hurd/running/qemu/microsoft_windows.mdwn deleted file mode 100644 index 832b4bef..00000000 --- a/hurd/running/qemu/microsoft_windows.mdwn +++ /dev/null @@ -1,52 +0,0 @@ -[[!meta copyright="Copyright © 2007, 2008 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]]."]]"""]] - -Welcome, This document is for getting you started in a few minutes. - -1. Install Qemu for Windows - - The executable can be downloaded from - <http://free.oszoo.org/ftp/qemu/win32/release/> Doble click on the - installer and follow the instructions. - -2. Obtain Qemu image - - * Debian GNU/Hurd qemu image can be downloaded from - <http://www.numenor.art.pl/balrog/hurd/>, but also see the main - [[QEMU]] page. - * Uncompress the image and rename it to debian-hurd-for-qemu.img (.img is - the only thing that matters, you can chose any name) Note: .img is for - QEMUMenu.bat, which saves you from remembering the command line options - of qemu and helps you change the settings (like chosing different - images, allocating RAM for the guest OS ...) interactivly. - * Copy this file to the directory where you installed Qemu. - -3. Start Qemu - - Double click the QEMUMenu.bat and enter the number to chose between images. - -4. Qemu short cuts - - * ctrl alt - to exit grab from qemu, get mouse cursor out from the qemu - window - * ctrl alt f - full screen - * ctrl alt 2 - qemu contrl console, use this to change devices - (eg. changing cdrom), send keys to the guest (for example if you want - to send ctrl alt del to the guest type "sendkey ctrl-alt-del" ... type - "help" for a listing of all the options. - * ctrl alt 1 - Hurd login console - -## QEmu Image Hangs on Boot -The Debian GNU/Hurd K16 QEmu image hangs during the boot process. You may have better luck by converting the image to qcow format - - ..\qemu-0.9.0-x86\qemu-img.exe convert debian-hurd-k16-qemu.img -O - qcow debian-hurd-k16-qemu.qcow - ..\qemu-0.9.0-x86\qemu.exe -L ..\qemu-0.9.0-x86 -m 512 -hda - debian-hurd-k16-qemu.qcow -localtime -M pc diff --git a/hurd/running/qemu/networking.mdwn b/hurd/running/qemu/networking.mdwn deleted file mode 100644 index 2bc9b16d..00000000 --- a/hurd/running/qemu/networking.mdwn +++ /dev/null @@ -1,43 +0,0 @@ -[[!meta copyright="Copyright © 2007, 2008 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]]."]]"""]] - -## User mode network - -This is the default networking option for qemu. This does not require root -previleges. If you have DHCP running it will take the ip as 10.0.2.15 - -You can setup an ip 10.0.2.* -Gateway is 10.0.2.2 -Name server is 10.0.2.3 -Netmask is 255.255.255.0 - -You can setup the pfinet translator with the command - - $ settrans -fgap /servers/socket/2 /hurd/pfinet -i eth0 -a 10.0.2.15 -g 10.0.2.2 -m 255.255.255.0 - -Configure nameserver in /etc/resolve.conf - - nameserver 10.0.2.3 - -Setup a proxy with the command - - $ export http_proxy="http://<proxy.com>:<port>" - -Note: you can add this to your /etc/profile file so that every time you don't -have to setup this. - -If you are using a direct connection to internet install a proxy server on the -host os and use this. (I was not able to use it without proxy) - -You might be able to do it using iptables, some clues -<http://sujith-h.livejournal.com/9520.html> - -Use scp,ftp... to transfer files (also see -[[hurd/running/debian/faq#index2h1]]), read about [[sharing_files]]. diff --git a/hurd/running/qemu/networking/sharing_files.mdwn b/hurd/running/qemu/networking/sharing_files.mdwn deleted file mode 100644 index 5bdec5f1..00000000 --- a/hurd/running/qemu/networking/sharing_files.mdwn +++ /dev/null @@ -1,38 +0,0 @@ -[[!meta copyright="Copyright © 2007, 2008 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]]."]]"""]] - -# SCP - -Setup OpenSSH server on host system. - -* Copying files from Guest to Host - - $ scp <file> <user>@<host>: - -* Copying files from Host to Guest. - - $ scp <user>@<host>:<file> - -Use scp -r for copying directories. - - -# FTP - -Setup ftp server (like proftpd) on the host. - -* Use ftp client from GNU inetutils - - $ ftp <host> - - Use mget to copy files from host and mput to copy files to the host. - -* The GNU way - setup an ftp translator - - $ settrans -ac ftp/<host> /hurd/ftpfs <username>:<password>@<host>:<path> diff --git a/hurd/running/virtualbox.mdwn b/hurd/running/virtualbox.mdwn deleted file mode 100644 index f57fcbc3..00000000 --- a/hurd/running/virtualbox.mdwn +++ /dev/null @@ -1,46 +0,0 @@ -[[!meta copyright="Copyright © 2011 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]]."]]"""]] - -[[!meta title="VirtualBox"]] - -<http://www.virtualbox.org/> - - -# Installation - -The disk controller has to be configured as IDE. Neither SATA nor SCSI are -supported. - -The network controller should be configured as PCnet-PCI II or PCNet-FAST III -for instance. INTEL PRO or Paravirtualized Network do not work. - - -## Converting from qemu image - -It is possible to convert qemu raw image to one of the formats recognized by VirtualBox, namely vdi format. - -If you are not sure if the image is a raw format, use qemu to get the information: - - qemu-img info debian-hurd-original.img - -To convert the image you need the VirtualBox package properly installed with a VBoxManage tool (which is part of the package). Convert image from raw to vdi: - - VBoxManage convertfromraw debian-hurd-original.img debian-hurd-converted.vdi --format VDI - - -# Performance - -If [[QEMU with KVM|qemu]] is not available, VirtualBox reportedly has better -performance. - -IRC, freenode, #hurd, 2011-10-31: - - <youpi> I don't know what virtualbox does with hardware emulation, but - gnumach is awfully slow to probe things there diff --git a/hurd/running/vmware.mdwn b/hurd/running/vmware.mdwn deleted file mode 100644 index 1f99e247..00000000 --- a/hurd/running/vmware.mdwn +++ /dev/null @@ -1,56 +0,0 @@ -[[!meta copyright="Copyright © 2007, 2008 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]]."]]"""]] - -## Installation - -Use <http://www.easyvmx.com/> web based tool to create vmx configuration files -which can be used with VMware player (which is a freeware). If you have a -VMware workstation or server you don't have to do this step. - -Note: I have tried it with K10 version of Debian GNU/Hurd on VMware running on -a Debian GNU/Linux machine. - -You can get more information about obtaining Debain GNU/Hurd CDROMS from -<http://www.us.debian.org/ports/hurd/hurd-cd>. - -Insert the first cdrom and proceed with the installation as per the -installation guide <http://www.us.debian.org/ports/hurd/hurd-install>. - -## VMware specific notes: - -You will need a grub floppy image to boot GNU/Hurd. I have attached a copy of -it with this document. You can also download it from here -<http://www.update.uu.se/~ams/home/slask/GNU/grub.img>. - -When you reboot the machine after the base tar ball is extracted (first reboot) -press 'Esc' key while VMware start up and set removable devices as the fisrt -boot device. - -Select "GNU (Also known as GNU/Hurd)" ie, the first option and press 'e' to -edit the grub menu and go to second line and press 'e' again to change -/boot/gnumach to /boot/gnumach.gz. - -Add a link to /boot/gnumach from /boot/gnumach.gz so that you don't have to -edit grub every time you boot. - - # ln -s /boot/gnumach.gz /boot/gnumach - -Or mount the floppy image and change it. - - # mkdir /media/floppy - # mount -o loop <path-to-grub.img> /media/floppy - -Edit /media/floppy/boot/grub/menu.lst with your favorite text editor and change -/boot/gnumach to /boot/gnumach.gz. - -## After install tweaks - -Start using GNU, here is -<http://www.gnu.org/software/hurd/users-guide/using_gnuhurd.html>. diff --git a/hurd/settrans.mdwn b/hurd/settrans.mdwn deleted file mode 100644 index 5b381090..00000000 --- a/hurd/settrans.mdwn +++ /dev/null @@ -1,37 +0,0 @@ -[[!meta copyright="Copyright © 2002, 2004, 2005, 2007, 2008 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]]."]]"""]] - -The `settrans` command is used to attach a [[translator]] (server) to a given -[[file_system_node|virtual_file_system]]. - -`settrans` is commonly used like this: - - $ settrans -fgap *NODE* *TRANSLATOR SETTING* - - * `fg`, **f**orce any existing translator to **g**o away from that node. - * `ap`, start an ***a**ctive translator*, and also establish a ***p**assive - translator* setting. - -*Active translator* means that the operating system starts the translator -immediately and *passive translator* in turn means that the settings are -instead saved in the file system node, and then, when programs access the node -by, for example, sending an [[RPC]], the Hurd will transparently start the -server to handle the request. - - -Help on settrans can be obtained by passing it the `--help` option. - -Likewise, help on a specific translator can be gotten by invoking it from the -command line with the same argument, e.g.: - - $ /hurd/pfinet --help - -As there can be a lot of output, consider piping this through a pager. diff --git a/hurd/settrans/discussion.mdwn b/hurd/settrans/discussion.mdwn deleted file mode 100644 index c9ec4d34..00000000 --- a/hurd/settrans/discussion.mdwn +++ /dev/null @@ -1,18 +0,0 @@ -[[!meta copyright="Copyright © 2011 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 open_issue_documentation open_issue_hurd]] - - -# IRC, freenode, #hurd, 2011-06-01 - - <antrik> ugh... I just realized why settrans -a without -f doesn't - generally work on filesystem translators - <antrik> obviously, it needs -R too! diff --git a/hurd/status.mdwn b/hurd/status.mdwn deleted file mode 100644 index dd67a4c2..00000000 --- a/hurd/status.mdwn +++ /dev/null @@ -1,112 +0,0 @@ -[[!meta copyright="Copyright © 2001, 2002, 2007, 2008, 2009, 2010, 2011, 2012 -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]] - -The Hurd, together with the GNU Mach microkernel, the GNU C Library -and the other GNU and non-GNU programs in the GNU system, provide a -rather complete and usable operating system today. It may not be ready -for production use, as there are still some bugs and missing features. -However, it should be a good base for further development and -non-critical application usage. - -[[!img hurd-fvwm-screenshot-2009-11-12.png size=300x -alt="FVWM and Gnumeric running on GNU/Hurd" -title="FVWM and Gnumeric running on GNU/Hurd" -align="right" -]] The GNU system (also called GNU/Hurd) is completely self-contained -(you can compile all parts of it using GNU itself). You can run -several instances of the Hurd in parallel, and debug even critical -servers in one Hurd instance with gdb running on another Hurd -instance. You can run the X window system, applications that use it such as -gnumeric, iceweasel, and advanced server applications like the Apache webserver. - -On the negative side, the support for character devices (like sound -cards) and other hardware is mostly missing. Although the [[POSIX -interface|faq/posix_compatibility]] is provided, some additional interfaces -like POSIX shared -memory or semaphores are still under development. - -All this applies to the current development version, and not to the -last release (0.2). We encourage everybody who is interested to try -out the current development version, and send feedback to the Hurd -developers. - -The Hurd team doesn't create Hurd-only releases, but instead relies on -the distributions done by folks from *Debian*, *Arch* (since 2010), and *Nix* -(since 2012). - -[[!img hurd-iceweasel-screenshot-2012-03-21.png size=300x -alt="Iceweasel running on GNU/Hurd" -title="Iceweasel running on GNU/Hurd" -align="right" -]] -[[Debian GNU/Hurd|running/debian]] closely tracks the progress of the Hurd (and -often includes new features). They offer *LiveCDs and QEMU images* to -test-drive the Hurd, and about 75% of the Debian software archive are -available. The most recent version of the Debian GNU/Hurd port at the time of -writing was published on 2012 February 21st. - -[[hurd/running/Arch_Hurd]] offers *LiveCDs* for testing and installation. - -[[hurd/running/Nix]] provides QEMU images. - -That said, the last official release of the Hurd -without the Debian parts was 0.2 done in 1997. - -New official releases will be done, as soon as -the Hurd is sufficently stable and feature -complete. If an official release of the Hurd were made -now, people would try the Hurd and be disappointed. People -already expect delays; to disappoint them in this way as -well would be unfortunate. Moreover, it would lessen the -possibility that they would want to try the Hurd again in the future. - - -## Usability Reports - -### Olaf Buddenhagen, 2009-06-09 - -> I have been using the Hurd for most of my everyday work for some two -> years now. Most of the time it's pretty OK, but occasionally programs -> crash, or the screen session dies, or even the whole system. Also, -> various programs simply don't work at all, or don't work in certain -> situations. -> -> While I have learned to work around many of these issues, I don't -> believe I would be able to use it as my primary system, without having a -> GNU/Linux system running in parallel, as a fallback for all the stuff -> that doesn't work on the Hurd. -> -> My everyday work includes reading/writing email and other texts, preparing and giving -> presentations, text-mode web browsing, viewing pictures, IRC, reading -> PDF documents, programming, and various other random stuff... -> -> [...] -> -> One particular problem for desktop use is the fact that while X does -> work, it works very poorly -- it's not only slow and jerky all the time, -> but also tends to lock up completely. (At least with the local socket -> transport... Haven't tried whether forcing TCP works better.) -> -> Note that while many of the stability problems are simply bugs to fix, -> the system will still be very fragile in the absence of these -- a -> simple port leak is sufficient to kill it within seconds. This is -> something that can't be easily solved. Properly fixing this will require -> a sound resource accounting framework, i.e. very fundamental changes to -> the system... Though I tend to believe that it could be improved at -> least partially, at the expense of flexibility, by enforcing certain -> fixed limits on users, processes etc. like other UNIX systems do. -> -> [...] -> -> [But] unlike a few years back [...] the system is stable enough under -> load nowadays [...]. diff --git a/hurd/status/hurd-fvwm-screenshot-2009-11-12.png b/hurd/status/hurd-fvwm-screenshot-2009-11-12.png Binary files differdeleted file mode 100644 index 445abf32..00000000 --- a/hurd/status/hurd-fvwm-screenshot-2009-11-12.png +++ /dev/null diff --git a/hurd/status/hurd-iceweasel-screenshot-2012-03-21.png b/hurd/status/hurd-iceweasel-screenshot-2012-03-21.png Binary files differdeleted file mode 100644 index 7dcc6d59..00000000 --- a/hurd/status/hurd-iceweasel-screenshot-2012-03-21.png +++ /dev/null diff --git a/hurd/subhurd.mdwn b/hurd/subhurd.mdwn deleted file mode 100644 index b8e595d3..00000000 --- a/hurd/subhurd.mdwn +++ /dev/null @@ -1,187 +0,0 @@ -[[!meta copyright="Copyright © 2007, 2008, 2010, 2011 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]]."]]"""]] - -A sub-Hurd is like a [[neighbor_Hurd|neighborhurd]], however, makes use of some -resources provided by another Hurd. For instance, backing store and the -console. - -Sub-hurds are extremely useful for debugging core servers as it is possible to -attach to them with gdb from the parent -([[debugging_via_subhurds|debugging/subhurd]]). This avoids deadlock, e.g., -when the instance of gdb stops the server but requires its use. (Note: it is -possible to use [[debugging/gdb/noninvasive_debugging]], but this is less -flexible.) Vice versa, it is also possible to use a subhurd to debug the -*main* Hurd system, for example, the latter's root file system. - -[[!toc levels=2]] - - -# Howto - -## Preparing - -To run a subhurd, you need an additional partition with an installed Hurd -system. In principle, you can also use your main partition in read-only mode; -but this obviously will create severe limitations. Usually, you will want a -complete independant system. - -The system for the subhurd is a normal Hurd installation, which could just as -well run standalone. You can use any of the various possible installation -methods, or reuse an existing installation if you already have several. If -using [[Debian_GNU/Hurd|running/debian]], the easiest is probably to use -[[running/debian/crosshurd]], which you can run directly from your main Hurd to -set up another Hurd on a different partition, without ever rebooting. (You can -run the `native-install` step from a chroot or already in a subhurd.) - - -## Booting - -To boot the subhurd, you need a boot script. For historical reasons, usually -`/boot/servers.boot` is used. (Originally, this was also used to boot the main -Hurd, using "serverboot". Nowadays, this isn't used for the main boot anymore, -as GRUB can directly load all the necessary modules.) - -However, the canonical `/boot/servers.boot` file is no longer distributed with -[[Debian_GNU/Hurd|running/debian]]. Here is a slightly adopted version: - - # Boot script file for booting GNU Hurd. Each line specifies a file to be - # loaded by the boot loader (the first word), and actions to be done with it. - - # First, the bootstrap filesystem. It needs several ports as arguments, - # as well as the user flags from the boot loader. - /hurd/ext2fs.static --bootflags=${boot-args} --host-priv-port=${host-port} --device-master-port=${device-port} --exec-server-task=${exec-task} -Tdevice ${root-device} $(task-create) $(task-resume) - - # Now the exec server; to load the dynamically-linked exec server program, - # we have the boot loader in fact load and run ld.so, which in turn - # loads and runs /hurd/exec. This task is created, and its task port saved - # in ${exec-task} to be passed to the fs above, but it is left suspended; - # the fs will resume the exec task once it is ready. - /lib/ld.so.1 /hurd/exec $(exec-task=task-create) - - ## default pager - #/dev/sd0b $(add-paging-file) - -/!\ It's very important not to introduce spurious line breaks, so be very -careful when copying! All the options following `ext2fs.static` have to be on -a single line. - -Now actually booting the subhurd is a simple matter of issuing (as root): - - boot servers.boot /dev/hd0s6 - -(Replace `hd0s6` by the name of your partition for the subhurd.) - -/!\ The partition must be unmounted (or mounted read-only) before you boot from -it! - -(In theory it shouldn't be neccessary to run the subhurd as user `root`, but in -practice [that doesn't work at the -moment](http://savannah.gnu.org/bugs/?17341).) - -Now the subhurd should boot just like a normal Hurd started directly from GRUB, -finally presenting a login prompt. The `boot` program serves as proxy for the -subhurd, so you can control it from the terminal where you issued the boot -command. - -To exit the subhurd, issue `halt` or `reboot`. This should exit it cleanly, -but for some reason it doesn't always work; sometimes it will output various -errors and then hang. If that happens, you need to kill the subhurd processes -manually from a different terminal. - - -## Using - -In the subhurd, you can do basically all the same things as in the main Hurd. - -You can even set up networking: Just invoke `settrans` on the -`/servers/socket/2` as usual inside the subhurd, only using a different local -IP than in the main Hurd. This way, the subhurd will be able to communicate to -the outside world with its own IP -- allowing for example to do `apt-get` -inside the subhurd, or to `ssh` directly into the subhurd. - -If you want to access the subhurd processes from the outside, e.g. for -[[debugging_purposes|debugging/subhurd]] (or to get rid of a subhurd that -didn't exit cleanly...), you need to find out how main Hurd [[PID]]s correspond to -subhurd processes: the subhurd processes appear in the main Hurd (e.g. if doing -`ps -e`) as unknown processes, and vice versa, but the [[PID]]s are different! To -find out which process is which, you can simply compare the order -- while the -numbers are different, the order should usually match. Often it also helps to -look at the number of threads (e.g. using `ps -l`), as many servers have very -characteristic thread counts. - - -# Further Info - -Read about using a subhurd for [[debugging_purposes|debugging/subhurd]]. - -Roland's tutorial about [[running_a_subhurd]]. - - -# Use Cases - -<a name="debugging_main_hurd_system"></a> -## Debugging the *Main* Hurd System - -A subhurd can be used for debugging the *main* Hurd system. This works as long -as the subhurd doesn't use any services provided by the main Hurd. For -example, if you already have a subhurd running at the time it happens, you can -use that one to debug a deadlocked [[translator/ext2fs]] root file system in -the *main* Hurd. - -For this, you need to get a handle to the main Hurd's [[ext2fs -translator|translator/ext2fs]]'s [[PID]], but this is no problem, as currently -[[PID]]s are visible across subhurd boundaries. (It is a [[!taglink -open_issue_hurd]] whether this is the right thing to do in -[[open_issues/virtualization]] contexts, but that's how it currently is.) - - -<a name="unit_testing"></a> -## Unit Testing - -freenode, #hurd channel, 2011-03-06: - -From [[open_issues/unit_testing]]. - - <youpi> it could be interesting to have scripts that automatically start a - sub-hurd to do the tests - <youpi> though that'd catch sub-hurd issues :) - <foocraft> so a sub-hurd is a hurd that I can run on something that I know - works(like linux)? - <foocraft> Virtual machine I would think - <foocraft> and over a network connection it would submit results back to - the host :p - * foocraft brain damage - <youpi> sub-hurd is a bit like chroot - <youpi> except that it's more complete - <foocraft> oh okay - <youpi> i.e. almost everything gets replaced with what you want, except the - micro-kernel - <youpi> that way you can even test the exec server for instance, without - risks of damaging the host OS - <foocraft> and we know the micro-kernel works correctly, right youpi? - <youpi> well, at least it's small enough that most bugs are not there - <foocraft> 1) all tests run in subhurd 2) output results in a place in the - subhurd 3) tester in the host checks the result and pretty-prints it 4) - rinse & repeat - <youpi> the output can actually be redirected iirc - <youpi> since you give the sub-hurd a "console" - <foocraft> youpi, yup yeah, so now it's more like chroot if that's the case - <youpi> it really looks like chroot, yes - <foocraft> but again, there's this subset of tests that we need to have - that ensures that even the tester running on the subhurd is valid, and it - didn't break because of a bug in the subhurd - <tschwinge> As long as you do in-system testing, you'll always (have to) - rely on some functionality provided by the host system. - <foocraft> the worst thing that could happen with unit testing is false - results that lead someone to try to fix something that isn't broken :p - <tschwinge> Yes. - <youpi> usually one tries to repeat the test by hand in a normal - environment diff --git a/hurd/subhurd/discussion.mdwn b/hurd/subhurd/discussion.mdwn deleted file mode 100644 index 3449edcd..00000000 --- a/hurd/subhurd/discussion.mdwn +++ /dev/null @@ -1,69 +0,0 @@ -[[!meta copyright="Copyright © 2011 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 open_issue_documentation]] - -IRC, freenode, #hurd, 2011-08-10 - - < braunr> youpi: aren't sub-hurds actually called "neighbor hurds" ? - < youpi> no idea - < braunr> i also don't understand the recursive property - < youpi> a user can run a subhurd - < neal> braunr: What don't you understand? - < youpi> a user in a subhurd can run a subhurd - < youpi> etc - < braunr> i'm not sure it's really recursive - < neal> youpi: At some point it was observed that you don't strictly - require any resources from the "parent" Hurd. - < neal> youpi: i.e., you could have two Hurds running "directly" on Mach - < youpi> sure - < neal> youpi: Hence neighbor rather than sub - < youpi> but you need to be root for that - < youpi> or else your subhurd can't do much - < neal> you need to have been authorized to use the required resouces - < youpi> which is about the same :) - < neal> depends how they are delegated - < youpi> that's still asking root for something - < neal> if you say so - < youpi> which is most probably not the default - < braunr> well, either you depend on the parent to do things on your - behalf, or you directly have some privileged ports - < braunr> i'd agree with youpi that it's pretty much having root access at - some point - < youpi> and usually you don't have privileged ports by default :) - < braunr> but we don't need to restrict the presentation to user only sub - hurds - < braunr> people don't mind switching to root on their desktops - < braunr> which is one of the reasons they ask "what does the hurd really - bring me today ?" - < braunr> but being able to run truely separate hurds or recursive hurds is - something nice most OSes can't do easily - < youpi> switching to root becomes a *pain* when you have to do it 1 every - two commands - < braunr> yes sure, but some people might just say you're clumsy :x - < neal> The question is: can I start a sub-hurd from within another hurd - that survives the parent's hurd exiting? The answer is yes. The reason - is that the sub-hurd can be constructed in such a way that it does not - rely on the parent. In this case, the parent does not necessarily - subjugate the sub-hurd. Hence the name. - < braunr> but that's out of the scope of the discussion - < antrik> using the traditional, root only mechanism, neighbour-hurd is - indeed a more appropriate term. apart from the initial terminal being - proxied to the parent system by the boot program, they are really equal - < antrik> with zhengda's work on non-root subhurds, you rely on various - proxies in the parent system to access privileged resources; so subhurd - is indeed a more appropriate term in this case - < antrik> (not only non-root subhurds in fact... when using any of the - proxies, such as the network multiplexer -- even if still running as - root...) - < youpi> antrik: you could still give a com0 port as terminal - < antrik> I don't think that's actually supported in the boot - program... but it doesn't really matter, as you don't really need the - terminal anyways -- you can always log in through the network diff --git a/hurd/subhurd/running_a_subhurd.mdwn b/hurd/subhurd/running_a_subhurd.mdwn deleted file mode 100644 index f337108e..00000000 --- a/hurd/subhurd/running_a_subhurd.mdwn +++ /dev/null @@ -1,42 +0,0 @@ -[[!meta copyright="Copyright © 1998, 1999, 2007, 2008 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]]."]]"""]] - -[[!meta title="Running a Subhurd"]] - -By Roland McGrath. - -The most useful thing you can do when trying to troubleshoot the boot -sequence of the Hurd is try to run your the system in a -sub-hurd, while watching it using ps and gdb from the working hurd. Since -the sub-hurd is never going to make it all the way up, you don't even -really need to make a separate filesystem for it; you can just boot the -sub-hurd read-only on your main root filesystem if you like. - -The way to boot the sub-hurd is with `boot`. I would suggest something -like this: - - boot -d -I -Tdevice /boot/servers.boot hd0s6 - -The -d says to pause before the start-up of each server and wait for you to -hit return, which gives you time to go attach gdb to the task before it -starts running. The -I says to leave the terminal signals normal, so -hitting C-z will suspend boot rather than sending a C-z to the virtual -console device of the sub-hurd. (Note that suspending boot does not -suspend the sub-hurd, just boot itself; boot acts as the server for device -access from the sub-hurd, so the sub-hurd's attempts to write to its -console or open devices block while boot is suspended.) - -When you do `ps -A` on the main hurd, the sub-hurd tasks will appear as -unknown processes. You can figure out which is which just by looking at -the order of unknown processes that appear with higher PIDs than the boot -process. They appear in the order you see in the "bootstrap: ..." -messages, i.e. the first unknown after boot will be ext2fs.static, the -second exec, then init, then proc. diff --git a/hurd/syncfs.mdwn b/hurd/syncfs.mdwn deleted file mode 100644 index 9f329b4b..00000000 --- a/hurd/syncfs.mdwn +++ /dev/null @@ -1,17 +0,0 @@ -[[!meta copyright="Copyright © 2009, 2011 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]]."]]"""]] - -`syncfs` is a tiny wrapper around the [[`file_syncfs` -RPC|interface/file_syncfs]]. - -Its functionality should me merged into GNU coreutils' `sync` program, see -[[!GNU_Savannah_task 6614]][[!tag open_issue_hurd open_issue_porting]]. - -There is a [[!FF_project 270]][[!tag bounty]] on this task. diff --git a/hurd/toolchain.mdwn b/hurd/toolchain.mdwn deleted file mode 100644 index 91d49b2c..00000000 --- a/hurd/toolchain.mdwn +++ /dev/null @@ -1,11 +0,0 @@ -[[!meta copyright="Copyright © 2010 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]]."]]"""]] - -[[!meta redir=/toolchain]] diff --git a/hurd/translator.mdwn b/hurd/translator.mdwn deleted file mode 100644 index d504b41f..00000000 --- a/hurd/translator.mdwn +++ /dev/null @@ -1,165 +0,0 @@ -[[!meta copyright="Copyright © 2007, 2008, 2009, 2010, 2011, 2012 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]] - -[[!toc]] - - -# General Information - -A translator is simply a normal program acting as -an object server and participating in the Hurd's -distributed [[virtual_file_system]]. It is so-called -because it typically exports a file system -(although need not: cf. [[auth]], [[proc]] -and [[pfinet]]) and thus translates object invocations -into calls appropriate for the backing store -(e.g., ext2 file system, nfs server, etc.). - -Another way of putting it is that it translates from one representation of a -data structure into another representation, for example from the on-disk -[[ext2|ext2fs]] data layout to a traditional file system hierarchy, or from a -XML file to a virtual hierarchical manifestation. This translation can be a -bidirectional process, but it need not be. - -A translator is usually registered with a specific file system node by using -the [[`settrans`|settrans]] command. - -Translators do not require any special privilege -to run. The privilege they require is simply -that to access the indiviudal resources they use. -This is primarily the [[backing_store]] and the node -they attach to. Typically, a translator can -only be attached to a node by the node's owner. -On [[Unix]] this is not possible because file systems -and the virtual file system are implemented in the -kernel and thus have absolute access to the machine. -As the protocols do not require any special privilege -to implement, this is not an issue on the Hurd. - -In Mach parlance, a *translator* is what they name a *server*: a process that -participates in [[RPC]] interactions. In the Hurd, a translator is a server -that is additionally attached to a filesystem node. Thus, it is quite common, -even in the Hurd context, to speak about *server*s if you're stressing the RPC -part, and on the other hand about *translator*s if you're stressing the -filesystem part: a translator implements the [[interface/fs]] and -[[interface/io]] interfaces. For example: *the [[pfinet]] server implements -the socket API calls (which are mapped by [[glibc]] to equivalent RPC calls)*, -compared to *a [[libdiskfs]]-based translator implements a filesystem, based on -a backing store*. - -To learn how to write a translator, read the code! -It is well documented, in particular, the header files. -The [[Hurd_Hacking_Guide]] also has a tutorial. - -Also there is an [[writing/example]] about how to write a simple translator. - -See some [[examples]] about how to use translators. - -There is a [[documentation/translator_primer]]. - -Marcus Brinkmann has written a document about [[documentation/translators]]. - -Here are some [[hints_about_debugging_translators|debugging/translator]] -available. - -Read about translator [[short-circuiting]]. - -The [[concept|concepts]] of translators creates its own problems, too: -[[open_issues/translators_set_up_by_untrusted_users]], and -[[open_issues/trust_the_behavior_of_translators]]. - - -# Existing Translators - -* [[hello]] -* [[auth]] -* [[exec]] -* [[pfinet]] -* [[pflocal]] -* [[hostmux]] -* [[storeio]] -* [[ext2fs]] -* [[fatfs]] -* [[magic]] -* [[unionfs]] -* [[nfs]] -* ... - - -# Translators Being Under Development - -* [[random]] -* [[emailfs]] -- email as a filesystem -* [[cvsfs]] -* [[tmpfs]] -* [[procfs]] -* [[nsmux]] -* [[netio]] -* [[tarfs]] -* [[gopherfs]] -* ... - -# Translators (only) in Hurdextras - -*These Translators are available in the [hurdextras repository](http://savannah.nongnu.org/cvs/?group=hurdextras) but not yet described on this website. They are in varying stages of Development.* - -* [jfs](http://www.nongnu.org/hurdextras/#jfs) -* [httpfs](http://www.nongnu.org/hurdextras/#httpfs) -* [gopherfs](http://www.nongnu.org/hurdextras/#cvsfs) -* [memfs](http://www.nongnu.org/hurdextras/#gopherfs) -* [notice](http://www.nongnu.org/hurdextras/#notice) -* [pith](http://www.nongnu.org/hurdextras/#pith) -* [pptop](http://www.nongnu.org/hurdextras/#pptop) -* [run](http://www.nongnu.org/hurdextras/#run) -* [smbfs](http://www.nongnu.org/hurdextras/#smbfs) -* [xmlfs](http://www.nongnu.org/hurdextras/#xmlfs) -* [mboxfs](http://www.nongnu.org/hurdextras/#mboxfs) - - -# Translator Wishlists - - * [[wishlist_1]] - * [[wishlist_2]] - * [[open_issues/network_file_system_by_just_forwarding_RPCs]] - * [[libguestfs]] - - -# Internally - -## `*_demuxer` Functions - - * IRC, unknown channel, unknown date - - <jim-crow> what is a main idea of _demuxer functions in translators? - <neal> jim-crow: Think of a web server. - <neal> jim-crow: A typical web server must process many different requests. - <neal> jim-crow: There are different types of requests. - <neal> jim-crow: For instance, static pages and dynamically gnereated content. - <neal> the static pages are processed by one function - <neal> and the dynamic pages by another - <neal> the thing that makes the decision which of these functions to pass the request to is the demuxer. - <jim-crow> neal: ok, I see - <jim-crow> but what is actually it doing in trivfs_demuxer? - <neal> it looks at the message id and calls the right server stub - <jim-crow> for example it calls trivfs_io_server function, but I can't find its implementation - <jim-crow> that's my main question :-) - <neal> look at the files mig generates - <jim-crow> neal: ok, thanks - <jim-crow> neal: is this functions where actually stubs are called? - <neal> I think so. - - -# Bounties - -There is a [[!FF_project 280]][[!tag bounty]] on some translator improvement -tasks. diff --git a/hurd/translator/auth.mdwn b/hurd/translator/auth.mdwn deleted file mode 100644 index d9e70ec2..00000000 --- a/hurd/translator/auth.mdwn +++ /dev/null @@ -1,13 +0,0 @@ -[[!meta copyright="Copyright © 2008 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]]."]]"""]] - -[[*The_Authentication_Server*|documentation/auth]], the transcript of a talk -about the details of the authentication mechanisms in the Hurd by Wolfgang -Jährling. diff --git a/hurd/translator/cvsfs.mdwn b/hurd/translator/cvsfs.mdwn deleted file mode 100644 index f5f1a9e0..00000000 --- a/hurd/translator/cvsfs.mdwn +++ /dev/null @@ -1,52 +0,0 @@ -[[!meta copyright="Copyright © 2007, 2008 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]]."]]"""]] - -## Setting up cvsfs on GNU/Hurd - A step by step process - -### Description of cvsfs - -cvsfs is a virtual ([[libnetfs]] based) filesystem allowing you to mount -remotely located CVS modules into your local filesystem. The version -controlled files will appear to you just like regular ones. If you just want -to view one file (or a small bunch) you furthermore save a lot of network -bandwidth since only these files will be downloaded. The usual way to do so -would be to check out the whole tree and deleting it after using. - -## Step by Step process in installing cvsfs - -Download and prepare the source files from the CVS repositiory and build them. - - $ cvs -z3 -d:pserver:anonymous@cvs.savannah.nongnu.org:/sources/hurdextras co cvsfs - $ cd cvsfs/ - $ autoreconf -i - $ ./configure - $ make - $ make install - -Set up the translator and start grazing. - - $ mkdir -p cvsfs_test - $ settrans -a cvsfs_test /hurd/cvsfs cvs.sourceforge.net /cvsroot/projectname modulename - -Example to mount the cvsfs module on hurdextras to a local directory. - - $ mkdir cvs.d - $ settrans -ac cvs.d/cvsfs /hurd/cvsfs cvs.savannah.nongnu.org sources/hurdextras cvsfs - -Now change to that directory and start using ls, emacs, and whatever you feel -like. :-) - -Happy Hacking. - - -## References - - * <http://www.nongnu.org/hurdextras/> - * <http://cvs.sv.nongnu.org/viewcvs/*checkout*/cvsfs/README?root=hurdextras> diff --git a/hurd/translator/devfs.mdwn b/hurd/translator/devfs.mdwn deleted file mode 100644 index 8784e998..00000000 --- a/hurd/translator/devfs.mdwn +++ /dev/null @@ -1,39 +0,0 @@ -[[!meta copyright="Copyright © 2009, 2012 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]]."]]"""]] - -`devfs` is a translator sitting on `/dev` and providing what is to be provided -in there in a dynamic fashion -- as compared to static passive translator -settings as they're used now. - -`devfs` has not yet been written. - ---- - -If applicable, it has to be taken care that all code concerning the page-in -path is resident at all times. - ---- - -# IRC, freenode, #hurd, 2012-01-29 - - <pinotree> what would be an hurdish way to achieve something like the - various system (udev, devfs, devd, etc) for populating devices files - automatically according to the found system devices? - <pinotree> (not that i plan anything about that, just curious) - <youpi> it's not really a stupid question at all :) - <youpi> I guess translators in /dev - <youpi> such as a blockfs on /dev/block - <antrik> pinotree: in an ideal world (userspace drivers and all), the - device nodes will be exported by the drivers themselfs; and the drivers - will be launched by the bus respective bus driver - <antrik> an interesting aspect is what to do if we want a traditional flat - /dev directory with unique device names... probably need some - unionfs-like translator that collects the individual driver nodes in an - intelligent manner diff --git a/hurd/translator/discussion.mdwn b/hurd/translator/discussion.mdwn deleted file mode 100644 index e038ba84..00000000 --- a/hurd/translator/discussion.mdwn +++ /dev/null @@ -1,25 +0,0 @@ -[[!meta copyright="Copyright © 2011 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 open_issue_documentation open_issue_hurd]] - -IRC, freenode, #hurd, 2011-08-25: - - < frhodes> how can I replace an existing running server with a new one - without rebooting? - < antrik> frhodes: depends. if other critical things depend on it, you - can't. there is no mechanism to serialize and pass on the open sessions - < antrik> in some situations, you can orphan the old translator while - starting a new one, so the previous clients will stay with the old one - while new one will get the new one - < antrik> obviously that only works for things that aren't exclusive by - nature - < antrik> in some cases, you might even be able simply to remove the old - translator... but obviously only for non-critical stuff :-) diff --git a/hurd/translator/emailfs.mdwn b/hurd/translator/emailfs.mdwn deleted file mode 100644 index 80e2b150..00000000 --- a/hurd/translator/emailfs.mdwn +++ /dev/null @@ -1,287 +0,0 @@ -[[!meta copyright="Copyright © 2007, 2008 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]]."]]"""]] - -# How cool it would be if the email becomes similar to snail mail? - -## Let see how the snail mail works - -* You write the letter with a pen and paper -* You write the "To" address -* Post it -> Put it in a Post Box - -## How Email works - -* You have your email client (and there comes the limitation, you can't use - your favourite editor) -* Fill in destination email address -* Send it (May be a send button or a keyboard shortcut) - -## What are the problems - -If you want to use a wordprocessor for sending email, it should implement a -feature like mail merge, suppose it doesn't have such a feature then? You copy -and paste it to your email client and if it doesn't support HTML? Well you have -work arounds for all these, but how cool it would be if you have something like -this: - -* You create a file, use any wordprocessor or text editor. -* Right click and see the properties -* Set the "To" field -* Drag it to the Post Box icon on your panel next to Trash - -## How can we implement it? - -An SMTP translator which uses extended atributes - -## Comments - -IRC Logs about the discussion on #hurd - -<!-- That smileys are rendered the wrong way below is a ikiwiki bug. --> - ->>>>>>> 5384ccd0a47e900fbdae993143110538248517a2:emailfs.mdwn - - <manuel>j4v4m4n: isn't the HHG a good enough libtrivfs tutorial? - <manuel> the problem I have with mail, blog, ..., translators is that you want to save mails before sending them, so you can't edit directly into the translator - <j4v4m4n> manuel, may be we want a simpler one, all of us are beginners except AB - <manuel> they're not stream-based so unless you save it into memory and wait for "sync" to send mails, it doesn't seem well suited - <manuel> who's AB? - <j4v4m4n> manuel, create any file with your favourite editor and copy it to the directory where SMTP translator is sitting - <j4v4m4n> manuel, Anand Babu - <manuel> sure, but how is that better than sending it via the "mail" command then? - <manuel> except it's less hype, of course. - <j4v4m4n> manuel, http://savannah.gnu.org/users/ab - <j4v4m4n> manuel, it would be cool :-) - <manuel> still not convinced :) - * schlesix (n=thomas@xdsl-81-173-230-219.netcologne.de) has joined #hurd - <j4v4m4n> manuel, set up SMTP translator on the desktop and may be add it next to the Trash :-) - <j4v4m4n> manuel, have a nice postbox icon - <j4v4m4n> manuel, drag your files to it - <j4v4m4n> manuel, it would be closer to the real world and snail mail - <bvk> j4v4m4n: To whom do they go? - <manuel> bvk: the file must be preformatted, probably - <j4v4m4n> bvk, in snail mail you will write to address on top of the envelop, right? - <manuel> j4v4m4n: yeah well, it could make sense in a desktop envronment - <j4v4m4n> bvk, here we can have it as the first line of the file - <manuel> not sure - <bvk> j4v4m4n: i never used snail :( - <j4v4m4n> manuel, that is what I have in mind - * j4v4m4n like snail mail that email - <manuel> bvk: you never sent a mail via snail mail?! :) - * j4v4m4n like snail mail more than email - <bvk> manuel: nope :( whats that btw? - <j4v4m4n> manuel, or why not have it as the file property itself?? - <bvk> manuel: you know its first time i hear it *snail mail* :(( - <j4v4m4n> bvk, the normal mails which a postman delivers :-) - <j4v4m4n> manuel, you create a file text, open document or whatver format - <manuel> j4v4m4n: I'm quite sure it'd make things more complicated in the end, using file properties, dragging files etc. - <j4v4m4n> manuel, righ click and see properties and set the to field - <bvk> Oh, these english words... :X - <j4v4m4n> manuel, we can use the xtended atributes - <j4v4m4n> manuel, which really showcase the power of hurd - <j4v4m4n> manuel, it becomes closer to the real world - <bvk> actually, is X working on hurd? - <j4v4m4n> bvk, well it used to work and the new Xorg release has som - <j4v4m4n> bvk, well it used to work and the new Xorg release has some broken packages - <j4v4m4n> bvk, if you use an old snapshot repository it will work (xorg 6.9) - * marco_g (n=marco@gnu/the-hurd/marco) has joined #hurd - <marco_g> hi - <j4v4m4n> marco_g, hi - * bvk watching MIT lecture video on 'structure and interpretation of computer programs' - <manuel> bvk: yeah, X was ported on GNU/Hurd five-six years ago or so - <j4v4m4n> manuel, see http://hurd.in/bin/view/Main/EmailFS - <j4v4m4n> manuel, add your comments, if you like - <manuel> j4v4m4n: how would you convert the .odt to a mail? - <j4v4m4n> manuel, attachment - <manuel> with an empty mail? - <manuel> that won't get through *most* spam filters :) - <j4v4m4n> manuel, or may be convert it to HTML - <manuel> well converting it to text or HTML would require a set of rules to convert from any format to text/HTML, like a2ps has (some sort of mailcap file) - <j4v4m4n> manuel, it can be flexible, a parameter to the translator as to what should be done with each formats - <manuel> and there's no convenient way to convert ODT to text AFAIK, you need to use ooffice with a batch program, which you need to provide too - <manuel> well that's really complex - <j4v4m4n> manuel, well how will you send me a CD by post? - <j4v4m4n> manuel, or say a bed? - <j4v4m4n> manuel, courier or parcel, right? so attachment is fine - <manuel> sure but you'll add a note saying "this is a bed from Praveen" - <ness> why not add a note to such a mail - <ness> you could even move multiple files simultaneously to the mail translator - <manuel> hm - <manuel> so how is the translator supposed to know that all the files I move are to be sent in a single mail and not on separate mails? - <manuel> and how'll you be able to add a note to such a mail? I mean, of course you can set it on the xattr but that's quite strange (the attachment is supposed to be an attr of the mail, not the other way) and not convenient at all - <manuel> I'm quite sure using a MUA is still easier - <ness> you could move a complete directory to the mail trans - <ness> (and the desktop icon can do this transparently) - <manuel> hmm so you have to create a directory, write a text file on it (with a special filename, I guess, since you could also have text files as attachments) and add the attachments to the directory - <manuel> and then drag & drop it - * manuel thinks things are getting more and more complicated :) - <ness> the special file name or attribute thing is right - <ness> but you not necisirily need to create a dir - <ness> s/necisirily/necessarily/ - <ness> you just drag 'n' drop multiple files to the icon - <manuel> and how is the translator supposed to know they are dragged at the same time and not one after the other? - <ness> I do not know if it is viable - * antrik (n=olaf@port-212-202-210-130.dynamic.qsc.de) has joined #hurd - <manuel> AFACS, dragging multiple files just make the desktop issue multiple rename() - <moritz> manuel: however the desktop handles that - it would be a rather easy thing to fix, i guess. - * schlesix has quit (Remote closed the connection) - <manuel> moritz: how is the desktop supposed to handle that? - <moritz> if this mail translator approach, is primarily to be used in desktop environments, one could implement the whole thing on the desktop environment layer, not with Hurd translators. - <moritz> manuel: i think it would be rather easy for the desktop to distinguish between actions like "ONE file is dragged" and "MULTIPLE files are dragged". - * schlesix (n=schlesix@xdsl-81-173-230-219.netcologne.de) has joined #hurd - <manuel> oh yeah, but then you loose the transparency, and there's no point in making it a translator. I think we agree on that :) - <moritz> i see rather little point in making it a translator anyway, since only god knows wether we have similar concept to translators in hurd-ng. - <manuel> yeah sure, but praveen wasn't planning it for HurdNG AIUI - <moritz> in that case it would probably be toy project. fine. - <moritz> i need to do some maths. see you. - <manuel> hmm well, you can't write anything else than toy projects, then - <ness> moritz: you shouldn't be too sure about success of ngHurg - <ness> it is an experiment - <antrik> sdschulze: ping - * antrik has quit (Remote closed the connection) - * antrik (n=olaf@port-212-202-210-130.dynamic.qsc.de) has joined #hurd - * bddebian (n=bdefrees@71.224.172.103) has joined #hurd - <j4v4m4n> manuel, This is a lot of input, let me sink these all first :-) - <bddebian> Heya folks - <schlesix> heya bddebian! - <j4v4m4n> it is ofcoures a "nice to have" feature. - <j4v4m4n> These are quite intersting inputs as well - <bddebian> Hi schlesix - <j4v4m4n> manual in the real wprld how will you send multiple things, say you want to send a CD and a bed - <j4v4m4n> manuel, you will package it (files) and then one parcel containing all these things (folder) - <manuel> j4v4m4n: well you want to make sending emails easier than sending real mails :-) - <j4v4m4n> manuel, it won't substitute MUAs - <j4v4m4n> manuel, we need it as the backend - <diocles> geekoe: You asked about GFS yesterday; well, glibc compiled. :) I've not done much more after that. - <antrik> regarding mail translator: take a look at Plan9, they have been doing it for years - <j4v4m4n> manuel, sorry not MUA I meant MTA - * syamajala (n=syamajal@c-24-147-61-120.hsd1.ma.comcast.net) has joined #hurd - <manuel> ah yes sure, but MUA will still be easier to use afaics - <j4v4m4n> manuel, people who are used to Windows say GNU/Linux is tough to use - <j4v4m4n> manuel, but when they start with GNOME or KDE they don't have any issues - <j4v4m4n> antrik, that is a great info I will look into it - <j4v4m4n> manuel, sorry not MUA I meant MTA - * syamajala (n=syamajal@c-24-147-61-120.hsd1.ma.comcast.net) has joined #hurd - <manuel> ah yes sure, but MUA will still be easier to use afaics - <j4v4m4n> manuel, people who are used to Windows say GNU/Linux is tough to use - <j4v4m4n> manuel, but when they start with GNOME or KDE they don't have any issues - <j4v4m4n> antrik, that is a great info I will look into it - <ness> j4v4m4n: they do it quite differently - <manuel> this doesn't answer to the basic question: how is it better than what we have now - <j4v4m4n> manuel, it is different, better is always debatable - <j4v4m4n> manuel, GNOME might work for but some doesn't use X at all - <j4v4m4n> manuel, whether it is good will be depending on the implemetation - <Jeroen> people who used to GNU/Linux say Windows is tough to use - <Jeroen> +are - <unlink> GNU/Linux is at least tougher to say - <Jeroen> no, people have less experience with GNU/Linux - <manuel> "to say", Jeroen - <j4v4m4n> manuel, better and easier are always relative - <j4v4m4n> manuel, there a lot of people still using mutt when you have thunderbird - <manuel> well because they have reasons to say mutt is easier than thunderbird - <Jeroen> the only thing is that you've to learn a few shortcuts when you want to use mutt, you can't just click around - <j4v4m4n> manuel, exactly - <j4v4m4n> manuel, consider this, you want to send a document across to someone - * Blackmore has quit (Read error: 104 (Connection reset by peer)) - * koollman has quit (Remote closed the connection) - <j4v4m4n> manuel, now you open a MUA add the attachment send it - * koollman (n=samson_t@gsv95-1-82-233-13-27.fbx.proxad.net) has joined #hurd - <j4v4m4n> manuel, if you just have to drag it to an icon, would that be easier? - * Casanova (n=prash@unaffiliated/casanova) has joined #hurd - <j4v4m4n> manuel, chmod +to:manuel@somehost doc.pdf ; cp doc.pdf postbox/ - <Jeroen> yeah - <Jeroen> chmod is for setting permissions... - <j4v4m4n> manuel, I am not sure how to set xattr - <manuel> well, setfattr - <Jeroen> well - <j4v4m4n> manuel, ok - <Jeroen> how do you type your subject? - <Jeroen> and there message itself? - <Jeroen> s/there/the/ - <Jeroen> how do you encrypt+sign it with pgp? - <manuel> j4v4m4n: well the problem is still the same you know. OK for to/subject : they'd be extended attributes. but how do you type the message itself? - <antrik> I don't think using xattr for such stuff is a good idea - <antrik> after all, it's not a property of the document - <j4v4m4n> antrik, we can use it only on a particular directory on which our translator sit - <j4v4m4n> manuel, create a folder - <manuel> that'd mean mkdir message; ln -s doc.pdf message/; cat >message/message <<EOF; setfattr -n to -v mmenal@hurdfr.org; setfattr -n subject -v document; mv message postbox - <antrik> the reason why having translators for such stuff is that this way you have a generic service for sending mail, whether you use it through a special UI (MUA), directly with file commands, from a script, or from some other program that just sends mails as a side functionality - * mheath has quit (Connection reset by peer) - <j4v4m4n> manuel, that looks scary :-( - <manuel> not sure it's easier than "mutt; m; mmenal@hurdfr.org; document; >typing the message<; a; doc.pdf; y" - <antrik> manuel: it is easier in some situations - <antrik> (and again, I would not use xattr for such stuff) - <j4v4m4n> manuel, now how do you use mutt on GNOME? - <antrik> in fact, Plan9 explicitely does *not* have any xattr and stuff - <manuel> antrik: well xattr on the directory that represents the message is not illogical - * mheath (n=mheath@c-67-182-231-23.hsd1.co.comcast.net) has joined #hurd - <j4v4m4n> antrik, may be we can think of some other way if you don't wanna xattr - <manuel> j4v4m4n: well I just used the CLI because it's easier to describe, but try to explain the steps in a GUI and you'll see it's the same problem - <j4v4m4n> manuel, right click on desktop -> create folder -> drag the files to the folder -> set attributes to the folder-> drag it to postbox - <j4v4m4n> manuel, it is quite logical step - <manuel> sure, but how is it easier than click on the MUA icon -> create mail -> drag the files to the mail window ; type the attrbutes + contents ; click on send mail - <manuel> looks quite similar to me :-) - <j4v4m4n> manuel, or if you already have the folder just drag it - <kilobug> a POP or IMAP translator would be more useful IMHO (but well, I didn't read all the backlog, so I may be off topic) - <j4v4m4n> manuel, you don't have a MUA here :-) just files and folders - <kilobug> to read mails, I mean - <j4v4m4n> kilobug, that is even easier IMAP->mabox and then mboxfs - <manuel> j4v4m4n: well you have a MUA : that's the translator - <j4v4m4n> kilobug, mboxfs is already available - <j4v4m4n> kilobug, I think someone already wrote IMAP to mbox as well but couldn't find it - <kilobug> j4v4m4n: well, imapfs could work both way, writing changes on the imap server too ;) - <antrik> manuel: the difference is not how it is used; the difference is how it is implemented - <antrik> manuel: if you have a generic mail translator, you have most functionality already there with the file manager; all you need to add is some scripts for better comfort - <antrik> j4v4m4n: the way I would do it (and I guess Plan9 does, though I haven't checked) is either having a file in the mail directory with the headers, or a subdirectory with a single file for each header (probably the latter) - <j4v4m4n> antrik, that would make it too complicated IMHO, it would be close to how it is for snail mail - <antrik> j4v4m4n: I don't see how this would be more complicated than xattr - <j4v4m4n> manuel, you can write your own scripts to automate it for whatver way you want - * azor (n=azor@62-43-135-201.user.ono.com) has joined #hurd - <manuel> antrik: having the functionality in the filesystem is useful because programs can use this functionality without patching; the protocol to use the mail translator is so specific that you either need to be a real user (but then a MUA is a lot more useful) or have a patched program (but then you could use a lib) - <j4v4m4n> antrik, right clicking a file and setting u p to and subject seems easier that creating more files - <antrik> j4v4m4n: I don't think so. maybe it is in gnome, but than I'd consider it a shortcoming of gnome - <antrik> j4v4m4n: in shell "cat foo@example.invalid headers/to" is about as simple as you can get - <manuel> > - <antrik> erm... I mean echo - <antrik> and >, yes - <antrik> sorry - * yoj (n=jao@200.163.8.72) has joined #hurd - <manuel> "echo foo@example.invalid > headers/to" is not easier than "setfattr -n to -v foo@example.invalid" AFAICS. - <antrik> echo foo@example.invalid >headers/to - * yoj (n=jao@200.163.8.72) has left #hurd - * yoj (n=jao@200.163.8.72) has joined #hurd - <kilobug> manuel: it is a tiny bit if your "foo@example.invalid" is the output of a command, mycomplexcommand > headers/to is a bit easier than setfattr -n to -v `mycomplexcommand` - <kilobug> manuel: but it's the same for a value you type directly - <antrik> manuel: objectively it is not simpler, but it uses a generic mechanism users now well, instead of obscure xattr stuff - <antrik> know well - <j4v4m4n> antrik, ok we can think of that, but how about a desktop user? - abeaumont andar antrik arnau azeem azor - <j4v4m4n> antrik, he has to use more clicks and more head aches - <j4v4m4n> antrik, just right click and add to address and subject just you write on the envelop - <kilobug> j4v4m4n: that's good ! it makes him buy more medicine, drug corporations will sponsor you then ! - * kilobug runs away - * j4v4m4n chases kilobug - <j4v4m4n> kilobug, better way would be making outlook run on GNU :-) - <marco_g> Or GNU on outlook \o/ - * yoj (n=jao@200.163.8.72) has left #hurd - <kilobug> this channel is becoming insnae :p - <j4v4m4n> kilobug, or is it the members ?? :-) - <marco_g> I agree with kilobug, we should stop those weirdos here :-/ - * whr` (i=whr@acy238.neoplus.adsl.tpnet.pl) has joined #hurd - <antrik> hm... anyone have the marcus quote at hand? - <j4v4m4n> i got to go as well - <j4v4m4n> bye - <kilobug> bye j4v4m4n - -## Interesting?? - -Join the project -- Add yourself to the list below - -* [[Praveen A]] diff --git a/hurd/translator/examples.mdwn b/hurd/translator/examples.mdwn deleted file mode 100644 index ee766fbf..00000000 --- a/hurd/translator/examples.mdwn +++ /dev/null @@ -1,93 +0,0 @@ -[[!meta copyright="Copyright © 2007, 2008 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]]."]]"""]] - -## Setting up translators - HowTo - -Translators can be got from hurd-extras <http://www.nongnu.org/hurdextras/> - - cvs -z3 -d:pserver:anonymous@cvs.savannah.nongnu.org:/sources/hurdextras co <modulename> - -* httpfs translator - -<!-- Prevent ikiwiki / Markdown rendering bug. --> - - $ settrans -a tmp/ /hurd/httpfs www.hurd-project.com/ - -or - - $ settrans -a tmp/ /hurd/httpfs www.hurd-project.com/ --proxy=<proxy> --port=<port> - $ cd tmp/ - $ ls -l - -* ftpfs translator - -<!-- Prevent ikiwiki / Markdown rendering bug. --> - - $ settrans -cgap ftp /hurd/hostmux /hurd/ftpfs / - $ cd ftp - ftp$ ls - ftp$ cd ftp.fr.debian.org - ftp/ftp.fr.debian.org $ ls - -* tarfs translator (needs uatime fix, 2010-08-25 → [git repo](http://github.com/giselher/tarfs)) - -You can use tarfs to mount (almost) any tar file (currently broken, 2010-08-25): - - $ settrans -ca a /hurd/tarfs -z myfile.tar.gz - $ settrans -ca b /hurd/tarfs -y myfile.tar.bz2 - $ settrans -ca c /hurd/tarfs myfile.tar - -You can even use it to create new tar files: - - $ settrans -ca new /hurd/tarfs -cz newfile.tar.gz - $ cp -r all my files new/ - $ syncfs new - -This is not as fast as `tar czvf newfile.tar.gz all my files`, but at least it's more original. ;) - -* cvsfs translator - -<!-- Prevent ikiwiki / Markdown rendering bug. --> - - $ settrans -ac cvsfs_testing /hurd/cvsfs cvs.savannah.nongnu.org /sources/hurdextras - $ cd cvsfs_testing - -* pfinet translator -- configuring your network interface - -<!-- Prevent ikiwiki / Markdown rendering bug. --> - - $ settrans -fgca /servers/socket/2 /hurd/pfinet -i <interface> -a <ip address> -m <subnet mask> -g <gateway ip> - -* Console translator -- setting up virtual consoles - -<!-- Prevent ikiwiki / Markdown rendering bug. --> - - $ console -d vga -d pc_mouse -d pc_kbd -d generic_speaker /dev/vcs - -* iso9660fs translator -- 'mounting' your cdrom - -<!-- Prevent ikiwiki / Markdown rendering bug. --> - - $ settrans -ac /cdrom /hurd/iso9660fs /dev/<cdrom device file> - -* ext2fs translator -- 'mounting' an ext2fs partition - -<!-- Prevent ikiwiki / Markdown rendering bug. --> - - $ settrans -ac /linux /hurd/ext2fs /dev/<partition device file> - -* unionfs translator - -To join "foo/" "bar/" and "baz/" in the directory "quux/", just do: - - $ settrans -capfg quux/ /hurd/unionfs foo/ bar/ baz/ - -If you want to join even quux/ contents in the union itself, add -u as a translator argument. -You can add filesystems at run-time with the fsysopts command. diff --git a/hurd/translator/exec.mdwn b/hurd/translator/exec.mdwn deleted file mode 100644 index d5b6bfbc..00000000 --- a/hurd/translator/exec.mdwn +++ /dev/null @@ -1,12 +0,0 @@ -[[!meta copyright="Copyright © 2009 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]]."]]"""]] - -The *exec* server, listening on `/servers/exec`, is responsible for -preparing the execution of processes. diff --git a/hurd/translator/ext2fs.mdwn b/hurd/translator/ext2fs.mdwn deleted file mode 100644 index fff2e74b..00000000 --- a/hurd/translator/ext2fs.mdwn +++ /dev/null @@ -1,45 +0,0 @@ -[[!meta copyright="Copyright © 2007, 2008, 2010, 2011 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]]."]]"""]] - -# Implementation - - * [[filetype]] option - - -## Large Stores - -The `ext2fs` translator from the upstream Hurd code base can only handle file -systems with sizes of less than roughly 2 GiB. - -[[!tag open_issue_hurd]] - - -### Ognyan's Work - - * Ognyan Kulev, [[*Supporting Large ext2 File Systems in the - Hurd*|ogi-fosdem2005.mgp]], 2005, at FOSDEM - - * Ognyan Kulev, [[large_stores]] - - * <http://kerneltrap.org/node/4429> - -Ognyan's patch lifts this limitation (and is being used in the -[[Debian_GNU/Hurd_distribution|running/debian]]), but it introduces another -incompatibility: `ext2fs` then only supports block sizes of 4096 bytes. -Smaller block sizes are commonly automatically selected by `mke2fs` when using -small backend stores, like floppy devices. - - -# Documentation - - * <http://e2fsprogs.sourceforge.net/ext2.html> - - * <http://www.nongnu.org/ext2-doc/> diff --git a/hurd/translator/ext2fs/filetype.mdwn b/hurd/translator/ext2fs/filetype.mdwn deleted file mode 100644 index 5d85bac9..00000000 --- a/hurd/translator/ext2fs/filetype.mdwn +++ /dev/null @@ -1,33 +0,0 @@ -[[!meta copyright="Copyright © 2011 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]]."]]"""]] - -The *ext2fs* translator doesn't support the ext2 format's *filetype* option. - -According to *mke2fs(8)*: - -> **filetype**: Store file type information in directory entries. - -By setting directory listings' informational `d_type` field (`readdir`, etc.), -this may avoid the need for subsequent `stat` calls. - -Not all file systems can support this option. - -In `[hurd]/ext2fs/dir.c` the `EXT2_FEATURE_INCOMPAT_FILETYPE` is generally -masked out (is not even considered) when adding a node to a directory in -`diskfs_direnter_hard` and when reading in `diskfs_get_directs`. The Hurd's -ext2fs unconditionally sets this field to 0 (`EXT2_FT_UNKNOWN`). - - -# `e2fsck` - -Running `e2fsck` on a file system with the *filetype* option, will correct the -*filetype* for a lot of files (all `EXT2_FT_UNKNOWN`?) to either 1 (regular -file, `EXT2_FT_REG_FILE`), or 2 (directory, `EXT2_FT_DIR`), and likely others. -The Hurd's ext2fs will again ignore these fields, of course. diff --git a/hurd/translator/ext2fs/large_stores.txt b/hurd/translator/ext2fs/large_stores.txt deleted file mode 100644 index 6e7ffc6f..00000000 --- a/hurd/translator/ext2fs/large_stores.txt +++ /dev/null @@ -1,520 +0,0 @@ -[[!meta copyright="Copyright © 2005, 2010 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]]."]]"""]] - -This is -*- mode: outline -*- - -* Introduction - -Here is a try to describe the ext2fs patch for the Hurd. This patch -allows using partitions/stores larger that approximately 1.5G by not -memory mapping the whole store to address space. - -As a guideline, the changelog of RC1 (Release Candidate 1) is -followed, so I hope nothing is missed. During writing of this text, -some questions arised and they are marked with XXX. An effort will be -made to fix all these for RC2. - - Ognyan Kulev <ogi@fmi.uni-sofia.bg> - -* The block layer and its purpose - -The basic unit of ext2 filesystem is "block". All filesystem -operation work on blocks which are read, and sometimes modified and -written back. Possible block sizes are 1K, 2K and 4K, but current -implementation works reliably only on 4K blocks (= page size of i386). - -So the two basic operations on blocks are "reading" block and -"writing" block. - -* Current implementation - -** Reading - -Currently, the whole store is memory mapped into address space of -ext2fs process. The is called "disk image", although "store image" -would be more accurate. The address of the start of the disk image is -stored in pager.c:disk_image. So "reading" block is easy: just -calculate byte offset of block and add it to disk_image. The resulting -address points to the start of the desired block. - -The macro ext2fs.h:bptr has exactly this purpose: given block number, -it returns pointer to block. Sometimes we have pointer somewhere in -the block, and we want the block number. This is calculated by -ext2fs.h:bptr_block. - -There is another set of macros that use byte offsets instead of block -numbers. These are boffs_ptr (store offset -> memory pointer) and -bptr_offs (memory pointer -> store offset). - -Converting between store offset and block number is easy with macros -boffs (block -> offset) and boffs_block (offset -> block). Other -useful macros are trunc_block and round_block. - -** Writing - -Modifying block and saving it is not that straight-forward as -reading. For writing, you need to use "pokel" ("poked elements"). -Pokel interface is in ext2fs.h. Implementation is in pokel.c. - -The problem is that generally multiple blocks are modified and we want -all these changes to hit disk at relatively same time. So we can't -just change block and leave decision when it's going to be written to -the microkernel. - -So there is a pokel for each set of changes and each change should be -reported to the pokel by calling pokel_add. When this set of changes -is completed, pokel_sync of pokel_flush is called. (The latter is -used to ignore changes.) - -In practice, there is one indir_pokel for each ext2fs.h:disknode, -which is used for indirect blocks of ext2fs. The only other pokel -used is ext2fs.h:global_pokel, where all other changes to metadata are -registered. - -* Proposed implementation - -First one must realize that the idea of mapping the whole store is to -be thrown away. So only parts of the store should be mapped. These -currently mapped parts of store are collectively called "cache". - -In the proposed implementation, the cache has fixed size of -ext2fs.h:DISK_CACHE_BLOCKS. In RC1, it's 100, but this is only to -easily catch bugs. In practice, it can be, for example, 512M, or -(512*1024/4) blocks of 4K. pager.c:disk_cache_size and -pager.c:disk_cache_blocks are additional variables about that -information. - -The cached blocks are mapped in ext2fs.h:disk_cache and span -disk_cache_size bytes (= disk_cache_blocks blocks). As in the -original implementation, this part of address space is handled by -custom pager. - -** Data structures - -Blocks in cache aren't consecutive, so we need data structure to hold -which part of address space represents what block. This is the -purpose of pager.c:disk_cache_info. Index in this array is "cached -block index". But this array doesn't help in finding if specific -block is mapped, and where. This is the purpose of the -pager.c:disk_cache_bptr ihash which finds cached block index from -given block number. Both data structures are guarded by -pager.c:disk_cache_lock. - -** Public interface - -"Public" interface to the cache are functions disk_cache_block_ref, -disk_cache_block_ref_ptr, disk_cache_block_deref, -disk_cache_block_is_ref. disk_cache_block_ref takes block number and -return pointer to block content. Reference count of this cached block -is incremented. After finishing work with block, -disk_cache_block_deref should be called. - -In converting original ext2fs code to use this functions, usually call -to bptr is turned into call to disk_cache_block_ref. In addition, -after pointer to block content is not used anymore, -disk_cache_block_deref is called. This simple scheme is only for -reading from block. For modifying block, see about pokels below. - -disk_cache_block_ref_ptr just increments reference count of specified -block. It's used when we give pointer to block content to somebody -else that will dereference it (e.g. pokel) and we want to continue to -use this content. - -disk_cache_block_is_ref checks if specified block has reference count -greater than zero. It's used in assert:s. - -*** bptr* and boffs* macros - -These macros continue to work as before, but they don't deal with -reference counting and this should be taken into consideration. In -addition, bptr_index returns cached block index from given pointer to -block content. (This function is used internally.) - -*** Pokels - -When pokel_add is called with pointer to block content, this -"consumes" reference of block. It's not consumed (decremented by 1) -immediately, but when pokel_sync or pokel_flush is called. (Reference -is consumed immediately if the block is already in the pokel. The -important thing is that you always lose one reference of the block.) - -So we have the following code when we read from block: - - char *bh = disk_cache_block_ref (block); - ... - disk_cache_block_deref (bh); - -And the following code when we modify block: - - char *bh = disk_cache_block_ref (block); - ... - pokel_add (pokel, bh, block_size); - -**** Indirect calls to pokel_add - -Some functions indirectly call pokel_add, so this should be taken into -consideration. These are: - - * record_global_poke - * record_indir_poke - -So these functions should be treated in the same scheme as pokel_add. -For example: - - char *bh = disk_cache_block_ref (block); - ... - record_indir_poke (node, bh); - -**** Modifying SBLOCK in diskfs_set_hypermetadata - -SBLOCK is global variable that points to superblock content. There is -one reference count for superblock, so before we call -record_global_poke (which consumes reference), -disk_cache_block_ref_ptr is called. - -**** Modifying GDP - -When group descriptor is wanted, usuall group_desc is called and -result is stored in local variable GDP. After modifying GDP, -record_global_poke is called. But because record_global_poke is used, -we need call to disk_cache_block_ref_ptr: - - gdp = group_desc (i); - ... - disk_cache_block_ref_ptr (gdp); - record_global_poke (gdp); - -*** More complex use of pointer to block content - -In ext2_new_block and ext2_alloc_inode functions, we have local -pointer variable BH that sometimes points to block content and -sometimes points to nothing. In order to reduce possible errors, when -BH points to nothing it's always 0. In some points (goto labels), -there is assertion if BH is what's expected (pointer to nothing or -pointer to something). - -*** dino - -dino function return pointer to struct ext2_inode for given ino_t. -This uses reference, so corresponding disk_cache_block_deref should be -called after finishing work with ext2_inode. For convenience, dino is -renamed to dino_ref, and dino_deref just calls disk_cache_block_deref. - - struct ext2_inode *di = dino_ref (np->cache_id); - ... - dino_deref (di); - -Or - - struct ext2_inode *di = dino_ref (np->cache_id); - ... - sync_global_ptr (di, 1); - dino_deref (di); - -Or - - struct ext2_inode *di = dino_ref (np->cache_id); - ... - record_global_poke (di); - -* Internals of the proposed implementation - -As said earlier, instead of mapping the whole store of filesystem to -address space, only part of it is mapped. This part is called "cache" -or "disk cache" (although "store cache" would be more appropriate). -Currently, the cache is contiguous area in address space that starts -at disk_cache. Its size is disk_cache_size which is disk_cache_blocks -number of blocks of size block_size. - -Mapped blocks in disk cache are not fixed -- each block in the cache -can be replaced at any time with another block. So we need to know -which blocks are cached currently and where. Information about each -cached block is stored in disk_cache_info[]. Index is from 0 to -disk_cache_blocks-1. In this information the block number is stored -(among some other things, discussed later). The reverse direction, -getting the index of cached block from block number, is achieved by -using disk_cache_bptr ihash. Both these data structures are guarded -by disk_cache_lock. - -** Requesting a block - -When ext2 code requests block, it calls disk_cache_block_ref. First, -this block is search with disk_cache_bptr. If its there, the -reference count is incremented and pointer to block content is -returned. In this case, there is a call to disk_cache_wait_remapping, -which is explained a bit later. - -It's more interesting when block is not found in disk_cache_bptr. In -this case, disk_cache_map is called. Again, disk_cache_bptr is -consulted, because in the meantime another could already have mapped -this block. If this is the case, the code is essentially the same as -those in disk_cache_block_ref. - -When it's assured that block is not in the cache, we have no choice -but throw away an already mapped/cached block and put our block in its -place. Such block has to meet the following conditions: - -- Its reference count being 0 -- Not in the core -- Not being remapped (explained later) -- Not being forbidden to be remapped ("fixed", explained later) - -The last three conditions are actually flags in disk_cache_info: -DC_INCORE, DC_REMAPPING and DC_FIXED. DC_DONT_REUSE collectively -gives the condition in which block is not suitable for -reusing/remapping. - -Searching suitable place in cache is linear. As an optimisation, this -search doesn't start from the beginning, but starts from where last -time it has ended. This last index is stored in disk_cache_hint. So -new candidate blocks for replacement are searched "circular". - -If suitable place is found, the old mapping is removed, and the new -mapping is initialized. But we are still not ready to return pointer -to block content, because this content is not available yet. We mark -the block as DC_REMAPPING, which makes disk_cache_block_ref for that -block in other threads to wait until page is completely remapped. - -In both cases, when we have found place and when suitable place is not -found, disk_cache_hint is updated so that next disk_cache_map -continues searching from where we ended. - -When not suitable place is found, we have to use force. First all -pages in disk cache are touched. This is workaround because of some -bug in GNU Mach. The patch relies on "precious page" features of -Mach. Marking a page as precious instructs Mach to always inform us -about evicting this page. If page is modified, it seems that we are -always informed. But if page is unmodified and page is evicted, -sometimes Mach forgets to tell us. It's true that with large disk -cache, e.g. 512M, this potentially will re-read the whole cache from -disk. But if we reach this point, the microkernel is telling us that -all is already read :-) - -This is preparation for following calls to pager_return_some. This -libpager function is called only on cached blocks that has reference -count of 0. These are the potential candidates for replacement -- -there is no sense in calling pager_return_some when reference count is -1 or more. One final case is when there is no cached block that has -reference count of 0. This is bad and we can't do anything about it. -In this case, we just wait one second hoping that some other thread -will drop reference count of block to 0. (XXX Currently (in RC1) -sleep(1) is always executed. It should be executed only when disk -cache is starving. There is some rationale behind calling sleep(1) even when -disk cache is not starving. Although pager_return_some(,,,1) -guarantees that upon return of this function the page is returned, I'm -not sure that it's guaranteed that pager_notify_pageout is called. -This is because pager_return_some and -libpager/data-return.c:_pager_do_write_request are executed in -different threads and pager_return_some is confirmed before calling -pager_notify_pageout. This issue is open.) - -So, after forcibly evicting all pages (blocks) that can potentially be -reused, disk_cache_map is called again. - -In the case when suitable place is found and all data structures -(disk_cache_info and disk_cache_bptr) are changed accordingly, -pager_return_some(,,,1) is called and we wait for pager_read_page to -clear DC_REMAPPING. The purpose of this flag (DC_REMAPPING) is solely -this: to forbid any use of this block until we are absolutely sure -that this page contains exactly the wanted block. If NDEBUG is not -defined (so we include debug code), flags of the blocks are checked if -DC_REMAPPING is really cleared. - -Is DC_REMAPPING really needed? Is there possibility that between last -"mutex_unlock (&disk_cache_lock)" and "return bptr" something could go -wrong? Actually, disk cache just follows protocol set by -pager_notify_pageout: that between pager_return_some and changing -internal structures for the remapping no thread may touch the page. -This is achieved by marking the page as DC_REMAPPING. For -convenience, function disk_cache_wait_remapping is defined which waits -for cached block while it's marked as DC_REMAPPING. - -XXX XXX: Actually, the sequence used in RC1 is: remap block and -pager_return_some. The latter seems redundant, as only blocks that -are evicted are candidates for remapping. I'll try to fix that for -RC2. - -** Modifying blocks and pokels - -After block is modified, it should be registered with pokel_add to -some pokel. Pokel contains list of ranges of cached blocks. All this -blocks should have reference count at least 1. In pokel_flush and -pokel_sync, this reference is consumed. - -So in pokel_add if added blocks are already in the pokel, their -references are consumed, because only 1 reference is consumed in -pokel_{sync,flush}. It's checked if pokel is for disk_cache, because -pokels are used in file access too, where disk cache layer is not -used. - -pokel_{flush,sync} both use _pokel_exec, so this is the place where -block references are consumed. (XXX: In RC1, they are consumed -always, but it's better to check if these pages are in disk_cache. -Although calling disk_cache_block_deref on non-disk_cache page does no -harm.) - -*** Indirect use of pokel_add - -record_global_poke and record_indir_poke use indirectly pokel_add. -These functions are slightly changed to use public interface of -disk_cache. Only new precondition is added for them: caller should -supply "reference" that will be consumed later by pokel_{flush,sync}. - -*** Modifying block without using pokels - -sync_global_ptr synchronizes given block immediately. No reference is -consumed. (XXX: This should be changed in RC2 to consuming reference. -This will make the function similar in use to -record_{global,indir}_poke and will make the code more nice-looking.) - -** Initialization - -*** The superblock - -To create disk cache, we need the block size of the filesystem. This -information is in superblock, so we need to read superblock without -using disk cache. For this purpose get_hypermetadata is changed to -read the superblock with store_read instead of old bptr. New function -map_hypermetadata is created that sets sblock global variable to point -to the already mapped superblock. So to get behavior of old -get_hypermetadata, first new get_hypermetadata should be called, and -then map_hypermetadata. - -In ext2fs.c:main, instead of calling get_hypermetadata, -map_hypermetadata is called. The call to get_hypermetadata is in -pager.c:create_disk_pager. - -In ext2fs.c:diskfs_reload_global_state, along with get_hypermetada, -map_hypermetadata is called. - -*** disk_cache - -Disk cache data structures are initialized in -pager.c:create_disk_pager called from ext2fs.c:main. Disk pager is -still initialized with diskfs_start_disk_pager, but due to block_size -variable we call get_hypermetadata. Basic parameters of disk cache -like disk_cache_blocks and disk_cache_size are initialized here. The -rest of the initialization process is delegated to disk_cache_init. - -disk_cache_init initializes the rest of disk cache data structures: -disk_cache_lock, disk_cache_remapping, disk_cache_bptr, -disk_cache_info and disk_cache_hint. After that superblock and group -descriptors are mapped into the cached and are marked as DC_FIXED. -This forbids reusing those blocks, because Hurd's ext2 code relies on -these blocks being mapped into fixed location in address space. - -** Pager callbacks - -disk_pager_read_page and disk_pager_write_page just use disk cache -data structures to get the right pointers to blocks. -disk_pager_read_page requests notification of page-out and updates -DC_INCORE and DC_REMAPPING too. DC_INCORE is set and DC_REMAPPING is -cleared (because reading the new block finishes its remapping). - -disk_pager_notify_pageout just clears DC_INCORE, making that page -available for remapping. - -* libpager changes - -Here memory_object_data_ prefix is shorten to m_o_d_. And when it's -talked about m_o_d_function Mach function, usually its libpager -handler is meant. - -** Notification on eviction - -The most important change that is wanted from libpager is supporting -notification when page is evicted. Mach already has partial support -for notification on eviction by argument "kcopy" of m_o_d_return. If -kcopy is 0, then Mach doesn't have copy of this page anymore, so the -page is "evicted". The problem is that m_o_d_return is usually called -only when page is modified, and if it's not modified, it's silently -dropped. - -The solutions is marking page as "precious". This has the exact -semantics we need: when page is evicted, m_o_d_return callback is -always called with kcopy=0. - -*** Implementation details - -New argument is added to user callback pager_read_page: -notify_on_pageout. If it's non-zero and the page is evicted, user -callback pager_notify_pageout(pager,page) is called. This change ABI -requires all libpager clients in the Hurd to be changed according to -the new API. - -m_o_d_request stores notify_on_pageout as flag PM_NOTIFY_PAGEOUT. - -m_o_d_return no longer just skips non-dirty pages. Local array -notified[] is build and at the end of the function, -pager_notify_pageout is called for all pages that are evicted -(kcopy=0). - -** Avoiding libpager optimization - -Unfortunately, there is one more problem, this time specific to -libpager, not Mach. There is an optimization in m_o_d_request when -page is being paged out. In the beginning of m_o_d_return, all pages -being return are marked as PM_PAGINGOUT. This mark is cleared after -m_o_d_supply (which supplies page content to Mach) is called. If -m_o_d_request is called on page that is marked as PM_PAGINGOUT, this -page is marked with PM_PAGEINWAIT, and m_o_d_supply inside -m_o_d_return is not called for this page. This is possible because -neither of these functions hold pager->interlock during the whole -execution of function. This lock is temporarily unlocked during call -to user callbacks pager_read_page and pager_write_page. - -So what is the implication of this optimization to our page eviction -notification? When page is paged out, we get notified and we can -decide to reuse it. After arranging disk_cache_info, etc, page is -touched, but if this happens fast enough, the optimization is -triggered and we get the old content! Reading the page is "optimized" -and pager_read_page is not called, but instead the content of old -block is used. - -This is solved by marking flushed and synced pages (via -pager_{flush,sync}{,_some} with PM_FORCEREAD. (These functions call -lock-object.c:_pager_lock_object which marks pages with PM_FORCEREAD -if they are already marked with PM_NOTIFY_PAGEOUT.) In handling -m_o_d_request, pages marked as PM_FORCEREAD are not optimized in this -way. XXX: Currently, this fine-grained logic is disabled (with #if), -as it needs more testing. Probably RC2 will use it. For now, all -pages are considered PM_FORCEREAD and this particular optimization -never happens. - -*** Technical details - -As said above, we need guarantee that after pager_{sync,flush}*, -pager_read_page callback is called. The most convenient place to mark -these pages as being forced to re-read is -lock-object.c:_pager_lock_object, because this function is used by all -pager_{sync,flush}* functions. So there we just mark page as -PM_FORCEREAD if it's already marked as PM_NOTIFY_PAGEOUT. - -First, this mark influences behaviour of m_o_d_request. If page is -marked with PM_FORCEREAD and PM_PAGINGOUT, then we set PM_PAGEINWAIT -and wait until related m_o_d_return finishes (unmarks PM_PAGEINWAIT). -Then we continue with pager_read_page, etc. If page is not marked -with PM_FORCEREAD and is marked with PM_PAGINGOUT, then old logic is -used and pager_read_page is not called (because m_o_d_return handler -will call m_o_d_supply instead of us). (XXX: Again, this logic is -inside #if 0. Currently, all pages are considered as marked with -PM_FORCEREAD.) - -The other place where PM_FORCEREAD is taken into consideration is -handler of m_o_d_return. The original code checks if page is marked -with PM_PAGEINWAIT, and if it is, m_o_d_supply is called for the just -written page. PM_PAGEINWAIT is used as "delegator" of the -m_o_d_supply call to Mach. - -In patched libpager, there is one more condition for when to call -m_o_d_supply. It's called when page is marked as PM_PAGEINWAIT and -not marked as PM_FORCEREAD. If it's marked as PM_FORCEREAD, then we -leave m_o_d_supply to m_o_d_request handler which gets notified by -condition pager->wakeup. diff --git a/hurd/translator/ext2fs/ogi-fosdem2005.mgp b/hurd/translator/ext2fs/ogi-fosdem2005.mgp deleted file mode 100644 index 27b5077c..00000000 --- a/hurd/translator/ext2fs/ogi-fosdem2005.mgp +++ /dev/null @@ -1,165 +0,0 @@ -# "Supporting Larger ext2 File Systems in the Hurd" -# Written by Ognyan Kulev for presentation at FOSDEM 2005. -# Content of this file is in public domain. -%include "default.mgp" -%page -%nodefault -%center, font "thick", size 5 - - - - -Supporting Larger ext2 File Systems in the Hurd - - - -%font "standard", size 4 -Ognyan Kulev -%size 3 -<ogi@fmi.uni-sofia.bg> - - -%size 4 -FOSDEM 2005 - -%page - -Need for supporting larger file systems - - Active development during 1995-1997 - - Hurd 0.2 was released in 1997 and it was very buggy - - Many bugs are fixed since then - - The 2G limit for ext2 file systems becomes more and more annoying - -%page - -Timeline - - 2002: Time for graduating, fixing the 2G limit in Hurd's ext2fs and implementing ext3fs were chosen for MSc thesis - - 2003: First alfa quality patch - - 2004: Graduation, ext2fs patch in Debian, but ext3fs is unstable - -%page - -User pager in GNU Mach - - Address space - memory_object_data_supply - memory_object_data_return - Memory object (Mach concept) - pager_read_page - pager_write_page - User-supplied backstore (libpager concept) - -%page - -Current ext2fs - - Memory mapping of the whole store - - Applies only for metadata! - - bptr (block -> data pointer) - = image pointer + block * block_size - - Inode and group descriptor tables are used as if they are continous in memory - -%page - -Patched ext2fs, part one - - Address space region - mapping - Array of buffers - association - Store - - Association of buffers changes (reassocation) - - It's important reassociation to occur on buffers that are not in core - -%page - -Patched ext2fs, part two - - Always use buffer guarded by - disk_cache_block_ref (block -> buffer) - disk_cache_block_deref (release buffer) - - Buffer = data + reference count + flags (e.g. INCORE) - - Calling some functions implies releasing buffer: - pokel_add (pokels are list of dirty buffers) - record_global_poke (use pokel_add) - sync_global_ptr (sync immediately) - record_indir_poke (use pokel_add) - - Use ihash for mapping block to buffer - -%page - -When unassociated block is requested - - -%font "typewriter", size 4, cont -retry: - i = hint; - while (buffers[i] is referenced or in core) { - i = (i + 1) % nbuffers; - if (i == hint) { - return_unreferenced_buffers (); - goto retry; - } - } - hint = i + 1; - - deassociate (buffers[i]); - associate (buffers[i], block); - - return buffers[i]; - -%page - -Notification for evicted pages - - Notification is essential for optimal reassociation - - Precious pages in Mach - - Slight change to API and ABI of libpager is required - - Mach sometimes doesn't notify! - -%page - -Pager optimization - -1. Mach returns page to pager without leaving it in core - -2. Pager becomes unlocked because of calling callback pager_write_page - -3. User task touches the page - -4. Mach requests the same page from pager - -5. XXX Pager supplies the page that was returned by Mach, instead of calling callback pager_read_page - -%page - -Future directions - - Committing in the Hurd :-) - Block sizes of 1K and 2K - Run-time option for buffer array size (?) - Compile-time option for memory-mapping the whole store - Upgrade of UFS - Extended attributes (EAs) and Access control lists (ACLs) - -# Local Variables: -# mgp-options: "-g 640x480" -# End: diff --git a/hurd/translator/fatfs.mdwn b/hurd/translator/fatfs.mdwn deleted file mode 100644 index 006fac0b..00000000 --- a/hurd/translator/fatfs.mdwn +++ /dev/null @@ -1,13 +0,0 @@ -[[!meta copyright="Copyright © 2007, 2008, 2009 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]]."]]"""]] - -The current `fatfs` translator is read-only, and it has a severe bug: -[[!GNU_Savannah_bug 25961]]. diff --git a/hurd/translator/gopherfs.mdwn b/hurd/translator/gopherfs.mdwn deleted file mode 100644 index 6c32430f..00000000 --- a/hurd/translator/gopherfs.mdwn +++ /dev/null @@ -1,16 +0,0 @@ -[[!meta copyright="Copyright © 2010 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]]."]]"""]] - -`gopherfs` is a virtual filesystem allowing you to access Gopher sites. - - -# Source - -incubator, gopherfs/master diff --git a/hurd/translator/hello.mdwn b/hurd/translator/hello.mdwn deleted file mode 100644 index bd56cd76..00000000 --- a/hurd/translator/hello.mdwn +++ /dev/null @@ -1,14 +0,0 @@ -[[!meta copyright="Copyright © 2011 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]]."]]"""]] - -The *hello* translator is an example of a simple [[libtrivfs]]-based one-node -[[translator]]. It is shipped as part of the [[Hurd source code -repository|source_repositories]], and exists in a single-threaded and a -multi-threaded variant. diff --git a/hurd/translator/hostmux.mdwn b/hurd/translator/hostmux.mdwn deleted file mode 100644 index 5fab2dc5..00000000 --- a/hurd/translator/hostmux.mdwn +++ /dev/null @@ -1,31 +0,0 @@ -Multiplexes arbitrary host names, making access to many differnt host fast and easy. - -For each host accessed via a directory an new translator is started with the hostname as option. Say, /hostmuxdemo should let you access your favourite host with your translator mytranslatorfs. - -<code>**ls /hostmuxdemo/mybox/**</code> would give the result of mytranslatorfs applied to host mybox. - -## <a name="Usage"> Usage </a> - -Hostmux takes translator options as argument and (in the easiest case ) starts the translator with the given arguments and the hostname as the last argument. - -### <a name="ftpfs"> ftpfs </a> - -ftpfs is a good example, that is even very usefull. With hostmux and ftpfs you can access anonymous ftp via the filesystem, sparing out complicate use of a ftp client. - -We assume you want to access the ftp root at all servers. The example host is ftp.yourbox.com. - -Usermux is called via <code>**settrans -fgap /ftp /hurd/hostmux /hurd/ftpfs /**</code> . - -* <code>**-fg**</code> makes settrans try hard to remove an existing old translator from <code>**/ftp**</code> -* <code>**ap**</code> sets an active translator (starts the translator) and a passive translator (stores translator information in the filesystem with which an active translator can be started on access of this node) -* <code>**/ftp**</code> is where we want to set the translator -* <code>**/hurd/hostmux**</code> is obviously our hostmux translator that will be started at <code>**/ftp**</code> and handle filesystem operations on <code>**/ftp**</code> and everything below (like <code>**/ftp/ftp.yourbox.com/pub/**</code>) -* <code>**/hurd/ftpfs /**</code> is the argument to hostmux. - -When <code>**/ftp**</code> is accessed, the first directory is interpreted as hostname and a new translator is set up with the <code>**hostmux**</code> arguments: - -<code>**ls /ftp/ftp.yourhost.com/pub/**</code> lets hostmux start a new traslator <code>**/hurd/ftpfs / ftp.yourhost.com**</code> and serve it via <code>**/ftp/ftp.yourhos t.com/**</code> as directory. Subsequent the directory <code>**pub/**</code> on <code>**/ftp.yourhost.com/**</code> can be accessed via the new created translator. - -You can see the new created translator in the process list: <code>**ps ax | grep ftpsfs**</code> . You shoud see <code>**/hurd/ftpfs / ftp.yourhost.com**</code> . - --- [[Main/PatrickStrasser]] - 13 Jul 2004 diff --git a/hurd/translator/libguestfs.mdwn b/hurd/translator/libguestfs.mdwn deleted file mode 100644 index 649b31f5..00000000 --- a/hurd/translator/libguestfs.mdwn +++ /dev/null @@ -1,15 +0,0 @@ -[[!meta copyright="Copyright © 2010 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 open_issue_hurd]] - -[libguestfs](http://libguestfs.org/) is said to be able to access a lot -of different filesystem types -- can we use it to build GNU Hurd -[[translator]]s? (There is a [[FUSE]] module, too.) diff --git a/hurd/translator/magic.mdwn b/hurd/translator/magic.mdwn deleted file mode 100644 index 84bacdfb..00000000 --- a/hurd/translator/magic.mdwn +++ /dev/null @@ -1,22 +0,0 @@ -[[!meta copyright="Copyright © 2006, 2007, 2008, 2010 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]]."]]"""]] - -The magic translator provides `/dev/fd`. - - $ showtrans /dev/fd - /hurd/magic --directory fd - -The `/dev/fd` directory holds the open [[unix/file_descriptor]]s for your -current process. You can't see them with `ls -l /dev/fd/` but you can see them -individually like this: - - $ ls -l /dev/fd/0 - crw--w---- 1 bing tty 0, 0 Nov 19 18:00 /dev/fd/0 diff --git a/hurd/translator/mboxfs.mdwn b/hurd/translator/mboxfs.mdwn deleted file mode 100644 index e357294f..00000000 --- a/hurd/translator/mboxfs.mdwn +++ /dev/null @@ -1,11 +0,0 @@ -[[!meta copyright="Copyright © 2008 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]]."]]"""]] - -<http://www.nongnu.org/hurdextras/#mboxfs> diff --git a/hurd/translator/netio.mdwn b/hurd/translator/netio.mdwn deleted file mode 100644 index aca9cd69..00000000 --- a/hurd/translator/netio.mdwn +++ /dev/null @@ -1,17 +0,0 @@ -[[!meta copyright="Copyright © 2010 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]]."]]"""]] - -`netio` is a translator designed for creating socket ports through the -filesystem. - - -# Source - -incubator, netio/master diff --git a/hurd/translator/nfs.mdwn b/hurd/translator/nfs.mdwn deleted file mode 100644 index bf24370a..00000000 --- a/hurd/translator/nfs.mdwn +++ /dev/null @@ -1,18 +0,0 @@ -[[!meta copyright="Copyright © 2012 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]]."]]"""]] - -Translator acting as a NFS client. - - -# See Also - - * [[libnetfs: `io_map`|open_issues/libnetfs_io_map]] issue - - * [[open_issues/libnfs]] diff --git a/hurd/translator/nsmux.mdwn b/hurd/translator/nsmux.mdwn deleted file mode 100644 index d156772b..00000000 --- a/hurd/translator/nsmux.mdwn +++ /dev/null @@ -1,121 +0,0 @@ -[[!meta copyright="Copyright © 2009 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]]."]]"""]] - -# nsmux - -`nsmux` implements the simplest use-case of namespace-based translator -selection (see below). - -To use `nsmux` do the following: - - $ settrans -a <node> nsmux <directory> - -After this operation `<node>` will be a mirror of `<directory>` with -namespace-based translator selection functionality enabled. - -Please note that due to some details `nsmux` may complain a lot when -run as a normal user. This matter is the most urgent on the TODO -list. - -## Source - -`nsmux` translator can be obtained with the following series of -commands: - - $ git clone git://git.sv.gnu.org/hurd/incubator.git nsmux - $ cd nsmux/ - $ git checkout -b nsmux origin/nsmux - -`filter` translator can be obtained with the following series of -commands: - - $ git clone git://git.sv.gnu.org/hurd/incubator.git filter - $ cd filter/ - $ git checkout -b filter origin/filter - -The filter is not yet working. - -## Namespace-based Translator Selection - -Namespace-based translator selection is the special technique of using -"magic" filenames for both accessing the file and setting translators -on it. - -A "magic" filename is a filename which contains an unescaped sequence -of two commas: ",,". This sequence can be escaped by adding another -comma: ",,,". In the magic filename the part up to the first double -commas is interpreted as the filename itself; the remaining segments -into which the string is split by occurrences of ",," are treated as -names of translators located under `/hurd/`. - -The simplest advantage before traditional way of setting -translators is shown in the following examples. Compare this - - $ settrans -a file translator1 - $ settrans -a file translator2 - $ cat file - -to this: - - $ cat file,,translator1,,translator2 - -One simple command versus three more lengthy ones is an obvious -improvement. However, this advantage is not the only one and, -probably, not even the most important. - -What is a good candidate for the most important advantage is that -translators requested via "magic" filenames are session-bound. In -other words, by running `cat file,,translator` we set a translator -visible *only* to `cat`, while the original file remains untranslated. -Such session-specific translators are called **dynamic** and there is -no (theoretical) way for a client to get a port to a dynamic -translator requested by another client. - -Obviously, dynamic translators can be stacked, similarly to static -translators. Also, dynamic translator stacks may reside on top of -static translator stacks. - -An important operation of namespace-based translator selection is -*filtering*. Filtering basically consists in looking up a translator -by name in the stack and ignoring translators located on top of it. -Note that filtering does not mean dropping some translators: in the -current implementation a filter is expected to be a normal dynamic -translator, included in the dynamic translator stack similarly to -other translators. - -An important detail is that filtering is not limited to dynamic -translator stacks: a filter should be able to descend into static -translator stacks as well. - -Although the concept of filtering may seem purely abstract in the -simplest use-case of setting dynamic translators on top of files, the -situation changes greatly when dynamic translator stacks on top of -directories are considered. In this case, the implementation of -namespace-based translator selection is expected to be able to -propagate the dynamic translators associated with the directory down -the directory structure. That is, all files located under a directory -opened with magic syntax, are expected to be translated by the same -set of translators. In this case having the possibility to -specifically discard some of the translators set up on top of certain -files is very useful. - -Note that the implementation of propagation of dynamic translators -down directories is not fully conceived at the moment. The -fundamental problem is distinguishing between situations when the -dynamic translators are to be set on the underlying files of the -directory or on the directory itself. - -## Currently Implemented - -Currently there a working (though not heavily tested) implementation -of the simplest use-case of namespace-based translator selection in -the form of translator `nsmux`. The filter is partially implemented -and this is the immediate goal. Propagating translators down -directories is the next objective. diff --git a/hurd/translator/pfinet.mdwn b/hurd/translator/pfinet.mdwn deleted file mode 100644 index f6f69ea4..00000000 --- a/hurd/translator/pfinet.mdwn +++ /dev/null @@ -1,38 +0,0 @@ -[[!meta copyright="Copyright © 2002, 2004, 2005, 2007, 2008, 2011 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]]."]]"""]] - -To configure Internet connectivity, the `pfinet` (*Protocol Family Internet*) -[[translator]] must be configured. This is done using the -[[`settrans`|settrans]] command, for example like this: - - # settrans -fgap /servers/socket/2 /hurd/pfinet ↩ - -i eth0 -a 192.168.0.50 -g 192.168.0.1 -m 255.255.255.0 - -The argument `/server/socket/2` is the node that the translator is to be -attached to. This is followed by the translator program to run and any -arguments to give it. - -There, `-i`, `-a`, `-g` and `-m` are, quite obviously, the (Mach) device to -use, the IP address, the gateway and netmask. - ---- - -To make DNS lookups work, you'll also have to properly configure the -`/etc/resolv.conf` file, for example by copying it over from your GNU/Linux -installation. - ---- - - * [[DHCP]]. - - * [[Implementation]]. - - * [[IPv6]]. diff --git a/hurd/translator/pfinet/dhcp.mdwn b/hurd/translator/pfinet/dhcp.mdwn deleted file mode 100644 index 456d0c84..00000000 --- a/hurd/translator/pfinet/dhcp.mdwn +++ /dev/null @@ -1,46 +0,0 @@ -[[!meta copyright="Copyright © 2002, 2003, 2005, 2011 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 open_issue_hurd]] - -[[Debian GNU/Hurd|running/debian]] has some script hackery to get -[[running/debian/DHCP]] going. - ---- - -According to the following thread, no port should be needed since all the patches that have been applied, including the one concerning the thread. In fact, the thread finishes without concluding whether the patch has been applied or not. You can grab it in the thread, anyway. - -[Link to thread](http://lists.gnu.org/archive/html/bug-hurd/2005-01/msg00025.html) - -The thread starts at Jan 4th 2005 until Jan 6th and is only retaken at April 14th in [this thread](http://lists.gnu.org/archive/html/bug-hurd/2005-01/msg00025.html). - -[This](http://mail.gnu.org/archive/html/help-hurd/2003-10/msg00016.html) thread on help-hurd has a little more info on what's still needed for DHCP. - -Found this [message](http://mail.gnu.org/archive/html/bug-hurd/2003-08/msg00045.html) about DHCP capabilities in the Hurd encouraging. - -* Tom Hart began a [discussion ](http://mail.gnu.org/pipermail/help-hurd/2002-October/006643.html) of 14 posts in Oct 2002. - -The beginnings of a DHCP translator is available in the Hurd sources on Savannah: [hurd/trans/pump.c](http://savannah.gnu.org/cgi-bin/viewcvs/hurd/hurd/trans/pump.c?rev=1.3&content-type=text/vnd.viewcvs-markup) - -Unfortunately our current TCP/IP stack, the pfinet translator, lacks support for the AF\_PACKET interface as well as sending packets with an IP address of 0.0.0.0. - -Grant Bowman on bug-hurd: - - Herbert Xu (Pump maintainer) told me that to operate correctly, pump - uses the AF_PACKET interface which is only present in 2.2. - - Anyone else know the status of getting these compiled and functional? - -Neal Walfield on bug-hurd replies: - - > Anyone else know the status of getting these compiled and functional? - - We need to be able to send to the DHCP server with ip address 0.0.0.0. diff --git a/hurd/translator/pfinet/implementation.mdwn b/hurd/translator/pfinet/implementation.mdwn deleted file mode 100644 index 50b5dfc2..00000000 --- a/hurd/translator/pfinet/implementation.mdwn +++ /dev/null @@ -1,13 +0,0 @@ -[[!meta copyright="Copyright © 2000, 2008 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]]."]]"""]] - -The `pfinet` server is a hacked Linux internet implementation with a glue layer -translating between the Hurd [[RPC]]s and the middle layer of the Linux -implementation. diff --git a/hurd/translator/pfinet/ipv6.mdwn b/hurd/translator/pfinet/ipv6.mdwn deleted file mode 100644 index 5afee0c6..00000000 --- a/hurd/translator/pfinet/ipv6.mdwn +++ /dev/null @@ -1,57 +0,0 @@ -[[!meta copyright="Copyright © 2007, 2008, 2010 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]]."]]"""]] - -[[Stefan_Siegl|stesie]] has added IPv6 support to the pfinet [[translator]]. -This was [Savannah task #5470](http://savannah.gnu.org/task/?5470). - - -# Implementation - -Because the IPv4 and IPv6 protocols are -quite related to each other (think of mapped IPv4 addresses, etc.), there is no -separate [[server|translator]] for IPv6 but support for the latter has been -incorporated into the common pfinet. Unfortunately it's a little bit clumsy -now to set the [[translator]] up, since it has to be bound to -*/servers/socket/2* (like before) as well as */servers/socket/26* (for IPv6). - -To achieve this, you can tell pfinet to install [[active_translators|active]] -on specified nodes, using **-4** and **-6** options. This is, you have to -install a [[passive_translator|passive]] on */servers/socket/2* that also binds -the IPv6 port and vice versa. - - -# Examples - -Normal IPv4 network setup, address 192.168.7.23/24 and gateway 192.168.7.1. -IPv6 address shall be assigned using IPv6 auto-configuration. - - settrans -fgp /servers/socket/2 ↩ - /hurd/pfinet -6 /servers/socket/26 ↩ - -i eth0 -a 192.168.7.23 -m 255.255.255.0 -g 192.168.7.1 - settrans -fgp /servers/socket/26 ↩ - /hurd/pfinet -4 /servers/socket/2 ↩ - -i eth0 -a 192.168.7.23 -m 255.255.255.0 -g 192.168.7.1 - -Quite the same, but with static IPv6 address assignment: - - settrans -fgp /servers/socket/2 ↩ - /hurd/pfinet -6 /servers/socket/26 ↩ - -i eth0 -a 192.168.7.23 -m 255.255.255.0 -g 192.168.7.1 ↩ - -A 2001:4b88:10e4:0:216:3eff:feff:4223/64 -G 2001:4b88:10e4::1 - settrans -fgp /servers/socket/26 ↩ - /hurd/pfinet -4 /servers/socket/2 ↩ - -i eth0 -a 192.168.7.23 -m 255.255.255.0 -g 192.168.7.1 ↩ - -A 2001:4b88:10e4:0:216:3eff:feff:4223/64 -G 2001:4b88:10e4::1 - - -# Missing Functionality - -Amongst other things, support for [[IOCTL]]s is missing. diff --git a/hurd/translator/pflocal.mdwn b/hurd/translator/pflocal.mdwn deleted file mode 100644 index dc2434dc..00000000 --- a/hurd/translator/pflocal.mdwn +++ /dev/null @@ -1,13 +0,0 @@ -[[!meta copyright="Copyright © 2000, 2008 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]]."]]"""]] - -The implementation of the `pflocal` server is in the `pflocal` directory, and -uses [[`libpipe`|libpipe]] (shared code with the [[named_pipe|fifo]] -implementation). diff --git a/hurd/translator/procfs.mdwn b/hurd/translator/procfs.mdwn deleted file mode 100644 index 70448e94..00000000 --- a/hurd/translator/procfs.mdwn +++ /dev/null @@ -1,35 +0,0 @@ -[[!meta copyright="Copyright © 2008, 2009, 2010 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]]."]]"""]] - -Although there is no standard (POSIX or other) for the layout of the `/proc` -pseudo-filesystem, it turned out a very useful facility in GNU/Linux and other -systems, and many tools concerned with process management use it. (`ps`, `top`, -`htop`, `gtop`, `killall`, `pkill`, ...) - -Instead of porting all these tools to use [[libps]] (Hurd's official method for -accessing process information), they could be made to run out of the box, by -implementing a Linux-compatible `/proc` filesystem for the Hurd. - -The goal is to implement all `/proc` functionality needed for the various process -management tools to work. (On Linux, the `/proc` filesystem is used also for -debugging purposes; but this is highly system-specific anyways, so there is -probably no point in trying to duplicate this functionality as well...) - -*Status*: Madhusudan.C.S has implemented a new, fully functional [[procfs|madhusudancs]] for -[[GSoC 2008|community/gsoc/2008]]. - - -# [[New Implementation by Jérémie Koenig|jkoenig]] - - -# Old Implementation from [[open_issues/HurdExtras]] - -<http://www.nongnu.org/hurdextras/#procfs> diff --git a/hurd/translator/procfs/jkoenig.mdwn b/hurd/translator/procfs/jkoenig.mdwn deleted file mode 100644 index 9543b658..00000000 --- a/hurd/translator/procfs/jkoenig.mdwn +++ /dev/null @@ -1,23 +0,0 @@ -[[!meta copyright="Copyright © 2010, 2011 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]]."]]"""]] - -In August 2010, Jérémie Koenig [published another, new -version](http://lists.gnu.org/archive/html/bug-hurd/2010-08/msg00165.html). -This can be found in <http://git.savannah.gnu.org/cgit/hurd/procfs.git/>, -branch *jkoenig/master*. - -Testing it is as simple as this: - - $ git clone git://git.savannah.gnu.org/hurd/procfs.git - $ cd procfs/ - $ git checkout jkoenig/master - $ make - $ settrans -ca proc procfs --compatible - $ ls -l proc/ diff --git a/hurd/translator/procfs/jkoenig/discussion.mdwn b/hurd/translator/procfs/jkoenig/discussion.mdwn deleted file mode 100644 index 339fab50..00000000 --- a/hurd/translator/procfs/jkoenig/discussion.mdwn +++ /dev/null @@ -1,220 +0,0 @@ -[[!meta copyright="Copyright © 2010, 2011 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 open_issue_hurd]] - -[[!toc]] - - -# Miscellaneous - -IRC, #hurd, around September 2010 - - <youpi> jkoenig: from a quick read, your procfs implementation seems quite - simple, probably much more what I was expecting from Madhusudan (who - probably now hates you :) ) - <youpi> jkoenig: is it not possible to provide a /proc/self which points at - the client's pid? - <pinotree> (also, shouldn't /proc/version say something else than "Linux"?) - <youpi> to make linux tools work, no :/ - <youpi> kfreebsd does that too - <pinotree> really? - <youpi> yes - <youpi> (kfreebsd, not freebsd) - <pinotree> does kbsd's one print just "Linux version x.y.z" too, or - something more eg in a second line? - <pinotree> (as curiosity) - <youpi> % cat /proc/version - <youpi> Linux version 2.6.16 (des@freebsd.org) (gcc version 4.3.5) #4 Sun - Dec 18 04:30:00 CET 1977 - <pinotree> k - <giselher> I had some problems with killall5 to read the pid from /proc, Is - this now more reliable? - <youpi> I haven't tested with jkoenig's implementation - [...] - <pinotree> looks like he did 'self' too, see rootdir_entries[] in rootdir.c - <youpi> but it doesn't point at self - <antrik> youpi: there is no way to provide /proc/self, because the server - doesn't know the identity of the client - <youpi> :/ - <antrik> youpi: using the existing mechanisms, we would need another magic - lookup type - <antrik> an alternative idea I discussed with cfhammer once would be for - the client to voluntarily provide it's identity to the server... but that - would be a rather fundamental change that requires careful consideration - <antrik> also, object migration could be used, so the implementation would - be provided by the server, but the execution would happen in the - client... but that's even more involved :-) - <youpi> but we've seen how much that'd help with a lot of other stuff - <antrik> I'm not sure whether we discussed this on the ML at some point, or - only on IRC - <youpi> it "just" needs to be commited :) - <antrik> in either case, it can't hurt to bring this up again :-) - - -# root group - -IRC, #hurd, around October 2010 - - <pinotree> the only glitch is that files/dirs have the right user as - owner, but always with root group - - -# `/proc/$pid/stat` being 400 and not 444, and some more - -IRC, freenode, #hurd, 2011-03-27 - - <pochu> is there a reason for /proc/$pid/stat to be 400 and not 444 like on - Linux? - <pochu> there is an option to procfs to make it 444 like Linux - <pochu> jkoenig: ^ - <jkoenig> pochu, hi - <jkoenig> /proc/$pid/stat reveals information which is not usually - available on Hurd - <jkoenig> so I made it 400 by default to avoid leaking anything - <pochu> is there a security risk in providing that info? - <jkoenig> probably not so much, but it seemed like it's not really a - descision procfs should make - <jkoenig> I'm not sure which information we're speaking about, though, I - just remember the abstract reason. - <pochu> things like the pid, the memory, the priority, the state... - <pochu> sounds safe to expose - <jkoenig> also it's 0444 by default in "compatible" mode - <jkoenig> (which is necessary for the linux tools to work well) - <pochu> yeah I saw that :) - <pochu> my question is, should we change it to 0444 by default? if there - are no security risks and this improves compatibility, sounds like a good - thing to me - <pochu> we're already 'leaking' part of that info through e.g. ps - <jkoenig> I think /proc should be translated by /hurd/procfs --compatible - by default (I'm not sure whether it's already the case) - <jkoenig> also I'm not sure why hurd-ps is setuid root, rather than the - proc server being less paranoid, but maybe I'm missing something. - <pochu> jkoenig: it's not, at least not on Debian - <pochu> youpi: hi, what do you think about starting procfs with - --compatible by default? - <pochu> youpi: or changing /proc/$pid/stat to 0444 like on Linux - (--compatible does that among a few other things) - <youpi> I guess you need it for something? - <pochu> I'm porting libgtop :) - <youpi> k - <pochu> though I still think we should do this in procfs itself - <youpi> ymmv - <jkoenig> pochu, youpi, --compatible is also needed because mach's high - reported sysconf(_SC_CLK_TCK) makes some integers overflow (IIRC) - <youpi> agreed - <jkoenig> luckily, tools which use procfs usually try to detect the value - /proc uses rather than rely on CLK_TCK - <jkoenig> (so we can choose whatever reasonable value we want) - -IRC, freenode, #hurd, 2011-03-28 - - <antrik> jkoenig: does procfs expose any information that is not available - to everyone through the proc server?... - <antrik> also, why is --compatible not the default; or rather, why is there - even another mode? the whole point of procfs is compatibility... - <jkoenig> antrik, yes, through the <pid>/environ and (as mentionned above) - <pid>/stat files, but I've been careful to make these files readable only - to the process owner - <jkoenig> --compatible is not the default because it relaxes this paranoia - wrt. the stat file, and does not conform to the specification with regard - to clock tick counters - <antrik> what specification? - <jkoenig> the linux proc(5) manpage - <jkoenig> which says clock tick counters are in units of - 1/sysconf(_SC_CLK_TCK) - <antrik> so you are saying that there is some information that the Hurd - proc server doesn't expose to unprivileged processes, but linux /proc - does? - <jkoenig> yes - <antrik> that's odd. I wonder what the reasoning behind that could be - <antrik> but this information is available through Hurd ps? - <antrik> BTW, what exactly is _SC_CLK_TCK supposed to be? - <pinotree> jkoenig: hm, just tried with two random processes on linux - (2.6.32), and enrivon is 400 - <pinotree> (which makes sense, as you could have sensible informations eg - in http_proxy or other envvars) - <jkoenig> antrik, CLK_TCK is similar to HZ (maybe clock resolution instead - of time slices ?) - <jkoenig> sysconf(3) says "The number of clock ticks per second." - <jkoenig> antrik, I don't remember precisely what information this was, but - ps-hurd is setuid root. - <jkoenig> anyway, if you run procfs --compatible as a user and try to read - foo/1/stat, the result is an I/O error, which is the result of the proc - server denying access. - <antrik> but Linux /proc acutally uses HZ as the unit IIRC? or is - _SC_CLK_TCK=HZ on Linux?... - <jkoenig> I expect they're equal. - <jkoenig> in practice procps uses heuristics to guess what value /proc uses - (for compatibility purposes with older kernels) - <jkoenig> I don't think HZ is POSIX, while _SC_CLK_TCK is specifies as the - unit for (at least) the values returned by times() - <jkoenig> s/specifies/specified/ - <jkoenig> antrik, some the information is fetched directly from mach by - libps, and understandably, the proc server does not give the task port to - anyone who asks. - <antrik> well, as long as the information is exposed through ps, there is - no point in hiding it in procfs... - <antrik> and I'm aware of the crazy guessing in libproc... I was actually - mentoring the previous procfs implementation - <antrik> (though I never got around to look at his buggy code...) - <jkoenig> ok - -IRC, freenode, #hurd, 2011-07-22 - - <pinotree> hm, why /proc/$pid/stat is 600 instead of 644 of linux? - <jkoenig> pinotree, it reveals information which, while not that sensitive, - would not be available to users through the normal proc interface. - <jkoenig> (it's available through the ps command which is setuid root) - <jkoenig> we discussed at some point making it 644, IIRC. - <pinotree> hm, then why is it not a problem on eg linux? - <jkoenig> (btw you can change it with the -s option.) - <jkoenig> pinotree, it's not a problem because the information is not that - sensitive, but when rewriting procfs I preferred to play it self and - consider it's not procfs' job to decide what is sensitive or not. - <jkoenig> IIRC it's not sensitive but you need the task port to query it. - <jkoenig> like, thread times or something. - <pinotree> status is 644 though - <jkoenig> but status contains information which anyone can ask to the proc - server anyway, I think. - - -# `/proc/mounts`, `/proc/$pid/mounts` - -IRC, freenode, #hurd, 2011-07-25 - - < pinotree> jkoenig: btw, what do you think about providing empty - /proc/mounts and /proc/$pid/mounts files? - < jkoenig> pinotree, I guess one would have to evaluate the consequences - wrt. existing use cases (in other words, "I have absolutely no clue - whatsoever about whether that would be desirable" :-) - < jkoenig> pinotree, the thing is, an error message like "/proc/mounts: No - such file or directory" is rather explicit, whereas errors which would be - caused by missing data in /proc/mounts would maybe be harder to track - < braunr> this seems reasonable though - < braunr> there already are many servers with e.g. grsecurity or chrooted - environments where mounts is empty - < pinotree> well, currently we also have an empty mtab - < braunr> pinotree: but what do you need that for ? - < braunr> pinotree: the init system ? - < pinotree> and the mnt C api already returns no entries (or it bails out, - i don't remember) - < pinotree> not a strict need - - -# `/proc/[PID]/auxv`, `/proc/[PID]/exe`, `/proc/[PID]/mem` - -Needed by glibc's `pldd` tool (commit -11988f8f9656042c3dfd9002ac85dff33173b9bd). - - -# `/proc/self/exe` - -[[!message-id "alpine.LFD.2.02.1110111111260.2016@akari"]] diff --git a/hurd/translator/random.mdwn b/hurd/translator/random.mdwn deleted file mode 100644 index afb76953..00000000 --- a/hurd/translator/random.mdwn +++ /dev/null @@ -1,70 +0,0 @@ -[Savannah task #5130: random translator](http://savannah.gnu.org/task/?5130) - -See the attached [[mbox.bz2]] containing all the emails concerning this topic -which I was able to gather from public archives. (!) This is not up-to-date -anymore, as [[MichaelCasadevall]] is currently working on this. - -# Description - -Sources of entropy are for example disk access latencies or keystroke patterns -or behavior on networks. This suggests that for implementing a random -translator a kernel part is needed as well, to gather that entropy. That -kernel part would then export the gathered entropy via a kernel device, named -perhaps `entropy`. - -# Setup Pseudo Random Devices - -Stuck getting SSH to work? You need a pseudo random generator (PRG). - -There are several solutions to the lack of `/dev/random` and `/dev/urandom`, -but they are not yet in the default installation. - -* Marcus' work can be downloaded at - [random.tar.gz](ftp://alpha.gnu.org/gnu/hurd/contrib/marcus/random.tar.gz). - (Identical to <http://kilobug.free.fr/hurd/random-64.tar.gz>?) - * [A patch](http://mail.gnu.org/pipermail/bug-hurd/2002-August/010248.html) - that was probably already incorporated from August 14, 2002. - * Clemmitt Sigler [reported - success](http://lists.gnu.org/archive/html/help-hurd/2002-10/msg00076.html) - October 11, 2002 and Marcus [described - some](http://lists.gnu.org/archive/html/help-hurd/2002-10/msg00081.html) of - the internals. - -* [Entropy Gathering Daemon](http://egd.sourceforge.net/). - * [request for packaging](http://bugs.debian.org/145498). - -* [OSKit Entropy - Patch](http://lists.gnu.org/archive/html/bug-hurd/2003-01/msg00000.html) from - Derek Davies - Jan 2003. - * See also [this page](http://www.ddavies.net/oskit-entropy/). - * Note that this patch can (and should) be used with this [OSKit NIC - patch](ftp://flux.cs.utah.edu/flux/oskit/mail/html/oskit-users/msg01570.html). - -* [Sune Kirkeby's incomplete port of the Linux /dev/\{,u\}random device - driver](http://ibofobi.dk/stuff/hurd-entropy/) - * [The files](http://download.ibofobi.dk/hurd-entropy/), including a [patch - for GNU - Mach](http://download.ibofobi.dk/hurd-entropy/gnumach-entropy.diff.bz2). - -* Quick and dirty way: - - sudo cp /bin/bash /dev/random - sudo ln -s random /dev/urandom - ---- - -# Setup Tips - -Here are some tips on how to actually setup the two random devices using -Kilobugs' [random-64 server](http://kilobug.free.fr/hurd/random-64.tar.gz). -His tarball is a complete Hurd server including a pre-built binary - so you -don't need GCC or magic fingers for this! :) - -After untaring the package you copy the random binary to the `/hurd` -directory. Then you setup the translators for random and urandom. - - # settrans -c /dev/random /hurd/random \ - --seed-file /var/run/random-seed --secure - # settrans -c /dev/urandom /hurd/random \ - --seed-file /var/run/urandom-seed --fast - # chmod 0644 /dev/random /dev/urandom diff --git a/hurd/translator/random/mbox.bz2 b/hurd/translator/random/mbox.bz2 Binary files differdeleted file mode 100644 index a9a4d4a6..00000000 --- a/hurd/translator/random/mbox.bz2 +++ /dev/null diff --git a/hurd/translator/short-circuiting.mdwn b/hurd/translator/short-circuiting.mdwn deleted file mode 100644 index 9de9f7b8..00000000 --- a/hurd/translator/short-circuiting.mdwn +++ /dev/null @@ -1,88 +0,0 @@ -[[!meta copyright="Copyright © 2009 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]]."]]"""]] - -In traditional [[Unix]], file systems contain special files. These are: -symbolic links, character devices, block devices, named pipes, and -named sockets. Naturally the Hurd also support these. - -However, if you take a look at `hurd/io.defs` and `hurd/fs.defs`, you'll -find that there are no [[RPC]]s that deal specifically with these types. -Sure, you can get the type of the file through `io_stat` (among other -things), but there are none that e.g. lets you create a symbolic link. - -If you take a look at how [[glibc]] implements `symlink`, you'll notice -that all it does is create a new file and set its passive translator to -`/hurd/symlink DEST`. You can verify this yourself by creating a symlink -with `ln -s foo bar` and print its passive translator setting with `showtrans -bar`. - -This is how the other special files are implemented as well. The header -`hurd/paths.h` contains a list of paths that are used to implement -special files: - - * `/hurd/symlink` - * `/hurd/chrdev` - * `/hurd/blkdev` - * `/hurd/fifo` - * `/hurd/ifsock` - -So all special files are implemented through special-purpose translators, -right? Not quite, instead the translators of this list are often -implemented in their underlying filesystem through *translator -short-circuiting*. In fact, `chrdev` and `blkdev` aren't even implemented -as translators at all. - -Translator short-circuiting is when a file system server implements the -functionality of a passive translator itself, instead of actually starting -it. For instance, all the [[`symlink`|symlink]] translator does is return -a `FS_RETRY_*` reply to the caller. So instead of starting it, the file -system server can simply continue the file name look-up internally by -appending the target of the symbolic link to the path being looked-up. - -This way, we can skip starting the `symlink` translator, skip retrying -the look-up on the newly started translator, and we might also skip a -retry to the same file system server again, if the target of the symbolic -link is in it. - -In fact, the list's translators that actually are implemented (`symlink`, -`fifo`, `ifsock`) are only used as a default implementation if the underlying -file system's translator does not implement the functionality itself, i.e., if -it doesn't short-circuit it. - -To make sure that you use one of these translators, there by bypassing the -short-circuiting mechanism, you can either start it as -an active translator, or use a different path from the one in -`hurd/path.h`, e.g. `settrans bar /hurd/./symlink foo`. - -The best example of how short-circuiting is implemented can be found -in [[`libdiskfs`|libdiskfs]]. Notice how it detects if a translator to store -is a special file in `diskfs_S_file_set_translator` and instead -of storing a real passive translator setting on the disk, stores it as a -symlink node (using `diskfs_create_symlink_hook` or a generic implementation). - -In later look-ups to the node, it checks the node's `stat` structure in -`diskfs_S_file_get_translator`, or -`diskfs_S_dir_lookup` and handles special file types appropriately. - -Doing this translator short-circuiting has disadvantages: code duplication, or -in general adding code complexity that isn't needed for implementing the same -functionality, but it also has advantages: using functionality that the file -system's data structures nevertheless already provide -- storing symbolic links -in `ext2fs`' inodes instead of storing passive translator settings -- and thus -staying compatible with other operating systems mounting that file system. - -Also, this short-circuiting does preserve system resources, as it's no longer -required to start a `symlink` translator for resolving each symbolic link, as -well as it does reduce the [[RPC]] overhead. - -It can also confuse users who expect the passive translator to start. -For instance, if a user notices that [[`symlink`|symlink]]'s code is -lacking some functionality, but that it unexpectedly works when the user -tries to run it. diff --git a/hurd/translator/storeio.mdwn b/hurd/translator/storeio.mdwn deleted file mode 100644 index 8e26a959..00000000 --- a/hurd/translator/storeio.mdwn +++ /dev/null @@ -1,30 +0,0 @@ -[[!meta copyright="Copyright © 2007, 2008 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]]."]]"""]] - -`storeio` is a *translator for devices and other stores*. - -It relies heavily on [[libstore]]. - - -# Examples - -You can make a file's content available as some block device (where `foo` is -the name of the file to map): - - settrans -ca node /hurd/storeio -T file foo - -You can even `ungzip` files on the fly (`bunzip2` is available as well): - - settrans -ca node /hurd/storeio -T gunzip foo.gz - -You can use the *typed store*, to create filter chains (of course this example -is kind of useless since you could use the `gunzip` store directly): - - settrans -ca node /hurd/storeio -T typed gunzip:file:foo.gz diff --git a/hurd/translator/storeio/discussion.mdwn b/hurd/translator/storeio/discussion.mdwn deleted file mode 100644 index 0766e0af..00000000 --- a/hurd/translator/storeio/discussion.mdwn +++ /dev/null @@ -1,16 +0,0 @@ -[[!meta copyright="Copyright © 2011, 2012 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 open_issue_hurd]] - -IRC, freenode, #hurd, 2011-11-10: - - <pinotree> hm, is it normal that st_rdev for storeio translators of - /dev/hd* devices is 0? diff --git a/hurd/translator/stowfs.mdwn b/hurd/translator/stowfs.mdwn deleted file mode 100644 index 9c88f1a3..00000000 --- a/hurd/translator/stowfs.mdwn +++ /dev/null @@ -1,11 +0,0 @@ -[[!meta copyright="Copyright © 2008 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]]."]]"""]] - -[[!meta redir=unionfs#stowfs]] diff --git a/hurd/translator/tarfs.mdwn b/hurd/translator/tarfs.mdwn deleted file mode 100644 index e25e3255..00000000 --- a/hurd/translator/tarfs.mdwn +++ /dev/null @@ -1,25 +0,0 @@ -[[!meta copyright="Copyright © 2010 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]]."]]"""]] - -`tarfs` is a translator aimed at providing access to tar files through the -filesystem. This way you don't have to extract files from the archive to -access them. It supports compressed archives (bzip2 and gzip) through -[[libstore]]. - - -# Status - -Works fine on most cases, occasional corruptions when writing using bzip2/gzip -stores. - - -# Source - -incubator, tarfs/master diff --git a/hurd/translator/tmpfs.mdwn b/hurd/translator/tmpfs.mdwn deleted file mode 100644 index 626fad86..00000000 --- a/hurd/translator/tmpfs.mdwn +++ /dev/null @@ -1,24 +0,0 @@ -[[!meta copyright="Copyright © 2007, 2008, 2009, 2011 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]]."]]"""]] - -`tmpfs` is a file system server for temporary data storage without using a real -(permanent) [[backing_store]]. - -It is based on [[libdiskfs]]. - -Even though there are other possibilities of creating a -[[libstore/examples/ramdisk]] and running a regular, for example, [[`ext2` file -system|ext2fs]] on it, having a real `tmpfs` is better, as it need not deal -with the additional block-level indirection layer that `ext2` (or any other -disk-based file system) imposes. - -However, `tmpfs` is not working correctly at the moment, see the [[discussion]] -sub-pages. There is a [[!FF_project 271]][[!tag bounty]] on this task. diff --git a/hurd/translator/tmpfs/discussion.mdwn b/hurd/translator/tmpfs/discussion.mdwn deleted file mode 100644 index bdee0f78..00000000 --- a/hurd/translator/tmpfs/discussion.mdwn +++ /dev/null @@ -1,430 +0,0 @@ -[[!meta copyright="Copyright © 2011, 2012 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 open_issue_hurd]] - - * [[notes_bing]] - - * [[notes_various]] - - * [[tmpfs_vs_defpager]] - - * [[!GNU_Savannah_bug 26751]] - - * [[!GNU_Savannah_bug 32755]] - - -# [[Maksym_Planeta]] - -## IRC, freenode, #hurd, 2011-11-29 - - <mcsim> Hello. In seqno_memory_object_data_request I call - memory_object_data_supply and supply one zero filled page, but seems that - kernel ignores this call because this page stays filled in specified - memory object. In what cases kernel may ignore this call? It is written - in documentation that "kernel prohibits the overwriting of live data - pages". But when I called memory_object_lock_request on this page with - should flush and MEMORY_OBJECT_RETURN_ALL nothing change - <braunr> what are you trying to do ? - <mcsim> I think that memory object holds wrong data, so I'm trying to - replace them. This happens when file is truncated, so I should notify - memory object that there is no some data. But since gnumach works only - with sizes that are multiple of vm_page_size, I should manually correct - last page for case when file size isn't multiple of vm_page_size. This is - needed for case when file grows again and that tail of last page, which - wasn't part of file should be filled wit - <mcsim> I've put some printf's in kernel and it seems that page that holds - data which I want replace both absent and busy: - <mcsim> m = vm_page_lookup(object,offset); - <mcsim> ... - <mcsim> if (m->absent && m->busy) { <-- Condition is true - <mcsim> in vm/memory_object.c:169 - <slpz> mcsim: Receiving m_o_data_request means there's no page in the - memory object at that offset, so m_o_data_supply should work - <slpz> are you sure that page is not being installed into the memory - object? - <braunr> it seems normal it's both absent and busy - <braunr> absent because, as sergio said, the page is missing, and busy - because the kernel starts a transfer for its content - <braunr> i don't understand how you determine the kernel ignores your - data_supply - <braunr> "because this page stays filled in specified memory object" - <braunr> please explain this with more detail - <slpz> mcsim: anyway, when truncating a file to a non page-aligned length, - you can just zero fill the rest of the page by mapping the object and - writing to it with memset/bzero - <braunr> (avoid bzero, it's obsolete) - <mcsim> slpz: I'll try try it now. - <braunr> slpz: i think that's what he's trying to do - <mcsim> I don't vm_map it - <braunr> how do you zero it then ? - <braunr> "I call memory_object_data_supply and supply one zero filled page" - <mcsim> First I call mo_lock_request and ask to return this page, than I - memset tail and try to mo_data_supply - <mcsim> I use this function when I try to replace kr = - memory_object_data_supply(reply_to, offset, addr, vm_page_size, FALSE, - VM_PROT_NONE, FALSE, MACH_PORT_NULL); - <mcsim> where addr points to new data, offset points to old data in - object. and reply_to is memory_control which I get as parameter in - mo_data_request - <braunr> why would you want to vm_map it then ? - <mcsim> because mo_data_supply doesn't work. - <braunr> mcsim: i still don't see why you want to vm_map - <mcsim> I just want to try it. - <braunr> but what do you think will happen ? - <mcsim> But seems that it doesn't work too, because I can't vm_map - memory_object from memory_manager of this object. - - -## IRC, freenode, #hurd, 2012-01-05 - - <mcsim> Seems tmpfs works now. The code really needs cleaning, but the main - is that it works. So in nearest future it will be ready for merging to - master branch. BTW, anyone knows good tutorial about refactoring using - git (I have a lot of pointless commits and I want to gather and scatter - them to sensible ones). - <antrik> I wonder whether he actually got the "proper" tmpfs with the - defaul pager working? or only the hack with a private pager? - <mcsim> antrik: with default pager - <antrik> mcsim: wow, that's great :-) - <antrik> how did you fix it? - <mcsim> antrik: The main code I wrote before December, so I forgot some of - what exactly I were doing. So I have to look through my code :) - <mcsim> antrik: old defpager was using old functions like m_o_data_write - instead of m_o_data_return etc. I changed it, mostly because of my - misunderstanding. But I hope that this is not a problem. - - -## IRC, freenode, #hurd, 2012-01-18 - - <antrik> mcsim: did you publish your in-progress work? - <mcsim> there is a branch with working tmpfs in git repository: - http://git.savannah.gnu.org/cgit/hurd/hurd.git/log/?h=mplaneta/tmpfs/defpager - <jd823592> sorry for interrupting the meeting but i wonder what is a - lazyfs? - <mcsim> jd823592: lazyfs is tmpfs which uses own pager - <antrik> mcsim: ah, nice :-) - <antrik> BTW, what exactly did you need to fix to make it work? - <mcsim> most fixes wore in defpager in default_pager_object_set_size. Also, - as i said earlier, I switched to new functions (m_o_data_return instead - of m_o_data_write and so on). I said that this was mostly because of my - misunderstanding, but it turned out that new function provide work with - precious attribute of page. - <mcsim> Also there were some small errors like this: - <mcsim> pager->map = (dp_map_t) kalloc (PAGEMAP_SIZE (new_size)); - <mcsim> memcpy (pager->map, old_mapptr, PAGEMAP_SIZE (old_size)); - <mcsim> where in second line should be new_size too - <mcsim> I removed all warnings in compiling defpager (and this helped to - find an error). - <antrik> great work :-) - <jd823592> tmpfs is nice thing to have :), are there other recent - improvements that were not yet published in previous moth? - <mcsim> BTW, i measured tmpfs speed in it is up to 6 times faster than - ramdisk+ext2fs - <antrik> mcsim: whow, that's quite a difference... didn't expect that - - -## IRC, freenode, #hurd, 2012-01-24 - - <mcsim> braunr: I'm just wondering is there any messages before hurd - breaks. I have quite strange message: memory_object_data_request(0x0, - 0x0, 0xf000, 0x1000, 0x1) failed, 10000003 - <braunr> hm i don't think so - <braunr> usually it either freezes completely, or it panics because of an - exhausted resource - <mcsim> where first and second 0x0 are pager and pager_request for memory - object in vm_fault_page from gnumach/vm_fault.c - <braunr> if you're using the code you're currently working on (which i - assume), then look for a bug there first - <tschwinge> mcsim: Maybe you're running out of swap? - <mcsim> tschwinge: no - <braunr> also, translate the error code - <mcsim> AFAIR that's MACH_INVALID_DEST - <braunr> and what does it mean in this situation ? - <mcsim> I've run fsx as long as possible several times. It runs quite long - but it breaks in different ways. - <mcsim> MACH_SEND_INVALID_DEST - <mcsim> this means that kernel tries to call rpc with pager 0x0 - <mcsim> this is invalid destiantion - <braunr> null port - <braunr> ok - <braunr> did the pager die ? - <mcsim> When I get this message pager dies, but also computer can suddenly - reboot - <braunr> i guess the pager crashing makes mach print this error - <braunr> but then you may have a dead port instead of a null port, i don't - remember the details - <mcsim> braunr: thank you. - <mcsim> btw, for big file sizes fsx breaks on ext2fs - <braunr> could you identify the threshold ? - <braunr> and what's fsx exactly ? - <mcsim> fsx is a testing utility for filesystems - <mcsim> see http://codemonkey.org.uk/projects/fsx/ - <braunr> ah, written by tevanian - <mcsim> threshold seems to be 8Mb - <braunr> fyi, avadis tevanian is the main author of the mach 3 core - services and VM parts - <braunr> well, ext2fs is bugged, we already know that - <braunr> old code maintained as well as possible, but still - <mcsim> hmm, with 6mb it breaks too - <braunr> i guess that it may break on anything larger than a page actually - :p - <mcsim> When I tested with size of 256kb, fsx worked quite long and didn't - break - <braunr> mcsim: without knowing exactly what the test actually does, it's - hard to tell - <mcsim> I see, I just wanted to tell that there are bugs in ext2fs too. But - I didn't debugged it. - <mcsim> fsx performs different operations, like read, write, truncate file, - grow file in random order. - <braunr> in parellel too ? - <braunr> parellel - <braunr> parallel* - <mcsim> no - <mcsim> I run several fsx's parallel on tmpfs, but they break on file with - size 8mb. - <braunr> that must match something in mach - <braunr> s/must/could/ :) - <mcsim> braunr: I've pushed my commits to mplaneta/tmpfs/master branch in - hurd repository, so you could review it. - <braunr> you shouldn't do that just for me :p - <braunr> you should do that regularly, and ask for reviews after - (e.g. during the meetings) - <mcsim> everyone could do that :) - <braunr> i'm quite busy currently unfortunately - <braunr> i'll try when i have time, but the best would be to ask very - specific questions - <braunr> these are usually the faster to answer for people ho have the - necessary expertise to help you - <braunr> fastest* - <mcsim> ok. - <mcsim> braunr: probably, I was doing something wrong, because now parallel - works only for small sizes. Sorry, for disinformation. - - -### IRC, freenode, #hurd, 2012-01-25 - - <antrik> braunr: actually, the paging errors are *precisely* the way my - system tends to die... - <antrik> (it's after about a month of uptime usually though, not a week...) - <antrik> tschwinge: in my case at least, I have still plenty of swap when - this happens. swap usage is generally at about the amount of physical - memory -- I have no idea though whether there is an actual connection, or - it's just coincidence - <braunr> antrik: ok, your hurd dies because of memory issues, my virtual - machines die because of something else (though idk what) - <antrik> before I aquired the habit of running my box 24/7 and thus hitting - this issue, most of the hangs I experienced were also of a different - nature... but very rare in general, except when doing specific - problematic actions - <mcsim> antrik: yes. Do you get messages like that I posted? - <mcsim> here is it: memory_object_data_request(0x0, 0x0, 0xf000, 0x1000, - 0x1) failed, 10000003 - <antrik> mcsim: I can't tell for sure (never noted them down, silly me...) - <antrik> but I definitely get paging errors right before it hangs - <antrik> I guess that was unclear... what I'm trying to say is: I do get - memory_object_data_request() failed; but I'm not sure about the - parameters - <mcsim> antrik: ok. Thank you. - <mcsim> I'll try to find something in defpager, but there should be errors - in mach too. At least because sometimes computer suddenly reboots during - test. - <antrik> mcsim: I don't get sudden reboots - <antrik> might be a different error - <antrik> do you have debugging mode activated in Mach? otherwise it reboots - on kernel panics... - <mcsim> antrik: no. But usually on kernel panics mach waits for some time - showing the error message and only than reboots. - <antrik> OK - <mcsim> how can I know that tmpfs is stable enough? Correcting errors in - kernel to make fsx test work seems to be very complex. - <mcsim> *If errors are in kernel. - <antrik> well, it seems that you tested it already much more thoroughly - than any other code in the Hurd was ever tested :-) - <antrik> of course it would be great if you could pinpoint some of the - problems you see nevertheless :-) - <antrik> but that's not really necessary before declaring tmpfs good enough - I'd say - <mcsim> ok. I'll describe every error I meet on my userpage - <mcsim> but it will take some time, not before weekend. - <antrik> don't worry, it's not urgent - <antrik> the reason I'd really love to see those errors investigated is - that most likely they are the same ones that cause stability problems in - actual use... - <antrik> having an easy method for reproducing them is already a good start - <mcsim> no. they are not the same - <mcsim> every time i get different one - <mcsim> especially when i just start one process fsx and wait error - <antrik> mcsim: have you watched memory stats while running it? if it's - related to the problems I'm experiencing, you will probably see rising - memory use while the test is running - <mcsim> it could be reboot, message, I posted and also fsx could stop - telling that something wrong with data - <antrik> you get all of these also on ext2? - <mcsim> i've done it only once. Here is the log: - http://paste.debian.net/153511/ - <mcsim> I saved "free" output every 30 seconds - <mcsim> no. I'll do it now - <antrik> would be better to log with "vmstat 1" - <mcsim> ok. - <mcsim> as you can see, there is now any leek during work. But near end - free memory suddenly decreases - <antrik> yeah... it's a bit odd, as there is a single large drop, but seems - stable again afterwards... - <antrik> a more detailed log might shed some light - <mcsim> drop at the beginning was when I started translator. - <mcsim> what kind of log do you mean? - <antrik> vmstat 1 I mean - <mcsim> ah... - - -## IRC, freenode, #hurd, 2012-02-01 - - <mcsim> I run fsx with this command: fsx -N3000 foo/bar -S4 - -l$((1024*1024*8)). And after 70 commands it breaks. - <mcsim> The strangeness is at address 0xc000 there is text, which was - printed in fsx with vfprintf - <mcsim> I've lost log. Wait a bit, while I generate new - <jkoenig_> mcsim, what's fsx / where can I find it ? - <mcsim> fsx is filesystem exersiser - <mcsim> http://codemonkey.org.uk/projects/fsx/ - <jkoenig_> ok thanks - <mcsim> i use it to test tmpfs - <mcsim> here is fsx that compiles on linux: http://paste.debian.net/154390/ - and Makefile for it: http://paste.debian.net/154392/ - <jkoenig_> mcsim, hmm, I get a failure with ext2fs too, is it expected? - <mcsim> yes - <mcsim> i'll show you logs with tmpfs. They slightly differ - <mcsim> here: http://paste.debian.net/154399/ - <mcsim> pre last operation is truncate - <mcsim> and last is read - <mcsim> during pre-last (or last) starting from address 0xa000, every - 0x1000 bytes appears text - <mcsim> skipping zero size read - <mcsim> skipping zero size read - <mcsim> truncating to largest ever: 0x705f4b - <mcsim> signal 2 - <mcsim> testcalls = 38 - <mcsim> this text is printed by fsx, by function prt - <mcsim> I've mistaken: this text appears even from every beginning - <mcsim> I know that this text appears exactly at this moment, because I - added check of the whole file after every step. And this error appeared - only after last truncation. - <mcsim> I think that the problem is in defpager (I'm fixing it), but I - don't understand where defpager could get this text - <jkoenig_> wow I get java code and debconf templates - <mcsim> So, my question is: is it possible for defpager to get somehow this - text? - <jkoenig_> possibly recycled, non-zeroed pages? - <mcsim> hmmm... probably you're right - <jkoenig_> 0x1000 bytes is consistent with the page size - <mcsim> Should I clean these pages in tmpfs? - <mcsim> or in defpager? - <mcsim> What is proper way? - <jkoenig_> mcsim, I'd say defpager should do it, to avoid leaking - information, I'm not sure though. - <jkoenig_> maybe tmpfs should also not assume the pages have been blanked - out. - <mcsim> if i do it in both, it could have big influence on performance. - <mcsim> i'll do it only in defpager so far. - <mcsim> jkoenig_: Thank you a lot - <jkoenig_> mcsim, no problem. - - -## IRC, freenode, #hurd, 2012-02-08 - - <tschwinge> mcsim: You pushed another branch with cleaned-up patches? - <mcsim> yes. - <tschwinge> mcsim: Anyway, any data from your report that we could be - interested in? (Though it's not in English.) - <mcsim> It's completely in ukrainian an and mostly describes some aspects - of hurd's work. - <tschwinge> mcsim: OK. So you ran out of time to do the benchmarking, - etc.? - <tschwinge> Comparing tmpfs to ext2fs with RAM backend, etc., I mean. - <mcsim> tschwinge: I made benchmarking and it turned out that tmpfs up to 6 - times faster than ext2fs - <mcsim> tschwinge: is it possible to have a review of work, I've already - done, even if parallel writing doesn't work? - <tschwinge> mcsim: Do you need this for university or just a general review - for inclusion in the Git master branch? - <mcsim> general review - <tschwinge> Will need to find someone who feels competent to do that... - <mcsim> the branch that should be checked is tmpfs-final - <pinotree> cool, i guess you tested also special types of files like - sockets and pipes? (they are used in eg /run, /var/run or similar) - <mcsim> Oh. I accidentally created this branch. It is my private - branch. I'll delete it now and merge everything to mplaneta/tmpfs/master - <mcsim> pinotree: Completely forgot about them :( I'll do it by all means - <pinotree> mcsim: no worries :) - <mcsim> tschwinge: Ready. The right branch is mplaneta/tmpfs/master - - -## IRC, freenode, #hurd, 2012-03-07 - - <pinotree> did you test it with sockets and pipes? - <mcsim> pinotree: pipes work and sockets seems to work too (I've created - new pfinet device for them and pinged it). - <pinotree> try with simple C apps - <mcsim> Anyway all these are just translators, so there shouldn't be any - problems. - <mcsim> pinotree: works - - -## IRC, freenode, #hurd, 2012-03-22 - - <mcsim> Hello. Is it normal that when i try to run du at directory where - translator is mounted it says that directory is 'Not a directory'? Here - are some examples with different filesystems: paste.debian.net/160699 - First is ramdisk+ext2fs, second is tmpfs, third is ext2fs. - <civodul> i can't reproduce the problem with ext2fs - <civodul> perhaps you can try rpctracing it to see where ENOTDIR comes from - <mcsim> civodul: when I run du io_stat_request ipc is called. But reply is - ((os/kern) invalid address). Where is server code for this ipc? I only - found its definition in defs file and that's all. - <civodul> mcsim: server code is in libdiskfs + ext2fs, for instance - <mcsim> civodul: Does io_stat_request have changed name in server code? I - just can't find it. Here are my grep results fore io_stat_request (i was - grepping in root of hurd repository: paste.debian.net/160708 - <youpi> remove _request - <youpi> it's just io_stat - <mcsim> youpi: thank you - - -## IRC, freenode, #hurd, 2012-04-08 - - <mcsim> youpi: I've corrected everything you said, and pushed code to new - branch mplaneta/tmpfs/master-v2 - <youpi> mcsim: all applied, thanks ! - <youpi> I'll probably test it a bit and upload a new version of hurd - <youpi> mcsim: it seems to be working fine indeed! - <mcsim> youpi: thank you for all your reviews, suggestions you gave and - corrections you made :) - <youpi> and it seems translators indeed work there too - <youpi> hopefully it'll work to run the debian installer - <youpi> that'd permit to solve memory consumption - <pinotree> (so tmpfs works really fine now? great!) - <youpi> I could reboot with tmpfs on /tmp and build a package there, yes - <mcsim> youpi: yes, I've compiled several packages already, but it does not - give big advantage in performance. - <youpi> I wasn't really looking for performance, but for correctness :) - <youpi> are you using writeback for your /, actually ? - <youpi> argl, /run gets triggered before mach-defpager is started - <youpi> the X11 socket works there too - <youpi> gnu_srs: might your mouse issue with Xorg be related with vnc usage - too? - <youpi> it seems ENOSPC works fine too - <mcsim> youpi: as to writeback. I think yes, because default pager is asked - to write data only when this data is evicted. - <youpi> I'm talking about kvm - <mcsim> youpi: I use real computer. - <youpi> ok - <youpi> but that indeed means writeback of ext2fs works, which is a good - sign :) diff --git a/hurd/translator/tmpfs/notes_bing.mdwn b/hurd/translator/tmpfs/notes_bing.mdwn deleted file mode 100644 index fa3eeac2..00000000 --- a/hurd/translator/tmpfs/notes_bing.mdwn +++ /dev/null @@ -1,101 +0,0 @@ -[[!meta copyright="Copyright © 2007, 2008, 2009 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 open_issue_hurd]] - -1. to run tmpfs as a regular user, /servers/default-pager must be executable by - that user. by default it seems to be set to read/write. - - $ sudo chmod ugo+x /servers/default-pager - - Then I get this error: - - tmpfs: /build/mbanck/hurd-20060825/build-tree/hurd/tmpfs/dir.c:62: diskfs_get_directs: Assertion `__builtin_offsetof (struct tmpfs_dirent, name) >= __builtin_offsetof (struct dirent, d_name)' failed. - -2. i rearranged the struct tempfs_dirent in tmpfs.h to line up with the struct - dirent. now the assert passes at line 62 of dir.c passes. - - struct tmpfs_dirent - { - struct tmpfs_dirent *next; - struct disknode *dn; - + char padding[3]; - uint8_t namelen; - char name[0]; - }; - - now ls works on an empty directory. - you can touch files, and run `ls' on them. - mkdir, rmdir works too. - fsysopts works - df works - -3. creating a symlink fails. - - old patch to get symlinks working: - - http://www.mail-archive.com/bug-hurd@gnu.org/msg11844.html - --- node.c.orig 2005-07-24 09:56:39.000000000 -0400 - +++ node.c 2005-07-24 09:55:46.000000000 -0400 - @@ -330,6 +330,7 @@ - create_symlink_hook (struct node *np, const char *target) - { - assert (np->dn->u.lnk == 0); - + np->dn_stat.st_size = strlen (target); - if (np->dn_stat.st_size > 0) - { - const size_t size = np->dn_stat.st_size + 1; - @@ -337,6 +338,7 @@ - if (np->dn->u.lnk == 0) - return ENOSPC; - memcpy (np->dn->u.lnk, target, size); - + np->dn->type = DT_LNK; - adjust_used (size); - recompute_blocks (np); - } - @@ -380,8 +382,6 @@ - error_t - diskfs_truncate (struct node *np, off_t size) - { - - if (np->allocsize <= size) - - return 0; - - if (np->dn->type == DT_LNK) - { - @@ -392,6 +392,9 @@ - return 0; - } - - + if (np->allocsize <= size) - + return 0; - + - assert (np->dn->type == DT_REG); - - if (default_pager == MACH_PORT_NULL) - - now symlinks work. - -4. can't write data to a file - - ---- - -miscellaneous notes: - -`diskfs_disk_name` could be `NULL`, but it is `"swap"` - -using `default_pager_object_set_size (np->dn->u.reg.memobj, size);` to truncate and grow. - -why are our blocks 512? shouldn't it something else? or at least settable? -or does [[libdiskfs]] demand this? - -`diskfs_get_filemap_pager_struct (struct node *np)` returns null. -shouldn't it return `default_pager`? diff --git a/hurd/translator/tmpfs/notes_various.mdwn b/hurd/translator/tmpfs/notes_various.mdwn deleted file mode 100644 index d1c5cf62..00000000 --- a/hurd/translator/tmpfs/notes_various.mdwn +++ /dev/null @@ -1,222 +0,0 @@ -[[!meta copyright="Copyright © 2005, 2006, 2007, 2008, 2009, 2011 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 open_issue_hurd]] - - <antrik> hde: what's the status on tmpfs? - <hde> Broke - <hde> k0ro traced the errors like the assert show above to a pager problem. - See the pager cannot handle request from multiple ports and tmpfs sends - request using two differ ports, so to fix it the pager needs to be hacked - to support multiple requests. - <hde> You can enable debugging in the pager by changing a line from dprintf - to ddprintf I can tell you how if you want. - <antrik> and changing tmpfs to use a single port isn't possible?... - <hde> antrik, I am not sure. - <hde> IIRC k0ro was saying it cannot be changed and I cannot recall his - reasons why. - <sdschulze> antrik: Doing it the quick&dirty way, I'd just use an N-ary - tree for representing the directory structure and mmap one new page (or - more) for each file. - <hde> sdschulze, What are you talking about? - <sdschulze> hde: about how I would implement tmpfs - <hde> O - <azeem> sdschulze: you don't need to reimplement it, just fix it :) - <sdschulze> azeem: Well, it seems a bit more difficult than I considered. - <sdschulze> I had assumed it was implemented the way I described. - <hde> O and the assert above gets triggered if you don't have a - default-pager setup on /servers/default-pager - <hde> the dir.c:62 assert that is. - <azeem> hde: you sure? I think I have one - <hde> I am almost sure. - <azeem> mbanck@beethoven:~$ showtrans /servers/default-pager - <azeem> /hurd/proxy-defpager - <azeem> isn't that enough? - <hde> It is suppose to be. - <hde> Try it as root - <hde> I was experiecing alot of bugs as a normal user, but according to - marcus it is suppose to work as root, but I was getting alot of hangs. - <azeem> hde: same issue, sudo doesn't work - <hde> sucky, well then there are alot of bugs. =) - <azeem> eh, no - <azeem> I still get the dir.c assert - <sdschulze> me too - <sdschulze> Without it, I already get an error message trying to set tmpfs - as an active translator. - ---- - - <hde> I think I found the colprit. - <hde> default_pager_object_set_size --> This is were tmpfs is hanging. - <hde> mmm Hangs on the message to the default-pager. - ---- - - <hde> Well it looks like tmpfs is sending a message to the default-pager, - the default-pager then receives the message and, checks the seqno. I - checked the mig gen code and noticed that the seqno is the reply port, it - this does not check out then the default pager is put into a what it - seems infinte condition_wait hoping to get the correct seqno. - <hde> Now I am figuring out how to fix it, and debugging some more. - ---- - - <marco_g> hde: Still working on tmpfs? - <hde> Yea - <marco_g> Did you fix a lot already? - <hde> No, just trying to narrow down the reason why we cannot write file - greater then 4.5K. - <marco_g> ahh - <marco_g> What did you figure out so far? - <hde> I used the quick marcus fix for the reading assert. - <marco_g> reading assert? - <hde> Yea you know ls asserted. - <marco_g> oh? :) - <hde> Because, the offsets changed in sturct dirent in libc. - <hde> They added 64 bit checks. - <hde> So marcus suggested a while ago on bug-hurd to just add some padding - arrays to the struct tmpfs_dirent. - <hde> And low and behold it works. - <marco_g> Oh, that fix. - <hde> Yup - <hde> marco_g, I have figured out that tmpfs sends a message to the - default-pager, the default-pager does receive the message, but then - checks the seqno(The reply port) and if it is not the same as the - default-pagers structure->seqno then she waits hoping to get the correct - one. Unfortantly it puts the pager into a infinite lock and never come - out of it. - <marco_g> hde: That sucks... - <marco_g> But at least you know what the problem is. - <hde> marco_g, Yea, now I am figuring out how to fix it. - <hde> Which requires more debugging lol. - <hde> There is also another bug, default_pager_object_set_size in - <hde> mach-defpager does never return when called and makes tmpfs hang. I - <hde> will have a closer look at this later this week. - ---- - - <hde> Cool, now that I have two pagers running, hopefully I will have less - system crashes. - <marcus> running more than one pager sounds like trouble to me, but maybe - hde means something different than I think - <hde> Well the other pager is only for tmpfs to use. - <hde> So I can debug the pager without messing with the entire system. - <hde> marcus, I am trying ti figure out why diskfs_object_set_size waits - forever. This way when the pager becomes locked forever I can turn it - off and restart it. When I was doing this with only one mach-defpager - running the system would crash. - <marcus> hde: how were you able to start two default pagers?? - <hde> Well you most likely will not think my way of doing it was correct, - and I am also not sure if it is lol. I made my hacked version not stop - working if one is alreay started. - ---- - - <hde> See, the default-pager has a function called - default_pager_object_set_size this sets the size for a memory object, - well it checks the seqno for each object if it is wrong it goes into a - condition_wait, and waits for another thread to give it a correct seqno, - well this never happens. - <hde> Thus, you get a hung tmpfs and default-pager. - <hde> pager_memcpy (pager=0x0, memobj=33, offset=4096, other=0x20740, - size=0x129df54, prot=3) at pager-memcpy.c:43 - <hde> bddebian, See the problem? - <bddebian> pager=0x0? - <hde> Yup - <hde> Now wtf is the deal, I must debug. - <hde> -- Function: struct pager * diskfs_get_filemap_pager_struct - <hde> (struct node *NP) - <hde> Return a `struct pager *' that refers to the pager returned by - <hde> diskfs_get_filemap for locked node NP, suitable for use as an - <hde> argument to `pager_memcpy'. - <hde> That is failing. - <hde> If it is not one thing it is another. - <bddebian> All of Mach fails ;-) - <hde> It is alot of work to make a test program that uses libdiskfs. - ---- - - <bing> to run tmpfs as a regular user, /servers/default-pager must be - executable by that user. by default it seems to be set to read/write. - <bing> $ sudo chmod ugo+x /servers/default-pager - <bing> you can see the O_EXEC in tmpfs.c - <bing> maybe this is just a debian packaging problem - <bing> it's probably a fix to native-install i'd guess - ---- - - <bing> tmpfs is failing on default_pager_object_create with -308, which - means server died - <bing> i'm running it as a regular user, so it gets it's pager from - /servers/default-pager - <bing> and showtrans /servers/default-pager shows /hurd/proxy-defpager - <bing> so i'm guessing that's the server that died - ---- - - <bing> this is about /hurd/tmpfs - <bing> a filesystem in memory - <bing> such that each file is it's own memory object - <andar> what does that mean exactly? it differs from a "ramdisk"? - <bing> instead of the whole fs being a memory object - <andar> it only allocates memory as needed? - <bing> each file is it's own - <bing> andar: yeah - <bing> it's not ext2 or anything - <andar> yea - <bing> it's tmpfs :-) - <bing> first off, echo "this" > that - <bing> fails - <bing> with a hang - <bing> on default_pager_object_create - <andar> so writing to the memory object fails - <bing> well, it's on the create - <andar> ah - <bing> and it returns -308 - <bing> which is server died - <bing> in mig-speak - <bing> but if i run it as root - <bing> things behave differently - <bing> it gets passed the create - <bing> but then i don't know what - <bing> i want to make it work for the regular user - <bing> it doesn't work as root either, it hangs elsewhere - <andar> but it at least creates the memory object - <bing> that's the braindump - <bing> but it's great for symlinks! - <andar> do you know if it creates it? - <bing> i could do stowfs in it - ---- - - <antrik> bing: k0ro (I think) analized the tmpfs problem some two years ago - or so, remember?... - <antrik> it turns out that it broke due to some change in other stuff - (glibc I think) - <antrik> problem was something like getting RPCs to same port from two - different sources or so - <antrik> and the fix to that is non-trivial - <antrik> I don't remember in what situations it broke exactly, maybe when - writing larger files? - <bing> antrik: yeah i never understood the explanation - <bing> antrik: right now it doesn't write any files - <bing> the change in glibc was to struct dirent - <antrik> seems something more broke in the meantime :-( - <antrik> ah, right... but I the main problem was some other change - <antrik> (or maybe it never really worked, not sure anymore) - ---- - -IRC, freenode, #hurd, 2011-10-11: - - <mcsim> There is no patch for "tmpfs crashes on filling an empty file". For - second bug there is Zheng Da's patch, but it wasn't applied (at least I - didn't found). diff --git a/hurd/translator/tmpfs/tmpfs_vs_defpager.mdwn b/hurd/translator/tmpfs/tmpfs_vs_defpager.mdwn deleted file mode 100644 index 5228515f..00000000 --- a/hurd/translator/tmpfs/tmpfs_vs_defpager.mdwn +++ /dev/null @@ -1,272 +0,0 @@ -[[!meta copyright="Copyright © 2010, 2011 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 open_issue_gnumach open_issue_hurd]] - - -# IRC, freenode, #hurd, 2010 - - <slpz> humm... why does tmpfs try to use the default pager? that's a bad - idea, and probably will never work correctly... - * slpz is thinking about old issues - <slpz> tmpfs should create its own pagers, just like ext2fs, storeio... - <slpz> slopez@slp-hurd:~$ settrans -a tmp /hurd/tmpfs 10M - <slpz> slopez@slp-hurd:~$ echo "foo" > tmp/bar - <slpz> slopez@slp-hurd:~$ cat tmp/bar - <slpz> foo - <slpz> slopez@slp-hurd:~$ - <slpz> :-) - <pochu> slpz: woo you fixed it? - <slpz> pochu: well, it's WIP, but reading/writing works... - <slpz> I've replaced the use of default pager for the standard pager - creation mechanism - <antrik> slpz: err... how is it supposed to use swap space if not using the - default pager? - <antrik> slpz: or do you mean that it should act as a proxy, just - allocating anonymous memory (backed by the default pager) itself? - <youpi> antrik: the kernel uses the default pager if the application pager - isn't responsive enough - <slpz> antrik: it will just create memory objects and provide zerofilled - pages when requested by the kernel (after a page fault) - <antrik> youpi: that makes sense I guess... but how is that relevant to the - question at hand?... - <slpz> antrik: memory objects will contain the data by themselves - <slpz> antrik: as youpi said, when memory is scarce, GNU Mach will start - paging out data from memory objects to the default pager - <slpz> antrik: that's the way in which pages will get into swap space - <slpz> (if needed) - <youpi> the thing being that the tmpfs pager has a chance to select pages - he doesn't care any more about - <antrik> slpz: well, the point is that instead of writing the pages to a - backing store, tmpfs will just keep them in anonymous memory, and let the - default pager write them out when there is pressure, right? - <antrik> youpi: no idea what you are talking about. apparently I still - don't really understand this stuff :-( - <youpi> ah, but tmpfs doesn't have pages he doesn't care about, does it? - <slpz> antrik: yes, but the term "anonymous memory" could be a bit - confusing. - <slpz> antrik: in GNU Mach, anonymous memory is backed by a memory object - without a pager. In tmpfs, nodes will be allocated in memory objects, and - the pager for those memory objects will be tmpfs itself - <antrik> slpz: hm... I thought anynymous memory is backed by memory objects - created from the default pager? - <antrik> yes, I understand that tmpfs is supposed to be the pager for the - objects it provides. they are obviously not anonymoust -- they have - inodes in the tmpfs name space - <antrik> but my understanding so far was that when Mach returns pages to - the pager, they end up in anonymous memory allocated to the pager - process; and then this pager is responsible for writing them back to the - actual backing store - <antrik> am I totally off there?... - <antrik> (i.e. in my understanding the returned pages do not reside in the - actual memory object the pager provides, but in an anonymous memory - object) - <slpz> antrik: you're right. The trick here is, when does Mach return the - pages? - <slpz> antrik: if we set the attribute "can_persist" in a memory object, - Mach will keep it until object cache is full or memory is scarce - <slpz> or we change the attributes so it can no longer persist, of course - <slpz> without a backing store, if Mach starts sending us pages to be - written, we're in trouble - <slpz> so we must do something about it. One option, could be creating - another pager and copying the contents between objects. - <antrik> another pager? not sure what you mean - <antrik> BTW, you didn't really say why we can't use the default pager for - tmpfs objects :-) - <slpz> well, there're two problems when using the default pager as backing - store for translators - <slpz> 1) Mach relies on it to do swapping tasks, so meddling with it is - not a good idea - <slpz> 2) There're problems with seqnos when trying to work with the - default pager from tasks other the kernel itself - <slpz> (probably, the latter could be fixed) - <slpz> antrik: pager's terminology is a bit confusing. One can also say - creating another memory object (though the function in libpager is - "pager_create") - <antrik> not sure why "meddling" with it would be a problem... - <antrik> and yeah, I was vaguely aware that there is some seqno problem - with tmpfs... though so far I didn't really understand what it was about - :-) - <antrik> makes sense now - <antrik> anyways, AIUI now you are trying to come up with a mechanism where - the default pager is not used for tmpfs objects directly, but without - making it inefficient? - <antrik> slpz: still don't understand what you mean by creating another - memory object/pager... - <antrik> (and yeat, the terminology is pretty mixed up even in Mach itself) - <slpz> antrik: I meant creating another pager, in terms of calling again to - libpager's pager_create - <antrik> slpz: well, I understand what "create another pager" means... I - just don't understand what this other pager would be, when you would - create it, and what for... - <slpz> antrik: oh, ok, sorry - <slpz> antrik: creating another pager it's just a trick to avoid losing - information when Mach's objects cache is full, and it decides to purge - one of our objects - <slpz> anyway, IMHO object caching mechanism is obsolete and should be - replaced - <slpz> I'm writting a comment to bug #28730 which says something about this - <slpz> antrik: just one more thing :-) - <slpz> if you look at the code, for most time of their lives, anonymous - memory objects don't have a pager - <slpz> not even the default one - <slpz> only the pageout thread, when the system is running really low on - memory, gives them a reference to the default pager by calling - vm_object_pager_create - <slpz> this is not really important, but worth noting ;-) - - -# IRC, freenode, #hurd, 2011-09-28 - - <slpz> mcsim: "Fix tmpfs" task should be called "Fix default pager" :-) - <slpz> mcsim: I've been thinking about modifying tmpfs to actually have - it's own storeio based backend, even if a tmpfs with storage sounds a bit - stupid. - <slpz> mcsim: but I don't like the idea of having translators messing up - with the default pager... - <antrik> slpz: messing up?... - <slpz> antrik: in the sense of creating a number of arbitrarily sized - objects - <antrik> slpz: well, it doesn't really matter much whether a process - indirectly eats up arbitrary amounts of swap through tmpfs, or directly - through vm_allocate()... - <antrik> though admittedly it's harder to implement resource limits with - tmpfs - <slpz> antrik: but I've talked about having its own storeio device as - backend. This way Mach can pageout memory to tmpfs if it's needed. - <mcsim> Do I understand correctly that the goal of tmpfs task is to create - tmpfs in RAM? - <slpz> mcsim: It is. But it also needs some kind of backend, just in case - it's ordered to page out data to free some system's memory. - <slpz> mcsim: Nowadays, this backend is another translator that acts as - default pager for the whole system - <antrik> slpz: pageout memory to tmpfs? not sure what you mean - <slpz> antrik: I mean tmpfs acting as its own pager - <antrik> slpz: you mean tmpfs not using the swap partition, but some other - backing store? - <slpz> antrik: Yes. - -See also: [[open_issues/resource_management_problems/pagers]]. - - <antrik> slpz: I don't think an extra backing store for tmpfs is a good - idea. the whole point of tmpfs is not having a backing store... TBH, I'd - even like to see a single backing store for anonymous memory and named - files - <slpz> antrik: But you need a backing store, even if it's the default pager - :-) - <slpz> antrik: The question is, Should users share the same backing store - (swap space) or provide their own? - <antrik> slpz: not sure what you mean by "users" in this context :-) - <slpz> antrik: Real users with the ability of setting tmpfs translators - <antrik> essentially, I'd like to have a single partition that contains - both swap space and the main filesystem (at least /tmp, but probably also - all of /run, and possibly even /home...) - <antrik> but that's a bit off-topic :-) - <antrik> well, ideally all storage should be accounted to a user, - regardless whether it's swapped out anonymous storage, temporary named - files, or permanent files - <slpz> antrik: you could use a file as backend for tmpfs - <antrik> slpz: what's the point of using tmpfs then? :-) - <pinotree> (and then store the file in another tmpfs) - <slpz> antrik: mach-defpager could be modified to use storeio instead of - Mach's device_* operations, but by the way things work right now, that - could be dangerous, IMHO - <antrik> pinotree: hehe - <pinotree> .. recursive tmpfs'es ;) - <antrik> slpz: hm, sounds interesting - <slpz> antrik: tmpfs would try to keep data in memory always it's possible - (not calling m_o_lock_request would do the trick), but if memory is - scarce an Mach starts paging out, it would write it to that - file/device/whatever - <antrik> ideally, all storage used by system tasks for swapped out - anonymous memory as well as temporary named files would end up on the - /run partition; while all storage used by users would end up in /home/* - <antrik> if users share a partition, some explicit storage accounting would - be useful too... - <antrik> slpz: is that any different from what "normal" filesystems do?... - <antrik> (and *should* it be different?...) - <slpz> antrik: Yes, as most FS try to synchronize to disk at a reasonable - rate, to prevent data losses. - <slpz> antrik: tmpfs would be a FS that wouldn't synchronize until it's - forced to do that (which, by the way, it's what's currently happening - with everyone that uses the default pager). - <antrik> slpz: hm, good point... - <slpz> antrik: Also, metadata in never written to disk, only kept in memory - (which saves a lot of I/O, too). - <slpz> antrik: In fact, we would be doing the same as every other kernel - does, but doing it explicitly :-) - <antrik> I see the use in separating precious data (in permanent named - files) from temporary state (anonymous memory and temporary named files) - -- but I'm not sure whether having a completely separate FS for the - temporary data is the right approach for that... - <slpz> antrik: And giving the user the option to specify its own storage, - so we don't limit him to the size established for swap by the super-user. - <antrik> either way, that would be a rather radical change... still would - be good to fix tmpfs as it is first if possible - <antrik> as for limited swap, that's precisely why I'd prefer not to have - an extra swap partition at all... - <slpz> antrik: It's not much o fa change, it's how it works right now, with - the exception of replacing the default pager with its own. - <slpz> antrik: I think it's just a matter of 10-20 hours, as - much. Including testing. - <slpz> antrik: It could be forked with another name, though :-) - <antrik> slpz: I don't mean radical change in the implementation... but a - radical change in the way it would be used - <slpz> antrik: I suggest "almosttmpfs" as the name for the forked one :-P - <antrik> hehe - <antrik> how about lazyfs? - <slpz> antrik: That sound good to me, but probably we should use a more - descriptive name :-) - - -## 2011-09-29 - - <tschwinge> slpz, antrik: There is a defpager in the Hurd code. It is not - currently being used, and likely incomplete. It is backed by libstore. - I have never looked at it. - -[[open_issues/mach-defpager_vs_defpager]]. - - -# IRC, freenode, #hurd, 2011-11-08 - - <mcsim> who else uses defpager besides tmpfs and kernel? - <braunr> normally, nothing directly - <mcsim> than why tmpfs should use defpager? - <braunr> it's its backend - <braunr> backign store rather - <braunr> the backing store of most file systems are partitions - <braunr> tmpfs has none, it uses the swap space - <mcsim> if we allocate memory for tmpfs using vm_allocate, will it be able - to use swap partition? - <braunr> it should - <braunr> vm_allocate just maps anonymous memory - <braunr> anonymous memory uses swap space as its backing store too - <braunr> but be aware that this part of the vm system is known to have - deficiencies - <braunr> which is why all mach based implementations have rewritten their - default pager - <mcsim> what kind of deficiencies? - <braunr> bugs - <braunr> and design issues, making anonymous memory fragmentation horrible - <antrik> mcsim: vm_allocate doesn't return a memory object; so it can't be - passed to clients for mmap() - <mcsim> antrik: I use vm_allocate in pager_read_page - <antrik> mcsim: well, that means that you have to actually implement a - pager yourself - <antrik> also, when the kernel asks the pager to write back some pages, it - expects the memory to become free. if you are "paging" to ordinary - anonymous memory, this doesn't happen; so I expect it to have a very bad - effect on system performance - <antrik> both can be avoided by just passing a real anonymous memory - object, i.e. one provided by the defpager - <antrik> only problem is that the current defpager implementation can't - really handle that... - <antrik> at least that's my understanding of the situation diff --git a/hurd/translator/unionfs.mdwn b/hurd/translator/unionfs.mdwn deleted file mode 100644 index 2b692cf9..00000000 --- a/hurd/translator/unionfs.mdwn +++ /dev/null @@ -1,160 +0,0 @@ -[[!meta copyright="Copyright © 2008, 2009, 2010 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]]."]]"""]] - -# `unionfs` - -*Unionfs allows you to simply union one directory or translator into another one, so you see the files of both of them side by side.* - -Source repository: <http://git.savannah.gnu.org/cgit/hurd/unionfs.git/> - -Right now there are some problems with syncing, so please be aware -that it might not work as expected. - -<a name="unionmount"></a> -# `unionmount` - -... is a special mode of `unionfs`. - -## Project Idea - -When setting a translator on Hurd -- similar to mounting a file system on UNIX --- the new node(s) exported by the translator are obscuring the original node -where the translator is set, and any nodes below it in the directory tree. The -translator itself can access the underlying node (which is a very nice feature, -as it allows translators presenting the contents of the node in a different -format); but it's no longer accessible from the "outside". - -Plan9 has a feature where a file system can be mounted in union mode: the new -file system doesn't obscure the mount point in this case, but instead the -contents are combined. (This feature has also been under discussion in Linux -for a couple of years now, under the label "VFS-based union mounts".) - -This kind of union mounts is generally useful, as it's sometimes more -convenient than unioning existing filesystem locations with unionfs -- it's not -necessary to mount a file system that is to be unioned at some external -location first: just union-mount it directly at the target location. - -But union mounts also allow creating passive translator hierarchies: If there -is a passive translator on a parent node, and further passive translators on -child nodes, the union mount allows the child nodes with the further translator -settings still to be visible after the parent translator has started. - -This could be useful for device nodes for example: let's say we have an -ethernet multiplexer at /dev/veth. Now the virtual subnodes could all be -directly under /dev, i.e. /dev/veth0, /dev/veth1 etc., and explicitely refer to -the main /dev/veth node in the translator command line. It would be more -elegant however to store the virtual nodes direcly below the main multiplexer -node -- /dev/veth/0, /dev/veth/1 etc. - -There are two possible approaches how union mounts could be implemented in the -Hurd. The first one is to let the various translators handle union mounts -internally, i.e. let them present the underlying nodes to the clients in -addition to the actual nodes they export themselfs. This probably can be -implemented as some kind of extension to the existing netfs and diskfs -libraries. - -The other possible apporach is less efficient and probably more tricky, but -probably also more generic: create a special unionmount translator, which -serves as a kind of proxy: setting the union-mounted translator on some -internal node; and at the actual mount location, presenting a union of the -nodes exported by this translator, and the nodes from the underlying file -system. - -The goal of this project is implementing union mounts using either of the -approaches described above. (Though it might be useful initially to prototype -both for comparision.) The ethernet multiplexer shall serve as an example use -case -- any changes necessary to allow using it with the union mount -functionality are also to be considered part of the task. - -[[Sergiu Ivanov|scolobb]] has been working on this as a [[Google Summer of Code -2009 project|community/gsoc/2009]]. - -## Implementation - -### Source - -Union mounts are currently implemented as two additional command line -options of the `unionfs` translator. This implementation resides in -the master-unionmount branch of the unionfs git repository. To -checkout the code, do the following: - - $ git clone git://git.sv.gnu.org/hurd/unionfs.git - $ cd unionfs - $ git checkout -b master-unionmount - $ git pull origin master-unionmount - -You can skip the checkout step if you don't mind that the -`master-unionmount` branch gets merged into the `master` branch. - -### Short Documentation - -The `unionmount` project adds options "--mount" and "--no-mount" to -`unionfs` (short versions: "-t" and "-n" correspondingly). Both -options are used to implement union-mounting, but the first option -will create a *transparent* union mount, while the second option will -create a *nontransparent* union mount. - -One can create a transparent union mount with the following command: - - $ settrans -a <node> unionfs --underlying --mount=<translator> - -When running - - $ fsysopts <node> - -one will see the information about the `<translator>`, not the -`unionfs` translator. Although this might seem the only natural way -to do union mounts, one must keep in mind that such transparency -deprives one of the possibility to modify the unioned virtual -filesystem exported by `unionfs` at run-time (via `fsysopts`). - -One can create a nontransparent union mount with the following command: - - $ settrans -a <node> unionfs --underlying --no-mount=<translator> - -When running - - $ fsysopts <node> - -one will see the information about the `unionfs` translator. Although -this way allows modifying the contents of the unioned filesystem -exported by `unionfs` at runtime, the access to `<translator>` is -blocked. - -The filesystem exported by the *mountee* (`<translator>`) is actually -treated like a normal filesystem within `unionfs`, which means that -one can assign priorities to the *mountee* to achieve the desired -order of layering of the unioned directories. The following will make -`unionfs` query the underlying filesystem first and then the -*mountee*: - - $ settrans -a <node> unionfs --priority=2 --underlying --priority=1 --mount=<translator> - -Note that the same functionality can also be achieved by assigning -priority 1 to the underlying filesystem and keeping the priority of -the *mountee* at 0. - -<a name="stowfs"></a> -# `stowfs` - -... is a special mode of `unionfs`. - -# External Links - - * [*Unioning file systems for Linux*](http://valerieaurora.org/union/) - - * [FUSE page about - `unionfs`](http://sourceforge.net/apps/mediawiki/fuse/index.php?title=UnionFileSystems) - - * [Linux' overlay file system proposal, - 2010-09-20](http://thread.gmane.org/gmane.linux.kernel/1038413) - - How is this different? diff --git a/hurd/translator/unionmount.mdwn b/hurd/translator/unionmount.mdwn deleted file mode 100644 index 7384afc7..00000000 --- a/hurd/translator/unionmount.mdwn +++ /dev/null @@ -1,11 +0,0 @@ -[[!meta copyright="Copyright © 2009 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]]."]]"""]] - -[[!meta redir=unionfs#unionmount]] diff --git a/hurd/translator/wishlist_1.mdwn b/hurd/translator/wishlist_1.mdwn deleted file mode 100644 index 36290883..00000000 --- a/hurd/translator/wishlist_1.mdwn +++ /dev/null @@ -1,129 +0,0 @@ -[[!meta copyright="Copyright © 2007, 2008, 2009 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]]."]]"""]] - -* [[devfs]] - -* FUSE(fuse.sourceforge.net/) compatilbility library. : just modify FUSE apps a and compile little to work as translator :-) - -* File Finder. (uses find, grep, a combination or a custom command (htdig, mp3 info) - * Files found will be available under one directory and then can be used like a normal directory - * usefull to generate Albums, Share only resulting files over the et, etc.. - * The filefinder can be scheduled or can be connected over some ipc like dbus to the VFS system if any to keep a watch for new files. - -* GNOKII, BitPim and openobex as translators - * grep through your SMSs! - * share your addressbook! - * "Attach" that funny SMS/MMS to your email. - * "svn commit" your joke collection :-D - -* Real Language Translator [[br]] - * cat /usr/translator/de-en/usr/share/doc/something.txt should take /usr/share/doc/something.txt , submit it to google's website and bring back results. - -* Mozilla Bookmarks = del.ici.ous - * Need more explanation ? ;-) - -* <http://hnb.sf.net> - * having a directory structure for a file can allow to "svn commit" the hnb document in a more "node-safe" manner, thus allowing multiple people to work on the same hnb document. - * This must be fairly easy as HNB can already export to XML and XMLfs already exists. - -* DavFS - * Just setup a 'WebDav share' as a directory. The implimentation of the protocol is already available in nautilus and konqueror. - -* Compiled form of your project - * you have your project in /somedir/project with source in /somedir/project/src .. /somedir/project/bin should always have the compiled version.. is it possible? - * The source has to have a MakeFile. - * creating /somedir/project/bin-somearch should aotomatically crosscompile - * Seems feasible for a small project. - -* Report generation FrameWork - an idea to be hugged by app developers..not kernel developers. - * You have financial data in some Spreadsheet like format in /yourFinance directory - * You add report templates to /yourFinance/repTemplates - * Once you save data in /yourFinance the next cat /yourFinance/reports/areportname will give you an uptodate report. - * This will be usefull for any purpose including serving by static page web servers, sharing over samba/nfs/ftp etc.! - * The advantage is any save to the spreadsheet will update the report.. not just from one software. - -* SVN (Subversion suite) - * like [[cvsfs]]. /svndir/version/version-no should automatically have subversion - * I think it is nice to write a generalised version control system framework library which will help in writing version control translators and other tools easily. - -* Flexi-acls - * First of all - Can this be done? : A translator bound to a directory must be able to access the contents of the directory which would have been accessible in the absence of the translator.. - * This will enable to wirte translators that can implement custom "Access Control Lists". Just imagine having advanced ACLs even if underlying FileSystem is dumb! Imagine changing the type of ACLs implemented with Just two commands - one to unattach previous translator and the next to attach a different ACL translator! The ACLs themselves may be stored in a different directory - -* The translator manager! - * Some translators will need to be inserted automatically - like for eg: hardware drivers .. - * Each hardware translator will pubish its capabilities. - * The "top" translator will query the capabilities of different hardware and match capabilities with the "slave" translators. That is it's only Job. - * The control is then handed over to the slave translator. - * The ranking not only looks who can handle the "most" capabilites of the hardware. If it finds that multiple translators can handle the same hardware, It will use other parameters to choose between them.. like may be the size in memory? The revision date? Stability (inferred from version number)? And to go to the extreme, the profiling data of the driver ;-P - * Advantage : The best driver wins! - -* An eg. Skip it if you understood the above :-): - * You have a driver that can handle VGA + SVGA + Super3d acceleration + Particle graphics + Works for nvidea card. - * You have a driver that can handle SVGA + VGA . - * You have a driver that can handle VGA. - * Case 1: Your card: A VGA card with some extra fonts.. - * First the VGA driver will be quireied .. ok can handle essential capability. - * Next SVGA driver: can handle but has extra module.. unnecassary weight . - * The Nvidia driver: can handle , but again unnecassary weight : ruled out. - * Winner : VGA driver: - * Case 2: Your card An SVGA card: - * First the VGA driver will be quireied .. ok can handle one essential capability. - * Next SVGA driver: can handle essential and one extra capability no extra weight.. - * The Nvidia driver: can handle , but unnecassary weight : ruled out. - * Winner : SVGA driver.. - * Case 3 : You have an VGA .. but no VGA driver .. then the SVGA driver would win. - -* Sound Server - * /ahsa - stands for Advanced HURD sound architecture :-) Just a temporary name .. for fun. - * /ahsa/out - directory wich will hold "plug"s where apllications come and join the server .. see below. - * /ahsa/out/mixer - main mixer - * /ahsa/out/nextfree - the file when "cat"ed gives the number of the next free plug - * /ahsa/plugins/ - info about available plugins - * /ahsa/out/[1..n]/ - dynamically generated directories for applications to plug on.. - * /ahsa/out/[1..n]/data this is where you should do a "cat somerawsoundfile>/ahsa/out/`cat /ahsa/nextfree`/data" - * /ahsa/out/[1..n]/plugins - the plugin stack .. volume is also a plugin.. - * /ahsa/out/[1..n]/plugins/[1..m]/ - echo "plugin param1 param2 param3" > /ahsa/out/[1..n]/plugins/`cat /ahsa/out/[1..n]/plugins/nextfree`/add - * /ahsa/out/[1..n]/plugins/[1..m]/params/{param1.. paramn} - * /ahsa/out/[1..n]/data.out - can be catted to get data processed through the server - * /ahsa/in - similar to /ahsa/out .. with except for an extra file to choose input devices. - * /ahsa/devs/{1..n} - devices detected .. can be dynamic .. there are usb soundcards and and midi devices. - * /ahsa/out/[1..n]/plugins/[1..m]/0/params/dev - * Dont get tempted for :/ahsa/out/[1..n]/params/{rate, channels, and other stuff} - * that goes into /ahsa/out/[1..n]/plugins/0/params if /ahsa/out/[1..n]/plugins/0/detected == "headerless audio" - * There are a lot more things I can continue about the "sound server" .. The Ideas simply dont seem to exhaust.. - * Some features/advantages - * set output's translator plugin as ordinary text -- have text to speech conversion done by sound server! - * Create and apply plugin presets by simply copying directories! - * Me getting dizzy thinking of the zillion more advantages. - * If you are really doing some ordinary output , all you need to do is "cat" data into next free "plug" and everything will be autodetected including the format of the data and sent to the final sound "merge"r - * Dizzy ... - -* /usr/share/menu !!!! extension for package management idea .. - * cat mymenuitem.menu >> /usr/share/menu/menu - * cat /usr/share/menu/debian/kde ... :-) - -* Spam/Malware Control - * /usr/antimalware/ - put your mail here.. it will automatically be scanned. when finished it will vanish from here .. - * /usr/antimalware/clean - ... and pop out from here - * /usr/antimalware/malware - or here. - -* NetDevice - * !JustImagine(tm)... settrans -ac /netdevices /hurd/netdevfs - [ host | net ] - * One can access device files remotely - * This could be acheived by allowing translators talk to one another over a network - * This will need translators to catch and handle ioctls (if there is such a thing in HURD). - * The device server which will listen to requests from the translators can be run even on a Linux machine!!! - * !JustImagine(tm)... accessing the crwriter/webcam on that GNU/Linux machine on the network using cdrecord of your local hurd machine! - * !JustImagine(tm)... running GNU/HURD on a minimalistic GNU/Linux(but with all the drivers) through a specially modified and optimised Qemu. The device server runs on the host machine, and the client translators access over the virtual network created by Qemu. You got most of the drivers for free! - -* Emacs File VFS - * I came to know from my Emacs loving friend that there are lots of VFS handlers in Emacs.. I was wondering if there can be translator which can tap into these Emacs VFS handlers. diff --git a/hurd/translator/wishlist_2.mdwn b/hurd/translator/wishlist_2.mdwn deleted file mode 100644 index 77f39644..00000000 --- a/hurd/translator/wishlist_2.mdwn +++ /dev/null @@ -1,201 +0,0 @@ -## <a name="Introduction"> Introduction </a> - -The idea behind file system translators is a powerful concept which hasn't recieved much attention in the mainstream computing world. So here is a list of interesting translators I've been able to dream up. I'm sure there are many more ideas floating around out there, so add them to the list! - -The [ferris project](http://witme.sourceforge.net/libferris.web/features.html) has some great ideas and code in the area of userspace dynamic filesystems, as has the [FUSE project](http://fuse.sourceforge.net/). - -## <a name="Audio_cdfs"> Audio\_cdfs </a> - -A translator which produces a directory of \*.wav files when you have an audio CD in the drive. - -## <a name="Ogg"> Ogg </a> - -This translator could be a sub-directory of the Audio\_cdfs translator and it would translate the \*.wav files into Ogg Vorbis/MP3 format. - -## <a name="CDDB"> </a> CDDB - -Of course it would be a lot nicer if the above two translators didn't name their files something worthless like track001.ogg. So we would want a translator which would hook up with a database on the web and produce meaningful file names. - -## <a name="Crypto"> Crypto </a> - -A cryptographic/steganographic seem like a nice match with the concept of user-land file systems. I like the idea of something like `settrans -a /secure stegfs --mpeg file001.mpg` - -## <a name="Revision_control"> Revision control </a> - -All of the empty space on your drive is now being wasted. Why not have a revision control translator which tracks changes to your documents? See also [this guy](http://www.linuxjournal.com/article.php?sid=5976). And then you'd do something like `cd /time-machine/2003/sept/14/` to see what your system looked like on the 14th of septempber 2003. - -## <a name="CVSFS"> </a> CVSFS - -See [cvsFS for Linux](http://cvsfs.sourceforge.net/). This provides a package which presents the CVS contents as mountable file system. It allows to view the versioned files as like they were ordinary files on a disk. There is also a possibility to check in/out some files for editing. A read-only version has been written by Stefan Siegl and is available at [Berlios](http://cvs.berlios.de/cgi-bin/viewcvs.cgi/cvsfs4hurd/cvsfs/). - -## <a name="tar_and_gzip"> tar and gzip </a> - -Rumor has it that they are on the way. Actually, a tar + gzip/bzip2 translator does exist (although it hasn't been used much...) : see [the Hurdextras project](http://savannah.nongnu.org/projects/hurdextras/) on Savannah. - -## <a name="ROM"> </a> ROM - -How about a translator which makes it look like you can write to read only media (like CDs), or change files which I don't have permission to change. This translator would make it seem like you could copy files to places where you normally couldn't. Think about combining this translator with the ftp translator and the tar and gzip translators. (cd /ftp/gnu.org/gnome.tar.gz/writes\_allowed; make install). It could be that unionfs does this very thing. - -## <a name="Super_FIFO"> Super\_FIFO </a> - -It's like a named pipe which is smart enough to start a process everytime something new tries to read from it. For example, let's say I have a script that reads in a JPEG image and spits out a smaller thumbnail \*.jpg to STDOUT. With a standard fifo (`mknod -p fifo`) this would almost works (`script big.jpg > fifo`). But what if there are two processes trying to read the fifo at once? Ick. And of course the standard way only works once without rerunning the command. I'm not quite sure what the syntax should look like, but I'm sure someone out there has a great idea waiting to happen. - -## <a name="Perl"> Perl </a> - -Perl is a wonderful language for hacking together something useful in a short amount of time. No concept is complete without being able to use it in a perl one-liner. And that goes for Hurd translators too. Right? - - #!/usr/bin/perl - use Hurd::translator; - - #file named "two" can produce an endless supply of twos, etc. (a la /dev/zero) - my $i=0; - for $filename ([zero one two three four]) - { - $libtrivfsread_codehash{$filename}= - sub{ $num_bytes=shift; my $data=$i; return chr($data) x $num_bytes; }; - #that's a hash of references to closures - $i++; - } - translator_startup(); - -A Perl translator has been started by [John Edwin Tobey](http://john-edwin-tobey.org/Hurd/) (pith). - -## <a name="Source_code"> Source code </a> - -Here's a crazy thought. How about a translator for source code. You have a C source file like `hello.c` which is your normal everyday file. But there's a translator sitting underneath, so when you `cd hello.c` you get a directory with files like `main()` which represent the subroutines in `hello.c`. And of course you should be able to edit/remove those and have it modify the original source. - -## <a name="Libraries"> Libraries </a> - -Here's an [idea](http://www.circlemud.org/~jelson/software/fusd/docs/node13.html) from the people making [userspace drivers in Linux](http://www.circlemud.org/~jelson/software/fusd/): - -* "One particularly interesting application of FUSD that we've found very useful is as a way to let regular user-space libraries export device file APIs. For example, imagine you had a library which factored large composite numbers. Typically, it might have a C interface--say, a function called `int *factorize(int bignum)`. With FUSD, it's possible to create a device file interface--say, a device called `/dev/factorize` to which clients can `write(2)` a big number, then `read(2)` back its factors. - -* This may sound strange, but device file APIs have at least three advantages - over a typical library API. First, it becomes much more language - independent--any language that can make [[system call]]s can access the - factorization library. Second, the factorization code is running in a - different address space; if it crashes, it won't crash or corrupt the - caller. Third, and most interestingly, it is possible to use `select(2)` to - wait for the factorization to complete. `select(2)` would make it easy for a - client to factor a large number while remaining responsive to other events - that might happen in the meantime. In other words, FUSD allows normal - user-space libraries to integrate seamlessly with UNIX's existing, - POSIX-standard event notification interface: `select(2)`." - -## <a name="Mail"> Mail </a> - -Am I off my rocker, or does an IMAP/POP translator sound like a good idea? It would make your remote mail servers look like local ones. Or what about a translator that makes a mbox format mail spool look like a directory. Can anyone think of a good use for an SMTP translator? - -*Definitely: Copy my email in there to send it.* -- [[ArneBab|community/weblogs/ArneBab]] - -## <a name="UUEncode"> </a> UUEncode - -How about a UUEncode translator for those places you can only store ASCII. Combine this with a NNTP translator and store your data in someone's Usenet archive. Or since, (as far as I know), there are no size limitations on file names in the Hurd, why not have a filesystem translator whose underlying store is a file name. (Now ls becomes cat). - -## <a name="Computation"> Computation </a> - -This is from the revenge of the command-line department. Make a directory translator whose contents are a result of the computation specified in the directory name. Here's an example... - - $ settrans -a /comp /hurd/computationfs - $ cd "/comp/3+4" - $ ls -l - total 0 - -rw-r--r-- 1 nobody users 0 Oct 16 11:41 7 - $ - $ cd "/comp/sqrt(2)" - $ ls -l - total 0 - -rw-r--r-- 1 nobody users 0 Oct 16 11:42 1.4142135623731 - $ - -...etc. Now think about your favorite GUI HTML editor and using File->Open on the following directory name, ``"/comp/for i in $( find / -name *.html ); do ln -s $i `basename $i`;done"`` Which would produce a directory listing with soft links to all of the \*.html files on your system. You could have all of the comforts of the shell from within that little File->Open dialog box. - -## <a name="Other"> Other </a> - -Just found Wolfgang J�hrling's translator [wishlist](http://www.8ung.at/shell/trans.html). - -## <a name="Bochs"> Bochs </a> - -A translator which works with [Bochs](http://bochs.sourceforge.net/) disk images would be nice. - -## <a name="Rollover"> Rollover </a> - -A translator that uses a circular buffer to store log files. The translated node only contains the last N (mega,kilo)bytes. - -## <a name="Birthday"> Birthday </a> - -A translator that provides an interface into the birthday program. - -You can cat your calendar, eg. bd/calendar/today bd/calendar/this-week or bd/calendar/this-month. - -And you could write new events into files located in bd/events/DATE/event-name. - -DATE is of the format the birthday expects DD/MM/YYYY. - -The contents of the file are any or none of the following birthday options: ann (An anniversary), bd (A birthday), ev (Some other event), wN (Warn N days in advance of date), toDATE (Event lasts until this DATE), forDAYS (Event runs for DAYS). - -You can optionally just edit the bd/birthdays file if you want to edit the configuration file by hand. It might make sense to write changes from bd/birthdays into ~/.birthdays. - - $ settrans -c bd /hurd/birthday -f ~/.birthdays - $ ls bd/ - birthdays calendar events - $ find bd -print - bd - bd/calendar - bd/calendar/daily - bd/calendar/this-week - bd/calendar/this-month - bd/events - bd/birthdays - $ - -## <a name="LVM"> </a> LVM - -A translator to access block devices from Linux's [Logical Volume Management](http://www.tldp.org/HOWTO/LVM-HOWTO/) would be an useful addition. - - # settrans -cap /dev/VolumeGroup0 /hurd/lvm /dev/PhysicalVolume0 /dev/PhysicalVolume1 ... - # ls /dev/VolumeGroup0/ - home - var - # settrans -cap /home /hurd/ext2fs /dev/VolumeGroup0/home - # settrans -cap /var /hurd/ext2fs /dev/VolumeGroup0/var - -Probably both [LVM2](http://sourceware.org/lvm2/) and the [Device-mapper](http://sourceware.org/dm/) need to be ported. - -## <a name="bridging_translator"> bridging translator </a> - -A [bridging](http://bridge.sourceforge.net/faq.html) translator could improve the Hurd's networking facilities. - - # settrans -cap /dev/br0 /hurd/bridge -i eth0 -i eth1 ... - # settrans -cap /servers/socket/2 /hurd/pfinet -i /dev/br0 -a ... -g ... -m ... - -Perhaps Linux's bridging code and [utilities](http://bridge.sourceforge.net/) can be ported (or glued in) or code from one of the BSDs. - -## <a name="SSH_translator"> </a> SSH translator - -Presenting remote file systems through SSH similar to what gnome-vfs does. - -## <a name="SMB_translator"> </a> SMB translator - -Presenting remote file systems through Samba similar to what gnome-vfs does. Guiseppe Scrivano has worked on this and smbfs is available at [hurdextras](http://savannah.nongnu.org/cgi-bin/viewcvs/hurdextras/smbfs/). - -## <a name="Crontab_translator"> Crontab translator </a> - -Presenting a user's crontab in a filesystem where cron entries are files. - -## <a name="globlink"> globlink </a> - -Firmlink to a file according to a filename matching pattern. When a file goes away, the next file that is matched is automatically linked to. - - $ settrans -ac libfoo.so /hurd/globlink '/lib/libfoo*' - -## <a name="alphabetfs"> alphabetfs </a> - -Organize a large group of files by their first letter. Present one subdirectory for each letter in the alphabet. - -## <a name="fsysoptsctl"> fsysoptsctl </a> - -Send an fsysopts command to a set of translators. When you have a directory full of translators and you want to send each of them the same runtime option, this translator can do it for you. - - $ settrans -ac all /hurd/fsysoptsctl '/tmp/mystuff/*' - $ fsysopts all --update diff --git a/hurd/translator/writing/example.mdwn b/hurd/translator/writing/example.mdwn deleted file mode 100644 index 0a3be4df..00000000 --- a/hurd/translator/writing/example.mdwn +++ /dev/null @@ -1,303 +0,0 @@ -[[!meta copyright="Copyright © 2007, 2008 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]]."]]"""]] - -## Data User-Server Translator Example - -The code examples were written by Anand Babu. - -We have a data.h header file, a data.defs file, a data-user.c, data-server.c -sources files and a Makefile. - -data.h: -------- - - #ifndef _data_user_ - #define _data_user_ - - /* Module data */ - - #include <mach/kern_return.h> - #include <mach/port.h> - #include <mach/message.h> - - #include <mach/std_types.h> - #include <mach/mach_types.h> - #include <device/device_types.h> - #include <device/net_status.h> - #include <sys/types.h> - #include <sys/stat.h> - #include <sys/statfs.h> - #include <sys/resource.h> - #include <sys/utsname.h> - #include <hurd/hurd_types.h> - - /* Routine data_set_value */ - #ifdef mig_external - mig_external - #else - extern - #endif - kern_return_t S_data_set_value - #if defined(LINTLIBRARY) - (data_port, value) - mach_port_t data_port; - int value; - { return S_data_set_value(data_port, value); } - #else - ( - mach_port_t data_port, - int value - ); - #endif - - /* Routine data_get_value */ - #ifdef mig_external - mig_external - #else - extern - #endif - kern_return_t S_data_get_value - #if defined(LINTLIBRARY) - (data_port, value) - mach_port_t data_port; - int *value; - { return S_data_get_value(data_port, value); } - #else - ( - mach_port_t data_port, - int *value - ); - #endif - - #endif /* not defined(_data_user_) */ - -data.defs: ----------- - - /* Definitions for data interface - - This file is part of the GNU Hurd. - - The GNU Hurd is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - - The GNU Hurd is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with the GNU Hurd; see the file COPYING. If not, write to - the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */ - - subsystem data 45000; - - #include <hurd/hurd_types.defs> - - #ifdef STACK_IMPORTS - STACK_IMPORTS - #endif - - /* intr-rpc.defs defines the INTR_INTERFACE macro to make the generated RPC - stubs send-interruptible, and to prefix them with `hurd_intr_rpc_'. */ - INTR_INTERFACE - - /* set integer value to data */ - routine data_set_value ( - data_port: mach_port_t; - value: int); - - /* get integer value from data */ - routine data_get_value ( - data_port: mach_port_t; - out value: int); - -data-user.c: ------------- - - #include <stdio.h> - #include <hurd.h> - #include <hurd/hurd_types.h> - #include "data.h" - - #ifndef _GNU_SOURCE - #define _GNU_SOURCE - #endif - - int - main(int argc, char *argv[]) - { - int value=0; - mach_port_t data_server_port; - - data_server_port = file_name_lookup ("/tmp/trans", 0, 0); - printf ("data_server_port [%u]\n", data_server_port); - S_data_set_value (data_server_port, 99); - S_data_get_value (data_server_port, &value); - printf ("data->get_value: [%d]\n", value); - - return 0; - } - -data-server.c: --------------- - - #ifndef _GNU_SOURCE - #define _GNU_SOURCE - #endif - - #include <stdio.h> - #include <getopt.h> - #include <errno.h> - #include <sys/stat.h> - #include <error.h> - - #include <hurd/ports.h> - #include <hurd/hurd_types.h> - #include <hurd/trivfs.h> - - #include "data.h" - - extern boolean_t S_data_server - (mach_msg_header_t *InHeadP, mach_msg_header_t *OutHeadP); - - int trivfs_fstype = FSTYPE_MISC; - int trivfs_fsid = 0; - int trivfs_support_read = 0; - int trivfs_support_write = 0; - int trivfs_support_exec = 0; - int trivfs_allow_open = 0x00; - int trivfs_protid_nportclasses = 0; - int trivfs_cntl_nportclasses = 0; - - int data_value; - - int demuxer (mach_msg_header_t *inp, mach_msg_header_t *outp) - { - return (S_data_server(inp,outp)||trivfs_demuxer(inp,outp)); - } - - void trivfs_modify_stat (struct trivfs_protid *cred, io_statbuf_t *st) - { - } - error_t trivfs_goaway (struct trivfs_control *fsys, int flags) - { - exit (0); - } - - kern_return_t S_data_set_value (mach_port_t data_port, int value) - { - data_value = value; - return 0; - } - - kern_return_t S_data_get_value (mach_port_t data_port, int *value) - { - *value = data_value; - return 0; - } - - int - main(int argc, char *argv[]) - { - int err; - mach_port_t bootstrap; - struct trivfs_control *fsys; - - if (argc > 1) - { - fprintf(stderr, "Usage: settrans [opts] node %s\n", program_invocation_name); - exit (1); - } - - task_get_bootstrap_port (mach_task_self (), &bootstrap); - if (bootstrap == MACH_PORT_NULL) - error(2, 0, "Must be started as a translator"); - - /* Reply to our parent */ - err = trivfs_startup (bootstrap, 0, 0, 0, 0, 0,&fsys); - mach_port_deallocate (mach_task_self (), bootstrap); - if (err) { - return (0); - } - - ports_manage_port_operations_one_thread (fsys->pi.bucket, demuxer, 0); - - return 0; - } - -Makefile: ---------- - - CC = gcc - MIG = mig - CFLAGS = -Wall -g -D_GNU_SOURCE - LDFLAGS = -lthreads -lports -ltrivfs -lfshelp -lshouldbeinlibc - INCLUDES = -I. - LCHDRS = - MIGCOMSFLAGS = -prefix S_ - OBJS = $(SRCS:.c=.o) - TAGS = etags.emacs21 - - all: data-server data-user - tags: - $(TAGS) $(SRCS) $(LCHDRS) - - stubs: data.defs - $(MIG) $(MIGCOMSFLAGS) -server dataServer.c -user dataUser.c $^ - data-server: data-server.c dataServer.c - $(CC) $^ $(CFLAGS) $(INCLUDES) $(LDFLAGS) -o $@ - data-user: data-user.c dataUser.c - $(CC) $^ $(CFLAGS) $(INCLUDES) -o $@ - clean: - rm -f *.o data-server data-user - - start: data-server data-user - settrans -ac /tmp/trans data-server - ps -x | grep data-server - end: - settrans -fg /tmp/trans - -Building --------- - -Do - - make stubs - -to create the dataUser.c and dataServer.c files generated by mig. Create the -executables using: - - make all - -Testing -------- - -Start the data-server translator using: - - settrans -ac /tmp/trans data-server - -You can check if it is running using - - ps -x | grep data-server - -Run the data-user executable to get the resultant output. - -You can remove the translator using: - - settrans -fg /tmp/trans - -To remove the built files use: - - make clean - -Happy Hacking! diff --git a/hurd/translator/xmlfs.mdwn b/hurd/translator/xmlfs.mdwn deleted file mode 100644 index 769c43ce..00000000 --- a/hurd/translator/xmlfs.mdwn +++ /dev/null @@ -1,11 +0,0 @@ -[[!meta copyright="Copyright © 2008 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]]."]]"""]] - -<http://www.nongnu.org/hurdextras/#xmlfs> diff --git a/hurd/virtual_file_system.mdwn b/hurd/virtual_file_system.mdwn deleted file mode 100644 index b62a5e4c..00000000 --- a/hurd/virtual_file_system.mdwn +++ /dev/null @@ -1,27 +0,0 @@ -[[!meta copyright="Copyright © 2007, 2008 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]]."]]"""]] - -Path names are resolved using a distributed protocol. -No single entity is responsible for the resolution of -path names. A file system server (a [[translator]]) -attaches to translators (`fs.defs:file_set_translator`). - -When a process resolves an absolute path, it queries -its root file system server by invoking the `fs.defs:dir_lookup` -method in the capability in its root directory slot. The -file system server resolves as much as it knows about locally -and when it encounters a translator, it replies to the client -indicating how much it resolved and where to continue its -lookup. This continues until the name is fully resolved -or an error occurs. The same happens for relative path -names but a different capability is used. - -For a more detailed explanation of the protocol, look at the section -2.2 of the [[critique]]. diff --git a/hurd/virtual_file_system/discussion.mdwn b/hurd/virtual_file_system/discussion.mdwn deleted file mode 100644 index 9e12d01e..00000000 --- a/hurd/virtual_file_system/discussion.mdwn +++ /dev/null @@ -1,39 +0,0 @@ -[[!meta copyright="Copyright © 2011 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 open_issue_documentation]] - -IRC, freenode, #hurd, 2011-11-12: - - <sea4ever> So hurd implements a 'transparent translator' somewhere which - just passes all IO calls to the posix IO I'm used to? (i.e. read, write, - open, close, etc.?) - <youpi> it's the normal way of operation - <youpi> glibc's read() doesn't do a system call, it always does an RPC to - the underlying translator - <youpi> be it ext2fs for /, or your foobarfs for your node - <sea4ever> Ok that makes sense. How does one program know which translator - it should refer to though? - <sea4ever> the read() call magically knows which process to invoke? - <youpi> the / translator is always known - <youpi> and then you ask /'s translator about /home, then /home/you, then - /home/you/foobar - <youpi> it tells you which other translator tyou have to contact - <youpi> that's on open - <sea4ever> It's a tree! Ok. - <youpi> the notion of fd is then simply knowing the translator - <sea4ever> Right. 'file descriptor' is now 'translator address descriptor' - maybe. - <youpi> it's glibc which knows about FDs, nothing else knows - <youpi> yes - <youpi> actually an RPC port, simply - <sea4ever> I want to try out the new RPC mechanism that mach implements - <youpi> err, which "new" RPC ? - <youpi> mach's RPCs are very old actually :) diff --git a/hurd/virtualization.mdwn b/hurd/virtualization.mdwn deleted file mode 100644 index 49e911c2..00000000 --- a/hurd/virtualization.mdwn +++ /dev/null @@ -1,17 +0,0 @@ -[[!meta copyright="Copyright © 2007, 2008, 2011 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]]."]]"""]] - -Olaf Buddenhagen has written a text about how [[/virtualization]] is applicable -within Hurd systems: -<http://tri-ceps.blogspot.com/2007/10/advanced-lightweight-virtualization.html> - -We also have [[a lot of Open Issues about virtualization -topics|open_issues/virtualization]]. diff --git a/hurd/what_is_the_gnu_hurd.mdwn b/hurd/what_is_the_gnu_hurd.mdwn deleted file mode 100644 index 7a7f3d43..00000000 --- a/hurd/what_is_the_gnu_hurd.mdwn +++ /dev/null @@ -1,51 +0,0 @@ -[[!meta copyright="Copyright © 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, -2010 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]]."]]"""]] - -[[!meta title="What Is the GNU Hurd?"]] - -The Hurd is the GNU project's replacement for [[UNIX]], a popular operating -system [[kernel]]. - -The Hurd is firstly a collection of protocols formalizing how different -components may interact. The protocols are designed to reduce the mutual -[[trust]] requirements of the actors thereby permitting a more -[[extensible|extensibility]] system. These include interface definitions to -manipulate files and directories and to resolve path names. This allows any -process to implement a file system. The only requirement is that it have -access to its backing store and that the [[principal]] that started it own the -file system node to which it connects. - -The Hurd is also a set of [[servers|translator]] that implement these -protocols. They include file systems, network protocols and authentication. -The servers run on top of the [[microkernel/Mach]] [[microkernel]] and use -Mach's [[microkernel/mach/IPC]] mechanism to transfer information. - -The Hurd provides a compatibility layer such that compiling higher level -programs is essentially transparent; that is, by means of the [[glibc]], it -provides the same standard interfaces known from other [[UNIX]]-like systems. -Thus, for a typical user, the Hurd is intended to silently work in the -background providing the services and infrastructure which the [[microkernel]] -itself has no business implementing, but that are required for higher level -programs and libraries to operate. - -The Hurd supplies the last major software component needed for a complete -[[GNU_operating_system|running/gnu]] as originally conceived by Richard -M. Stallman (RMS) in 1983. The GNU vision directly drove the creation and has -guided the evolution of the [Free Software Foundation](http://fsf.org/), the -organization that is the home of the [GNU project](http://gnu.org/gnu/). - -The Hurd development effort is a somewhat separate project from the -[[Debian_GNU/Hurd|hurd/running/debian]] port. - - -Read about what the GNU Hurd is [[gramatically_speaking]]. - -Read about the [[origin_of_the_name]]. diff --git a/hurd/what_is_the_gnu_hurd/gramatically_speaking.mdwn b/hurd/what_is_the_gnu_hurd/gramatically_speaking.mdwn deleted file mode 100644 index 5905a19b..00000000 --- a/hurd/what_is_the_gnu_hurd/gramatically_speaking.mdwn +++ /dev/null @@ -1,54 +0,0 @@ -[[!meta copyright="Copyright © 2001, 2002, 2003, 2004, 2005, 2008 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]]."]]"""]] - -[[!meta title="Grammatically speaking..."]] - -> [[It's_time_to_explain|origin_of_the_name]] the meaning of *Hurd*. -> -> *Hurd* stands for *Hird of [[Unix]]-Replacing Daemons*. -> And, then, *Hird* stands for *Hurd of Interfaces Representing Depth*. - -The Hurd has its share of linguistic debate. The subject of proper usage comes -up quite often. - -Although [[Thomas_Bushnell_states|origin_of_the_name]] that the word *Hurd* is -an acronym; we do not treat it as such, but rather as a concrete noun. We -treat *Hurd* as a title rather than as a proper name: it requires an article, -as in *the Hurd*. For instance: *The ext2 filesystem is provided by the Hurd, -not by Mach.* Note that all of the following are incorrect: *Hurd*, *HURD*, -*H.U.R.D.*, *The HURD*, and *the hurd*. - -Since the Hurd is part of the GNU Project, we also refer to it as *GNU Hurd* -which is treated as a proper noun. We write *the GNU Hurd* instead of *the -Hurd* when we want to emphasize that the Hurd is a GNU package. Once this has -been made clear, we usually use the shorter form, without *GNU*. - -The whole operating system includes not only the kernel and the system servers, -but also many more programs. This system is called *GNU*, or *the GNU -operating system*. The GNU programs can also run on other operating system -kernels. We say *GNU/Hurd* when we want to put emphasis on the fact that this -is the GNU system running on top of the Hurd, and to contrast it with the -GNU/Linux system which is GNU using Linux as the kernel. - -Finally, there is *Debian GNU/Hurd*. This refers to the distribution of the GNU -system as created by the Debian developers. For example: *What do you run on -your laptop? Debian GNU/Hurd, of course.* - -The French generally write *le Hurd*--that is, they treat the name as masculine -singular, capitalized as in English. - -When we are referring to the microkernel, we say *Mach* and use it as a proper -noun. For example: *Mach uses the device drivers found in version 2.0.x of -Linux.* We sometimes say *the Mach microkernel* instead of just *Mach*. - - -To pronounce the word *Hurd*, you should say the English word *herd*. This is -pronounced as *hɚd* using the International Phonetic Alphabet. diff --git a/hurd/what_is_the_gnu_hurd/origin_of_the_name.mdwn b/hurd/what_is_the_gnu_hurd/origin_of_the_name.mdwn deleted file mode 100644 index 51857e21..00000000 --- a/hurd/what_is_the_gnu_hurd/origin_of_the_name.mdwn +++ /dev/null @@ -1,50 +0,0 @@ -[[!meta copyright="Copyright © 1996, 1997, 1998, 2002, 2003, 2004, 2007, 2008 -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]]."]]"""]] - -[[!meta title="Origin of the Name"]] - -[According to Thomas -Bushnell](http://web.cecs.pdx.edu/~trent/gnu/hurd/hurd-name), the primary -architect of the Hurd: - -> It's time to explain the meaning of *Hurd*. -> -> *Hurd* stands for *Hird of [[Unix]]-Replacing Daemons*. -> And, then, *Hird* stands for *Hurd of Interfaces Representing Depth*. -> -> We have here, to my knowledge, the first software to be named by a -> pair of mutually recursive acronyms. - -[Quoting](http://mail.gnu.org/archive/html/help-hurd/2002-10/msg00099.html) -him further: - -> The name *Hurd* was invented by me, as an alternate spelling for the English -> word *herd*. *Hird* is just another alternate spelling for the same word. -> By the [[normal_rules_of_English_orthography|gramatically_speaking]], they -> all have the same pronunciations. - - ---- - -<!-- TODO. Source? Or remove? --> - -In other contexts: - -One contributor from Norway described two other uses of Hird. - - * "the kings men", a name given to the men accompanying the Norwegian kings at about - year 1000 and on. - - This was later coined by V. Quisling when he formed a party with - nationalistic traits to denote a set of helpers promoting his agenda of - national and Nordic ideas. - - * a symbol of collaboration with the (German) enemy used in World War II. |