On Thu, 2008-08-28 at 00:21 +0200, Da Zheng wrote: > Thomas Bushnell BSG wrote: > > On Wed, 2008-08-27 at 23:32 +0200, Da Zheng wrote: > > > >> I know boot fails and gets EPERM when it calls store_parsed_open, but I > >> need to know what operations inside store_parsed_open() fail. Otherwise, > >> I don't know how to fix it. > >> > > > > Boot assumes that it is run as root, and assumes that quite thoroughly. > > > It's exactly my task, to make every user able to run their own subhurd.
Right. You'll have to do more than fix up your servers to deal with the non-root situation (as you know, proc will require careful work). But also boot will require significant work. > > You need to have boot simply not even *try* to open such a device. Note > > that boot isn't calling your servers at all. It calls the ones of its > > containing environment. > > > > I assume that store_parsed_open fails because it doesn't have > > permissions on the underlying /dev node. > > > yes. but to be specific, it really depends on how we run boot. > If we run "boot -T device servers.boot hd1", what store_parsed_open does > is to open the device by calling get_privileged_ports() and device_open(). > In this case, there is nothing to do with /dev nodes, and my proc proxy > might be able to give a help:-) The question you must think carefully about is which functions are called by boot, and thus run in the context of the parent Hurd. Thomas