From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with archive (Exim 4.33) id 1Bfzln-0005mT-Ub for mharc-grub-devel@gnu.org; Thu, 01 Jul 2004 07:30:24 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.33) id 1Bfzln-0005mO-01 for grub-devel@gnu.org; Thu, 01 Jul 2004 07:30:23 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.33) id 1Bfzll-0005mA-8V for grub-devel@gnu.org; Thu, 01 Jul 2004 07:30:22 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.33) id 1Bfzll-0005m0-7E for grub-devel@gnu.org; Thu, 01 Jul 2004 07:30:21 -0400 Received: from [212.43.237.68] (helo=kotoba.storever.com) by monty-python.gnu.org with esmtp (Exim 4.34) id 1Bfzjx-0000Tl-Gc for grub-devel@gnu.org; Thu, 01 Jul 2004 07:28:29 -0400 Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by kotoba.storever.com (Postfix) with ESMTP id DA221FFC30D0 for ; Thu, 1 Jul 2004 07:28:28 -0400 (EDT) From: "Yoshinori K. Okuji" Organization: enbug.org To: The development of GRUB 2 Date: Thu, 1 Jul 2004 13:32:42 +0200 User-Agent: KMail/1.6.1 References: <200406281125.03655.okuji@enbug.org> <87fz8ezjo9.fsf@marco.marco-g.com> In-Reply-To: <87fz8ezjo9.fsf@marco.marco-g.com> MIME-Version: 1.0 Content-Disposition: inline Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit Message-Id: <200407011332.42252.okuji@enbug.org> Subject: Re: calling UNDI API X-BeenThere: grub-devel@gnu.org X-Mailman-Version: 2.1.4 Precedence: list Reply-To: The development of GRUB 2 List-Id: The development of GRUB 2 List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 01 Jul 2004 11:30:23 -0000 On Tuesday 29 June 2004 13:29, Marco Gerards wrote: > What is the best way to implement network support? We can access the > raw interfaces using UNDI. I think the same is possible (in such a > way) when using Open Firmware. If you look at the header file include/grub/net.h, you can see what I had in my mind. Basically, network devices should provide a generic interface to network protocols. > How will we support the other cards? By using etherboot (or whatever > it was used in GRUB Legacy)? What I would prefer is to have our own > TCP/IP stack that is platform independent. In GRUB Legacy, we use our own implementation for network protocols. The source code is derived from etherboot, but we have modified it to adapt it to the GRUB semantics. So, in principle, we only use the ethernet drivers in etherboot. For network drivers, there are some candidates: Etherboot, OSKit, and drivers in Linux, FreeBSD, NetBSD and OpenBSD. If we want to steal drivers from operating systems, this is not easy, because this requires support for interruptions by hardware. GRUB doesn't assume that hardware interrupts occur during normal execution, since this makes the implementation very complex, due to the switch between real mode and protected mode on i386. So I prefer the polling approach to the interruption-based approach. For this, Etherboot fits gracefully. If my understanding is correct, Etherboot is now being ported to other architectures, although it was only for i386 like GRUB Legacy. This looks very interesting to us. BTW, do you really need TCP in GRUB? I know some people want to use TCP protocols for netboot, such as HTTP and FTP. But I feel this is overkill. If you need only UDP, it's quite easy to implement. You can just copy the code from GRUB Legacy with a few modifications for portability. Okuji