[Soc-coordination] Weekly report (11th week) - Debian GNU/Hurd Debianish initialization

4winter at informatik.uni-hamburg.de 4winter at informatik.uni-hamburg.de
Fri Aug 30 15:32:34 UTC 2013


.. link: 
.. description: 
.. tags: gsoc, debian, hurd
.. date: 2013/08/30 16:56:18
.. title: What will I do next? cgroupfs \o/
.. slug: what-will-i-do-next-cgroupfs-o

With the `ifupdown` fixes that I published last week I actually
reached my initial goal, that is to make Debian/Hurd boot using
`sysvinit` and the `initscripts` provided by Debian. So on Monday we
were discussing in #hurd what I could do next. Michael Banck suggested
that I should port Upstart, but we agreed to do something different
instead for two reasons:

1. Upstart and systemd are somewhat competing to be the default init
   system for Debian, and we felt it might be inappropriate to get
   involved with this question as porting Upstart to Hurd would
   probably also enable it to be used on FreeBSD. The Upstart folks
   could then point out that Upstart is more portable because it runs
   on all kernels used by Debian.

2. Upstart uses ptrace(2) to track child processes of servers it
   monitors. Obviously this is kind of a hack, and it was conjectured
   that Upstart would eventually use cgroups to do that. Also, the
   Hurd lacks support for ptrace(2) (that is most likely by choice by
   the way, ptrace(2) is not a nice interface and the Hurd (Mach
   actually) has much nicer interfaces to implement a debugger).

So we decided that no matter how the struggle between Upstart and
systemd turns out, the Hurd would eventually need to support
cgroups. So I started to write a cgroupfs translator, it is in its
early stages but it already looks and acts a lot like Linux' cgroups::

  % settrans -ac cg ./cgroupfs --release-agent=foobar
  % ls cg
  release_agent  tasks
  % tail -n3 cg/tasks
  11395
  12869
  1266
  % mkdir cg/foo
  % echo 1266 >> cg/foo/tasks
  % tail -n3 cg/tasks cg/foo/tasks
  ==> cg/tasks <==
  215
  11395
  12869
  
  ==> cg/foo/tasks <==
  1266

To make this fully functional I will have to modify `/hurd/proc` and
most likely also GNU Mach, but on the bright side this will help make
`subhurds <http://www.gnu.org/software/hurd/hurd/subhurd.html>`_
(Hurds native, by-design-for-free-and-without-overhead container like
functionality) work better and more securely (among other things this
could enable non-root users to start subhurds). I will also look into
porting `libcg <http://libcg.sourceforge.net/>`_ (I have a hacky patch
series ready) so that we can actually test the cgroupfs
translator. All current users of the cgroup interface are very Linux
specific (surprise!), and libcg looks like the easiest one to
port. And they do have a test suite that could help me improve the
cgroupfs translator.



More information about the Soc-coordination mailing list