[[!meta copyright="Copyright © 2011, 2012, 2013 Free Software Foundation,
Inc."]]

[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
id="license" text="Permission is granted to copy, distribute and/or modify this
document under the terms of the GNU Free Documentation License, Version 1.2 or
any later version published by the Free Software Foundation; with no Invariant
Sections, no Front-Cover Texts, and no Back-Cover Texts.  A copy of the license
is included in the section entitled [[GNU Free Documentation
License|/fdl]]."]]"""]]

[[!tag open_issue_documentation open_issue_hurd]]


# IRC, freenode, #hurd, 2011-08-10

    < braunr> youpi: aren't sub-hurds actually called "neighbor hurds" ?
    < youpi> no idea
    < braunr> i also don't understand the recursive property
    < youpi> a user can run a subhurd
    < neal> braunr: What don't you understand?
    < youpi> a user in a subhurd can run a subhurd
    < youpi> etc
    < braunr> i'm not sure it's really recursive
    < neal> youpi: At some point it was observed that you don't strictly
      require any resources from the "parent" Hurd.
    < neal> youpi: i.e., you could have two Hurds running "directly" on Mach
    < youpi> sure
    < neal> youpi: Hence neighbor rather than sub
    < youpi> but you need to be root for that
    < youpi> or else your subhurd can't do much
    < neal> you need to have been authorized to use the required resouces
    < youpi> which is about the same :)
    < neal> depends how they are delegated
    < youpi> that's still asking root for something
    < neal> if you say so
    < youpi> which is most probably not the default
    < braunr> well, either you depend on the parent to do things on your
      behalf, or you directly have some privileged ports
    < braunr> i'd agree with youpi that it's pretty much having root access at
      some point
    < youpi> and usually you don't have privileged ports by default :)
    < braunr> but we don't need to restrict the presentation to user only sub
      hurds
    < braunr> people don't mind switching to root on their desktops
    < braunr> which is one of the reasons they ask "what does the hurd really
      bring me today ?"
    < braunr> but being able to run truely separate hurds or recursive hurds is
      something nice most OSes can't do easily
    < youpi> switching to root becomes a *pain* when you have to do it 1 every
      two commands
    < braunr> yes sure, but some people might just say you're clumsy :x
    < neal> The question is: can I start a sub-hurd from within another hurd
      that survives the parent's hurd exiting?  The answer is yes.  The reason
      is that the sub-hurd can be constructed in such a way that it does not
      rely on the parent.  In this case, the parent does not necessarily
      subjugate the sub-hurd.  Hence the name.
    < braunr> but that's out of the scope of the discussion
    < antrik> using the traditional, root only mechanism, neighbour-hurd is
      indeed a more appropriate term. apart from the initial terminal being
      proxied to the parent system by the boot program, they are really equal
    < antrik> with zhengda's work on non-root subhurds, you rely on various
      proxies in the parent system to access privileged resources; so subhurd
      is indeed a more appropriate term in this case
    < antrik> (not only non-root subhurds in fact... when using any of the
      proxies, such as the network multiplexer -- even if still running as
      root...)
    < youpi> antrik: you could still give a com0 port as terminal
    < antrik> I don't think that's actually supported in the boot
      program... but it doesn't really matter, as you don't really need the
      terminal anyways -- you can always log in through the network


# IRC, freenode, #hurd, 2012-07-31

    <gg0> subhurd seems like bsd jail (tried none of them)
    <antrik> gg0: nope. BSD jails are mostly chroot AIUI. subhurd is quite
      different
    <antrik> gg0: you actually boot a completely new system instance
    <antrik> complete with all the Hurd servers, UNIX daemons etc.
    <braunr> jails are between subhhurds and chroots :p
    <braunr> i suppose there is nothing against making the root server of the
      subhurd use a file instead of a raw disk, is there ?
    <gg0> well, I said jails cos afaik are more isolated from real system than
      chroots
    <braunr> yes
    <gg0> maybe comparing subhurd to virtual machines would be more
      appropriated then
    <braunr> they're not VMs either
    <gg0> say chroot -> jail -> subhurd -> vm ?
    <braunr> unless you consider the microkernel to be a hypervisor, with its
      own architecture, which some actually do
    <braunr> gg0: something like that, yes
    <gg0> [system-in-system evolution]
    <braunr> a subhurd is an operating system instance
    <braunr> i think the closest analogy you can get is openvz
    <antrik> yeah, I'd also consider it closest. but it's still quite
      different: with OpenVZ, the kernel facilities are only logically
      isolated; but they use the same kernel code. with subhurds, most of the
      system facilities are independent


# IRC, freenode, #hurd, 2012-08-03

    <antrik> hm... are Mach task IDs exposed to userspace?
    <braunr> antrik: ids ?
    <braunr> antrik: what do you call a mach task id ?
    <antrik> task have numeric IDs in the kernel
    <antrik> I wonder whether these are ever exposed to userspace
    <braunr> i'm not sure
    <braunr> i don't remember the had numeric IDs
    <braunr> they*
    <antrik> well, perhaps I'm making things up... but I believe I saw such IDs
      in the debugger and/or in error messages
    <braunr> probably their address
    <braunr> or creation time orpc_sample
    <antrik> braunr: well, any unique ID would do
    <braunr> antrik: yes but i was wondering what kdb would actually show
    <antrik> I just realised that it would be useful for debugging accross
      subhurds or kernel/userspace if some kind of unique task IDs could be
      shown in ps output
    <braunr> yes
    <braunr> this requires some thought though
    <braunr> ps shouldn't show that
    <braunr> there should be mach specific commands i suppose
    <braunr> but then, gdb and other tools wouldn't have access to subhurd
      tasks either
    <antrik> why shouldn't ps show that? I don't think it's any more sensitive
      information than all the other stuff ps shows...
    <braunr> it doesn't feel right
    <braunr> i would want my system instances to be truely isolated
    <braunr> and use special "cross instance" facilities
    <braunr> when necessary
    <antrik> that's completely orthogonal to what I'm talking about
    <braunr> like eth-multiplexer
    <braunr> you seem to be talking about security
    <braunr> or privacy
    <antrik> we discussed such options when zhengda worked on rootless subhurd
    <antrik> no, I'm talking about convenient debugging
    <braunr> right
    <braunr> i don't think it'zs orthogonal here
    <braunr> if we increase separation, it becomes less convenient
    <antrik> for debugging purposes you would *not* use the isolation options
    <braunr> ok so you propose two modes of operations
    <antrik> BTW, as an isolated subhurd relies on the parent, it makes no
      sense to hide subhurd tasks from the parent hurd -- only hide parent hurd
      task from the subhurd
    <braunr> agreed
    <antrik> so even with an isolated subhurd global task IDs would still be
      useful


# IRC, freenode, #hurd, 2012-08-06

    <braunr> antrik: if i'm right, the root file system executable is read from
      the parent, right ?
    <antrik> braunr: probably... I'm not sure about that part
    <braunr> antrik: i've installed the same packages in both the main and
      subhurds to be sure
    <braunr> and to have the right binary and debugging symbols in gdb anyway


# IRC, freenode, #hurd, 2013-01-19

    <zacts> what is the hurd equivalent of a freebsd jail?
    <braunr> zacts: i'd say subhurds
    <zacts> what advantages would a subhurd have over a freebsd jail?
    <zacts> basically that is
    <braunr> it virtually guarantees a mistake can't compromise the main system
    <zacts> ah ok
    <braunr> in theory, subhurds can run without root privileges
    <braunr> (but there are currently a few things that prevent it)