diff options
Diffstat (limited to 'hurd')
-rw-r--r-- | hurd/ada4hurd.mdwn | 68 | ||||
-rw-r--r-- | hurd/documentation.mdwn | 23 | ||||
-rw-r--r-- | hurd/documentation/netfs_ada_results.mdwn | 295 | ||||
-rw-r--r-- | hurd/libfuse.mdwn | 2 | ||||
-rw-r--r-- | hurd/libstore/examples/ramdisk.mdwn | 7 | ||||
-rw-r--r-- | hurd/libstore/nbd_store.mdwn | 15 | ||||
-rw-r--r-- | hurd/networking.mdwn | 17 | ||||
-rw-r--r-- | hurd/porting/guidelines.mdwn | 8 | ||||
-rw-r--r-- | hurd/running.mdwn | 1 | ||||
-rw-r--r-- | hurd/running/chroot.mdwn | 4 | ||||
-rw-r--r-- | hurd/running/debian/CrossInstall.mdwn | 6 | ||||
-rw-r--r-- | hurd/running/debian/dhcp.mdwn | 18 | ||||
-rw-r--r-- | hurd/running/debian/qemu_image.mdwn | 2 | ||||
-rw-r--r-- | hurd/running/distrib.mdwn | 11 | ||||
-rw-r--r-- | hurd/running/nix.mdwn | 2 | ||||
-rw-r--r-- | hurd/running/qemu.mdwn | 29 | ||||
-rw-r--r-- | hurd/running/qemu/babhurd_image.mdwn | 3 | ||||
-rw-r--r-- | hurd/running/qemu/microsoft_windows.mdwn | 2 | ||||
-rw-r--r-- | hurd/running/qemu/networking.mdwn | 2 | ||||
-rw-r--r-- | hurd/running/virtualbox.mdwn | 4 | ||||
-rw-r--r-- | hurd/status.mdwn | 9 | ||||
-rw-r--r-- | hurd/translator/pfinet/ipv6.mdwn | 8 |
22 files changed, 467 insertions, 69 deletions
diff --git a/hurd/ada4hurd.mdwn b/hurd/ada4hurd.mdwn new file mode 100644 index 00000000..c783e53b --- /dev/null +++ b/hurd/ada4hurd.mdwn @@ -0,0 +1,68 @@ +[[!meta copyright="Copyright © 2015 Free Software Foundation, Inc."]] + +[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable +id="license" text="Permission is granted to copy, distribute and/or modify this +document under the terms of the GNU Free Documentation License, Version 1.2 or +any later version published by the Free Software Foundation; with no Invariant +Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license +is included in the section entitled +[[GNU Free Documentation License|/fdl]]."]]"""]] + +# Ada4Hurd + +## Introduction + +Ada4Hurd provides tools and examples to ease Ada development in Hurd. It is at an early stage. + +### ada2def + + * It is based on the [ASIS](http://libre.adacore.com/tools/gnat-gpl-edition/) standard + * It analyse an Ada specification and generates some .defs file + +### def2ada + + * Using [opentoken](http://stephe-leake.org/ada/opentoken.html) it analyse a .defs file + * it can generate server skeleton + * it can generate a client library for easy connection to the server + +### xmladafs + + * Mainly a translation of xmlfs in Ada + * write capabilities development is undergoing + * use [xmlada](http://libre.adacore.com/tools/xmlada/) + +### hello + + * Hello World example translated in Ada + +### netfs_base + + * Mainly a dummy translator to understand netfs mechanisms + * [[Some results of netfs experimentation|documentation/netfs_ada_results]] + +## Where to find the code + + * Ada4Hurd is a [sourceforge](https://sourceforge.net/projects/ada4hurd/) based project + * Mercurial is used as DVCS + + $ hg clone http://hg.code.sf.net/p/ada4hurd/code ada4hurd-code + +## Build the code + + * Install the build dependencies as root + + $ apt-get install gnat libopentoken4-dev libxmlada5-dev libasis2014-dev + + * Build + + $ cd ada4hurd-code + $ make + + * Play with xmladafs + + $ make trans_on + + * Run netfs tests + * In netfs\_base directory + + $ make trans\_dbg\_on
\ No newline at end of file diff --git a/hurd/documentation.mdwn b/hurd/documentation.mdwn index ec19e90b..a85f4d4f 100644 --- a/hurd/documentation.mdwn +++ b/hurd/documentation.mdwn @@ -1,5 +1,5 @@ [[!meta copyright="Copyright © 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, -2009, 2011, 2012 Free Software Foundation, Inc."]] +2009, 2011, 2012, 2015 Free Software Foundation, Inc."]] [[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable id="license" text="Permission is granted to copy, distribute and/or modify this @@ -20,9 +20,24 @@ is included in the section entitled * [[*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. + overview by Thomas Bushnell, BSG, notably: - * [[*The_Hurd*|/hurd-talk]], a presentation by Marcus Brinkmann. + * [[The design|/hurd-paper#design]] + * [[Translators|/hurd-paper#translator]] + * [[The auth translator|/hurd-paper#auth]] + * [[The proc translator|/hurd-paper#proc]] + * [[The exec translator|/hurd-paper#exec]] + * [[The ftpfs translator|/hurd-paper#ftpfs]] + + * [[*The_Hurd*|/hurd-talk]], a presentation by Marcus Brinkmann, notably: + + * [[How to get a port?|/hurd-talk#how]] + * [[Pathname resolution example|/hurd-talk#pat]] + * [[Mapping the POSIX Interface|/hurd-talk#map]] + * [[Active vs Passive|/hurd-talk#act]] + * [[Authentication|/hurd-talk#aut]] + * [[Password Server|/hurd-talk#pas]] + * [[Process Server|/hurd-talk#pro]] * The *[[translator_primer]]*. @@ -73,3 +88,5 @@ is included in the section entitled 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. + + * [[Ada4Hurd]]: some tools to write translators with Ada
\ No newline at end of file diff --git a/hurd/documentation/netfs_ada_results.mdwn b/hurd/documentation/netfs_ada_results.mdwn new file mode 100644 index 00000000..0365951d --- /dev/null +++ b/hurd/documentation/netfs_ada_results.mdwn @@ -0,0 +1,295 @@ +[[!meta copyright="Copyright © 2015 Free Software Foundation, Inc."]] + +[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable +id="license" text="Permission is granted to copy, distribute and/or modify this +document under the terms of the GNU Free Documentation License, Version 1.2 or +any later version published by the Free Software Foundation; with no Invariant +Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license +is included in the section entitled +[[GNU Free Documentation License|/fdl]]."]]"""]] + +# Netfs Ada experimentations + +## Rev 05c2ac288ad2 + + * Nothing is implemented in the Netfs\_Implementation package + * node is the translator inode in directory . + +### ls -la . + + * Leads to a call of Validate\_Stat : line 115 of Netfs\_Implementation package + * Returns an error : + * bash: cd: node: Not a directory + +### ls -la node + + * Returns an error : + * ls: cannot access node: Not a directory + * Leads also to a call of Validate\_Stat : line 115 of Netfs\_Implementation package + +### cd node + + * Returns an error : + * bash: cd: node: Not a directory + * Validate\_Stat get called three times + +## Rev 6052185bf877 + + * Only a very simple Validate\_State is implemented + +### ls -la . + + * Leads to a call of Validate\_Stat : line 120 of Netfs\_Implementation package then a call to Check\_Open\_Permissions : line 13 + * Returns this error : + * "ls: cannot access node: Not a directory" + +### ls -la node + + * Returns an error : + * ls: cannot access node: Not a directory + * Leads to a call of Validate\_Stat : line 120 of Netfs\_Implementation package then a call to Check\_Open\_Permissions : line 13 + +### cd node + + * Returns an error : + * bash: cd: node: Not a directory + * Validate\_Stat then Check\_Open\_Permissions sequence is called three times + +## Rev dd3e6b7ea5c7 + + * Check\_Open\_Permissions implemented + +### ls -la . + * No more error : node is displayed as a directory + * Sequence call : validate\_state / check\_open\_permissions / validate\_state + +### ls -la node + + * Returns an error : + * ls: reading directory node: Operation not supported + * Call sequence : + * validate\_state + * check\_open\_permissions + * validate\_state + * validate\_state + * check\_open\_permissions + * validate\_state + * get\_dirents line 90 of netfs\_implementation package + +### cd node + + * Hangs + * Call sequence : + * Validate\_Stat + * Check\_Open\_Permissions + * Validate\_Stat + * Validate\_Stat + * Check\_Open\_Permissions + * netfs\_implementation.adb:57 Netfs\_Implementation.Attempt\_Lookup + +## Rev 68f905dc9b7c + + * Attemp\_Lookup implemented + +### ls -la . + * No more error : node is displayed as a directory + * Sequence call : validate\_state / check\_open\_permissions / validate\_state + +### ls -la node + + * Returns an error : + * ls: reading directory node: Operation not supported + * get\_dirents still not implemented + * Call sequence : + * validate\_state + * check\_open\_permissions + * validate\_state + * validate\_state + * check\_open\_permissions + * validate\_state + * get\_dirents line 90 of netfs\_implementation package + +### cd node + + * No more hang + * Call sequence : + * Validate\_Stat + * check\_open\_permissions + * Validate\_Stat + * Validate\_Stat + * check\_open\_permissions + * attemp\_lookup + * Validate\_Stat + * check\_open\_permissions + * attemp\_lookup + * Validate\_Stat + * Validate\_Stat + * check\_open\_permissions + * Validate\_Stat + * Not Implemented Netfs\_Implementation.Get\_Dirents + * attemp\_lookup + * Validate\_Stat + * Validate\_Stat + * check\_open\_permissions + * Validate\_Stat + * Not Implemented Netfs\_Implementation.Get\_Dirents + * attemp\_lookup + * Validate\_Stat + * Validate\_Stat + * check\_open\_permissions + * Validate\_Stat + * Not Implemented Netfs\_Implementation.Get\_Dirents + * attemp\_lookup + * Validate\_Stat + * Validate\_Stat + * check\_open\_permissions + * Validate\_Stat + * Not Implemented Netfs\_Implementation.Get\_Dirents + +## Rev 98c74b2027c9 + + * Get_Dirents implemented + * Tested with depth option set to two (only regular files in node) + +### ls -la . + + * OK + +### ls -la node + + * OK, display leafs regular files + * Call Sequence + * Validate\_Stat + * Check\_Open\_Permissions + * Validate\_Stat + * Validate\_Stat + * Check\_Open\_Permissions + * Validate\_Stat + * enter get dirents netfs_implementation.adb:141 Netfs_Implementation.Get_Dirents + * then attemp\_lookup for each leaf + +### cd node + * OK + * ls in node directory display leafs + +## Rev 2270e1726850 + + * depth parameter goes from 2 to 3 + +### ls node then ls node/path\ 2 + * OK + * display leafs in directory path 2 + +### ls node/path\ 2 + * OK + * needed to fix a missing update in the child node (because update was done only on get_dirents call) + +### cat node/path\ 2/leaf\ 1 + * NOK + * Call sequence + * Validate\_Stat + * Check\_Open\_Permissions + * Attempt\_Lookup + * Validate\_Stat + * Attempt\_Lookup + * Validate\_Stat + * Check\_Open\_Permissions + * Validate_Stat + * netfs\_implementation.adb:113 Netfs\_Implementation.Attempt\_Read + * need for attemp\_read implementation + +## Rev 3126bd9ce609 + + * Read is implemented + * next step : write + +### echo "elle souffle" > node/path\ 2/leaf\ 1 + * NOK + * command result - bash: node/path 2/leaf 1: Permission denied + * Call sequence + * Validate\_Stat + * Check\_Open\_Permissions + * Attempt_Lookup path 2 * Validate\_Stat + * Attempt\_Lookup leaf 1 * Validate\_Stat + * Validate_Stat + * Check\_Open\_Permissions - Check failed WRITE 1073741837 + +## Rev 242f59899045 + + * node are created with 0755 permission + +### echo "elle souffle" > node/path\ 2/leaf\ 1 + * NOK + * command result - bash: node/path 2/leaf 1: Operation not supported + * Call sequence + * Validate\_Stat + * Check\_Open\_Permissions + * Attempt_Lookup path 2 * Validate\_Stat + * Attempt\_Lookup leaf 1 * Validate\_Stat + * Validate_Stat + * Check\_Open\_Permissions + * netfs\_implementation.adb:366 Netfs\_Implementation.Attempt\_Set\_Size : not yet implemented + +## Rev dceb291aaf1c + + * Set_Size minimal implementation + +### echo "elle souffle" > node/path\ 2/leaf\ 1 + * NOK + * command result - bash: node/path 2/leaf 1: Operation not supported + * Call sequence + * Validate\_Stat + * Check\_Open\_Permissions + * Attempt_Lookup path 2 * Validate\_Stat + * Attempt\_Lookup leaf 1 * Validate\_Stat + * Validate_Stat + * Check\_Open\_Permissions + * Attempt\_Set\_Size + * netfs_implementation.adb:481 Netfs\_Implementation.Attemp\_Write + +## Rev 93311515a6c2 + + * Attempt_Write is implemented + +### echo "elle souffle" > node/path\ 2/leaf\ 1 + * OK + +## Rev 8395215263d3 + + * Test of mkdir + +### mkdir node/toto + + * NOK + * command result - mkdir: cannot create directory ‘node/toto’: Operation not supported + * Call sequence + * Validate\_Stat + * Check\_Open\_Permissions + * netfs_implementation.adb:421 Netfs_Implementation.Attempt_Mkdir + +## Rev 3425f5c837fb + + * mkdir implementation + +### mkdir node/toto + + * OK + * need to create leaf now : write to an inexistent file + +### echo "elle souffle" > node/test + + * NOK + * command result - bash: node/test: Not a directory + * CAll sequence + * Validate\_Stat + * Check\_Open\_Permissions + * Attempt\_Lookup + * Attempt\_Create\_File + +## Rev a1f5464f0e53 + + * Attempt_Create_File is implemented + +### echo "elle souffle" > node/test + + * OK
\ No newline at end of file diff --git a/hurd/libfuse.mdwn b/hurd/libfuse.mdwn index 28125dd9..0c76645a 100644 --- a/hurd/libfuse.mdwn +++ b/hurd/libfuse.mdwn @@ -25,7 +25,7 @@ etc. * lowlevel API not implemented * Options handling (`fuse_parse_cmdline` and `fuse_opt_*`) not implemented * CUSE lowlevel not supported (compatibility level 29) -* Supports up to the compatibility level 25 (while current libfuse 2.9.x provides 26) +* Supports the compatibility level 25 and 26, up to libfuse 2.6.x * File I/O is quite slow. diff --git a/hurd/libstore/examples/ramdisk.mdwn b/hurd/libstore/examples/ramdisk.mdwn index 33d33601..92e00f5c 100644 --- a/hurd/libstore/examples/ramdisk.mdwn +++ b/hurd/libstore/examples/ramdisk.mdwn @@ -11,9 +11,8 @@ 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 + $ settrans --active --orphan ramdisk0 /hurd/ext2fs 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 @@ -24,9 +23,5 @@ 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/nbd_store.mdwn b/hurd/libstore/nbd_store.mdwn index 3f161ba8..1e3d9071 100644 --- a/hurd/libstore/nbd_store.mdwn +++ b/hurd/libstore/nbd_store.mdwn @@ -1,5 +1,5 @@ -[[!meta copyright="Copyright © 2007, 2008, 2009, 2012 Free Software Foundation, -Inc."]] +[[!meta copyright="Copyright © 2007, 2008, 2009, 2012, 2015 Free Software +Foundation, Inc."]] [[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable id="license" text="Permission is granted to copy, distribute and/or modify this @@ -25,6 +25,8 @@ Perhaps the protocol was extended? ### IRC, freenode, #hurd, 2012-12-20 +[[!tag open_issue_hurd]] + <youpi> if somebody has time to spend, building the nbd package makes pfinet crash @@ -45,4 +47,11 @@ Perhaps the protocol was extended? # Open Issues - * [[!GNU_Savannah_task 5722]] +## [[!GNU_Savannah_task 5722]] + +## Platform-specific Error Values in the Wire Protocol + +See, for example, the threads starting at [[!message-id +"1431012374-14113-2-git-send-email-pbonzini@redhat.com"]], [[!message-id +"1431078628-7856-1-git-send-email-pbonzini@redhat.com"]], [[!message-id +"1431014292-24645-1-git-send-email-pbonzini@redhat.com"]]. diff --git a/hurd/networking.mdwn b/hurd/networking.mdwn index bdf9def2..2f13813a 100644 --- a/hurd/networking.mdwn +++ b/hurd/networking.mdwn @@ -9,11 +9,18 @@ Sections, no 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. +For each supported `PF_*` protocol family (domain), there is a file `/servers/socket/N` +where `N` is the numeric value for the `PF_*` symbol. libc's `socket()`, +`socketpair()` and friends use `_hurd_socket_server` to open them: the latter +computes the `/servers/socket/N` path, then opens it with `__file_name_lookup`, +and returns the result. Since those paths are translated (see showtrans on +`/servers/socket/N`), it's a port to a translator which is returned. Right now +[[`PF_LOCAL`|translator/pflocal]] (a.k.a. `PF_UNIX` or `AF_UNIX`) `N=1`, +[[`PF_INET`|translator/pfinet]] (a.k.a `AF_INET`) `N=2` and +[[`PF_INET6`|translator/pfinet/ipv6]] (a.k.a `AF_INET6`) `N=26` are supported. + +In case of problems to find out which server is called rpctrace can be of use: +search for the output `dir_lookup ("servers/socket/N" ...)` 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 diff --git a/hurd/porting/guidelines.mdwn b/hurd/porting/guidelines.mdwn index c4c864f7..66c6ae28 100644 --- a/hurd/porting/guidelines.mdwn +++ b/hurd/porting/guidelines.mdwn @@ -305,7 +305,13 @@ We could easily provide it; ## <a name="PTHREAD_STACK_MIN"> `PTHREAD_STACK_MIN` </a> -We should actually provide it. +We don't really have a minimum value. We could define it to 4096 (or ~16, which +is our actual minimum), but most applications making use of `PTHREAD_STACK_MIN` +would just crash with such a value. + +The application knows way better than the OS which stack size it needs and have +its own hint about the stack size, and thus use `PTHREAD_STACK_MIN` only as a +minimum, not as a hint. ## <a name="types"> `linux/types.h` or `asm/types.h` </a> diff --git a/hurd/running.mdwn b/hurd/running.mdwn index b3caf21a..7653b387 100644 --- a/hurd/running.mdwn +++ b/hurd/running.mdwn @@ -20,6 +20,7 @@ There are several different ways to run a GNU/Hurd system: * [[cloud]] - In the "cloud": OpenStack * [[chroots|chroot]] need a couple of tricks to work properly. * [[VirtualBox]] - In VirtualBox +* [[https://github.com/bbesim/vagrant_GNU-debian-hurd_basebox]] - On Vagrant * [[vmware]] (**non-free!**) * [[FAQ]] diff --git a/hurd/running/chroot.mdwn b/hurd/running/chroot.mdwn index 38bab04e..699f05a1 100644 --- a/hurd/running/chroot.mdwn +++ b/hurd/running/chroot.mdwn @@ -13,8 +13,7 @@ This documents the currently-needed tricks to successfully build a # Preparation -For proper translator startup, the chroot storage needs to be handled by a -separate translator, for instance: +It can be a good idea to put the chroot on a separate translator, for instance: # dd [...] < /dev/zero > storage # mke2fs storage @@ -45,3 +44,4 @@ programs inside the chroot need to be able to access them: # settrans -kp chroot/dev /hurd/firmlink /dev # settrans chroot/tmp /hurd/firmlink /tmp # settrans -c chroot/var/lib/dbus /hurd/firmlink /var/lib/dbus + # settrans -c chroot/run/dbus /hurd/firmlink /run/dbus diff --git a/hurd/running/debian/CrossInstall.mdwn b/hurd/running/debian/CrossInstall.mdwn index eca47a86..c7a099c6 100644 --- a/hurd/running/debian/CrossInstall.mdwn +++ b/hurd/running/debian/CrossInstall.mdwn @@ -17,7 +17,7 @@ Next we create a useful mountpoint and mount the partition. ### <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. +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. Avoid using the version from Stable since it probably is outdated. In case of problems, make sure to try the Unstable version before reporting the issue. # apt-get install crosshurd @@ -36,9 +36,9 @@ Now the program starts retrieving all the necessary base packages. 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) + title GNU (kernel GNUmach 1.5) root (hd0,2) - kernel /boot/gnumach.gz root=device:hd0s3 -s + kernel /boot/gnumach-1.5-486.gz root=device:hd0s3 -s module /hurd/ext2fs.static \ --multiboot-command-line=${kernel-command-line} \ --host-priv-port=${host-port} \ diff --git a/hurd/running/debian/dhcp.mdwn b/hurd/running/debian/dhcp.mdwn index 8846769a..aa9adfd9 100644 --- a/hurd/running/debian/dhcp.mdwn +++ b/hurd/running/debian/dhcp.mdwn @@ -1,5 +1,5 @@ -[[!meta copyright="Copyright © 2011, 2012, 2013, 2014 Free Software Foundation, -Inc."]] +[[!meta copyright="Copyright © 2011, 2012, 2013, 2014, 2015 Free Software +Foundation, Inc."]] [[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable id="license" text="Permission is granted to copy, distribute and/or modify this @@ -11,20 +11,6 @@ License|/fdl]]."]]"""]] [[!tag open_issue_porting]] -In order to use DHCP, you need to install the `ifupdown` and `isc-dhcp-client` -packages, and manually create the following symbolic link: - - # ln -s ../rcS.d/S10networking /etc/rc.boot/ - -During execution at boot time, the `S10networking` script will emit some error -messages while trying to configure the loopback interface. These are not -fatal. - -Debian GNU/Hurd doesn't currently execute 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]] diff --git a/hurd/running/debian/qemu_image.mdwn b/hurd/running/debian/qemu_image.mdwn index 97af245c..af22de13 100644 --- a/hurd/running/debian/qemu_image.mdwn +++ b/hurd/running/debian/qemu_image.mdwn @@ -16,7 +16,7 @@ Usage: $ wget http://people.debian.org/~sthibault/hurd-i386/debian-hurd.img.tar.gz $ tar -xz < debian-hurd.img.tar.gz - $ qemu -m 512 -net nic,model=rtl8139 -net user -drive cache=writeback,index=0,media=disk,file=$(echo debian-hurd-*.img) + $ qemu -m 512 -drive cache=writeback,file=$(echo debian-hurd-*.img) If you have troubles extracting the image, you can use the gz version <http://people.debian.org/~sthibault/hurd-i386/debian-hurd.img.gz>, diff --git a/hurd/running/distrib.mdwn b/hurd/running/distrib.mdwn index 74325e25..8c411fd0 100644 --- a/hurd/running/distrib.mdwn +++ b/hurd/running/distrib.mdwn @@ -1,3 +1,14 @@ +[[!template id=note text="""**GNU Free System Distribution Guidelines (GNU +FSDG)** + +The [Free Software Foundation](http://www.fsf.org/) can't recommend Debian +GNU/Hurd or the Arch distribution; we must suppose that they don't meet our +freedom standards any more than Debian GNU/Linux and the Arch distribution +based on the Linux kernel do. Likewise we have not evaluated other GNU/Hurd +distributions in regard to ethical criteria. Please visit +<http://www.gnu.org/distros/free-system-distribution-guidelines.html> to learn +what those standards are."""]] + Working distributions of GNU/Hurd: * [[Debian]] diff --git a/hurd/running/nix.mdwn b/hurd/running/nix.mdwn index 68052948..b77404a4 100644 --- a/hurd/running/nix.mdwn +++ b/hurd/running/nix.mdwn @@ -47,7 +47,7 @@ Nix, and because of that, it uses per-package installation directories under Guix -# <a href="guix">Guix</a> +# <a name="guix">Guix</a> ## <http://www.gnu.org/software/guix/> diff --git a/hurd/running/qemu.mdwn b/hurd/running/qemu.mdwn index 5a13a655..dfc9cdd2 100644 --- a/hurd/running/qemu.mdwn +++ b/hurd/running/qemu.mdwn @@ -33,7 +33,7 @@ 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 -m 512 - -drive cache=writeback,index=0,media=disk,file=disk_image.img`. + -drive cache=writeback,file=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]] @@ -139,7 +139,7 @@ First off you will need to create a disk image using `qemu-img`. I have set mine Next you will want to start up QEMU and begin the installation process. - $ qemu -m 512 -drive cache=writeback,index=0,media=disk,file=hd0.img -cdrom mini.iso -net nic,model=rtl8139 -net user + $ qemu -m 512 -drive cache=writeback,file=hd0.img -cdrom debian-7.0-hurd-i386-NETINST-1.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. @@ -187,7 +187,7 @@ Once you have finished installing the base system (might take some time) the sys Starting qemu/qemu-kvm: - $ kvm -m 512 -net nic,model=rtl8139 -net user,hostfwd=tcp::5555-:22 -drive cache=writeback,index=0,media=disk,file=hd0.img -vga vmware + $ kvm -m 512 -net nic -net user,hostfwd=tcp::5555-:22 -drive cache=writeback,file=hd0.img -vga vmware vmsvga_value_write: guest runs Linux. Note: See below on port forwarding in the networking section. @@ -200,6 +200,14 @@ If you have problems with grub hanging during boot with the vmware vga driver: D uncomment GRUB_TERMINAL=console $ /usr/sbin/update-grub +### `qemu: fatal: Trying to execute code outside RAM or ROM at 0x000000010010001e` + +This is due to a bug in QEMU, where the x86_64 QEMU binary fails to properly +truncate addresses in 32-bit mode. Waiting for [[!message-id +"1386334344-24620-1-git-send-email-agraf@suse.de"]] to be applied and become +generally available, just use the `qemu-system-i386` binary instead. +See [[!debbug 719633]] + ### A few words about the qemu console During the graphical emulation, you can use the following keys: @@ -302,7 +310,7 @@ This is the recommended way to work with a Command Line Interface (CLI) since al a) with ssh (assuming you have installed openssh-server) - $ kvm -m 512 -net nic,model=rtl8139 -net user,hostfwd=tcp::5555-:22 -drive cache=writeback,index=0,media=disk,file=hd0.img & + $ kvm -m 512 -net nic -net user,hostfwd=tcp::5555-:22 -drive cache=writeback,file=hd0.img & Logging in to the running Hurd: @@ -319,7 +327,7 @@ Copying files: b) with telnet (assuming you have installed a telnet server, like telnetd) - $ kvm -m 512 -net nic,model=rtl8139 -net user,hostfwd=tcp::5556-:23 -drive cache=writeback,index=0,media=disk,file=hurd-install.qemu & + $ kvm -m 512 -net nic -net user,hostfwd=tcp::5556-:23 -drive cache=writeback,file=hurd-install.qemu & Logging in to the running Hurd: @@ -360,7 +368,7 @@ Now it is time to start-up your QEMU Hurd system and get networking going in the **Important:** Remember you may need to use the `-M isapc` or `-isa` flag if using an older version of the gnumach package. - $ qemu -m 512 -drive cache=writeback,index=0,media=disk,file=hd0.img -cdrom debian-K9-hurd-i386-CD1.iso -fda floppy.img -boot a -net nic -net tap + $ qemu -m 512 -drive cache=writeback,file=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. @@ -395,14 +403,7 @@ on their command line... You can also use `--append [...]`, which will show up in `/proc/cmdline`. - -# `qemu: fatal: Trying to execute code outside RAM or ROM at 0x000000010010001e` - -This is due to a bug in QEMU, where the x86_64 QEMU binary fails to properly -truncate addresses in 32-bit mode. Waiting for [[!message-id -"1386334344-24620-1-git-send-email-agraf@suse.de"]] to be applied and become -generally available, just use the `qemu-system-i386` binary instead. - +Command line above crashes with old qemu versions, for instance qemu 1.1.2 on Debian Wheezy, fixed by upgrading to wheezy-backports currently qemu 1.7.0, see [[!debbug 741873]] # Related Links diff --git a/hurd/running/qemu/babhurd_image.mdwn b/hurd/running/qemu/babhurd_image.mdwn index 6a3bb30e..0bb9c074 100644 --- a/hurd/running/qemu/babhurd_image.mdwn +++ b/hurd/running/qemu/babhurd_image.mdwn @@ -6,8 +6,7 @@ What this little Hurd image can do 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 -m 512 -drive -cache=writeback,index=0,media=disk,file=disk_image.img`. +just use `qemu -m 512 -drive cache=writeback,file=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). diff --git a/hurd/running/qemu/microsoft_windows.mdwn b/hurd/running/qemu/microsoft_windows.mdwn index e2c8636c..f426a793 100644 --- a/hurd/running/qemu/microsoft_windows.mdwn +++ b/hurd/running/qemu/microsoft_windows.mdwn @@ -48,4 +48,4 @@ Welcome, This document is for getting you started in a few minutes. 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 -drive cache=writeback,index=0,media=disk,file=debian-hurd-k16-qemu.qcow -localtime -M pc + ..\qemu-0.9.0-x86\qemu.exe -L ..\qemu-0.9.0-x86 -m 512 -drive cache=writeback,file=debian-hurd-k16-qemu.qcow -localtime -M pc diff --git a/hurd/running/qemu/networking.mdwn b/hurd/running/qemu/networking.mdwn index d20b84b1..0c8e0ae8 100644 --- a/hurd/running/qemu/networking.mdwn +++ b/hurd/running/qemu/networking.mdwn @@ -21,7 +21,7 @@ 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 + $ settrans -fgap /servers/socket/2 /hurd/pfinet -i /dev/eth0 -a 10.0.2.15 -g 10.0.2.2 -m 255.255.255.0 Configure nameserver in /etc/resolve.conf diff --git a/hurd/running/virtualbox.mdwn b/hurd/running/virtualbox.mdwn index 23a0b156..b48f7ebd 100644 --- a/hurd/running/virtualbox.mdwn +++ b/hurd/running/virtualbox.mdwn @@ -1,4 +1,5 @@ -[[!meta copyright="Copyright © 2011, 2013 Free Software Foundation, Inc."]] +[[!meta copyright="Copyright © 2011, 2013, 2015 Free Software Foundation, +Inc."]] [[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable id="license" text="Permission is granted to copy, distribute and/or modify this @@ -21,6 +22,7 @@ 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. +Note: If your Hurd image freezes on startup with "start ext2fs: ext2fs: device:hd0s1: No such device or address", then you may need to manually edit the hard disk controller to be "IDE", because VirtualBox defaults to "SATA" which does not work. Go in to the "Storage" tab and check whether there is an entry for "Controller: SATA". If the SATA entry exists and the Hurd disk image is attached to it, delete the SATA controller and then add a new hard disk under "Controller: IDE". Restart the virtual machine. The hard disk should now be accessible via an IDE interface and Hurd should start successfully and reach the login prompt. (This is the case on VirtualBox 4.3.28 on Mac OS.) ## Converting from qemu image diff --git a/hurd/status.mdwn b/hurd/status.mdwn index 6aa319d1..742dea03 100644 --- a/hurd/status.mdwn +++ b/hurd/status.mdwn @@ -1,5 +1,5 @@ [[!meta copyright="Copyright © 2001, 2002, 2007, 2008, 2009, 2010, 2011, 2012, -2013 Free Software Foundation, Inc."]] +2013, 2015 Free Software Foundation, Inc."]] [[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable id="license" text="Permission is granted to copy, distribute and/or modify this @@ -50,9 +50,10 @@ 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 78% of the Debian software archive are -available. Along with the official Debian "wheezy" release (but not as an -official Debian release), in May 2013 the Debian GNU/Hurd team released [[Debian -GNU/Hurd 2013|news/2013-05-debian_gnu_hurd_2013]]. +available. Along with the official Debian "jessie" release (but not as an +official Debian release), in April 2015 the [[Debian +GNU/Hurd|hurd/running/debian]] team released [[Debian GNU/Hurd +2015|news/2015-04-29-debian_gnu_hurd_2015]]. [[hurd/running/Arch_Hurd]] offers *LiveCDs* for testing and installation. diff --git a/hurd/translator/pfinet/ipv6.mdwn b/hurd/translator/pfinet/ipv6.mdwn index 81826e00..ccb359cb 100644 --- a/hurd/translator/pfinet/ipv6.mdwn +++ b/hurd/translator/pfinet/ipv6.mdwn @@ -35,20 +35,20 @@ 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 + -i /dev/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 + -i /dev/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 ↩ + -i /dev/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 ↩ + -i /dev/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 |