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 --]
next prev parent 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).