unofficial mirror of guix-devel@gnu.org 
 help / color / mirror / code / Atom feed
From: Manolis Ragkousis <manolis837@gmail.com>
To: "Ludovic Courtès" <ludo@gnu.org>,
	"Samuel Thibault" <samuel.thibault@gnu.org>,
	"Justus Winter" <4winter@informatik.uni-hamburg.de>,
	guix-devel@gnu.org, bug-hurd@gnu.org
Subject: [GSoC] Porting GuixSD to GNU Hurd draft
Date: Mon, 21 Mar 2016 14:09:36 +0200	[thread overview]
Message-ID: <56EFE480.6020007@gmail.com> (raw)
In-Reply-To: <20160302220654.GC3037@var.home>

[-- Attachment #1: Type: text/plain, Size: 429 bytes --]

Hello everyone,

Although I have uploaded and shared my draft to the GSoC website, I am
also resending it to the lists as per Ludovic's instruction.

I am sharing it as a txt + pdf.

Here is also the link that I shared to the GSoC website as per Google's
instructions.
https://docs.google.com/document/d/1NEEz_PHM2YZTm8okd2BgPRSc4c89I1fGnwbyeeEUrhw/edit?usp=sharing

This is the time to share your ideas/corrections :-)

Manolis

[-- Attachment #2: PortingGuixSDtoHurd.txt --]
[-- Type: text/plain, Size: 6403 bytes --]

Porting GuixSD to GNU/Hurd

Manolis Ragkousis
manolis837@gmail.com

March 17, 2016


1. Summary

In this project, we would like to port the Guix Software Distribution to GNU Hurd.  By the end of the project, 
Guix will be able to handle and use the available Hurd mechanisms, have the required tools to produce a working, 
bootable, system vm/image with GNU Shepherd as the init daemon and offer the same functionality as you would 
expect from booting into a GNU/Linux GuixSD system. 


2. The Project

The project consists of four main stages

1. Modify Guix so it will be able to create and mount the file-system needed to boot into a system with Hurd at its core. 
2. Modify Guix so it can produce a working image, while isolating any cases of Linux assumptions.
3. Successfully boot into one such system using GNU Shepherd with pid 1.
4. Modify the new Guix system to take advantage of Hurd specific mechanisms.


Currently the tools Guix uses to interact with the filesystem exist inside the (guix build syscalls) module. 
This module provides bindings to libc's syscall wrappers, which are only available on a GNU/Linux system. 
In order to offer the same functionality on a GNU/Hurd system we must first write Guile bindings for the 
relevant Hurd functions, like 'file_set_translator' in hurd/fs.defs for example. This module will be called 
(guix build hurd). This allows us to re-implement the functionality of the 'settrans' command, as described 
here[1], in Scheme and use that in place of 'mount()', where applicable.

Additionally, we need to make sure that all modules in (guix build *) and (gnu build *) can offer the same 
functionalities on a GNU/Hurd system.  For example (gnu build vm) relies on QEMU's '-kernel' command-line 
option, which is Linux-specific.  On the other hand, in the case of modules like (gnu build linux-boot) or 
(gnu build linux-initrd), which by design are Linux-specific, we will need to provide a separate module with 
equivalent functionality. (gnu system *) modules will require changes as well, in order to be able to use 
modifications that will happen in the (guix build *) and (gnu build *) modules. 

At this point we will be able to generate a working vm image and boot into it.  Guix will be able to use the 
Hurd servers (i.e. /hurd/init) to start the init manager and the system itself.  We will also have to account 
for the fact that servers in /hurd will be symlinks to /gnu/store/*, and modify Guix and/or the Hurd libraries 
accordingly to achieve functionality.  Regarding the init daemon, please note that a precedent already exists 
for starting GuixSD/Hurd with GNU Shepherd as pid 1 (David Michael [2015][2]).

Finally, once GuixSD is successfully ported, we can cater to the last stage of taking advantage of Hurd specific 
mechanisms. 
This includes but is not limited to:
1)Replacing (gnu build linux-container) with (gnu build subhurd) when on a GNU/Hurd system. Subhurds can offer 
isolation similar to Linux containers as described here[3].
2)Modify the guix-daemon to run without root privileges by utilizing the Hurd architecture. The daemon needs root 
privileges in order to setup chrooted environments for the builds.  In the Hurd this can be done by setting up a 
translator as described here[4]. 
3)Guix uses symlink trees for user profiles. Instead we can use stowfs[5]. Stowfs creates a traditional Unix directory 
structure from all the files in the individual package directories.

 
3. Estimated Project Timeline

Before March 31
Finish merging the wip-hurd branch to upstream.
Write a (guix build hurd) module which will contain Guile bindings to the RPC stubs like hurd/fs.defs or hurd/exec.defs .

April 1 - April 15
Package missing dependencies (Hurd libs).
Re-implement 'settrans' in scheme.

April 16 - May 1
At this point we will have the tools needed to build a Hurd based file-system. (Milestone 1)
Start working on getting (guix build *) and (gnu build *) modules to work on Hurd.
Make sure '%base-packages' in (gnu system) module work as expected on Hurd.

May 2 - May 22
Create (gnu build hurd-boot) and (gnu build hurd-initrd).
Start working on describing the GNU/Hurd system in (gnu system).

May 23 - 12 June
Modify (gnu system *) modules as needed.
All the modules (guix build *) and (gnu build *) will be working as expected by now.
Try building a GuixSD image. (Milestone 2)

13 June - 23 June
Solve any problems with booting into the system and running GNU Shepherd.

24 June - 9 July
Have a fully working GNU/Hurd system. (Milestone 3)
Make sure all the services/packages run correctly on the new GuixSD/Hurd system and solve any issues.

10 July - 8 August
Start working on getting Hurd specific mechanisms integrated to Guix.

9 August - 23 August
By now all the objectives will have been achieved.
Merge patches, code refactoring, documentation.
Deliver a working GuixSD system image with Hurd as the kernel.



4. About me

My name is Manolis Ragkousis and you can contact me via email or irc ('phant0mas').  I am 22 years old and I am 
studying Informatics Engineering (Computer Science curriculum) in the Department of Informatics Engineering at the 
Technological Educational Institute of Crete.  I am currently in the process of writing my Bachelor's Thesis on 
running L4Linux and L4re/Fiasco-based realtime applications concurrently on a ZedBoard.

I am a Guix contributor since 2014.  My main contribution to the project includes adding GNU/Hurd support to GNU 
Guix which was also part of GSoC 2015. 

I am a supporter of Free Software and I want to help the GNU Guix and GNU Hurd projects in any way I possibly can.  
My belief is that my work could attract more people to get involved into both projects and help in increasing the 
number of developers.  I will work on this project regardless of being accepted or not as I have kept doing for the last 2 years.

For a more detailed self-portrait, please refer to my online CV[6].

This project will be my only activity during the summer and I will work full time on it.

[1]https://www.gnu.org/software/hurd/hurd/settrans.html
[2]https://lists.gnu.org/archive/html/bug-hurd/2015-01/msg00027.html
[3]https://www.gnu.org/software/hurd/hurd/subhurd.html
[4]https://www.gnu.org/software/hurd/hurd/running/chroot.html
[5]https://www.gnu.org/software/hurd/hurd/translator/unionfs.html#stowfs
[6]http://www.manolisragkousis.com/about-me/

[-- Attachment #3: PortingGuixSDtoHurd.pdf --]
[-- Type: application/pdf, Size: 60734 bytes --]

  reply	other threads:[~2016-03-21 12:09 UTC|newest]

Thread overview: 77+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-02-06 11:38 GSoC ideas Pjotr Prins
2016-02-06 12:36 ` Ludovic Courtès
2016-02-06 18:54   ` Christopher Allan Webber
2016-02-07 10:16     ` Efraim Flashner
2016-02-09 20:52       ` Ludovic Courtès
2016-03-25 20:32       ` myglc2
2016-02-08 10:45     ` Tomáš Čech
2016-02-08 11:37       ` Efraim Flashner
2016-02-08 17:24       ` Christopher Allan Webber
2016-02-08 18:45         ` Thompson, David
2016-02-08 19:47           ` Christopher Allan Webber
2016-02-08 20:43             ` Pjotr Prins
2016-02-09 10:36               ` Installing Guix on foreign distros Ludovic Courtès
2016-02-10  8:53                 ` Tomáš Čech
2016-02-10  9:42                   ` Ricardo Wurmus
2016-02-10 12:44                   ` Jookia
2016-02-11  5:44                     ` Ricardo Wurmus
2016-02-11 10:54                       ` Bootstrapping Ludovic Courtès
2016-02-23 23:00               ` GSoC ideas Diane Trout
2016-02-23 23:52                 ` Guix on Debian (was: GSoC ideas) Christopher Allan Webber
2016-02-24  0:02                   ` Leo Famulari
2016-02-24  9:03                     ` Ricardo Wurmus
2016-02-24  9:16                       ` Efraim Flashner
2016-02-24  9:36                         ` Jookia
2016-02-25 18:15                           ` Bootstrap binaries Ludovic Courtès
2016-02-25 20:26                             ` Christopher Allan Webber
2016-02-26 23:19                               ` Ludovic Courtès
2016-02-28 10:51                                 ` Jookia
2016-02-28 15:08                                   ` Ludovic Courtès
2016-02-28 15:10                                     ` Jookia
2016-02-29  5:22                                       ` Christopher Allan Webber
2016-02-29 10:01                                       ` Ludovic Courtès
2016-02-24  0:32                   ` Guix on Debian (was: GSoC ideas) Diane Trout
2016-02-24  7:04                     ` Pjotr Prins
2016-02-24 17:20                       ` Thompson, David
2016-02-24 19:36                         ` Diane Trout
2016-02-25 10:30                           ` Efraim Flashner
2016-02-26  1:27                             ` Diane Trout
2016-02-24 19:14                 ` GSoC ideas Jan Nieuwenhuizen
2016-02-24 21:24                   ` Jan Nieuwenhuizen
2016-02-24 21:56                     ` Diane Trout
2016-02-25 18:10                 ` Ludovic Courtès
2016-02-26  1:28                   ` Diane Trout
2016-03-25 20:52         ` myglc2
2016-02-09 20:49     ` Ludovic Courtès
2016-02-09 22:17       ` Christopher Allan Webber
2016-02-10  6:12         ` Pjotr Prins
2016-02-11  2:11           ` Christopher Allan Webber
2016-02-11 10:01             ` Ludovic Courtès
2016-02-11 17:59               ` Christopher Allan Webber
2016-02-21 21:07                 ` Ludovic Courtès
2016-03-23 19:07       ` myglc2
2016-02-11 11:46   ` Manolis Ragkousis
2016-02-11 17:32     ` Andreas Enge
2016-02-12 11:48       ` Alex Sassmannshausen
2016-02-11 17:36     ` Christopher Allan Webber
2016-02-28 22:12     ` Samuel Thibault
2016-02-28 23:33       ` Richard Braun
2016-03-02 10:09     ` Ludovic Courtès
2016-03-02 10:12       ` Samuel Thibault
2016-03-02 21:31         ` Ludovic Courtès
2016-03-02 22:06           ` Samuel Thibault
2016-03-21 12:09             ` Manolis Ragkousis [this message]
2016-03-22  0:49               ` [GSoC] Porting GuixSD to GNU Hurd draft Samuel Thibault
2016-03-23 13:40               ` Ludovic Courtès
2016-03-23 16:55                 ` Justus Winter
2016-03-24 11:18                   ` Manolis Ragkousis
2016-03-24 11:38                     ` Justus Winter
2016-03-24 12:36                       ` Manolis Ragkousis
2016-03-24 12:49                         ` Justus Winter
2016-03-24 13:22                   ` Ludovic Courtès
2016-03-24 13:55                     ` Manolis Ragkousis
2016-03-24 14:30                       ` Justus Winter
2016-03-04 15:09           ` GSoC ideas Manolis Ragkousis
2016-03-05 22:02             ` Ludovic Courtès
2016-02-06 23:53 ` Ben Woodcroft
2016-02-07  5:51   ` Pjotr Prins

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://guix.gnu.org/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=56EFE480.6020007@gmail.com \
    --to=manolis837@gmail.com \
    --cc=4winter@informatik.uni-hamburg.de \
    --cc=bug-hurd@gnu.org \
    --cc=guix-devel@gnu.org \
    --cc=ludo@gnu.org \
    --cc=samuel.thibault@gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/guix.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).