From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1K1hb1-0006Mr-KY for mharc-grub-devel@gnu.org; Thu, 29 May 2008 08:51:07 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1K1haz-0006MD-Sn for grub-devel@gnu.org; Thu, 29 May 2008 08:51:05 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1K1hay-0006Le-2D for grub-devel@gnu.org; Thu, 29 May 2008 08:51:05 -0400 Received: from [199.232.76.173] (port=38701 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1K1hax-0006LZ-Ta for grub-devel@gnu.org; Thu, 29 May 2008 08:51:03 -0400 Received: from aybabtu.com ([69.60.117.155]:58832) by monty-python.gnu.org with esmtps (TLS-1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.60) (envelope-from ) id 1K1hax-0000ro-CZ for grub-devel@gnu.org; Thu, 29 May 2008 08:51:03 -0400 Received: from [192.168.10.10] (helo=thorin) by aybabtu.com with esmtps (TLS-1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.63) (envelope-from ) id 1K1haY-00011M-H1 for grub-devel@gnu.org; Thu, 29 May 2008 14:50:43 +0200 Received: from rmh by thorin with local (Exim 4.63) (envelope-from ) id 1K1haK-0000EK-Ph for grub-devel@gnu.org; Thu, 29 May 2008 14:50:24 +0200 Date: Thu, 29 May 2008 14:50:24 +0200 From: Robert Millan To: The development of GRUB 2 Message-ID: <20080529125024.GB391@thorin> References: <20080528135402.GE26495@thorin> <20080529095812.GA28156@thorin> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: Organization: free as in freedom X-Message-Flag: Worried about Outlook viruses? Switch to Thunderbird! www.mozilla.com/thunderbird X-Debbugs-No-Ack: true User-Agent: Mutt/1.5.13 (2006-08-11) X-detected-kernel: by monty-python.gnu.org: Genre and OS details not recognized. Subject: Re: [PATCH] Scan root device dynamically at startup X-BeenThere: grub-devel@gnu.org X-Mailman-Version: 2.1.5 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, 29 May 2008 12:51:06 -0000 On Thu, May 29, 2008 at 06:46:25PM +0800, Bean wrote: > > > > I've been thinking a bit more about this, and my impression is that it the > > approach is quite ad-hoc. For example, some similar problems that this > > solution wouldn't solve, but that a very similar solution would: > > > > a- normal.mod was built into grub.elf (perhaps because the firmware can load > > big files). Then the problem is finding grub.cfg instead of normal.mod. > > If the firmware support large image file, then it's no problem. For > image ~ 64K, we can include normal and some basic command. But for > image ~ 32K (like vista boot loader), it can only contain kernel and > one of the file system driver. Yes. But then, how do you find grub.cfg? The grub.cfg that is generated by update-grub can't be part of grub.elf, and you need a way to find it. Your proposed hack would work for that, simply by replacing "normal.mod" with "grub.cfg". > > b- User has a disk liing around which happens to have a normal.mod from > > an earlier version of grub (let's assume different ABI). Turns out this > > disk is used for something else and can't be supressed. A solution could > > be to use UUIDs for the search, but that can't always work since we need > > a "smart" install process that can probe for them (unlike in the situation > > you described -- I can't imagine doing fancy stuff in bare-bones Vista). > > > > I think this is the most convenient way of installing grub2 in vista. > [...] It probably is; what I'm describing is another situation in which the most convenient way is almost like that but not quite. Then we would need another module for that, which is a mess. That's why I think a generic solution would be best, if possible. > > c- Search for normal.mod was ok, but then this particular port of grub can't > > accept the prefix variable from your module, because it already got this > > variable from the firmware (OFW does this). And the variable from firmware > > happens to be completely unusable. > > The module initialization code is run in grub_load_modules (), It's > before the platform code grub_machine_set_prefix (). If findroot has > find the prefix, it won't use the firmware value anymore. But it is run after grub_machine_init(), and it is permissible that grub_machine_init() already sets the prefix (ieee1275 does that). Maybe your proposed module should override this setting, then? > > I think a solution that would fit well here is to use memdisk to embed a > > grub.cfg. Then in each situation we could have a different grub.cfg script > > that finds appropiate prefix using the search command. > > memdisk is not so useful in such situation. grub.cfg need normal.mod > for its script engine. So we need to embed normal.mod. and at least > search.mod. Such image is well above 32K limit. That's unfortunate... do you think this approach could be extended/modified somehow to address the other situations? -- Robert Millan I know my rights; I want my phone call! What good is a phone call… if you are unable to speak? (as seen on /.)