[[!meta copyright="Copyright © 2012 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]]."]]"""]] # IRC, freenode, #hurd, 2012-07-19 well, I really actively started last week, so I'm ironing my various use cases and above all I'm taking my barings in Hurd's code I'm currently reading boot/ and pfinet/ sorry for asking but can you describe brielfy what you mean to achieve i know it sounds weird but the project description is a bit vague for me OK the main goal is to be able to easily spawn a subhurd that's connected in some way to its host ok mainly connected by network, possibly sharing resources like FS is it similar in spirit with something like linux containers ? IIRC about them, yes ok that will do for me then Yes, so not complete virtualization, but instaed limitied to several components. lxc with more runtime features to increase/decrease the level of isolation at first it would be static, at creation time only ok, i clearly understand the proposal now :) what kind of help could you need in the near future ? (except permanent access to youpi's brain?) Yes, that's my question, too -- what can we do to "get this thing going". by monday or tuesday I should be clear on what I understand or not in the code I'm still a bit up to my elbows in it at that point I'll be happy to be able to pop a lot of questions about it so you'll be ready for the next meeting yeah Please do as soon as there are questions that you cannot resolve in a reasonably short amount of time. So often a quick hint from someone else already helps to ge un-stuck. OK There is no problem with asking for help given this huge and convoluted code-base, where often design decisions are not obvious, too. I will Good. :-) nowhere_man: hm... what you said so far doesn't sound any different than the work zhengda already did on boot years ago... (although none of it ever got upstream IIRC :-( ) antrik: wasn't aware of it, is there some code published? There are bits and pieces, but certainly there is enough work left to be done, to put it all together. yes, his git repository should be up somewhere. it's quite convoluted though, as he worked on several things, and also wasn't very experienced with revision control in the beginning nowhere_man: http://www.gnu.org/software/hurd/community/gsoc/2008.html nowhere_man: http://www.gnu.org/software/hurd/user/zhengda.html Second section of the latter one. well, my understanding of the proposal (and more or less what I was driving at in the project idea, which is rather vague admittedly) is something lighter than a real subhurd... rather some kind of thin subenvironment that doesn't actually boot a complete system instance with various daemons etc. nowhere_man: It is certainly valid for you to use pre-existing code/patches, by the way. BTW, regarding the "full subhurd" thing, the missing pieces are mostly virtual device implementations (that and some tough bug(s) remaining in zhengda's modified boot...) cool, I'll take a look in any case, getting a picture of the work zhengda did is, is definitely the first thing to do :-) nowhere_man: I'll also try to locate some bits and stuff from his verious repositories (I just fond a Subverision one; will convert to Git). tschwinge: I'm pretty sure zhengda's git repository was converted from the SVN one... antrik: Thanks for reminding us about this -- I failed to remember all that. (which was in turn converted from CVS...) antrik: OK, will have a lot. Yeah, found a CVS tree, too. ;-) BTW, zhengda's work more exactly was about subhurd without root privileges. but that lays a lot of the groundwork for all kinds of more flexible subhurd usage (but it's still quite a different thing that thing subenvironments, so don't get confused...) err... thin subenvironments # IRC, freenode, #hurd, 2012-07-27 bddebian: I'm actually not progressing much while reading the source, I'm jumping all over the place to grasp the various types and functions used where I start would there be a few starting points that could help me? nowhere_man: So what exactly is your status; what are you doing, what do you need help with? We surely can provide help, but need to know where. I'm starting from the source of boot/ and pfinet/ and as soon as I encounter something that I don't understand, I find its definition I'm kind of doing a depth-first search of what I need to understand in the source code I'm wondering if there are a few places in the source code that I should start reading before anything else well, I'll have to go in a few minutes I'll continue my DFS ;-) # IRC, freenode, #hurd, 2012-08-02 well, I made a leap forward in understanding the code, when I stopped my DFS in hindsight, I'd say my way of approaching the code was probably one of the worst possible oh OK, so at least you learned something, which is good. So, what's the new approach? And what are you working on at the moment ? I just remembered SICP, the idea of wishful thinking when you code, and didn't bother with the fine details behind what I'm reading like, I don't really get what happens when a Mach port is allocated, but I know approximately what a Mach port is So originally you worked on investigating all that, every line of code? almost, yeah nowhereman: again, feel free to ask Yes indeed -- that's too complex for a single person to tackle at one time. and quickly don't loose time Not even braunr and I have looked up all these things. (Speaking for Richard here, but I'm quite sure he'll agree. Perhaps he has in fact looked up all the Mach things, though.) nowhereman: ufc? BTW, last week I wanted to push my description of how the tool could be used, the use cases ufs but flubber is not online nowhereman: Oh, why ufs specifically? don't waste time on ufs really nowhereman: Yes, flubber is down. But you can push directly to the Savannah repository. nowhereman: Please immediatelly tell us if you're stuck on something, like flubber not being available. We may not be able to help immediatelly, but we're the at least aware of issues. and we may be able to help immediately :) As we're not sitting in a lab next to each other, we can't tell otherwise what's going on. We may in fact even be able to tell you immediatelly to use Savannah instead of flubber, indeed. nowhereman: So, back to ufs -- which you don't specifically need to look at, I think -- ext2fs is what everyone uses. But even there you shouldn't really need to know many details/internals. OK, I was looking into it has it appears in hurd.boot Ah, OK. Yeah, that's just an example/template, and should use ext2fs nowadays. in fact, as far as FS are concerned, I suppose I will merely need to know how to pass a port to the host's FS to some proxy FS in the subhurd mmmh, Savannah only mentions a hurd.git Exactly that is the abstraction level you need, yes. I'm looking at http://savannah.gnu.org/git/?group=hurd Yeah, that's a known shortcoming -- look here instead: http://git.savannah.gnu.org/cgit/hurd Here is some more up-to-date stuff on subhurds: http://www.gnu.org/software/hurd/hurd/subhurd.html nowhereman: You know how to tell git to add a new remote to your web pages checkout and such stuff? yeah, no problem with that have you prepared any question to ask us ? the only I have now is if you can tell me where to look in the code about passing Mach ports you don't pass ports, you pass rights http://www.gnu.org/software/hurd/gnumach-doc/index.html is the best location to have a look at http://www.gnu.org/software/hurd/gnumach-doc/Exchanging-Port-Rights.html#Exchanging-Port-Rights i suppose the mig doc will help too, as you may be using a higher level interface to exchange rights be careful about user references on port rights deallocate releases a reference, it doesn't immediately destroy a resource portinfo -v can help monitoring a task's rights nowhereman: so what are you planning to do now ? during the next week documenting what I understand from the boot process and where things can be changed to fit my various use cases do you expect that to take the whole week ? and doing some first modifications to servers for the simplest cases ok well i hope you're able to really start working on it soon, and won't face weird issues in the meantime i'm a bit disappointed that you don't have more questions my feeling is you either did understand everything (except passing port rights), or you didn't attempt to seriously understand the code or you don't dare ask questions this is something that must change or these meetings won't be as useful as they could be Yes. But also please don't wait for the meetings, but ask questions throughout the week, too. # IRC, freenode, #hurd, 2012-08-09 hey, does anyone knows the network device interface well? I don't get it by reading net_io.c/h in gnumach nowhere_man: ask your question nowhere_man: http://www.sceen.net/~rbraun/pcap-hurd.c <- this may help I don't see what the entry point is I finally understood that I actually don't need to touch pfinet for gsoc project but I should do a replacement network device instead is the net_io_init function called at start? what entry point ? and you should perhaps have a look at the eth-multiplexer by zhengda yes net_io_init is called at startup nowhere_man: did you find your answers about networking ? no, I'm still digging in mach's code nowhere_man: well keep asking :/ you left conversation without notice :/ nowhere_man: and why mach ? I thought hardware devices are there nowhere_man: You wanted to push your documentation one/two weeks ago. Why has that not yet happened? nowhere_man: they used to be there, they are now in netdde, but in both case it's just a matter of the same RPC interface tschwinge: I spent very few time this week on gsoc, and completely forgot about the push on savannah nowhere_man: i told you to look at the work by zhengda concerning eth-multiplexer, did you do that ? nowhere_man: You realize GSoC is meant to be a full-time job? Or, next to full-time? it's full-time normally the payment is justified by that nowhere_man: most RPC operations you need to know about network can be seen at work in pfinet/ethernet.c, wherever "ether_port" appears i.e. device_open, set_filter, write, set/get_status again, http://www.sceen.net/~rbraun/pcap-hurd.c should guide you pretty well since it's the very least necessary to use that interface nowhere_man: How, roughly but realistically, are your plans to continue this task? nowhere_man: What has been blocking you this week so you couldn't work on your task? tschwinge: mostly a previous work that was supposed to end at the beginning of the summer and only went online now, for which I'm basically sysadmin 21:25 < tschwinge> nowhere_man: How, roughly but realistically, are your plans to continue this task? this question is really more interesting actually right now, I want to write a netword device that just sends its frames by IPC why ? as I never wrote any program using Mach's IPC, that seems the easiest to get them right you won't have time 21:22 < braunr> nowhere_man: i told you to look at the work by zhengda concerning eth-multiplexer, did you do that ? braunr: not yet, no well that's your best chance to make some progress braunr: is writing the virtal network device that hard? basically, it allows "bridgind" the pfinet instances of various subhurds the virtual network device you want *is* eth-multiplexer nowhere_man: GSoC is nearly over. That's why I'm asking how this task is going to continue. I'm sorry but I reckon you have not spend anywhere near the amount of hours that are meant to be spent on it. and from what antrik told me, yes it's hard, and moreover, why rewrite it if it already exists and you're late i agree tschwinge: I know, I've started way too late because of my second round of exams nowhere_man: OK, that's how you started. But how is it going to continue... tschwinge: in short, I write a prototype that just starts a subhurd, and when that works correctly I add the network nowhere_man: I mean from an organizational point of view. well, between now and the beginning of september, I'll work full-time on this up until september 8th # IRC, freenode, #hurd, 2012-08-09 nowhere_man: you do *not* have to do a replacement network device. zhengda did that years ago. nowhere_man: also note that zhengda also implemented the support for *using* the virtual network device (in fact any replacement devices -- except that no others actually exist yet) in boot which is already in, actually, isn't it? youpi: hm, yes... it was the patch that zhengda posted on the list once, but later updated, and at some later point you merged the outdated variant from the list... outdated? ah, but he never posted the updated one, and it got lost in git repos, right? (what was updated actually?) he changed the option name and description later for more clarity. don't remember whether there were other changes -f, --device=device_name=device_file Specify a device file used by subhurd and its virtual name. that's the one from the Debian package -m, --device-map=DEBICENAME=DEVICEFILE Map the device in subhurd to the device in the main Hurd. that's the one I have locally built from his tree so you actually have access to his tree? uhm... I used to... it was on flubber # IRC, freenode, #hurd, 2012-08-18 so, this week I discovered how fun it is to work on a non-mainstream OS I hoped to start coding the tool itself, put together the skeleton, but every Lisp implementation I tried had problems ah you want to write it in lisp ? ECL, that I had ported a few years ago, actually FTBFS since I hoped to be able, it would be easier for me and when I tried Scheme, I started with Guile (it's GNU's own Scheme implementation, after all) and when I execute the FFI functions, to access functions in libmachdec I get SIGILL i can't advise you about anything lisp related the most reliable thing you'll find on the hurd is C I tried to debug that, but running Guile in GDB gets me a SIGSEV I'll try to make ECL to build again this seems like a waste of time to me avoid spending time on anything that isn't directly related to your goal if you still hope to finish it I'm ten times more comfortable coding in Lisp it doesn't matter, you're late yeah, I know, so taking the time to correct that problem won't change the fact that I won't finish in time so I'll finish anyway, and in Lisp and if you lack something else, like some mach/hurd specific lisp bindings, you'll have to spend more time on that ok do you know if someone had a SIGILL situation on Hurd in the past? I'm wondering if that's a known kind of issue there are lots of issues especially when it comes to other languages and runtime environments but is it like MAX_PATH_LEN, something that is known to happen when porting something on Hurd? i'm not sure how comparable it is i'd say it's often before of the conformance issues of the hurd because* like missing bits of POSIX ? or simple wrong for some corner cases simply* nowhere_man, I was able to run guile on my hurd image through qemu but I didn't make any complexe programms to check if everything works fine yeah, it runs fine FFI functions get you a SIGILL http://www.gnu.org/software/guile/manual/html_node/Dynamic-FFI.html the define-module form at the beginning triggers the signal nowhere_man: what do you want to implement in Lisp? BTW, the guy working on Lisp bindings a couple of years ago used Clisp it was working back then antrik: the program that sets up a subhurd I always forget about clisp, I'll try it right away