diff options
author | Thomas Schwinge <thomas@schwinge.name> | 2010-12-13 17:11:51 +0100 |
---|---|---|
committer | Thomas Schwinge <thomas@schwinge.name> | 2010-12-13 17:11:51 +0100 |
commit | 2d75167da62e3486836e5f1773e5f1ab06e43fe8 (patch) | |
tree | e44fc83e0b1419836d1b21652ad1d38b8d0af2c4 /user | |
parent | 217998d56f5b6424a685f8c87f2c0e924d1c89da (diff) | |
parent | 5c5c16e265d8ef56b71f319885f32bf144bdea23 (diff) |
Merge branch 'master' into external_pager_mechanism
Conflicts:
microkernel/mach/external_pager_mechanism.mdwn
Diffstat (limited to 'user')
-rw-r--r-- | user/El_Dream_Machine.mdwn | 27 | ||||
-rw-r--r-- | user/arnuld.mdwn | 24 | ||||
-rw-r--r-- | user/bddebian.mdwn | 4 | ||||
-rw-r--r-- | user/flaviocruz.mdwn | 124 | ||||
-rw-r--r-- | user/jkoenig.mdwn | 358 | ||||
-rw-r--r-- | user/kam.mdwn | 152 | ||||
-rw-r--r-- | user/madhusudancs.mdwn | 395 | ||||
-rw-r--r-- | user/michaelbanck.mdwn | 3 | ||||
-rw-r--r-- | user/pietroferrari.mdwn | 3 | ||||
-rw-r--r-- | user/pochu.mdwn | 136 | ||||
-rw-r--r-- | user/scolobb.mdwn | 364 | ||||
-rw-r--r-- | user/stesie.mdwn | 4 | ||||
-rw-r--r-- | user/tschwinge.mdwn | 21 | ||||
-rw-r--r-- | user/vincentvikram.mdwn | 14 | ||||
-rw-r--r-- | user/zhengda.mdwn | 132 | ||||
-rw-r--r-- | user/zhengda/howto.mdwn | 90 |
16 files changed, 1825 insertions, 26 deletions
diff --git a/user/El_Dream_Machine.mdwn b/user/El_Dream_Machine.mdwn new file mode 100644 index 00000000..f86d4bfd --- /dev/null +++ b/user/El_Dream_Machine.mdwn @@ -0,0 +1,27 @@ +[[!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]]."]]"""]] + + +I just try to become an end user of The Hurd. In 2004, I was able to install K9 on an old computer. +These times, my goal is to install it on my laptop (maybe with crosshurd or with a lzma image for virtualbox, or any other way...) + +Also, I'm currently working on a comics'The Call Of The Hurd'. It's free licensed cc-by-sa/Copyleft Art Libre. +1st page will be done before the end of the year I think (I look for good quality). + +And it's nice to be here :) + +Page 1 out ! The beginning of the [the comics is here :](http://eldreammachine.free.fr/gaetan/TheCallOfTheHurd-01.jpg) +Hope it will pleased for you. + +Here's the [french version.](http://art9libre.tuxfamily.org/gaetan/TheCallOfTheHurd-01-fr-png.jpg) + + + + diff --git a/user/arnuld.mdwn b/user/arnuld.mdwn index 14b389e4..1f913a2b 100644 --- a/user/arnuld.mdwn +++ b/user/arnuld.mdwn @@ -2,10 +2,10 @@ ## General -* Name: arnuld fraser -* Email: geek.arnuld@gmail.com +* Name: arnuld uttre +* Email: arnuld (at) ippimail (dot) com * Country: India -* Homepage: <http://arnuld.blogspot.com> +* Homepage: <http://www.lispmachine.wordpress.com> @@ -17,18 +17,18 @@ ## Professional -* i was a Salesman (sold Financial Products) for 2 years +* I was a Salesman (sold Financial Products) for 2 years ## Future Plans -* Want to start my own business, totally based on a new paradigm of copyleft softwares. It will be -both a new-paradigm and a sudden-shock to present corporate. New-Paradigm because probably nearly all -software companies use software-patents and Proprietary licenses to make money and I will be the one -who will bring a new software business practice that will be adopted by every software company, sooner -or later. A sudden-shock because then everybody will think "Why I did not think of it ?" and after 10 -years form now, using Proprietary licenses and Software-Patents to make money will be a totally useless -idea in business. +* I am learning skills to get myself into Central-Cabinet of Government of India. India is the 2nd + biggest developing economy and hence lots of Software companies will grow here. RMS is working + hard in this field to spread free software but he dealing with effects rather than the cause. He + is not the one who decides what the software policy of some company will be, only Government can + create rules and regulations and push the methods of creating software and for that one needs to be + in a pretty much higher position in politics. I will go there and do it. -* yeah, want to learn Jeet-Kuan-Do. i love it as much as i love the copyleft concept :)
\ No newline at end of file +* Yes, I want to learn Jeet-Kuan-Do. I love it as much as I love the copyleft but only one thing can + happen: I will be either in politics or a Martial-Arts expert. diff --git a/user/bddebian.mdwn b/user/bddebian.mdwn deleted file mode 100644 index 25ac64e5..00000000 --- a/user/bddebian.mdwn +++ /dev/null @@ -1,4 +0,0 @@ -* Name: Barry deFreese -* Email: <bddebian@comcastNOSPAM.net> -* Country: USA -* Comment: GNU/Hurd hacker wannabe... diff --git a/user/flaviocruz.mdwn b/user/flaviocruz.mdwn new file mode 100644 index 00000000..c4d3db69 --- /dev/null +++ b/user/flaviocruz.mdwn @@ -0,0 +1,124 @@ +[[!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]]."]]"""]] + +Name: Flávio Cruz + +Email: flaviocruz at gmail dot com + +Some [Hurd stuff](http://opensvn.csie.org/leic/hurd/) + +And code: [cl-hurd](http://git.savannah.gnu.org/cgit/hurd/incubator.git/log/?h=clisp) + +## Summer session + +Creating an extensible translator library in lisp using the mig generated stubs. + +### What's done + +- The library for writing translators is mostly written. +- This library is intended to implement virtual filesystems. Examples are: translators were data is located in a local file (like zipfs, tarfs, rarfs, ...), single file translators (that do content filtering, output of a command, etc), network based filesystems (ftpfs, httpfs, ...), proxy filesystems (like hostmux, usermux, etc..) +- It's possible to specialize the basic translator library and implement new translator classes. This is done using CLOS. +- There is a tree-translator class that makes the managing of a node tree very easy, doing all the work for us, through a simple directory API and implementing the directory callbacks for us. +- There is a simple example (something like zipfs) translator that can expose the directories and file contents of a ZIP file. +- More translator examples include: + - /dev/null translator. + - /dev/zero translator. + - translator that creates a symlink node. + - tmpfs like translator. + - a translator that does proxying between clients and the underlying translator returning all data in upper-case. + - a translator that watches for changes in a file describing the file system structure. + - an IRC translator. + - a categorizer translator: creates a virtual directory containing files listed in a file, each file is categorized with a script. For example, a script can output the music author (in an mp3 file) and then all files will be categorized by author. +- Translator options (manipulated through fsysopts) have a simple and easy to use API. +- All the Mach port manipulation API is available. +- It's possible to send and receive messages. Simple example: +<pre> + (let* ((spec-mixed (make-message-spec :fields '(:string :integer :char :string :integer :real))) + (msg-mixed (make-message :spec spec-mixed)) + (port (port-allocate :right-receive))) + (send-message msg-mixed :remote port :data (list "abc" 42 #\b "cba" 314 3.14)) + (receive-message msg-mixed :source port) ; This returns T on success. + (get-message msg-mixed))) ; Returns '("abc" 42 #\b "cba" 314 3.14) +</pre> +- New message types (like :string, :integer) can be implemented, providing a powerful extension mechanism. +- Creation of symlinks and symlink path resolution. +- Creation of character/block devices, fifos and sockets. +- Patch that opens stdin + stdout to /dev/null. +- Project has been separated into 5 ASDF installable systems: + - hurd-common + - mach + - hurd + - hurd-translator + - tree-translator +- Test cases are now written. + + +### What needs to be done + +- Fix fsys-getroot (block happens in trivfs based translators, when they do RPC's to me when I call fsys_getroot to them) and fetch-root (for passive translators). +- Make the library multithreaded (blocked by the pthread conversion project and the unavailable thread support in CLISP) +- Use the socket stubs? +- More documentation + + +### Project dependencies + +- CLISP +- [CFFI](http://common-lisp.net/project/cffi/) (apt-get installable) +- [Flexi streams](http://www.weitz.de/flexi-streams/) (apt-get installable) +- [Trivial garbage](http://www.cliki.net/trivial-garbage) (not in debian repositories) +- [cl-zip](http://common-lisp.net/project/zip/) (only needed for the zip translator) +- [cl-irc](http://common-lisp.net/project/cl-irc/) (for the irc translator) + + +## To do + +### Documentation +- Manually Bootstrapping a Translator + +### Translation +- Translate the Hurd website to Portuguese? + +## Completed tasks + +### Patches +- http://alioth.debian.org/tracker/index.php?group_id=30628&atid=410472 + - libsvg patch accepted. +- Adapted glibc patch (http://www.schwinge.homeip.net/~thomas/tmp/glibc-patches/0009-2007-07-22-version-of-init-first.c_vs._GCC_4.1.patch.patch) + - http://opensvn.csie.org/leic/hurd/patches/glibc-init-first.patch +- Patch to remove some GNUMach IPC warnings and minor cleanup: + - http://opensvn.csie.org/leic/hurd/patches/gnumach-ipc-warnings.patch +- Website patches that correct some encountered typos: + - http://opensvn.csie.org/leic/hurd/patches/hurd-talk-typo.patch + +### Documentation read + +- GNU/Hurd User's Guide, an introduction to the important concepts and software of the GNU system, written for new users, AKA "GNUbies." +- Towards a New Strategy of OS Design, an architectural overview by Thomas Bushnell, BSG. +- The Hurd, a presentation by Marcus Brinkmann. +- The Hurd Hacking Guide. +- The GNU Mach Reference Manual +- The GNU Hurd Reference Manual +- The Unofficial GNU Mach IPC beginner's guide +- Mach IPC without MIG +- CFFI User's Manual + +### Before selection + +- Uptime program in C and Lisp using CFFI. +- Hello translator. + +## Misc + +### Lisp implementations that run on Hurd + +- Clisp +- ECL +- ? diff --git a/user/jkoenig.mdwn b/user/jkoenig.mdwn new file mode 100644 index 00000000..247d61cb --- /dev/null +++ b/user/jkoenig.mdwn @@ -0,0 +1,358 @@ +[[!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]]."]]"""]] + +## Hurd Debian-Installer + +My [proposal](http://wiki.debian.org/SummerOfCode2010/HurdDebianInstaller/JeremieKoenig) +to work on porting d-i on Hurd +as a [Google Summer of Code](http://code.google.com/soc/) student +has been accepted by the Debian project. + +I will be keeping track of my progress on this page. + +### Links + + * [Modified packages](http://jk.fr.eu.org/debian/unstable) + * [Latest images](http://jk.fr.eu.org/debian/hurd-installer) + * [Debian bugs](http://bugs.debian.org/cgi-bin/pkgreport.cgi?users=jk@jk.fr.eu.org&tag=gsoc2010) + * [BusyBox port](http://lists.debian.org/debian-bsd/2010/05/msg00048.html) + * [GNU Mach initrd](http://lists.gnu.org/archive/html/bug-hurd/2010-06/msg00047.html) + +### Roadmap + +* **mach**: initrd support + * (./) preliminary patch posted and self-built (2010-06-12) + * adjustments will be needed (postponed) + * consider the alternatives discussed on bug-hurd (postponed) + +* **glibc**: fix `mkdir("/")` which returned `EINVAL` + * (./) eglibc 2.11.2-1 includes a quick fix by youpi (2010-06-15) + * (./) more complete patch posted to bug-hurd, + since other calls return incorrect errors under some circumstances + (2010-06-16) + * more work on it will be needed to make it fix the whole thing + (postponed) + +* (./) **partman** (2010-06-23) + * (./) add hurd-i386 to + `partman-partitioning/lib/disk-label.sh` + (2010-06-16, commited by youpi on 2010-06-23) + * (./) short-circuit + `partman-basicfilesystems/init.d/kernelmodules_basicfilesystems` + (2010-06-16) + * (./) partman-auto recipes: + make the default filesystem os-dependent + when it has not been preseeded (ie. the *seen* flag is clear) + * (./) force 4k blocks and 128 bytes inodes + * (./) submit patches to bugs.debian.org + ([[!debbug 586870]] and [[!debbug 586871]]) + * (./) rebuild with responsible version numbers and upload to my repository + +* (./) **libparted** (2010-06-23) + * (./) fix device paths ([[!debbug 586696]]) + * (./) fix crash on exit for part:* stores ([[!debbug 586682]]) + +* **hurd-udeb** (2010-06-23) + * (./) rebuild with the hack suggested by youpi for qemu network configuration + * (./) fix mount to accept `-o defaults` + * cleanup, ask youpi to commit + +* reloading the partition table (2010-06-25) + * User-space part stores + * (./) hurd-udeb now uses `part:N:device:X` for partition devices + (2010-06-23) + * (./) it also provides /lib/partman/commit.d/??hurd\_reloadpart, + which basically does `settrans -ag /dev/[hs]d*`. + (2010-06-24) + * Kernel-based partition devices + * (./) Mach's drivers from Linux support reloading partitions. + With help from youpi this has been made available through a + device\_set\_status() call. + * (./) make libparted use it + * Reminder: + I should file a bug against libparted with the patch sometime. + +* (./) The `/servers/exec` issue (2010-06-26) + * Due to /servers being inexistant, + the bootstrap ext2fs could not register the initial exec server, + meaning that non-bootstrap filesystems used a different one + (started from the passive translator), + which for some reason died on shell scripts, making them stall. + * Adding the `/servers` directory to hurd-udeb fixed it, + as well as the /hurd/proc issue + (failed to be run by init the first time around). + * Reminder: report the non-bootstrap exec servers failure on scripts. + +* (./) **base-installer**: (2010-06-26) + * Work around non-existant /proc/mounts. + * Firmlink /servers into /target after debootstrap + to make the network available. + +* (./) **grub-installer** + * (./) add hurd support (2010-06-27) + * /!\ grub-legacy still needs to be tested + * submit changes as a Debian bug + +**Milestone (2010-06-28): +installer kindof works, with documented manual intervention required** + +* (./) Sort out the situation with dev node creation (2010-07-07): + * Devices and servers used to be set up by debootstrap; + the hurd package would add some missing nodes. + * New strategy implemented in hurd and debootstrap: + * debootstrap uses active firmlinks into the host system + for the target system's /dev and /servers. + * the hurd package now include a `setup-translators` script, + which is used to register the passive translators by the installer's + `/libexec/runsystem` and hurd's postinst script. + +* **busybox**: submit upstream and to [[!debbug 323670]] + (waiting for upstream to review) + * (./) I have mentioned my work on the upstream mailing list, + * (./) merge the recent changes from upstream, + notably to the build system. + (2010-06-23) + * (./) ask upstream for review and merge + (2010-06-25) + * (./) sent as patches as requested + (2010-07-08) + * backport any additional changes onto the debian branch + * hijack [[!debbug 323670]] and submit my patches + +* **aptitude**: + * Currently broken on hurd-i386: + [[!debpkg gtest]] fails to build because of a segfault in one of the test + cases, [[!debpkg google-mock]] and hence [[!debpkg aptitude]] are missing + it as a build-dep. + The older package is not installable anymore because it's linked against + an older version of libept, which has been removed. + * (./) I bypassed the tests and uploaded the 3 packages to my repository + (2010-07-08) + * The segfault will have to be sorted out. (postponed) + +* (./) "Fix" the swap situation. (2010-07-08) + * The device\_close() libstore patch + had the unfortunate effect of making swapon fail, + since the device it activates has to be kept open. + * add options for MAKEDEV and setup-devices + to use the libparted stores + * disable youpi's patch + * make partman-basicfilesystems re-create the device + as a kernel partition, which is needed for swapon + +* (./) netcfg-static: port to hurd (2010-07-09) + * There was some amount of hurd support already + (namely, activating the interface by replacing the socket translator) + * However, this code started an active translator with + di\_exec\_shell\_log("settrans -a ...), + which stalled as a consequence of it capturing libdi's pipe + as its standard output. + * Network devices must be probed by trying to open Mach devices + with predetermined names (currently eth%d, wl%d), + because getifaddrs() does not seem to work on Hurd. + * /!\ netcfg, and configuring the installed system, postponed. + +* **procps** 3.2.7-11 (current hurd-i386 version) has [[!debbug 546888]] + * (./) Submit [[!debbug 588677]] and upload the result to my repository. + (2010-07-11) + +* (./) Set up a Debian mirror with modified packages for installation + * the [mirror](http://jk.fr.eu.org/debian/hurd-install/mirror) + is now up and running (2010-07-06) + * hacked the image build script to include its public key in + debian-archive-keyring at image build time (2010-07-08) + * Apparently debootstrap does not handle multiple versions very well. + Fix by using dpkg-scan{package,sources} rather than apt-ftparchive + to create index files. + (2010-07-10) + * Use the override files from ftp.debian.org, + to avoid debootstrap grabbing inappropriate packages. + * Changed them to make [[!debpkg ifupdown]], + [[!debpkg dhcp3-client]] and [[!debpkg dhcp3-client]] priority extra, + because they're uninstallable at the moment. + (2010-07-12) + +* (./) Put together a "jk-archive-keyring" package, + so that the mirror is authenticated in the target system as well. + (2010-07-12) + +* (./) Fix grub for user-space partitions (2010-07-16) + * grub-probe detects the whole device rather than the partition + as the device behind /boot/grub. + Consequently, grub-install fails. + * One approach would be to replace /dev/hd* by kernel devices + for file systems as well as for swap partitions. + > {X} this makes the installer crash, + > possibly due to cache coherency issue between hdX and hdXsY. + + * (./) GRUB2 kern/emu/getroot.c + [patched](http://lists.gnu.org/archive/html/bug-hurd/2010-07/msg00059.html) + to support part stores. + +* (./) Fix finish-install to skip `finish-install.d/90console` on Hurd + (2010-07-17) + +* (./) Avoid starting unnecessary /dev translators in a burst (2010-07-20) + * Use debootstrap use the extracted /usr/lib/hurd/setup-translators + to create device and server nodes in /target, + then firmlink the whole /target/dev and /target/servers + to the outer system. + * Make hurd.postinst not touch them on initial install. + +* (./) Fix mach-defpager for file and part stores on larger devices + * Use DEVICE\_GET\_RECORDS instead of DEVICE\_GET\_SIZE, which overflows an int + (2010-07-22) + +**Milestone (2010-07-22): +installer works but it's still somewhat ugly and broken** + +* (./) Ship the UTF-8 font for the hurd console + (2010-07-22) + * Upload a version of bogl with youpi's patch for Hurd. + (see [[!debbug 589987]]) + * Fix the hurd console for fonts with 16 pixels wide glyphs + (ie. handle the 8-wide glyph in there correclty) + * Support double-width glyphs (2010-07-24) + * {X} However the reduced font can't be loaded yet, + so make installer/build/Makefile + ship the whole `/usr/src/unifont.bgf` + as `/usr/share/hurd/vga-system.bgf`. + +* (./) Make the installer used the extended capabilities of the Hurd console + (2010-07-23) + * Set an UTF-8 locale in `/lib/debian-installer.d/S41term-hurd`. + * localechooser: set the language display level to 3 + when using the hurd console. + +* (./) **busybox**: cross-platform package uploaded to experimental + (2010-08-03?) + * Aurelien Jarno updated the packaging to busybox 1.17.1, + fixed a whole lot of bugs, + and uploaded a new package with both our changes; + * most patches adopted upstream, and included in the new package; + * (u)mount/swaponoff ported to kFreeBSD; + * per-OS configuration overrides. + +* (./) Update custom packages to the latest versions + and send updated patches to the BTS + (2010-08-11) + * updated partman-base to choose a default filesystem in debian/rules + rather than at runtime, + as suggested by Aurelien Jarno in [[!debbug 586870]] + * patch submitted for debian-installer-utils + ([[!debbug 592684]]). + * patch submitted for locale-chooser + ([[!debbug 592690]]). + * debootstrap, grub-installer and finish-install not yet submitted, + since the details may still change. + +* (./) **partman-target**: fix fstab creation + (2010-08-11) + * See [[!debbug 592671]] + * debian/rules: set `partman/mount_style` to `traditional` on Hurd. + * finish.d/create\_fstab\_header: add a Hurd case. + +* **rootskel**: FTBFS on Hurd and other quirks + (to be fixed very soon) + +* **d-i/installer/build**: (expected soon) + * publish the patch I use + * sort out the changes suitable for inclusion + and ask youpi and/or debian-boot@l.d.o to commit them + +* call for testing and fix the bugs + +* Bug in setup-translators/MAKEDEV: + permissions are broken for nodes re-created through `MAKEDEV -k`, + because MAKEDEV's chmod/chown reaches the pre-existing translator + * Maybe settrans could be made to accept -o/--owner and + -p/--perm, to set the permissions for the underlying node? + +* Silence the "no kernel" warning somehow. + +* Investigate the wget/libc/pfinet/whatever bug which corrupts Packages.gz, + see the IRC log for 2010-07-23, around 1am UTC+0200 + +* Try to resolve problems with udebs which are uninstallable on hurd-i386, + such as installation-locale and partman-whatever. + +* Provide `/proc/cmdline -> 2/cmdline`, or something. + +* Prepare a NMU for genext2fs (which is orphaned), + and ask youpi to sponsor the upload. + +* **busybox**: port + * fix stty/stat/ipcs on kFreeBSD, + * generally port more stuff, + * *ip* is needed (maybe) for network configuration, + * *mount*, *swaponoff* can be from hurd-udeb for now, + though the kFreeBSD people will need them + +* **partman**: further adjustments + * partman-base: handle /dev/hd?s* in lib/base.h + * hide irrelevant mount options? (sync, relatime) + +* Network configuration on the installed system. + This includes porting ifupdown and isc-dhcp-client, + which are currently uninstallable on hurd-i386. +* Also, better DHCP support during and after installation + +* improve the [initrd situation](FIXME: link to bug-hurd post): + ajust the ramdisk support in Mach, + use tmpfs if possible. + +* mklibs{,-copy}: + test library reduction, + make it copy the ld.so -> ld.so.1 symlink. + +* hurd console fonts + +**Milestone (expected 2010-07-19): +it works great and it's beautiful** + +* test, fix, document +* support more types of installation images +* give a shot at the graphical installer if time permits +* integrate wireless drivers with netcfg +* see how [[zhengda]]'s work on DDE could be integrated +* etc.. + +### Mostly done + +#### Week 1 (2010-05-24) + +* genext2fs: patches submitted, [[!debbug 562999]] + which add support for all block sizes and choosing them at runtime. +* busybox: started porting the upstream and Debian package to Hurd and FreeBSD +* rebuilding hurd-udeb from the pkg-hurd version + and adding a ld.so link to the initrd + fixes the exec translator crashing on startup. + (BTW would there be a mean to detect this from the libdiskfs bootstrap code + and report it ?) + +#### Week 2 (2010-05-31 to 2010-06-06) + +* *busybox*: patches [posted](http://lists.debian.org/debian-bsd/2010/05/msg00048.html). +* *libdebian-installer4*: [[!debbug 584538]] +* started working on mach initrd support +* the installation images could boot into the main-menu + with the following changes: + * rebuild hurd-udeb from with the latest pkg-hurd patches + * use busybox from my osports-debian branch (see link above) + * tweak the d-i image build scripts + * the symlink /lib/ld.so -> ld.so.1 needs to be created somehow + (youpi mentionned it being the job of libc0.3-udeb I think) + * fix the poll() issue in libdebian-installer + (patch to be submitted soon), + also there is some hurd doxygen short-circuiting stuff + there which does not apply any more and prevents is to build. + * feed the initrd as a hard drive in qemu + (with some more space added to avoid it from becoming full) + diff --git a/user/kam.mdwn b/user/kam.mdwn new file mode 100644 index 00000000..8ee68866 --- /dev/null +++ b/user/kam.mdwn @@ -0,0 +1,152 @@ +[[!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="Karim Allah Ahmed"]] + +<karim.allah.ahmed@gmail.com> + +Egypt. + +--- + +#GSoC: 2010 Project +Goal: + +--- +#Roadmap + +##Progress + +###Preparation Phase: + +Understanding how gnumach ticks [ at least the parts related to the project ] + +--- + +####28th of April - 5th of May: + +* Reading the paging in code in gnumach. +* Reading the libpager code, and the multipage patch. +* Reading the translators code, only the part implementing the external pager interface. + +####5th of May - 12th of May: + +* Reading the paging out code in gnumach. +* Understanding IPC in gnumach and reading some code. +* Reading "[gnu_src]/kern/sched_prim.c" + +####12th of May - 19th of May: + +* Finishing the leftover code in some of the previous phases. +* Building a big and a more clear picture of how gnumach ticks [ wiring things together ]. + +####19th of May - 23th of May: + +* Off [College related-activities]. + +--- + +###Coding Phase: + +Stage 1: + +####24th of May - 26th of May: + +* Read the freeBSD multipages implementation. +* Basic Modifications of gnumach's code. +* err.. scratch this step. It's easier to work on porting OSF Mach's implementation of multi-pages. + +####26th of May - 28th of May: + +* (./) port OSF Mach's clustered pagein during 'page faults' ( [src]/vm/vm_fault.c ) +* (./) port "cluster_size" attribute of memory objects from OSF Mach. +* (./) port "behavior" attribute of vm_map entries from OSF Mach. + +####29th of May - 2nd of June: + +* Off ( Oral Exams ) + +####2nd of May - 4th of June: + +* Finish the port of the previous phase. + +--- + +####4th of June - 4th of July: + +* Off ( Final Exams ). + +--- + +Stage 2: + +####5th of July - 7th of July: + +* (./) Add "cluster_size" attribute to Neal Walfield's patch for the pager library. + +--- + +Stage 3: + +####8th of July - 15th of July: + +* (./) Patch the diskfs library to use the new pager library API. +* (./) Patch the ext2fs disk paging related routines to use the new pager library API. + + +####16th of July - 19th of July: + +* Testing the current patches. +* Stuck in compiling code ( http://30.media.tumblr.com/tumblr_l5ie1bb2u91qbjipvo1_500.jpg ) , so I started reading some documentation meanwhile ( [0] , [1] ). + +--- + +Stage 4: + +####19th of July - 31th of June: + +* Check OSF Mach's mach-defpager. +* Patch (or port OSF Mach's default pager) HURD's mach-defpager to use the new gnumach's RPCs. + +--- + +Stage 5: + +####1st of August - 10th of August: + +* Testing the ported translators. +* Fixing the boot bit-mapped memory allocator patch. + +--- + +Stage 1: + +* clustered_paging.diff patch http://lists.gnu.org/archive/html/bug-hurd/2010-06/msg00024.html + +TODO: + +* Update the headers of the modified files in GNU Mach to reflect the fact that they were ported from OSF Mach. + +* Implement posix_madvise(), posix_fadvise, and readahead() in glibc. + +* Update the documentation of GNU Mach with the new interfaces. + +* (./) Revise and finish the code related to default_memory_manager management in GNU Mach. [done] + +* Port the vm_page "clustered" attribute. [ to mark that the page wasn't requested but was paged-in as part of the cluster ]. + + +--- + + +# Readings + +[0] http://www.nongnu.org/ext2-doc/ext2.html +[1] http://kerneltrap.org/node/452 diff --git a/user/madhusudancs.mdwn b/user/madhusudancs.mdwn new file mode 100644 index 00000000..903b0964 --- /dev/null +++ b/user/madhusudancs.mdwn @@ -0,0 +1,395 @@ +[[!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="GNU/Linux compatible procfs"]] + +[[!toc]] +---- + + Project Name +---- + +GNU/Linux compatible procfs pseudo-filesystem + +------ + + Project Description +---- +I wish to provide a sophisticated procfs pseudo-filesystem to “the Hurd”. An implementation of /proc pseudo-filesystem already exists in hurdextras repository. After skimming through the code it is clear that it needs a lot +of rework and tuning. Experiences from GNU/Linux have proven procfs to be a very useful facility in implementing +many of the process management tools. So the goal of this project is to rework on the existing procfs on “the Hurd” +so that its not only reliable and robust but also more importantly it is fully compatible with the GNU/Linux procfs. +The project thus aims at making the GNU/Linux process management tools like top, sysctl, kill, +skill, nice, snice, pgrep, free, tload, uptime, fuser, killall, pidof, pstree, etc., to run out of the box. + +------ + + Mentor +---- + +Olaf Buddenhagen + +------ + + Project Schedule +---- + +##### 1. Initial preparation and migration (Community Bonding Period: has already started – May 25th) + + This phase involves improving my translator programming skills by gaining + hands-on experience in it and becoming well versed in it. I will also go + through the Hurd code to understand its architecture in depth and will read + documentations related to obtaining process related information in Hurd. + This phase also involves the migration of existing procfs to use libnetfs. + +##### 2. Analysis and Design (May 26th – June 11th ) + + This phase involves the analysis of previous migration. Also involves + interacting with the mentor, the Hurd community and other people involved + in development of ps. tools to draw the exact design of the proposed procfs + including the algorithms required for coding. + +##### 3. Coding Stage I (June 12th – June 22nd ) + + Finishing up the migration to libnetfs based on the finalized design and + making necessary changes to the existing procfs. Coding up to + /proc/<pid>/exe in the features list. + +##### 4. Coding Stage II (June 23rd – July 13th) + + Involves coding of the features from /proc/<pid>/environ, up to + /proc/<pid>/maps. These contain most of the information required for ps. + tools and hence form the heart of the project. Will be completed by + mid-term evaluation deadline. + +##### 5. Coding Stage III (July 14th – July 26th ) + + Coding the rest of the features in the list including any necessary + features that may be added in the analysis phase. + +##### 6. Final Testing and evaluation (July 27th – August 8th ) + + Closely interacting with the community and requesting them to help me + in overall testing and reviewing and making changes as per their + suggestions. Also involves testing with the ps. tools and consolidating + the documentation. + +##### 7. Packaging and Wrap-up (August 9th - August 18th ) + + Final phase of testing and fixing remaining bugs. Working with the + community to merge the project with the CVS HEAD of Hurd. Documentation + reviews, making necessary changes as per the suggestions and wrapping + up the documentation. + +------ + + Deliverables +---- + +1. /proc filesystem that uses libnetfs. Using this library makes it easier for implementing a large set of functionalities and hence makes the implementation robust. +2. The core GNU/Linux compatible /proc filesystem with functionalities to support and provide information for ps. tools like procps, psmisc etc. + +Non-code deliverables include an exhaustive Documentation. This documents the code of the Hurd's procfs which explains in detail the implementation of each of the functionalities of procfs implemented +during the course of this project. + +------ + + Code Repository +---- + +[http://github.com/madhusudancs/procfs/tree/master](http://github.com/madhusudancs/procfs/tree/master) + +Clone URL: [git://github.com/madhusudancs/procfs.git](git://github.com/madhusudancs/procfs.git) + +------ + + Progress +---- + +1. Packages Ported: [http://www.madhusudancs.info/parted-hurdi386 parted-1.7.1] +2. Packages Porting in progress: autogen_1:5.9.4-1. Error installing texlive-bin. Error tracked to some post installation scripts of texlive-bin. Problem seems to be in fmutil. Trying to debug. +3. Have to start coding libnetfs skeleton for procfs translator. + +**Target for next week** + + Task To be completed by Status Now + + 1. Finish Defining the necessary netfs call backs 25-05-2008 Completed + 2. Create Directories for each process with pid directory name 27-05-2008 Completed + 3. Create stat file for each process within this directory and<br/> + put atleast 1 information into it 31-05-2008 In Progress + +**Documentations Read/Reading** + +1. [Hurd Hacking Guide](http://www.gnu.org/software/hurd/hacking-guide/hhg.html) (Have Concentrated mainly on Translator part) +2. [Linux Kernel Implementation of procfs](http://users.sosdg.org/~qiyong/lxr/source/Documentation/filesystems/proc.txt) + +**Code Being Read** + +1. libps +2. libnetfs +3. [procfs implementation in Linux kernel](http://users.sosdg.org/~qiyong/lxr/source/fs/proc/) +4. ftpfs (In Hurd main) +5. cvsfs (In Hurd extras) +6. xmlfs (In Hurd extras) +7. httpfs (In Hurd extras) +8. gopherfs (In Hurd extras) +9. libfuse (In Hurd extras) +10. procfs (libtrivfs based, In Hurd extras) + +------ + + Post Mid-Term Road Map +---- + + +####Already Implemented + +#####File - /proc/<PID>/stat + +* pid + +* comm + +* state + +* ppid + +* pgrp + +* session + +* tty_nr + +* tpgid + +* minflt +> The number of minor faults the process has made which have not required loading a memory page +> from disk. + +* majflt +> The number of major faults the process has made which have required loading a memory page from +> disk. + +* utime +> The number of jiffies that this process has been scheduled in user mode. + +* stime +> The number of jiffies that this process has been scheduled in kernel mode. + +* priority +> The standard nice value, plus fifteen. The value is never negative in the kernel. + +* num_threads +> Number of threads in this process. + +* starttime +> The time in jiffies the process started after system boot. + +* vsize +> Virtual memory size in bytes. + +* rss +> Resident Set Size: number of pages the process has in real memory, minus 3 for administrative +> purposes. This is just the pages which count towards text, data, or stack space. This does not +> include pages which have not been demand-loaded in, or which are swapped out. + +* itrealvalue +> The time in jiffies before the next SIGALRM is sent to the process due to an interval timer. + +* nswap +> Number of pages swapped (not maintained). + +* cnswap +> Cumulative nswap for child processes (not maintained). + +* flags +> PF_* fields defined in (Not Linux compatible, but nearly says the something Linux says) + +* nice +> The nice value ranges from 19 to -19. + +* cutime +> The number of jiffies that this process’s waited-for children have been scheduled in user +> mode. + +* cstime +> The number of jiffies that this process’s waited-for children have been scheduled in kernel mode. + +#####File - /proc/<PID>/statm + +* size +> total program size + +* resident +> resident set size + +* lib +> library + +* dt +> dirty pages + +####I already know the where the information is exactly available. + +#####Other Per-PID Files + +#####* /proc/<PID>/exe + +#####* /proc/<PID>/environ + +#####Non Per-PID Files + +#####* /proc/version + + +####I know where the information is available roughly, but need to look in detail to extract the exact information. + +* cminflt +> The number of minor faults that the process’s waited-for children have made. + +* cmajflt +> The number of major faults that the process’s waited-for children have made. + +* signal +> The bitmap of pending signals. + +* blocked +> The bitmap of blocked signals. + +* sigignore +> The bitmap of ignored signals. + +* sigcatch +> The bitmap of caught signals. + +* policy +> Scheduling policy. + +#####File - /proc/<PID>/statm + +* text +> text (code) + +#####Other Per-PID Files + +#####* /proc/<PID>/cwd + +####The information may be available, but needs to be searched to know where it will be. + +#####File - /proc/<PID>/stat + +* rlim +> Current limit in bytes on the rss of the process (usually 4294967295 on i386). + +* startcode +> The address above which program text can run. + +* endcode +> The address below which program text can run. + +* startstack +> The address of the start of the stack. + +* kstkesp +> The current value of esp (stack pointer), as found in the kernel stack page for the process. + +* kstkeip +> The current EIP (instruction pointer). + +* exit_signal +> Signal to be sent to parent when we die. + +#####File - /proc/<PID>/statm + +* share +> shared pages + +* data +> data/stack + +#####Other Per-PID File + +#####* /proc/<PID>/root + +#####Non Per-PID Files + +#####* /proc/stat + +#####* /proc/meminfo + +####I fear information may not be available. + +#####File - /proc/<PID>/stat + +* wchan +> This is the "channel" in which the process is waiting. It is the address of a system call, and +> can be looked up in a namelist if you need a textual name. (If you have an up-to-date +> /etc/psdatabase, + +* processor +> CPU number last executed on. + +* rt_priority +> Real-time scheduling priority + +* delayacct_blkio_ticks +> Aggregated block I/O delays, measured in clock ticks (centiseconds). + + +###Newly added to Roadmap(but these were the original goals of the project) + +#### procps tools need to be ported so that they run on top of the procfs + +> ##### pgrep - Done +> ##### pkill - Done +> ##### killall - Done +> ##### pstree - Done +> ##### top - Mostly Done (except per-PID shared memory field, and non per-PID caches and buffers field) +> ##### free - Mostly Done (Ditto from above) +> ##### htop - Mostly Done (Ditto again) +> ##### watch - Done +> ##### tload - I think it is done. (Need someone to test it) +> ##### libgtop - In progress +> ##### gnome-system-moitor - In progress + + + +------ + + Code Updates +---- + +1. May, 14, 2008 +2. May, 18, 2008 +3. May, 28, 2008 +4. June, 1, 2008 +5. June, 2, 2008 +6. June, 4, 2008 +7. June, 5, 2008 (3 commits, 00:30 HRS, 02:30 HRS, 11:15HRS, all in IST) +8. June, 9, 2008 +9. June, 19, 2008 (Targets 1 and 2 successfully accomplished. Duration between the commits became inevitably longer because of the large amount of time spent on debugging the code.) + +------ + + Contact Details +---- + +Name : Madhusudan.C.S + +Email : [madhusudancs@gmail.com](mailto:madhusudancs@gmail.com) + +Blog : [http://www.madhusudancs.info](http://www.madhusudancs.info/) + +Detailed proposal: [http://www.madhusudancs.info/gnu-hurd-procfs-proposal](http://www.madhusudancs.info/gnu-hurd-procfs-proposal) + +Google Summer of Code Site Link: [Abstract](http://code.google.com/soc/2008/hurd/appinfo.html?csaid=D2E9266819D2EEF9) + + diff --git a/user/michaelbanck.mdwn b/user/michaelbanck.mdwn deleted file mode 100644 index 76e09c28..00000000 --- a/user/michaelbanck.mdwn +++ /dev/null @@ -1,3 +0,0 @@ -* Name: Michael Banck -* Email: <mbanck@gmxNOSPAM.net> -* Country: Germany diff --git a/user/pietroferrari.mdwn b/user/pietroferrari.mdwn deleted file mode 100644 index 0bf63419..00000000 --- a/user/pietroferrari.mdwn +++ /dev/null @@ -1,3 +0,0 @@ -* Name: Pietro Ferrari -* Email: <pietro@bastardiNOSPAM.net> -* Country: Brazil diff --git a/user/pochu.mdwn b/user/pochu.mdwn new file mode 100644 index 00000000..18e90de3 --- /dev/null +++ b/user/pochu.mdwn @@ -0,0 +1,136 @@ +[[!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]]."]]"""]] + +# Emilio Pozuelo Monfort + +Email: pochu27@gmail.com + +--- + +# GSoC 2010: Hurd: Fix Compatibility Problems Exposed by Testsuites + +Mentor: Carl Fredrik Hammar + +## Abstract + +This project will consist of identifiying some projects' test suite +failures when executed on GNU/Hurd, debugging them, and if they are +truly GNU/Hurd issues (and not problems in the projects themselves), +fixing them. + +## Timeline +* July 18th: GLib finished. +* July 22nd: coreutils finished. +* July 25th: All Perl failures investigated. +* August 5th: Perl finished. +* August 8th: All Python failures investigated. +* August 16th: Python finished. +* August 16th: Firm 'pencils down' date + +## TODO +* Investigate why coreutils' nice test fails. +* Analyze Perl's testsuite failures. + +## Documentation +* [Towards a New Strategy of OS Design, an architectural overview by Thomas Bushnell, BSG](http://www.gnu.org/software/hurd/hurd-paper.html) +* [The Hurd, a presentation by Marcus Brinkmann](http://www.gnu.org/software/hurd/hurd-talk.html) +* [The Hurd Hacking Guide](http://www.gnu.org/software/hurd/hacking-guide/hhg.html) +* [MIG - The MACH Interface Generator](http://www.cs.cmu.edu/afs/cs/project/mach/public/doc/unpublished/mig.ps) + +## Log + +### July 26th - August 1st +* Tested /dev/fd/N patches and sent them for review. +* Finished SCM_RIGHTS patch. Created a minimal testcase without using + glibc to demonstrate the socket_send/recv failure with non-socket + fds. Sent the testcase and the patch for review. +* Investigated cp issues with O_NOFOLLOW & O_NOTRANS. Sent a mail to + bug-hurd explaining both issues and possible solutions. + +### July 19th - July 25th +* Initial SCM_RIGHTS implementation. Seems to work when sending pipes, but + fails miserably when sending fds from an open syscall. No idea why yet. +* Fixed memleaks in sendmsg() while implementing SCM_RIGHTS. Patch accepted + upstream. +* Had to build glibc thrice because the system crashed and the fs was totally + corrupted. I'll build stuff in a separate partition as suggested from now on. + Doesn't help. It turns out the issue seems to be with kvm, or at least it's + only reproducible for me there. I've switched to VirtualBox and there are no + filesystem issues there. +* Addressed comments in the /dev/fd/N patches. Need to test them (when I can + build glibc and Hurd without the system crashing). + +### July 14th - July 18th +* Catched up with email. +* Prepared a patch to implement getsockopt(fd, SOL_SOCKET, SO_TYPE, ...). + Patch committed to Hurd. +* Addressed comments in the /dev/fd/N patches and resent them. +* Investigated another glib's unix-fd failure: passing fds over a socket using + sendmsg() doesn't dup them. Created a minimal testcase. Prepared a preliminary + patch, needs testing and fixing. + +### May 26 - July 13th +* Copyright assignment on file. +* Studied a lot to finish my BSc. +* Got the linkat patch (Savannah #29655) committed upstream. + +### May 19 - May 26 +* Read [MIG - The MACH Interface Generator](http://www.cs.cmu.edu/afs/cs/project/mach/public/doc/unpublished/mig.ps) +* Worked on bug 28934. Send [patches](http://lists.gnu.org/archive/html/bug-hurd/2010-05/msg00108.html) for review. +* Requested GNU libc copyright papers to the FSF again since they didn't arrive the first time. + +### May 12 - May 19 +* Read http://www.gnu.org/software/hurd/hurd-talk.html +* Half read http://www.gnu.org/software/hurd/hacking-guide/hhg.html +* Read many Hurd interfaces (fs.defs, auth.defs, fsys.defs, io.defs, + password.defs). + +### May 5 - May 12 +* Read http://www.gnu.org/software/hurd/hurd-paper.html +* Improved the linkat() patch +* Fixed the issues mentioned in bug 28934, but after doing so I realized + that wouldn't work well. The only good solution is to pass file_name + from execve() to the exec server, so we need new RPCs. + +### April 28 - May 5 +* Submitted a talk proposal on Hurd with Michael Banck for DebConf +* Sent request to assign copyright to the FSF for Hurd/Mach/libc + +### Before April 28 +* Investigated the glib's gtester problem and tracked it down: + [bug 28934](https://savannah.gnu.org/bugs/?28934). Prepared a patch + but it's not good. +* [glib's garray test timeouts on Hurd](https://bugzilla.gnome.org/show_bug.cgi?id=568760). + The tests passes if the timeout is increased. The current upstream timeout + (10s) is quite small (it fails on many Debian builds for some Linux arches). + However on Hurd it needs a very big time it seems (like more than 100s). + Maybe do an allocation benchmarch? +* Investigated glib's unix-fd test failure: getsockopt() isn't implemented + on Hurd. Need to implement it in hurd/pflocal/socket.c. +* Investigated coreutils' ln EIEIO, with Samuel's help. linkat() is buggy. + Reported as [bug 29655](https://savannah.gnu.org/bugs/?29655). Prepared a + patch for it. +* Investigated coreutils' cp EACCES. Test case: 'mkfifo a && cp -R --copy-contents a b'. + Problem is that O_NOFOLLOW adds O_NOTRANS. + +## Midterm Evaluation +### Accomplished +* Assigned copyright to the FSF. +* Read many documentation and source code. +* /dev/fd/N bug fixed +* Prepared a patch for getsockopt() +* Fixed linkat() problems. +* Investigated bug with O_NOFOLLOW & O_NOTRANS (needs more work). +* Investigated a glib test failure (garray). Not a Hurd issue. +### Downtime +* Studied a lot to finish my BSc. Didn't work on Hurd for a month because of + that, so that's why I couldn't make a lot of progress (this was known in + advance, although in the end the downtime was a bit larger than expected). +* There's no expected downtime from now on. diff --git a/user/scolobb.mdwn b/user/scolobb.mdwn new file mode 100644 index 00000000..017936e5 --- /dev/null +++ b/user/scolobb.mdwn @@ -0,0 +1,364 @@ +[[!meta copyright="Copyright © 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]]."]]"""]] + + +Sergiu Ivanov + +Mail: <mailto:unlimitedscolobb@gmail.com> + +# Current Activity + +I am currently busy finishing the university semester, this is why I +am rather passive. + +## Roadmap + +* **Build `nsmux` under the Hurd tree** -- **antrik** has been urging + me to do this for a long time, so I definitely have to give it a + try. + +* **Try Thomas's `nsmux-notify` branch** -- To support his stance + against including `nsmux` in the Hurd source tree, Thomas added to + `nsmux` the ability to listen to port notification (as I understand + it). I have to try that, too. + +* **Make proxy nodes go away when the proxied translator goes away** + -- This should be done by listening to notifications on the ports to + the proxied translators. A similar functionality is already + implemented in `unionmount`, but it was decided that `nsmux` should + use standard notification interfaces, as opposed to the custom + demuxer and handler implemented in `unionmount`. + +* **Don't attach anonymous translators** -- There is no special point + in attaching anonymous (formerly known as dynamic) translators to + specific nodes. Keeping them orphan should simplify the design of + `nsmux` by eliminating the need for shadow nodes, whose main purpose + was to serve as virtual locations to attach translators to. + +* **Setup a list of nodes proxying static translators** -- This list + is needed when for the filter, which should also be able to go down + the static translator stack, not only the stack of anonymous + translators. + +* **Cleanup `nsmux`** -- When I was writing `nsmux` my acquaintance + with good coding and code formatting practices was very basic, which + resulted in messy and sometimes ugly code. + +* **Implement recursive propagation of translators down directories** + -- This task was planned long ago and is fascinating, but I won't be + working on it in the near future. + +--- + +# Google Summer of Code: 2009 Project + +**Unionmount**: The goal of this project is to make it possible to set +translators in unionmount mode, which means that the filesystem +published by the mounted translator will get merged with the directory +tree of the node the translator is mounted onto. + +For documentation, see [[hurd/translator/unionmount]]. + +At the Final Evaluation, this project was given a passing evaluation +by **antrik**. This means that the union-mount functionality is +working and has been tested normally to collaborate with +`eth-multiplexer`. + +--- + +## Roadmap + +### DONE + +(Dates in brackets show the completion date) + +* **Make `unionfs` build.** *(24 May)* For reasons unknown to me, + `unionfs` Makefile was configured to search for include files from + under `$(prefix)/include`, while `$(prefix)` was never + defined. Setting `$(prefix)` to `/usr` solved the problem. + +* **Change the command line parsing in `unionfs` to comply with the + requirements of `unionmount`.** *(25 May)* Although the core + functionality of `unionmount` heavily relies on `unionfs`, the + command line interface of these two programs is completely + different: `unionfs` operates on directories, the list of which is + explicitly specified, while `unionmount` *always* merges the + underlying filesystem and the filesystem published by the + mountee. Therefore, options like `--add`, `--remove`, `--underlying` + (specific to `unionfs`) make little sense in `unionmount` + context. These options have been removed. Also, `unionmount` must be + able to pass some switches to the mountee, which means that it + should stop parsing the command line arguments immediately after + having encountered the path to the mountee (very similar to how + `settrans` works). This functionality has also been implemented. + +* **Make `unionmount` capable of starting the mountee.** *(28 May)* + The idea behind implementation of this goal is that `unionmount` + should provide a proxy node on which to set the mountee. The main + issue about this goal was the fact that the mountee *cannot* be + started during the initialization of `unionmount`, because in this + phase `unionmount` is not capable of responding to RPCs, while many + translators try to `io_stat` their underlying node or do other + interesting things on startup. The solution to this problem is, + obviously, *lazy* startup, i.e. the mountee is started at the first + attempt to access (via `dir_lookup` or `dir_readdir`) the merged + filesystem published by `unionmount`. + +* **Include the filesystem published by the mountee in the list of + merged filesystems.** *(1 Jun)* `unionfs` operates on a list of + ports to the underlying filesystems, therefore, to finish the + unionmount functionality, I had to include the port to the mountee + in this list. + +* **Learn Texinfo.** *(Jun 4)* In order to produce canonical + documentation I had to learn the Texinfo documentation format. + +* **Write documentation for `unionmount`.** *(Jun 5)* The basic + unionmount functionality being finished, it has to be documented + properly, lest it should lag behind and remain unfinished + eventually. + +* **Write documentation for `unionfs`.** *(Jun 5)* `unionfs` is not + exactly well-documented at the moment, the only help being provided + by the comments in the sources. The goal is to write a more coherent + documentation. + +* **Start with a clean unionfs and implement the `--mount` argument** + *(11 Jun)* It was suggested to implement the union mount + functionality first, instead of doing some partial adaptation of + `unionfs` to `unionmount` and leaving the complete adaptation for + the future. + +* **Compile GNU/Hurd from source to be able to study + eth-multiplexer.** *(16 Jun)* On my way to getting a working + instance of eth-multiplexer I learnt how I could compile GNU/Hurd in + a Debian GNU/Hurd system. + +* **Setup the `devnode`--`eth-multiplexer`--`pfinet chain`.** *(30 + Jun)* Due to the fact that I was trying to build everything using + `gcc-4.3`, I got strange behaviour of pfinet and spend a week trying + to figure out the reason. + +* **Try to start the mountee during initialization of `unionfs`** *(4 + Jul)* Initially the mountee was started at the first lookup. Now it + is started immediately after initialization of `unionmount`. + +* **Fix the patches in `--mount` option series** *(5 Jul)* The patches + have been reviewed by **antrik**. I corrected them and posted them + to the ML for final reviews. + +* **Orphan the mountee after starting it** *(7 Jul)* Orphaning the + mountee after starting it up seems to be a nice work-around for the + necessity of keeping a proxy node in unionmount in simple + use-cases. It is possible that this functionality will provided as a + separate patch (without inclusion in master) should it turn out that + orphaning the mountee is a bad idea. + +* **Decide which RPCs should be forwarded to the mountee and how this + should happen** *(10 Jul)* This is the primary requirement in being + able to proxy the control port of `unionmount`. + +* **Fix the patches the have already been commented on** *(14 Jul)* + The new patches I have submitted have been reviewed; also, the older + patches have been reviewed again, which required correcting them. + +* **Add the `--no-mount` option** *(14 Jul)* Using the `--no-mount` + and `--mount` options, the user can decide whether unionmount should + be completely transparent (i.e. most control-port RPCs forwarded to + the mountee) or not. + +* **Make `unionmount` go away when the mountee goes away** *(14 Jul)* + `unionmount` makes sense only while the mountee is running, so it + has to go away as soon as the mountee has been shut down for some + reason. + +* **Proxy the control port of `unionmount`** *(14 Jul)* For + `unionmount` to become transparent, most of the RPCs invoked on the + its control port should be forwarded to the mountee. + +* **Fix adding filesystems to `unionmount`** *(16 Jul)* `settrans -a + foo unionfs -a <dir> -u -t <translator>` worked, but `settrans -a + foo unionfs -u -t <translator> -a <dir>` didn't. The problem was + that in a series of rebase operations I accidentally left the + "Orphan the mountee" commit out and the problem appeared when the + `start_mountee` function tried to attach the mountee. Of course, + this is not the definite solution, since I don't know why should the + attempt to attach the mountee work in the former case and fail in + the latter, but I will leave the investigation for some future time. + +* **Create the patch for supplying the mountee with a port to the + underlying node of unionfs** *(17 Jul)* Such functionality makes + `unionmount` even more transparent. + +* **Try to make `eth-multiplexer` work with static instances of + `devnode`** *(3 Aug)* A static `devnode` translator is a `devnode` + translator which is told to use the eth-multiplexer's pseudo master + device port via the "-M" option. Technically it looks like + `settrans -a <node> devnode -M <dir> <device-name>`, where `<dir>` + is the node on which eth-multiplexer is running. + + The problem was in the fact that the root node of `eth-multiplexer` + was not treated completely similarly as other nodes; specifically no + device port was created for it. Minor modifications to some + conditions solved the problem. + +* **Add the `MASTER` node to `eth-multiplexer`** *(5 Aug)* The + `MASTER` node, published by eth-multiplexer, allows creating any + number of virtual devices. This node is mainly accessed by static + instances of `devnode` to setup their corresponding virtual devices. + +* **Add support for priorities** *(6 Aug)* Now the mountee's + filesystem can be configured to "lie" beneath other filesystems. + +* **Use `unionmount` to merge the virtual filesystem of + `eth-multiplexer` with its underlying filesystem** *(7 Aug)* + `eth-multiplexer` can is unionmounted to "lie beneath" it's + underlying filesystem. If, for example, the multiplexer is + unionmounted on `veth/`, the user can both set (static) `devnode` + translator on the nodes shown in `veth/` and belonging to the + underlying filesystem and create normal virtual multiplexer devices + by accessing any node (not present in the underlying filesystem) and + opening a device using the port to the node as a pseudo device port. + +* **Rename the `MASTER` node into `.MASTER`** (7 Aug) This name seems + more natural for a special-purpose node. + +* **Set the stat information for `eth-multiplexer` nodes in + `netfs_validate_stat`** (9 Aug) In the initial version the stat + information was set up properly only at device creation. Before + that the stat information was copied from the underlying node, which + baffled `unionmount`. Now the stat information is setup in + `netfs_validate_stat`. + +* **Supply the mountee with the real root.** *(14 Aug)* Since the + mountee is *not attached* to its underlying node, it is okay to + supply it with the real root node of `unionfs`. The mountee's + filesystem will not obscure the `unionfs`'s one because the mountee + is *not attached* to the root node. + +--- + +# Google Summer of Code: 2008 Project: Namespace-based translator selection + +--- + +## Current Task + +Write the filesystem proxy for namespace-based translator selection (*nsmux*). + +The code is at <http://github.com/scolobb/nsmux/tree/master>. + +--- + +###Did this week + +* Modified the node cache so that it maintains shadow nodes alive. + +###Plans for the next week + +* Implement the shutting down of translator stacks when *nsmux* is asked to go away (in case **antrik** considers that necessary). + +* Make *nsmux* provide the access to the translator stack of the real node, in case a translator (mainly, a filter) should ask for its underlying node to be opened in O_NOTRANS mode. + +--- + +###Current Status + +####DONE: + +* The skeleton which mirrors the filesystem. + +* Provide proxy nodes (modify the standard version of netfs_S_dir_lookup). + +####TODO: + +* Create the generic filtering translator. + +* Create the translator '0' (providing the untranslated version of the + node). + +* Create the "recursive wrappers" for one-node translators. + +* Create special translators for the main proxy so that its functionality + should be complete. + +* Implement sharing of dynamic translator stacks where possible. + +* Make dynamic translators go away as soon as they are not required. + +* Refine the skeleton in several places so that it should become faster + and more reliable. + +* Kill bugs. + +* Integrate nsmux upstream. + +* Solve the libtrivfs stacking issue. + +* Patch libnetfs (it does not support file_get_translator_cntl, for + instance). + +--- + +###Progress + +####8: Fri Sep 19: + +> Modified the ncache so that it now maintains shadow nodes (and directory nodes too, it is a side effect at the moment) alive. + +####7: Sat Aug 30 - Fri Sep 5: + +> Added the code for shutting down dynamic translator stacks. + +####6: Mon Aug 4 - Fri Aug 29: + +> Implemented the proxy nodes. + +####5: Thu Jul 24 - Thu Jul 24: + +> Created a *libnetfs*-based one-node translator, working exactly like the *libtrivfs*-based translator I had written before; the former, however, can be included in a translator stack. + +####4: Tue Jul 22 - Thu Jul 24: + +> Attempted to make a *libtrivfs*-based translator to be able to be stacked upon itself (to be able to receive a translator on top of itself, more exactly); attempted to borrow some code from *libnetfs* but this didn't bring any results. + +####3: Sun Jul 20 - Tue Jul 22: + +> Implemented the possibility to propagate a translator on all files belonging to a directory 'dir' in the request of the type 'dir,,x/'. + +####2: Thu Jul 17 - Fri Jul 18: + +> Extended the lookup code in *nsmux* to allow for looking up nodes like 'file,,x' and added the possibility to escape the double-comma in the following way: ',,,'. + +####1: Mon Jul 12 - Tue Jul 13: + +> Implemented a simple *libtrivfs*-based translator to test the lookup code for *nsmux*. + +####0: Sat Jul 12 - Sat Jul 12: + +> Made small changes to the code of *filterfs* to fit the needs of *nsmux*. + +--- + +## Completed Tasks + +####2: Sat May 3 - Fri Jul 17: + +> Write a translator that should filter the contents of the directory it is set on according to some property. The property can be an arbitrary command. + +> The code is at <http://github.com/scolobb/filterfs/tree/master>. + +####1: Mon Apr 28 - Wed Apr 30: + +> Wrote a Python extension module in C for retreiving the uptime. The module is based on the code of *w*. + +####0: Sun Apr 27: + +> Followed the code of *dmesgd* (<http://www.bddebian.com/junk/dmesgd/>) kindly offered by **bddebian** and rewrote it from scratch as a tutorial. diff --git a/user/stesie.mdwn b/user/stesie.mdwn new file mode 100644 index 00000000..7bed0ed5 --- /dev/null +++ b/user/stesie.mdwn @@ -0,0 +1,4 @@ +* Name: Stefan Siegl +* Email: <stesie@brokenpipe.de> +* Country: Germany +* Homepage: <http://www.brokenpipe.de/>
\ No newline at end of file diff --git a/user/tschwinge.mdwn b/user/tschwinge.mdwn index e487e2ee..eea5480c 100644 --- a/user/tschwinge.mdwn +++ b/user/tschwinge.mdwn @@ -1,4 +1,17 @@ -* Name: Thomas Schwinge -* Email: <tschwinge@gnu.org> -* Country: Germany -* Homepage: <http://nic-nac-project.de/~schwinge/> +[[!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="Thomas Schwinge"]] + +<thomas@schwinge.name> + +Germany + +<http://schwinge.homeip.net/~thomas/> diff --git a/user/vincentvikram.mdwn b/user/vincentvikram.mdwn new file mode 100644 index 00000000..875b6311 --- /dev/null +++ b/user/vincentvikram.mdwn @@ -0,0 +1,14 @@ +[[!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]]."]]"""]] + +* Name: Vikram Vincent +* Email: vincentvikram@swatantra.org OR vincentvikram@gmail.com +* Country: India +* Web resource: <http://www.swatantra.org> diff --git a/user/zhengda.mdwn b/user/zhengda.mdwn new file mode 100644 index 00000000..a7f57f35 --- /dev/null +++ b/user/zhengda.mdwn @@ -0,0 +1,132 @@ +# Zheng Da + +Email: zhengda1936 at gmail dot com + +--- + +#Project: Porting DDE to Hurd. + +##The goal: +porting DDE developed by DROPS to the Hurd, and it will still run in the user space. + +##Introduction +The introduction of DDE/DDEKit can be found in [here](http://wiki.tudos.org/DDE/DDEKit) and more information can be found [here](http://os.inf.tu-dresden.de/pipermail/l4-hackers/2009/004291.html). DDE/DDEKit is a library, and it should be compiled with the code of Linux or FreeBSD drivers. DDE Linux26 is still under development and it can now support network and block devices (but doesn't support SCSI). + +##The current status +Currently a few NIC cards work now. I tested pcnet32, e100, e1000, ne2k-pci and rtl8139 in VMWare and Qemu. But the DDE e100 driver cannot work for some e100 cards as currently DDE doesn't support firmware. Someone also reported sis900 cannot work, unfortunately, I cannot test it myself. I appreciate if someone can try some other NIC drivers and give me some feedbback. Please run DDE with GNUMach in the [master-user_level_drivers](http://git.savannah.gnu.org/cgit/hurd/gnumach.git/) branch. + +## My work +I separate DDE Linux26 to 2 parts: libddekit and libdde_linux26. I also provide a library called libmachdev on the top of the Linux code to provide the Mach device interface, so it is easy for the user to compile a Linux driver and run it in the Hurd. The latest code can be found in the dde branch of the incubator repository. + +There is a minor problem when we compile a Linux driver. Linux drivers use jiffies to measure time. Unfortunately, Mach doesn't provide it, so whenever we need it, we need to calculate it by ourselves. I decide to provide a macro to calculate it for the sake of performance and the cost is that the source code of Linux drivers has to include ddekit/timer.h. + +## Build and run DDE drivers + +To build a Linux driver with DDE Linux, we need libddekit, libdde_linux26, libmachdev and libhurd-slab. libddekit and libmachdev use the same Makefile system as other Hurd components but libdde_linux26 does not, so we have to build libdde_linux26 in its source file directory. DDE drivers use the same makefile system as libdde_linux26 and thus we need to build them in their source file directories as well. + +The repository has all DDE drivers I have tested, but in case you want to try other drivers, the easiest way is to use dde_pcnet32 as a template. The directory of dde_pcnet32 has Makefile, Makeconf.local, default.ld, pcnet32.c and main.c. If we need to build a new driver file, we only need to replace pcnet32.c with the new file and change Makefile accordingly. You also need to change DDEKITLIBDIR, DDEKITINCDIR, DDE26LIBDIR and OBJ_BASE in Makeconf.local to indicate the path to ddekit and dde_linux26. + +When all parts are ready, we can start to build DDE drivers now. In case someone hasn't installed libpciaccess, please install it first. We first build libddekit, libdde-slab, then libdde_linux26, then libmachdev and at last the DDE driver. It's better to install libddekit, libdde-slab and libmachdev to the system, so libdde_linux26 and the DDE driver find the library files and header files. + +To run a DDE NIC driver: It is better to disable the corresponding kernel drivers in GNU Mach. For example, if we use the pcnet card, we'd better disable lance and pcnet32 drivers in gnumach. DDE requires the pfinet with modification during my GSoC project in 2008 and that pfinet requires libpcap-dev (this pfinet is also in the dde branch). + +settrans -acfg pcnet32 hurd/dde_pcnet32/dde_pcnet32 + +settrans -acfg /dev/eth0 hurd/devnode/devnode eth0 -M pcnet32 + +settrans -acfg /servers/socket/2 hurd/pfinet/pfinet -i /dev/eth0 -a 172.16.172.10 -g 172.16.172.2 -m 255.255.255.0 + +--- + +#Project: Network virtualization for subhurds etc. + +The [code](http://www.assembla.com/spaces/VNetHurd/trac_subversion_tool). The [[howto]] shows the instructions of setting up the virtual network in hurd and subhurd. + + +## The design and the implementation + +### The requirements: +* to implement a mechanism which help pfinet servers communicate with each other. For example, if pfinet 1 has IP A and pfinet 2 has IP B, the packet sent by pfinet 1 with destination address IP B should be received by pfinet 2. +* Sub-hurd should be able to use this mechanism to communicate with each other. +* Meanwhile this mechanism should allow non-privileged the user to start his own pfinet. + + +### The possible approach is to use the multiplexer and the filter. +The multiplexer's roles are: + +1. to create some virtual network interface, so pfinet can send packets to it. +2. to receive the packet from pfinet, and forward the packet to other pfinets in hurd +3. or forward the packet to the real network device in the kernel and send it to the network. + +A filter translator is needed to enforce the policies between the interface and the pfinet server. For example, the filter can control which packets can be delivered to the pfinet server, and which packets can be sent to the network interface. The filter can also guard the network traffic and drop illegal packets (forged by some malicious users) from pfinet or some other programs. + + +### To create a virtual network interface: +* Implement the RPC interface defined in device.defs. +* The multiplexer works as a translator and other programs can get the port to it by calling file_name_port(). +* Other programs can use this port as a master device port to open the virtual interface. + + +### The routing inside the multiplexer: +* when the multiplexer gets a packet, it forwards it to every interface. +* BPF is ported to the multiplexer. BPF delivers the packet to the right pfinet (according to the filter set by the pfinet) just as the BPF in Mach does. +* All packets are forwarded to the interface which the multiplexer sits on. + + +### The implementation of the filter translator: +* The filter works as a proxy, forwarding the packet between the interface and the pfinet server. +* BPF is also ported to the filter translator. There are two filers in the translator, one for outgoing packets, the other for incoming packets. +* Only one pfinet can connect to the translator at a time. + +## TODO +### Coding + + - merge BPF rules from the filter translator and the multiplexer + +## Completed tasks + +### Coding + +The patch of glibc (pfinet server overriding) is [here](http://www.assembla.com/spaces/VNetHurd/documents/aJidqKp6ur3z-Nab7jnrAJ/download/A%20patch%20of%20glibc), commited to debian for 2.11.2-7 and later. + +The patch of pfinet (open the virtual network interface) is [here](http://www.assembla.com/spaces/VNetHurd/documents/aWqYwYATKr3BBOab7jnrAJ/download/patch%20of%20pfinet%201%20(to%20use%20the%20virtual%20interface)). + +The patch of pfinet (fix pfinet to use the proper filter rule) is [here](http://www.assembla.com/spaces/VNetHurd/documents/besb-qATKr3AIxab7jnrAJ/download/patch%20of%20pfinet%202%20(to%20add%20an%20IP%20filter)). + +The patch of pfinet (set the mach device in the promiscuous mode) is [here](http://www.assembla.com/spaces/VNetHurd/documents/bEovN6ATKr3B8uab7jnrAJ/download/patch%20of%20pfinet%203%20(to%20set%20the%20mach%20device%20into%20the%20promiscuous%20mode)), commited on 20100920. + +The patch of boot (open the virtual network interface) is [here](http://www.assembla.com/spaces/VNetHurd/documents/cWkeEixHar3AdKab7jnrAJ/download/A%20patch%20of%20boot), commited on 20100920. + +The patch of gnumach (set the network device into the promiscuous mode) is [here](http://www.assembla.com/spaces/VNetHurd/documents/b0eLzUxHmr3ymXab7jnrAJ/download/A%20patch%20of%20gnumach), commited on 20100920. + +the multiplexer: + +- Create multiple virtual network interfaces. +- Port BPF to the multiplexer. +- Finish the routing among the pfinet servers. + +the filter translator: + +- Forward the packet between the interface and the pfinet server. +- Filter the packet. + +the proxy of the proc server: + +- Forward all requests from the process to its proc server. +- The proxy doesn't do any real work except returning the host private port and the master device port of the proxy (shown as an example). + +the devnode translator: + +- Create a device file to help open the network device. + +### Documentation Read + + +- [A Programmer's Guide to the Mach System Calls](ftp://ftp.cs.cmu.edu/afs/cs/project/mach/public/doc/unpublished/machsys.doc) +- [Meet Mach](http://www.stepwise.com/Articles/Technical/MeetMach.html) by James Scott +- [A Programmer's Guide to the Mach User Environment](ftp://ftp.cs.cmu.edu/afs/cs/project/mach/public/doc/unpublished/machuse.doc), the MIG part +- Part of The GNU Mach Reference Manual and The GNU Hurd Reference Manual +- The Hurd, a presentation by Marcus Brinkmann +- Towards a New Strategy of OS Design, an architectural overview by Thomas Bushnell, BSG. +- GNU/Hurd User's Guide +- The Hurd Hacking Guide diff --git a/user/zhengda/howto.mdwn b/user/zhengda/howto.mdwn new file mode 100644 index 00000000..1258ffed --- /dev/null +++ b/user/zhengda/howto.mdwn @@ -0,0 +1,90 @@ +[[!meta copyright="Copyright © 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]]."]]"""]] + + +This document briefly introduces how to set up the virtual network and connect the subhurd with the main hurd. + + +### 1. Set up the virtual network. + +####1.1 Patch and install GNU Hurd, GNU Mach and the GNU C library. + +Step 1: Get the Hurd and compile it. + + cvs -z3 -d:pserver:anonymous@cvs.savannah.gnu.org:/sources/hurd co -r zhengda-soc2008-virt-branch hurd + + +Step 2: apply the [patch](http://www.assembla.com/spaces/VNetHurd/documents/b0eLzUxHmr3ymXab7jnrAJ/download/A%20patch%20of%20gnumach) on the GNU Mach. + +In order to connect the virtual network created in hurd with the external network, we need this patch. It enables the Hurd to set the Mach device into the promiscuous mode, so the real device can accept the packet that goes to the virtual device in hurd. +(This step is optional if we are only interested in creating a internal virtual network.) + +Step 3: apply the [patch](http://www.assembla.com/spaces/VNetHurd/documents/aJidqKp6ur3z-Nab7jnrAJ/download/A%20patch%20of%20glibc) on glibc. + +This patch enables the user to override the default socket server by using the environment variables SOCK_SERV_DIR or SOCK_SERV_%d (%d is the domain of the socket server). + + +#### 1.2 Set up the Hurd components to build the virtual network. + +In this section, I show how to create two virtual interfaces and run three pfinet servers. I assume that the source code of Hurd is in /root/hurd. + +Step 4: create the network device file in /dev with devnode. +The network device file is used to help other translators open the device. + + # settrans -acfg /dev/eth0 /root/hurd/devnode/devnode eth0 + +Step 5: create the virtual network device with eth-multiplexer. + +eth-multiplexer is responsible to create the virtual network device and dispatch the packet to the right clients that connect to the virtual device. It also connects the virtual network and the external network. Eth-multiplexer of the current version is a netfs translator and can create virtual devices and the device files dynamically, according to the request from the client. + + # settrans -acfg /root/multiplexer /root/hurd/eth-multiplexer/eth-multiplexer -i /dev/eth0 + +Step 6: setup the filter translator eth-filter on the network device. This step is optional. + +eth-filter is used by the user to force the traffic policy on the network device. + + # settrans -acfg /dev/fveth0 /root/hurd/eth-filter/eth-filter -i /root/multiplexer/veth0 -S 192.168.8.0/24 -R 192.168.8.0/24 + # settrans -acfg /dev/fveth1 /root/hurd/eth-filter/eth-filter -i /root/multiplexer/veth1 -S 192.168.8.0/24 -R 192.168.8.0/24 + +Step 7: setup the pfinet server on the virtual network device. + + # settrans -afgc /root/socket0/2 /root/hurd/pfinet/pfinet -i /dev/fveth0 -a 192.168.8.10 -g 192.168.8.1 -m 255.255.255.0 + # settrans -afgc /root/socket1/2 /root/hurd/pfinet/pfinet -i /dev/fveth1 -a 192.168.8.11 -g 192.168.8.1 -m 255.255.255.0 + + +#### 1.3 Run the command with the customized pfinet server. + +Step 8: Set environment variables to use the customized pfinet server. + +The environment variable of SOCK_SERV_DIR is used to override all socket servers and SOCK_SERV_%d to override a specific socket server. %d after SOCK_SERV_ is the domain of the protocol that the socket server supports. The environment variable SOCK_SERV_%d has the higher priority than SOCK_SERV_DIR. + + # export SOCK_SERV_2=/root/socket1/2 + +If the modified glibc isn't installed as the system default C library, set LD_LIBRARY_PATH environment. + + # export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/the/path/of/glibc + +We can run any command now, for example, ping. + +A SHELL script is provided to run all translators I mentioned automatically: http://www.assembla.com/spaces/VNetHurd/documents/c2W71ABser3AIxab7jnrAJ/download/runmultiplexer. To use this script, the user must specify the source of the hurd tree (the default value is /root/hurd) and the path of the servers (the default value is /root) where they should be created. This script is only used to test all translators I mentioned above and shows all steps to set up the virtual network. + + +### 2. Connect the subhurd with the main hurd. + +In the main hurd, we still need to do Step 1-8. +We run subhurd, + + # /root/hurd/boot/boot -m eth0=/dev/fveth0 -m eth1=/dev/fveth1 servers.boot /dev/hd1s1 + +In the subhurd, we do Step 1, 4, 8. +Step 4: # settrans -acfg /dev/veth0 /root/hurd/devnode/devnode -d veth0 +Step 7: # settrans -afgc /servers/socket/2 /root/hurd/pfinet/pfinet -i /dev/veth0 -a 192.168.8.20 -g 192.168.8.1 -m 255.255.255.0 + +Now we can communicate from the subhurd with any pfinet server of the main Hurd that runs in the virtual network. |